diff --git a/Datasheets/Datasheets info.xlsx b/Datasheets/Datasheets info.xlsx new file mode 100644 index 0000000..56d77bb Binary files /dev/null and b/Datasheets/Datasheets info.xlsx differ diff --git a/Datasheets/MQ131 - sensorsportal.pdf b/Datasheets/MQ131 - sensorsportal.pdf new file mode 100644 index 0000000..c6412a5 Binary files /dev/null and b/Datasheets/MQ131 - sensorsportal.pdf differ diff --git a/Datasheets/MQ135 - Hanwei.pdf b/Datasheets/MQ135 - Hanwei.pdf new file mode 100644 index 0000000..d30345a Binary files /dev/null and b/Datasheets/MQ135 - Hanwei.pdf differ diff --git a/Datasheets/MQ2 - Pololulu.pdf b/Datasheets/MQ2 - Pololulu.pdf new file mode 100644 index 0000000..dfd1e02 Binary files /dev/null and b/Datasheets/MQ2 - Pololulu.pdf differ diff --git a/Datasheets/MQ3 - Sparkfun.pdf b/Datasheets/MQ3 - Sparkfun.pdf new file mode 100644 index 0000000..cebb56b Binary files /dev/null and b/Datasheets/MQ3 - Sparkfun.pdf differ diff --git a/Datasheets/MQ303A - Hanwei.pdf b/Datasheets/MQ303A - Hanwei.pdf new file mode 100644 index 0000000..90b28cc Binary files /dev/null and b/Datasheets/MQ303A - Hanwei.pdf differ diff --git a/Datasheets/MQ309A - Hanwei.pdf b/Datasheets/MQ309A - Hanwei.pdf new file mode 100644 index 0000000..5a7f8ad Binary files /dev/null and b/Datasheets/MQ309A - Hanwei.pdf differ diff --git a/Datasheets/MQ4 - Sparkfun.pdf b/Datasheets/MQ4 - Sparkfun.pdf new file mode 100644 index 0000000..1bda875 Binary files /dev/null and b/Datasheets/MQ4 - Sparkfun.pdf differ diff --git a/Datasheets/MQ5 - Parallax.pdf b/Datasheets/MQ5 - Parallax.pdf new file mode 100644 index 0000000..028f80f Binary files /dev/null and b/Datasheets/MQ5 - Parallax.pdf differ diff --git a/Datasheets/MQ6 - Sparkfun.pdf b/Datasheets/MQ6 - Sparkfun.pdf new file mode 100644 index 0000000..e1846f3 Binary files /dev/null and b/Datasheets/MQ6 - Sparkfun.pdf differ diff --git a/Datasheets/MQ7 - Sparkfun.pdf b/Datasheets/MQ7 - Sparkfun.pdf new file mode 100644 index 0000000..6066c2f Binary files /dev/null and b/Datasheets/MQ7 - Sparkfun.pdf differ diff --git a/Datasheets/MQ8 - Sparkfun.pdf b/Datasheets/MQ8 - Sparkfun.pdf new file mode 100644 index 0000000..29892b0 Binary files /dev/null and b/Datasheets/MQ8 - Sparkfun.pdf differ diff --git a/Datasheets/MQ9 - Hanwei.pdf b/Datasheets/MQ9 - Hanwei.pdf new file mode 100644 index 0000000..358ac9c Binary files /dev/null and b/Datasheets/MQ9 - Hanwei.pdf differ diff --git a/Docs/pruebaSerial1Sensor.txt b/Docs/pruebaSerial1Sensor.txt new file mode 100644 index 0000000..e678e51 --- /dev/null +++ b/Docs/pruebaSerial1Sensor.txt @@ -0,0 +1,24 @@ +************************************************************************************************************************************************ +MQ sensor reading library for arduino + +Note: remember that all the parameters below can be modified during the program execution with the methods: +setR0, setRL, setA, setB where you will have to send as parameter the new value, example: MQ4.setR0(20); //R0 = 20K + +Authors: Miguel A. Califa U - Yersson R. Carrillo A - Ghiordy F. Contreras C +Contributors: Andres A. Martinez - Juan A. Rodríguez - Mario A. Rodríguez O + +Sensor: MQ-4 +Supply voltage: 5V +R0: - Sin determinar - +RL: 10KOhm +Model: Logarithmic regression with parameters. +a = 10000 | b = 50000 +Development board: Arduino + +|ADC_In | Equation_V_ADC | Voltage_ADC | Equation_R | Resistance_RS | EQ_Ratio | Ratio (RS/R0) | Equation_PPM | PPM | +*********************************************************************************************************************************************** +| 224 | v = ADC*5/1024 | 1.09375 | RS = ((5*RL)/Voltage) - RL| RS = 1.07K | Ratio = RS/R0| Ratio = .123K | a*ratio^b | 100000 PPM | +| 224 | v = ADC*5/1024 | 1.09375 | RS = ((5*RL)/Voltage) - RL| RS = 1.07K | Ratio = RS/R0| Ratio = .123K | a*ratio^b | 100000 PPM | +| 224 | v = ADC*5/1024 | 1.09375 | RS = ((5*RL)/Voltage) - RL| RS = 1.07K | Ratio = RS/R0| Ratio = .123K | a*ratio^b | 100000 PPM | +| 224 | v = ADC*5/1024 | 1.09375 | RS = ((5*RL)/Voltage) - RL| RS = 1.07K | Ratio = RS/R0| Ratio = .123K | a*ratio^b | 100000 PPM | +| 224 | v = ADC*5/1024 | 1.09375 | RS = ((5*RL)/Voltage) - RL| RS = 1.07K | Ratio = RS/R0| Ratio = .123K | a*ratio^b | 100000 PPM | diff --git a/Docs/pruebaSerialVariosSensores.txt b/Docs/pruebaSerialVariosSensores.txt new file mode 100644 index 0000000..d5b33d1 --- /dev/null +++ b/Docs/pruebaSerialVariosSensores.txt @@ -0,0 +1,24 @@ +************************************************************************************************************************************************ +MQ sensor reading library for arduino + +Note: remember that all the parameters below can be modified during the program execution with the methods: +setR0, setRL, setA, setB where you will have to send as parameter the new value, example: MQ4.setR0(20); //R0 = 20K + +Authors: Miguel A. Califa U - Yersson R. Carrillo A - Ghiordy F. Contreras C +Contributors: Andres A. Martinez - Juan A. Rodríguez - Mario A. Rodríguez O + +Sensor: MQ-4 | MQ-5 +Supply voltage: 5V +R0: - Sin determinar - +RL: 10KOhm + +Model: Logarithmic regression with parameters. +MQ-4: a = 10000 | b = 50000 +MQ-5: a = 10000 | b = 50000 + +Development board: Arduino + +|---------- MQ-4 ----------|---------- MQ-5 ----------| +|ADC_In | Voltage_ADC | Resistance_RS | Ratio (RS/R0) | PPM |ADC_In | Voltage_ADC | Resistance_RS | Ratio (RS/R0) | PPM | +***************************************************************************************************************************************** +| 224 | 1.09375 | RS = 1.07K | Ratio = .123K | 100000 PPM | 224 | 1.09375 | RS = 1.07K | Ratio = .123K | 100000 PPM | diff --git a/Internal_design_documents/Datasheet Graphs.docx b/Internal_design_documents/Datasheet Graphs.docx new file mode 100644 index 0000000..82d1fa2 Binary files /dev/null and b/Internal_design_documents/Datasheet Graphs.docx differ diff --git a/Internal_design_documents/Experiments/.ipynb_checkpoints/Experiment 3-checkpoint.ipynb b/Internal_design_documents/Experiments/.ipynb_checkpoints/Experiment 3-checkpoint.ipynb new file mode 100644 index 0000000..acc8469 --- /dev/null +++ b/Internal_design_documents/Experiments/.ipynb_checkpoints/Experiment 3-checkpoint.ipynb @@ -0,0 +1,4924 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Este experimento fue realizado despues de +48 horas de precalentamiento.\n", + "## El objetivo fue determinar R0 de forma practica en un espacio con aire limpio.\n", + "### Por ello fue durante las horas de la noche." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "install xlrd library" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install pandas\n", + "!pip install xlrd" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Experimento 3 - 1 de Junio.xlsx\")\n", + "sheet = book.sheet_by_name(\"Experimento 3 - 1 de Junio\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0 11.00 4.00 50.00 72.00 14.00 4.00 1.00 9.00\n", + "2.0 11.00 4.00 51.00 72.00 13.00 4.00 1.00 8.00\n", + "3.0 11.00 4.00 51.00 72.00 14.00 4.00 1.00 10.00\n", + "4.0 10.00 4.00 51.00 72.00 14.00 4.00 1.00 10.00\n", + "5.0 11.00 4.00 51.00 72.00 14.00 4.00 1.00 10.00\n", + "6.0 11.00 4.00 51.00 72.00 14.00 4.00 1.00 10.00\n", + "7.0 11.00 4.00 51.00 72.00 14.00 4.00 1.00 10.00\n", + "8.0 11.00 4.00 51.00 72.00 14.00 4.00 1.00 9.00\n", + "9.0 11.00 4.00 51.00 72.00 14.00 4.00 1.00 9.00\n", + "10.0 11.00 4.00 52.00 73.00 14.00 4.00 1.00 9.00\n", + "11.0 11.00 4.00 52.00 73.00 13.00 4.00 1.00 9.00\n", + "12.0 10.00 4.00 51.00 72.00 13.00 4.00 1.00 9.00\n", + "13.0 10.00 4.00 50.00 71.00 13.00 4.00 1.00 9.00\n", + "14.0 10.00 4.00 50.00 70.00 13.00 4.00 1.00 9.00\n", + "15.0 10.00 4.00 50.00 71.00 13.00 4.00 1.00 9.00\n" + ] + } + ], + "source": [ + "for row_index in range(5,20): #reading first columns\n", + " id, MQ2_R0, MQ3_R0, MQ4_R0, MQ5_R0, MQ6_R0, MQ7_R0, MQ8_R0, MQ9_R0, MQ2_Vm, MQ3_Vm, MQ4_Vm, MQ5_Vm, MQ6_Vm, MQ7_Vm, MQ8_Vm, MQ9_Vm = sheet.row_values(row_index)\n", + " print(id, MQ2_R0, MQ3_R0, MQ4_R0, MQ5_R0, MQ6_R0, MQ7_R0, MQ8_R0, MQ9_R0)\n", + "x = sheet.col_values(0)[5:]\n", + "MQ2_R0 = sheet.col_values(1)[5:]\n", + "MQ3_R0 = sheet.col_values(2)[5:]\n", + "MQ4_R0 = sheet.col_values(3)[5:]\n", + "MQ5_R0 = sheet.col_values(4)[5:]\n", + "MQ6_R0 = sheet.col_values(5)[5:]\n", + "MQ7_R0 = sheet.col_values(6)[5:]\n", + "MQ8_R0 = sheet.col_values(7)[5:]\n", + "MQ9_R0 = sheet.col_values(8)[5:]" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(18.5, 10.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(x,MQ2_R0, marker='o', linewidth=1, label='MQ2')\n", + "plt.plot(x, MQ3_R0, marker='o', linewidth=1, label='MQ3')\n", + "plt.plot(x, MQ4_R0, marker='o', linewidth=1, label='MQ4')\n", + "plt.plot(x, MQ5_R0, marker='o', linewidth=1, label='MQ5')\n", + "plt.plot(x, MQ6_R0, marker='o', linewidth=1, label='MQ6')\n", + "plt.plot(x, MQ7_R0, marker='o', linewidth=1, label='MQ7')\n", + "plt.plot(x, MQ8_R0, marker='o', linewidth=1, label='MQ8')\n", + "plt.plot(x, MQ9_R0, marker='o', linewidth=1, label='MQ9')\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "fig.suptitle('Calibration plot for MQ data')\n", + "ax.set_xlabel('Samples')\n", + "ax.set_ylabel('R0 (Kohms)')\n", + "plt.legend()\n", + "plt.savefig('demo1.svg')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/.ipynb_checkpoints/LinearRegression-checkpoint.ipynb b/Internal_design_documents/Experiments/.ipynb_checkpoints/LinearRegression-checkpoint.ipynb new file mode 100644 index 0000000..2fd6442 --- /dev/null +++ b/Internal_design_documents/Experiments/.ipynb_checkpoints/LinearRegression-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ131_Regression-checkpoint.ipynb b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ131_Regression-checkpoint.ipynb new file mode 100644 index 0000000..2e5152f --- /dev/null +++ b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ131_Regression-checkpoint.ipynb @@ -0,0 +1,1705 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \n", + "0.2 \t \t \t \n", + "0.3 \t \t \t \n", + "0.4 \t \t \t \n", + "0.5 \t \t \t 100.0\n", + "0.6 \t \t \t \n", + "0.7 \t \t \t \n", + "0.8 \t \t \t \n", + "0.9 \t \t \t \n", + "1.0 \t \t 50.0 \t \n", + "2.0 \t \t \t 20.0\n", + "3.0 \t 100.0 \t \t \n", + "4.0 \t \t \t \n", + "5.0 \t \t \t \n", + "6.0 \t \t 10.0 \t 5.0\n", + "7.0 \t 10.0 \t \t \n", + "8.0 \t \t 5.0 \t \n", + "9.0 \t 5.0 \t \t \n", + "10.0 \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, Nox, CL2, O3 = sheetMQ131.row_values(row_index, start_colx=0, end_colx=4)\n", + " print(RsR0, \"\t\", Nox, \"\t\", CL2, \"\t\", O3)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ131 = sheetMQ131.col_values(0)[2:]\n", + "MQ131_Nox = sheetMQ131.col_values(1)[2:]\n", + "MQ131_CL2 = sheetMQ131.col_values(2)[2:]\n", + "MQ131_O3 = sheetMQ131.col_values(3)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "MQ131_Nox =zero_to_nan(MQ131_Nox)\n", + "MQ131_CL2 =zero_to_nan(MQ131_CL2)\n", + "MQ131_O3 =zero_to_nan(MQ131_O3)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataNox = {'RsRo': x_MQ131, 'Nox': MQ131_Nox}\n", + "dataCL2 = {'RsRo': x_MQ131, 'CL2': MQ131_CL2}\n", + "dataO3 = {'RsRo': x_MQ131, 'O3': MQ131_O3}\n", + "\n", + "dfMQ131_Nox = pd.DataFrame(dataNox)\n", + "dfMQ131_CL2 = pd.DataFrame(dataCL2)\n", + "dfMQ131_O3 = pd.DataFrame(dataO3)\n", + "\n", + "dfMQ131_Nox['Nox'] = pd.to_numeric(dfMQ131_Nox['Nox'])\n", + "dfMQ131_CL2['CL2'] = pd.to_numeric(dfMQ131_CL2['CL2'])\n", + "dfMQ131_O3['O3'] = pd.to_numeric(dfMQ131_O3['O3'])\n", + "\n", + "dfMQ131_Nox['Nox'] = dfMQ131_Nox['Nox'].replace('',None, regex=True)\n", + "dfMQ131_CL2['CL2'] = dfMQ131_CL2['CL2'].replace('',None, regex=True)\n", + "dfMQ131_O3['O3'] = dfMQ131_O3['O3'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ131_Nox.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Nox\n", + "dataset2TrainNox = dfMQ131_Nox.copy()\n", + "dataset2TrainNox.dropna(inplace=True)\n", + "X_trainNox = dataset2TrainNox.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainNox = dataset2TrainNox['Nox'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainNox, y_trainNox)\n", + "#Predict\n", + "Nox_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ131_Nox = Nox_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CL2\n", + "dataset2TrainCL2 = dfMQ131_CL2.copy()\n", + "dataset2TrainCL2.dropna(inplace=True)\n", + "X_trainCL2 = dataset2TrainCL2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCL2 = dataset2TrainCL2['CL2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCL2, y_trainCL2)\n", + "#Predict\n", + "CL2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ131_CL2 = CL2_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train O3\n", + "dataset2TrainO3 = dfMQ131_O3.copy()\n", + "dataset2TrainO3.dropna(inplace=True)\n", + "X_trainO3 = dataset2TrainO3.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainO3 = dataset2TrainO3['O3'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainO3, y_trainO3)\n", + "#Predict\n", + "O3_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ131_O3 = O3_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ131_Nox, x_MQ131, marker='o', linewidth=1, label='Nox')\n", + "plt.plot(MQ131_CL2, x_MQ131, marker='o', linewidth=1, label='CL2')\n", + "plt.plot(MQ131_O3, x_MQ131, marker='o', linewidth=1, label='O3')\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-131 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ131.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ131.png')\n", + "plt.savefig('MQ131.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ135_Regression-checkpoint.ipynb b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ135_Regression-checkpoint.ipynb new file mode 100644 index 0000000..636d956 --- /dev/null +++ b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ135_Regression-checkpoint.ipynb @@ -0,0 +1,2061 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \t \t \t \n", + "0.2 \t \t \t \t \t \t \n", + "0.3 \t \t \t \t \t \t \n", + "0.4 \t \t \t \t \t \t \n", + "0.5 \t \t \t \t \t \t \n", + "0.6 \t \t \t \t \t 200.0 \t 200.0\n", + "0.7 \t \t \t 200.0 \t \t \t 100.0\n", + "0.8 \t 200.0 \t \t \t 200.0 \t 100.0 \t \n", + "0.9 \t \t \t 100.0 \t \t \t \n", + "1.0 \t 100.0 \t 200.0 \t \t 100.0 \t 10.0 \t 10.0\n", + "2.0 \t 10.0 \t \t 10.0 \t \t \t \n", + "3.0 \t \t 10.0 \t \t 10.0 \t \t \n", + "4.0 \t \t \t \t \t \t \n", + "5.0 \t \t \t \t \t \t \n", + "6.0 \t \t \t \t \t \t \n", + "7.0 \t \t \t \t \t \t \n", + "8.0 \t \t \t \t \t \t \n", + "9.0 \t \t \t \t \t \t \n", + "10.0 \t \t \t \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, CO2, CO, Alcohol, NH4, Tolueno, Acetona = sheetMQ135.row_values(row_index, start_colx=0, end_colx=7)\n", + " print(RsR0, \"\t\", CO2, \"\t\", CO, \"\t\", Alcohol, \"\t\", NH4, \"\t\", Tolueno, \"\t\", Acetona)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ135 = sheetMQ135.col_values(0)[2:]\n", + "MQ135_CO2 = sheetMQ135.col_values(1)[2:]\n", + "MQ135_CO = sheetMQ135.col_values(2)[2:]\n", + "MQ135_Alcohol = sheetMQ135.col_values(3)[2:]\n", + "MQ135_NH4 = sheetMQ135.col_values(4)[2:]\n", + "MQ135_Tolueno = sheetMQ135.col_values(5)[2:]\n", + "MQ135_Acetona = sheetMQ135.col_values(6)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "MQ135_CO2 =zero_to_nan(MQ135_CO2)\n", + "MQ135_CO =zero_to_nan(MQ135_CO)\n", + "MQ135_Alcohol =zero_to_nan(MQ135_Alcohol)\n", + "MQ135_NH4 =zero_to_nan(MQ135_NH4)\n", + "MQ135_Tolueno =zero_to_nan(MQ135_Tolueno)\n", + "MQ135_Acetona =zero_to_nan(MQ135_Acetona)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataCO2 = {'RsRo': x_MQ135, 'CO2': MQ135_CO2}\n", + "dataCO = {'RsRo': x_MQ135, 'CO': MQ135_CO}\n", + "dataAlcohol = {'RsRo': x_MQ135, 'Alcohol': MQ135_Alcohol}\n", + "dataNH4 = {'RsRo': x_MQ135, 'NH4': MQ135_NH4}\n", + "dataTolueno = {'RsRo': x_MQ135, 'Tolueno': MQ135_Tolueno}\n", + "dataAcetona = {'RsRo': x_MQ135, 'Acetona': MQ135_Acetona}\n", + "\n", + "dfMQ135_CO2 = pd.DataFrame(dataCO2)\n", + "dfMQ135_CO = pd.DataFrame(dataCO)\n", + "dfMQ135_Alcohol = pd.DataFrame(dataAlcohol)\n", + "dfMQ135_NH4 = pd.DataFrame(dataNH4)\n", + "dfMQ135_Tolueno = pd.DataFrame(dataTolueno)\n", + "dfMQ135_Acetona = pd.DataFrame(dataAcetona)\n", + "\n", + "dfMQ135_CO2['CO2'] = pd.to_numeric(dfMQ135_CO2['CO2'])\n", + "dfMQ135_CO['CO'] = pd.to_numeric(dfMQ135_CO['CO'])\n", + "dfMQ135_Alcohol['Alcohol'] = pd.to_numeric(dfMQ135_Alcohol['Alcohol'])\n", + "dfMQ135_NH4['NH4'] = pd.to_numeric(dfMQ135_NH4['NH4'])\n", + "dfMQ135_Tolueno['Tolueno'] = pd.to_numeric(dfMQ135_Tolueno['Tolueno'])\n", + "dfMQ135_Acetona['Acetona'] = pd.to_numeric(dfMQ135_Acetona['Acetona'])\n", + "\n", + "dfMQ135_CO2['CO2'] = dfMQ135_CO2['CO2'].replace('',None, regex=True)\n", + "dfMQ135_CO['CO'] = dfMQ135_CO['CO'].replace('',None, regex=True)\n", + "dfMQ135_Alcohol['Alcohol'] = dfMQ135_Alcohol['Alcohol'].replace('',None, regex=True)\n", + "dfMQ135_NH4['NH4'] = dfMQ135_NH4['NH4'].replace('',None, regex=True)\n", + "dfMQ135_Tolueno['Tolueno'] = dfMQ135_Tolueno['Tolueno'].replace('',None, regex=True)\n", + "dfMQ135_Acetona['Acetona'] = dfMQ135_Acetona['Acetona'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ135_CO2.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO2\n", + "dataset2TrainCO2 = dfMQ135_CO2.copy()\n", + "dataset2TrainCO2.dropna(inplace=True)\n", + "X_trainCO2 = dataset2TrainCO2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO2 = dataset2TrainCO2['CO2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO2, y_trainCO2)\n", + "#Predict\n", + "CO2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ135_CO2 = CO2_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ135_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ135_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Alcohol\n", + "dataset2TrainAlcohol = dfMQ135_Alcohol.copy()\n", + "dataset2TrainAlcohol.dropna(inplace=True)\n", + "X_trainAlcohol = dataset2TrainAlcohol.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAlcohol = dataset2TrainAlcohol['Alcohol'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAlcohol, y_trainAlcohol)\n", + "#Predict\n", + "Alcohol_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ135_Alcohol = Alcohol_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train NH4\n", + "dataset2TrainNH4 = dfMQ135_NH4.copy()\n", + "dataset2TrainNH4.dropna(inplace=True)\n", + "X_trainNH4 = dataset2TrainNH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainNH4 = dataset2TrainNH4['NH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainNH4, y_trainNH4)\n", + "#Predict\n", + "NH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ135_NH4 = NH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Tolueno\n", + "dataset2TrainTolueno = dfMQ135_Tolueno.copy()\n", + "dataset2TrainTolueno.dropna(inplace=True)\n", + "X_trainTolueno = dataset2TrainTolueno.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainTolueno = dataset2TrainTolueno['Tolueno'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainTolueno, y_trainTolueno)\n", + "#Predict\n", + "Tolueno_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ135_Tolueno = Tolueno_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Acetona\n", + "dataset2TrainAcetona = dfMQ135_Acetona.copy()\n", + "dataset2TrainAcetona.dropna(inplace=True)\n", + "X_trainAcetona = dataset2TrainAcetona.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAcetona = dataset2TrainAcetona['Acetona'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAcetona, y_trainAcetona)\n", + "#Predict\n", + "Acetona_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ135_Acetona = Acetona_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ135_CO2, x_MQ135, marker='o', linewidth=1, label='CO2')\n", + "plt.plot(MQ135_CO, x_MQ135, marker='o', linewidth=1, label='CO')\n", + "plt.plot(MQ135_Alcohol, x_MQ135, marker='o', linewidth=1, label='Alcohol')\n", + "plt.plot(MQ135_NH4, x_MQ135, marker='o', linewidth=1, label='NH4')\n", + "plt.plot(MQ135_Tolueno, x_MQ135, marker='o', linewidth=1, label='Tolueno')\n", + "plt.plot(MQ135_Acetona, x_MQ135, marker='o', linewidth=1, label='Acetona')\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-135 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ135.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ135.png')\n", + "plt.savefig('MQ135.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ2_Regression-checkpoint.ipynb b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ2_Regression-checkpoint.ipynb new file mode 100644 index 0000000..15730f6 --- /dev/null +++ b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ2_Regression-checkpoint.ipynb @@ -0,0 +1,2050 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RS/R0 \t H2 \t LPG \t CH4 \t CO \t Alcohol \t Propane\n", + "0.1 \t \t \t \t \t \t \n", + "0.2 \t \t \t \t \t \t \n", + "0.3 \t \t \t \t \t \t \n", + "0.4 \t \t \t \t \t \t \n", + "0.5 \t \t \t \t \t \t \n", + "0.6 \t \t 2000.0 \t \t \t \t 2000.0\n", + "0.7 \t 2100.0 \t \t \t \t \t \n", + "0.8 \t \t 1000.0 \t \t \t \t 1000.0\n", + "0.9 \t \t 800.0 \t 5000.0 \t \t 5000.0 \t 800.0\n", + "1.0 \t 1000.0 \t \t \t \t \t \n", + "2.0 \t 201.0 \t \t 800.0 \t \t 500.0 \t \n", + "3.0 \t \t \t 200.0 \t 1000.0 \t 200.0 \t \n", + "4.0 \t \t \t \t 500.0 \t \t \n", + "5.0 \t \t \t \t 200.0 \t \t \n", + "6.0 \t \t \t \t \t \t \n", + "7.0 \t \t \t \t \t \t \n", + "8.0 \t \t \t \t \t \t \n", + "9.0 \t \t \t \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, H2, LPG, CH4, CO, Alcohol, propane = sheetMQ2.row_values(row_index, start_colx=0, end_colx=7)\n", + " print(RsR0, \"\t\", H2, \"\t\", LPG, \"\t\", CH4, \"\t\", CO, \"\t\", Alcohol, \"\t\", propane)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ2 = sheetMQ2.col_values(0)[2:]\n", + "MQ2_H2 = sheetMQ2.col_values(1)[2:]\n", + "MQ2_LPG = sheetMQ2.col_values(2)[2:]\n", + "MQ2_CH4 = sheetMQ2.col_values(3)[2:]\n", + "MQ2_CO = sheetMQ2.col_values(4)[2:]\n", + "MQ2_Alcohol = sheetMQ2.col_values(5)[2:]\n", + "MQ2_propane = sheetMQ2.col_values(6)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [], + "source": [ + "MQ2_H2 =zero_to_nan(MQ2_H2)\n", + "MQ2_LPG =zero_to_nan(MQ2_LPG)\n", + "MQ2_CH4 =zero_to_nan(MQ2_CH4)\n", + "MQ2_CO =zero_to_nan(MQ2_CO)\n", + "MQ2_Alcohol =zero_to_nan(MQ2_Alcohol)\n", + "MQ2_propane =zero_to_nan(MQ2_propane)" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataH2 = {'RsRo': x_MQ2, 'H2': MQ2_H2}\n", + "dataLPG = {'RsRo': x_MQ2, 'LPG': MQ2_LPG}\n", + "dataCH4 = {'RsRo': x_MQ2, 'CH4': MQ2_CH4}\n", + "dataCO = {'RsRo': x_MQ2, 'CO': MQ2_CO}\n", + "dataAlcohol = {'RsRo': x_MQ2, 'Alcohol': MQ2_Alcohol}\n", + "dataPropane = {'RsRo': x_MQ2, 'Propane': MQ2_propane}\n", + "\n", + "dfMQ2_H2 = pd.DataFrame(dataH2)\n", + "dfMQ2_LPG = pd.DataFrame(dataLPG)\n", + "dfMQ2_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ2_CO = pd.DataFrame(dataCO)\n", + "dfMQ2_Alcohol = pd.DataFrame(dataAlcohol)\n", + "dfMQ2_Propane = pd.DataFrame(dataPropane)\n", + "\n", + "dfMQ2_H2['H2'] = pd.to_numeric(dfMQ2_H2['H2'])\n", + "dfMQ2_LPG['LPG'] = pd.to_numeric(dfMQ2_LPG['LPG'])\n", + "dfMQ2_CH4['CH4'] = pd.to_numeric(dfMQ2_CH4['CH4'])\n", + "dfMQ2_CO['CO'] = pd.to_numeric(dfMQ2_CO['CO'])\n", + "dfMQ2_Alcohol['Alcohol'] = pd.to_numeric(dfMQ2_Alcohol['Alcohol'])\n", + "dfMQ2_Propane['Propane'] = pd.to_numeric(dfMQ2_Propane['Propane'])\n", + "\n", + "dfMQ2_H2['H2'] = dfMQ2_H2['H2'].replace('',None, regex=True)\n", + "dfMQ2_LPG['LPG'] = dfMQ2_LPG['LPG'].replace('',None, regex=True)\n", + "dfMQ2_CH4['CH4'] = dfMQ2_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ2_CO['CO'] = dfMQ2_CO['CO'].replace('',None, regex=True)\n", + "dfMQ2_Alcohol['Alcohol'] = dfMQ2_Alcohol['Alcohol'].replace('',None, regex=True)\n", + "dfMQ2_Propane['Propane'] = dfMQ2_Propane['Propane'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ2_H2.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train\n", + "dataset2TrainH2 = dfMQ2_H2.copy()\n", + "dataset2TrainH2.dropna(inplace=True)\n", + "X_trainH2 = dataset2TrainH2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainH2 = dataset2TrainH2['H2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainH2, y_trainH2)\n", + "#Predict\n", + "H2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ2_H2 = H2_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train\n", + "dataset2TrainLPG = dfMQ2_LPG.copy()\n", + "dataset2TrainLPG.dropna(inplace=True)\n", + "X_trainLPG = dataset2TrainLPG.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainLPG = dataset2TrainLPG['LPG'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainLPG, y_trainLPG)\n", + "#Predict\n", + "LPG_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ2_LPG = LPG_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train\n", + "dataset2TrainCH4 = dfMQ2_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ2_CH4 = CH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train\n", + "dataset2TrainCO = dfMQ2_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ2_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train\n", + "dataset2TrainAlcohol = dfMQ2_Alcohol.copy()\n", + "dataset2TrainAlcohol.dropna(inplace=True)\n", + "X_trainAlcohol = dataset2TrainAlcohol.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAlcohol = dataset2TrainAlcohol['Alcohol'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAlcohol, y_trainAlcohol)\n", + "#Predict\n", + "Alcohol_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ2_Alcohol = Alcohol_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train\n", + "dataset2TrainPropane = dfMQ2_Propane.copy()\n", + "dataset2TrainPropane.dropna(inplace=True)\n", + "X_trainPropane = dataset2TrainPropane.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainPropane = dataset2TrainPropane['Propane'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainPropane, y_trainPropane)\n", + "#Predict\n", + "Propane_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ2_propane = Propane_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ2_H2, x_MQ2, marker='o', linewidth=1, label='H2')\n", + "plt.plot(MQ2_LPG, x_MQ2, marker='o', linewidth=1, label='LPG')\n", + "plt.plot(MQ2_CH4, x_MQ2, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ2_CO, x_MQ2, marker='o', linewidth=1, label='CO')\n", + "plt.plot(MQ2_Alcohol, x_MQ2, marker='o', linewidth=1, label='Alcohol')\n", + "plt.plot(MQ2_propane, x_MQ2, marker='o', linewidth=1, label='Propane')\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-2 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ2.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ2.png')\n", + "plt.savefig('MQ2.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ303_Regression-checkpoint.ipynb b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ303_Regression-checkpoint.ipynb new file mode 100644 index 0000000..8791c7d --- /dev/null +++ b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ303_Regression-checkpoint.ipynb @@ -0,0 +1,1827 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.01 \t \t \t \n", + "0.02 \t \t \t \n", + "0.03 \t \t \t \n", + "0.04 \t \t \t \n", + "0.05 \t \t \t \n", + "0.06 \t \t \t \n", + "0.07 \t \t \t \n", + "0.08 \t \t \t \n", + "0.09 \t \t \t \n", + "0.1 \t 3000.0 \t \t 1000.0\n", + "0.2 \t \t 300.0 \t \n", + "0.3 \t 300.0 \t 100.0 \t \n", + "0.4 \t 100.0 \t \t 30.0\n", + "0.5 \t \t \t \n", + "0.6 \t \t \t 10.0\n", + "0.7 \t \t \t \n", + "0.8 \t \t 10.0 \t \n", + "0.9 \t \t \t \n", + "1.0 \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, Iso_butano, Hidrogeno , Alcohol = sheetMQ303A.row_values(row_index, start_colx=0, end_colx=4)\n", + " print(RsR0, \"\t\", Iso_butano, \"\t\", Hidrogeno, \"\t\", Alcohol)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ303A = sheetMQ303A.col_values(0)[2:]\n", + "MQ303A_Iso_butano = sheetMQ303A.col_values(1)[2:]\n", + "MQ303A_Hidrogeno = sheetMQ303A.col_values(2)[2:]\n", + "MQ303A_Alcohol = sheetMQ303A.col_values(3)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "MQ303A_Iso_butano =zero_to_nan(MQ303A_Iso_butano)\n", + "MQ303A_Hidrogeno =zero_to_nan(MQ303A_Hidrogeno)\n", + "MQ303A_Alcohol =zero_to_nan(MQ303A_Alcohol)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataIso_Butano = {'RsRo': x_MQ303A, 'Iso_Butano': MQ303A_Iso_butano}\n", + "dataHidrogeno = {'RsRo': x_MQ303A, 'Hidrogeno': MQ303A_Hidrogeno}\n", + "dataAlcohol = {'RsRo': x_MQ303A, 'Alcohol': MQ303A_Alcohol}\n", + "\n", + "dfMQ303A_Iso_Butano = pd.DataFrame(dataIso_Butano)\n", + "dfMQ303A_Hidrogeno = pd.DataFrame(dataHidrogeno)\n", + "dfMQ303A_Alcohol = pd.DataFrame(dataAlcohol)\n", + "\n", + "dfMQ303A_Iso_Butano['Iso_Butano'] = pd.to_numeric(dfMQ303A_Iso_Butano['Iso_Butano'])\n", + "dfMQ303A_Hidrogeno['Hidrogeno'] = pd.to_numeric(dfMQ303A_Hidrogeno['Hidrogeno'])\n", + "dfMQ303A_Alcohol['Alchol'] = pd.to_numeric(dfMQ303A_Alcohol['Alcohol'])\n", + "\n", + "dfMQ303A_Iso_Butano['Iso_Butano'] = dfMQ303A_Iso_Butano['Iso_Butano'].replace('',None, regex=True)\n", + "dfMQ303A_Hidrogeno['Hidrogeno'] = dfMQ303A_Hidrogeno['Hidrogeno'].replace('',None, regex=True)\n", + "dfMQ303A_Alcohol['Alchol'] = dfMQ303A_Alcohol['Alchol'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ303A_Iso_Butano.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Iso-Butano\n", + "dataset2TrainIso_Butano = dfMQ303A_Iso_Butano.copy()\n", + "dataset2TrainIso_Butano.dropna(inplace=True)\n", + "X_trainIso_Butano = dataset2TrainIso_Butano.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainIso_Butano = dataset2TrainIso_Butano['Iso_Butano'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainIso_Butano, y_trainIso_Butano)\n", + "#Predict\n", + "Iso_Butano_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ303A_Iso_Butano = Iso_Butano_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Hidrogeno\n", + "dataset2TrainHidrogeno = dfMQ303A_Hidrogeno.copy()\n", + "dataset2TrainHidrogeno.dropna(inplace=True)\n", + "X_trainHidrogeno = dataset2TrainHidrogeno.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainHidrogeno = dataset2TrainHidrogeno['Hidrogeno'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainHidrogeno, y_trainHidrogeno)\n", + "#Predict\n", + "Hidrogeno_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ303A_Hidrogeno = Hidrogeno_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Alchol\n", + "dataset2TrainAlchol = dfMQ303A_Alcohol.copy()\n", + "dataset2TrainAlchol.dropna(inplace=True)\n", + "X_trainAlchol = dataset2TrainAlchol.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAlchol = dataset2TrainAlchol['Alchol'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAlchol, y_trainAlchol)\n", + "#Predict\n", + "Alchol_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ303A_Alchol = Alchol_Predicted\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ303A_Iso_Butano, x_MQ303A, marker='o', linewidth=1, label='Iso-Butano')\n", + "plt.plot(MQ303A_Hidrogeno, x_MQ303A, marker='o', linewidth=1, label='Hidrogeno')\n", + "plt.plot(MQ303A_Alchol, x_MQ303A, marker='o', linewidth=1, label='Alcohol')\n", + "\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-303A data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ303A.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ303A.png')\n", + "plt.savefig('MQ303A.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ309_Regression-checkpoint.ipynb b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ309_Regression-checkpoint.ipynb new file mode 100644 index 0000000..e215a7f --- /dev/null +++ b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ309_Regression-checkpoint.ipynb @@ -0,0 +1,1877 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \t \n", + "0.2 \t \t \t \t \n", + "0.3 \t 7000.0 \t \t \t \n", + "0.4 \t \t \t \t \n", + "0.5 \t \t \t \t \n", + "0.6 \t \t \t \t \n", + "0.7 \t \t \t 3000.0 \t \n", + "0.8 \t \t \t \t \n", + "0.9 \t \t \t \t \n", + "1.0 \t 1000.0 \t \t 1000.0 \t \n", + "2.0 \t 300.0 \t \t 300.0 \t \n", + "3.0 \t \t \t \t 7000.0\n", + "4.0 \t \t 7000.0 \t \t 3000.0\n", + "5.0 \t \t 3000.0 \t \t 1000.0\n", + "6.0 \t \t 1000.0 \t \t \n", + "7.0 \t \t \t \t \n", + "8.0 \t \t \t \t \n", + "9.0 \t \t \t \t \n", + "10.0 \t \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, CH4, CO , H2, Alcohol = sheetMQ309A.row_values(row_index, start_colx=0, end_colx=5)\n", + " print(RsR0, \"\t\", CH4, \"\t\", CO, \"\t\", H2, \"\t\", Alcohol)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ309A = sheetMQ309A.col_values(0)[2:]\n", + "MQ309A_CH4 = sheetMQ309A.col_values(1)[2:]\n", + "MQ309A_CO = sheetMQ309A.col_values(2)[2:]\n", + "MQ309A_H2 = sheetMQ309A.col_values(3)[2:]\n", + "MQ309A_Alcohol = sheetMQ309A.col_values(4)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "MQ309A_CH4 =zero_to_nan(MQ309A_CH4)\n", + "MQ309A_CO =zero_to_nan(MQ309A_CO)\n", + "MQ309A_H2 =zero_to_nan(MQ309A_H2)\n", + "MQ309A_Alcohol =zero_to_nan(MQ309A_Alcohol)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataCH4 = {'RsRo': x_MQ309A, 'CH4': MQ309A_CH4}\n", + "dataCO = {'RsRo': x_MQ309A, 'CO': MQ309A_CO}\n", + "dataH2 = {'RsRo': x_MQ309A, 'H2': MQ309A_H2}\n", + "dataAlcohol = {'RsRo': x_MQ309A, 'Alcohol': MQ309A_Alcohol}\n", + "\n", + "dfMQ309A_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ309A_CO = pd.DataFrame(dataCO)\n", + "dfMQ309A_H2 = pd.DataFrame(dataH2)\n", + "dfMQ309A_Alcohol = pd.DataFrame(dataAlcohol)\n", + "\n", + "dfMQ309A_CH4['CH4'] = pd.to_numeric(dfMQ309A_CH4['CH4'])\n", + "dfMQ309A_CO['CO'] = pd.to_numeric(dfMQ309A_CO['CO'])\n", + "dfMQ309A_H2['H2'] = pd.to_numeric(dfMQ309A_H2['H2'])\n", + "dfMQ309A_Alcohol['Alcohol'] = pd.to_numeric(dfMQ309A_Alcohol['Alcohol'])\n", + "\n", + "dfMQ309A_CH4['CH4'] = dfMQ309A_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ309A_CO['CO'] = dfMQ309A_CO['CO'].replace('',None, regex=True)\n", + "dfMQ309A_H2['H2'] = dfMQ309A_H2['H2'].replace('',None, regex=True)\n", + "dfMQ309A_Alcohol['Alcohol'] = dfMQ309A_Alcohol['Alcohol'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ309A_CH4.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CH4\n", + "dataset2TrainCH4 = dfMQ309A_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ309A_CH4 = CH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ309A_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ309A_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train H2\n", + "dataset2TrainH2 = dfMQ309A_H2.copy()\n", + "dataset2TrainH2.dropna(inplace=True)\n", + "X_trainH2 = dataset2TrainH2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainH2 = dataset2TrainH2['H2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainH2, y_trainH2)\n", + "#Predict\n", + "H2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ309A_H2 = H2_Predicted\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Alcohol\n", + "dataset2TrainAlcohol = dfMQ309A_Alcohol.copy()\n", + "dataset2TrainAlcohol.dropna(inplace=True)\n", + "X_trainAlcohol = dataset2TrainAlcohol.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAlcohol = dataset2TrainAlcohol['Alcohol'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAlcohol, y_trainAlcohol)\n", + "#Predict\n", + "Alcohol_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ309A_Alcohol = Alcohol_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ309A_CH4, x_MQ309A, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ309A_CO, x_MQ309A, marker='o', linewidth=1, label='CO')\n", + "plt.plot(MQ309A_H2, x_MQ309A, marker='o', linewidth=1, label='H2')\n", + "plt.plot(MQ309A_Alcohol, x_MQ309A, marker='o', linewidth=1, label='Alcohol')\n", + "\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-309A data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ309A.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ309A.png')\n", + "plt.savefig('MQ309A.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ3_Regression-checkpoint.ipynb b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ3_Regression-checkpoint.ipynb new file mode 100644 index 0000000..3375f49 --- /dev/null +++ b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ3_Regression-checkpoint.ipynb @@ -0,0 +1,2356 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \t \t \t \n", + "0.2 \t 4.0 \t \t \t \t \t \n", + "0.3 \t \t \t \t \t \t \n", + "0.4 \t \t \t \t \t \t \n", + "0.5 \t 1.0 \t \t \t \t \t \n", + "0.6 \t \t \t \t \t \t \n", + "0.7 \t \t \t \t \t \t \n", + "0.8 \t \t 8.0 \t \t \t \t \n", + "0.9 \t \t \t \t \t \t \n", + "1.0 \t 0.4 \t 4.0 \t \t \t \t \n", + "2.0 \t \t \t \t \t \t \n", + "3.0 \t \t \t \t \t \t \n", + "4.0 \t \t 0.1 \t \t \t \t \n", + "5.0 \t \t \t \t \t \t \n", + "6.0 \t \t \t \t \t \t \n", + "7.0 \t \t \t \t \t \t \n", + "8.0 \t \t \t \t \t \t \n", + "9.0 \t \t \t \t \t \t \n", + "10.0 \t \t \t \t 8.0 \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, Alcohol, Benzine, CH4, Hexane, LPG, CO = sheetMQ3.row_values(row_index, start_colx=0, end_colx=7)\n", + " print(RsR0, \"\t\", Alcohol, \"\t\", Benzine, \"\t\", CH4, \"\t\", Hexane, \"\t\", LPG, \"\t\", CO)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ3 = sheetMQ3.col_values(0)[2:]\n", + "MQ3_Alcohol = sheetMQ3.col_values(1)[2:]\n", + "MQ3_Benzine = sheetMQ3.col_values(2)[2:]\n", + "MQ3_CH4 = sheetMQ3.col_values(3)[2:]\n", + "MQ3_Hexane = sheetMQ3.col_values(4)[2:]\n", + "MQ3_LPG = sheetMQ3.col_values(5)[2:]\n", + "MQ3_CO = sheetMQ3.col_values(6)[2:]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [], + "source": [ + "MQ3_Alcohol =zero_to_nan(MQ3_Alcohol)\n", + "MQ3_Benzine =zero_to_nan(MQ3_Benzine)\n", + "MQ3_CH4 =zero_to_nan(MQ3_CH4)\n", + "MQ3_Hexane =zero_to_nan(MQ3_Hexane)\n", + "MQ3_LPG =zero_to_nan(MQ3_LPG)\n", + "MQ3_CO =zero_to_nan(MQ3_CO)" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataAlcohol = {'RsRo': x_MQ3, 'Alcohol': MQ3_Alcohol}\n", + "dataBenzine = {'RsRo': x_MQ3, 'Benzine': MQ3_Benzine}\n", + "dataCH4 = {'RsRo': x_MQ3, 'CH4': MQ3_CH4}\n", + "dataHexane = {'RsRo': x_MQ3, 'Hexane': MQ3_Hexane}\n", + "dataLPG = {'RsRo': x_MQ3, 'LPG': MQ3_LPG}\n", + "dataCO = {'RsRo': x_MQ3, 'CO': MQ3_CO}\n", + "\n", + "dfMQ3_Alcohol = pd.DataFrame(dataAlcohol)\n", + "dfMQ3_Benzine = pd.DataFrame(dataBenzine)\n", + "dfMQ3_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ3_Hexane = pd.DataFrame(dataHexane)\n", + "dfMQ3_LPG = pd.DataFrame(dataLPG)\n", + "dfMQ3_CO = pd.DataFrame(dataCO)\n", + "\n", + "dfMQ3_Alcohol['Alcohol'] = pd.to_numeric(dfMQ3_Alcohol['Alcohol'])\n", + "dfMQ3_Benzine['Benzine'] = pd.to_numeric(dfMQ3_Benzine['Benzine'])\n", + "dfMQ3_CH4['CH4'] = pd.to_numeric(dfMQ3_CH4['CH4'])\n", + "dfMQ3_Hexane['Hexane'] = pd.to_numeric(dfMQ3_Hexane['Hexane'])\n", + "dfMQ3_LPG['LPG'] = pd.to_numeric(dfMQ3_LPG['LPG'])\n", + "dfMQ3_CO['CO'] = pd.to_numeric(dfMQ3_CO['CO'])\n", + "\n", + "dfMQ3_Alcohol['Alcohol'] = dfMQ3_Alcohol['Alcohol'].replace('',None, regex=True)\n", + "dfMQ3_Benzine['Benzine'] = dfMQ3_Benzine['Benzine'].replace('',None, regex=True)\n", + "dfMQ3_CH4['CH4'] = dfMQ3_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ3_Hexane['Hexane'] = dfMQ3_Hexane['Hexane'].replace('',None, regex=True)\n", + "dfMQ3_LPG['LPG'] = dfMQ3_LPG['LPG'].replace('',None, regex=True)\n", + "dfMQ3_CO['CO'] = dfMQ3_CO['CO'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ3_Alcohol.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train alcohol\n", + "dataset2TrainAlcohol = dfMQ3_Alcohol.copy()\n", + "dataset2TrainAlcohol.dropna(inplace=True)\n", + "X_trainAlcohol = dataset2TrainAlcohol.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAlcohol = dataset2TrainAlcohol['Alcohol'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAlcohol, y_trainAlcohol)\n", + "#Predict\n", + "Alcohol_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ3_Alcohol = Alcohol_Predicted\n" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Benzine\n", + "dataset2TrainBenzine = dfMQ3_Benzine.copy()\n", + "dataset2TrainBenzine.dropna(inplace=True)\n", + "X_trainBenzine = dataset2TrainBenzine.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainBenzine = dataset2TrainBenzine['Benzine'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainBenzine, y_trainBenzine)\n", + "#Predict\n", + "Benzine_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ3_Benzine = Benzine_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CH4\n", + "dataset2TrainCH4 = dfMQ3_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ3_CH4 = CH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Hexane\n", + "dataset2TrainHexane = dfMQ3_Hexane.copy()\n", + "dataset2TrainHexane.dropna(inplace=True)\n", + "X_trainHexane = dataset2TrainHexane.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainHexane = dataset2TrainHexane['Hexane'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainHexane, y_trainHexane)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ3_Hexane = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train LPG\n", + "dataset2TrainLPG = dfMQ3_LPG.copy()\n", + "dataset2TrainLPG.dropna(inplace=True)\n", + "X_trainLPG = dataset2TrainLPG.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainLPG = dataset2TrainLPG['LPG'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainLPG, y_trainLPG)\n", + "#Predict\n", + "LPG_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ3_LPG = LPG_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ3_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ3_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ3_Alcohol, x_MQ3, marker='o', linewidth=1, label='Alcohol')\n", + "plt.plot(MQ3_Benzine, x_MQ3, marker='o', linewidth=1, label='Benzine')\n", + "plt.plot(MQ3_CH4, x_MQ3, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ3_Hexane, x_MQ3, marker='o', linewidth=1, label='Hexane')\n", + "plt.plot(MQ3_LPG, x_MQ3, marker='o', linewidth=1, label='LPG')\n", + "plt.plot(MQ3_CO, x_MQ3, marker='o', linewidth=1, label='CO')\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-3 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ3.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ3.png')\n", + "plt.savefig('MQ3.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ4_Regression-checkpoint.ipynb b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ4_Regression-checkpoint.ipynb new file mode 100644 index 0000000..728a44f --- /dev/null +++ b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ4_Regression-checkpoint.ipynb @@ -0,0 +1,1935 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \t \n", + "0.2 \t \t \t \t \n", + "0.3 \t \t \t \t \n", + "0.4 \t \t \t \t \n", + "0.5 \t \t \t \t \n", + "0.6 \t \t \t \t \n", + "0.7 \t \t \t \t \n", + "0.8 \t \t \t \t \n", + "0.9 \t 5000.0 \t \t \t \n", + "1.0 \t \t 1000.0 \t \t \n", + "2.0 \t 1000.0 \t 200.0 \t \t \n", + "3.0 \t 200.0 \t \t 1000.0 \t 5000.0\n", + "4.0 \t \t \t 200.0 \t 200.0\n", + "5.0 \t \t 4000.0 \t \t \n", + "6.0 \t \t \t \t \n", + "7.0 \t \t \t \t \n", + "8.0 \t \t \t \t \n", + "9.0 \t \t \t \t \n", + "10.0 \t \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, CH4, CO, H2, Alcohol = sheetMQ4.row_values(row_index, start_colx=0, end_colx=5)\n", + " print(RsR0, \"\t\", CH4, \"\t\", CO, \"\t\", H2, \"\t\", Alcohol)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ4 = sheetMQ4.col_values(0)[2:]\n", + "MQ4_CH4 = sheetMQ4.col_values(1)[2:]\n", + "MQ4_CO = sheetMQ4.col_values(2)[2:]\n", + "MQ4_H2 = sheetMQ4.col_values(3)[2:]\n", + "MQ4_Alcohol = sheetMQ4.col_values(4)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "MQ4_CH4 =zero_to_nan(MQ4_CH4)\n", + "MQ4_CO =zero_to_nan(MQ4_CO)\n", + "MQ4_H2 =zero_to_nan(MQ4_H2)\n", + "MQ4_Alcohol =zero_to_nan(MQ4_Alcohol)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataCH4 = {'RsRo': x_MQ4, 'CH4': MQ4_CH4}\n", + "dataCO = {'RsRo': x_MQ4, 'CO': MQ4_CO}\n", + "dataH2 = {'RsRo': x_MQ4, 'H2': MQ4_H2}\n", + "dataAlcohol = {'RsRo': x_MQ4, 'Alcohol': MQ4_Alcohol}\n", + "\n", + "dfMQ4_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ4_CO = pd.DataFrame(dataCO)\n", + "dfMQ4_H2 = pd.DataFrame(dataH2)\n", + "dfMQ4_Alcohol = pd.DataFrame(dataAlcohol)\n", + "\n", + "dfMQ4_CH4['CH4'] = pd.to_numeric(dfMQ4_CH4['CH4'])\n", + "dfMQ4_CO['CO'] = pd.to_numeric(dfMQ4_CO['CO'])\n", + "dfMQ4_H2['H2'] = pd.to_numeric(dfMQ4_H2['H2'])\n", + "dfMQ4_Alcohol['Alcohol'] = pd.to_numeric(dfMQ4_Alcohol['Alcohol'])\n", + "\n", + "dfMQ4_CH4['CH4'] = dfMQ4_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ4_CO['CO'] = dfMQ4_CO['CO'].replace('',None, regex=True)\n", + "dfMQ4_H2['H2'] = dfMQ4_H2['H2'].replace('',None, regex=True)\n", + "dfMQ4_Alcohol['Alcohol'] = dfMQ4_Alcohol['Alcohol'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ4_Alcohol.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CH4\n", + "dataset2TrainCH4 = dfMQ4_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ4_CH4 = CH4_Predicted\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ4_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ4_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train H2\n", + "dataset2TrainH2 = dfMQ4_H2.copy()\n", + "dataset2TrainH2.dropna(inplace=True)\n", + "X_trainH2 = dataset2TrainH2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainH2 = dataset2TrainH2['H2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainH2, y_trainH2)\n", + "#Predict\n", + "H2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ4_H2 = H2_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Alcohol\n", + "dataset2TrainAlcohol = dfMQ4_Alcohol.copy()\n", + "dataset2TrainAlcohol.dropna(inplace=True)\n", + "X_trainAlcohol = dataset2TrainAlcohol.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAlcohol = dataset2TrainAlcohol['Alcohol'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAlcohol, y_trainAlcohol)\n", + "#Predict\n", + "Alcohol_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ4_Alcohol = Alcohol_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ4_CH4, x_MQ4, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ4_CO, x_MQ4, marker='o', linewidth=1, label='CO')\n", + "plt.plot(MQ4_H2, x_MQ4, marker='o', linewidth=1, label='H2')\n", + "plt.plot(MQ4_Alcohol, x_MQ4, marker='o', linewidth=1, label='Alcohol')\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-4 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ4.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ4.png')\n", + "plt.savefig('MQ4.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ5_Regression-checkpoint.ipynb b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ5_Regression-checkpoint.ipynb new file mode 100644 index 0000000..8bf022f --- /dev/null +++ b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ5_Regression-checkpoint.ipynb @@ -0,0 +1,1794 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \t \n", + "0.2 \t \t 5000.0 \t \t \n", + "0.3 \t \t \t \t \n", + "0.4 \t \t 800.0 \t 2000.0 \t \n", + "0.5 \t \t \t 1000.0 \t \n", + "0.6 \t \t \t \t \n", + "0.7 \t 5000.0 \t 200.0 \t 500.0 \t \n", + "0.8 \t 2000.0 \t \t \t \n", + "0.9 \t \t \t \t \n", + "1.0 \t 1000.0 \t \t \t \n", + "2.0 \t \t \t \t \n", + "3.0 \t \t \t \t 800.0\n", + "4.0 \t \t \t \t 200.0\n", + "5.0 \t \t \t \t \n", + "6.0 \t \t \t \t \n", + "7.0 \t \t \t \t \n", + "8.0 \t \t \t \t \n", + "9.0 \t \t \t \t \n", + "10.0 \t \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, H2, LPG , CH4, CO = sheetMQ5.row_values(row_index, start_colx=0, end_colx=5)\n", + " print(RsR0, \"\t\", H2, \"\t\", LPG, \"\t\", CH4, \"\t\", CO)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ5 = sheetMQ5.col_values(0)[2:]\n", + "MQ5_H2 = sheetMQ5.col_values(1)[2:]\n", + "MQ5_LPG = sheetMQ5.col_values(2)[2:]\n", + "MQ5_CH4 = sheetMQ5.col_values(3)[2:]\n", + "MQ5_CO = sheetMQ5.col_values(4)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "MQ5_H2 =zero_to_nan(MQ5_H2)\n", + "MQ5_LPG =zero_to_nan(MQ5_LPG)\n", + "MQ5_CH4 =zero_to_nan(MQ5_CH4)\n", + "MQ5_CO =zero_to_nan(MQ5_CO)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataH2 = {'RsRo': x_MQ5, 'H2': MQ5_H2}\n", + "dataLPG = {'RsRo': x_MQ5, 'LPG': MQ5_LPG}\n", + "dataCH4 = {'RsRo': x_MQ5, 'CH4': MQ5_CH4}\n", + "dataCO = {'RsRo': x_MQ5, 'CO': MQ5_CO}\n", + "\n", + "dfMQ5_H2 = pd.DataFrame(dataH2)\n", + "dfMQ5_LPG = pd.DataFrame(dataLPG)\n", + "dfMQ5_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ5_CO = pd.DataFrame(dataCO)\n", + "\n", + "dfMQ5_H2['H2'] = pd.to_numeric(dfMQ5_H2['H2'])\n", + "dfMQ5_LPG['LPG'] = pd.to_numeric(dfMQ5_LPG['LPG'])\n", + "dfMQ5_CH4['CH4'] = pd.to_numeric(dfMQ5_CH4['CH4'])\n", + "dfMQ5_CO['CO'] = pd.to_numeric(dfMQ5_CO['CO'])\n", + "\n", + "dfMQ5_H2['H2'] = dfMQ5_H2['H2'].replace('',None, regex=True)\n", + "dfMQ5_LPG['LPG'] = dfMQ5_LPG['LPG'].replace('',None, regex=True)\n", + "dfMQ5_CH4['CH4'] = dfMQ5_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ5_CO['CO'] = dfMQ5_CO['CO'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ5_LPG.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train H2\n", + "dataset2TrainH2 = dfMQ5_H2.copy()\n", + "dataset2TrainH2.dropna(inplace=True)\n", + "X_trainH2 = dataset2TrainH2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainH2 = dataset2TrainH2['H2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainH2, y_trainH2)\n", + "#Predict\n", + "H2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ5_H2 = H2_Predicted\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train LPG\n", + "dataset2TrainLPG = dfMQ5_LPG.copy()\n", + "dataset2TrainLPG.dropna(inplace=True)\n", + "X_trainLPG = dataset2TrainLPG.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainLPG = dataset2TrainLPG['LPG'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainLPG, y_trainLPG)\n", + "#Predict\n", + "LPG_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ5_LPG = LPG_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CH4\n", + "dataset2TrainCH4 = dfMQ5_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ5_CH4 = CH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ5_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ5_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ5_H2, x_MQ5, marker='o', linewidth=1, label='H2')\n", + "plt.plot(MQ5_LPG, x_MQ5, marker='o', linewidth=1, label='LPG')\n", + "plt.plot(MQ5_CH4, x_MQ5, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ5_CO, x_MQ5, marker='o', linewidth=1, label='CO')\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-5 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ5.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ5.png')\n", + "plt.savefig('MQ5.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ6_Regression-checkpoint.ipynb b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ6_Regression-checkpoint.ipynb new file mode 100644 index 0000000..0a3aa4a --- /dev/null +++ b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ6_Regression-checkpoint.ipynb @@ -0,0 +1,2034 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \t \t \n", + "0.2 \t \t \t \t \t \n", + "0.3 \t 5000.0 \t \t \t \t \n", + "0.4 \t \t \t 5000.0 \t \t \n", + "0.5 \t \t \t \t \t \n", + "0.6 \t \t \t \t \t \n", + "0.7 \t \t \t \t \t \n", + "0.8 \t \t \t \t \t \n", + "0.9 \t \t \t \t \t \n", + "1.0 \t 1000.0 \t \t 2000.0 \t \t \n", + "2.0 \t 200.0 \t 10000.0 \t \t \t \n", + "3.0 \t \t \t \t \t \n", + "4.0 \t \t 400.0 \t \t \t \n", + "5.0 \t \t \t \t \t 3000.0\n", + "6.0 \t \t 200.0 \t \t \t \n", + "7.0 \t \t \t \t 5000.0 \t 400.0\n", + "8.0 \t \t \t \t 1000.0 \t 200.0\n", + "9.0 \t \t \t \t 200.0 \t \n", + "10.0 \t \t \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, LPG, H2, CH4, CO, Alcohol = sheetMQ6.row_values(row_index, start_colx=0, end_colx=6)\n", + " print(RsR0, \"\t\", LPG, \"\t\", H2, \"\t\", CH4, \"\t\", CO, \"\t\", Alcohol)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ6 = sheetMQ6.col_values(0)[2:]\n", + "MQ6_LPG = sheetMQ6.col_values(1)[2:]\n", + "MQ6_H2 = sheetMQ3.col_values(2)[2:]\n", + "MQ6_CH4 = sheetMQ3.col_values(3)[2:]\n", + "MQ6_CO = sheetMQ3.col_values(4)[2:]\n", + "MQ6_Alcohol = sheetMQ3.col_values(5)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "MQ5_H2 =zero_to_nan(MQ5_H2)\n", + "MQ5_LPG =zero_to_nan(MQ5_LPG)\n", + "MQ5_CH4 =zero_to_nan(MQ5_CH4)\n", + "MQ5_CO =zero_to_nan(MQ5_CO)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataH2 = {'RsRo': x_MQ5, 'H2': MQ5_H2}\n", + "dataLPG = {'RsRo': x_MQ5, 'LPG': MQ5_LPG}\n", + "dataCH4 = {'RsRo': x_MQ5, 'CH4': MQ5_CH4}\n", + "dataCO = {'RsRo': x_MQ5, 'CO': MQ5_CO}\n", + "\n", + "dfMQ5_H2 = pd.DataFrame(dataH2)\n", + "dfMQ5_LPG = pd.DataFrame(dataLPG)\n", + "dfMQ5_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ5_CO = pd.DataFrame(dataCO)\n", + "\n", + "dfMQ5_H2['H2'] = pd.to_numeric(dfMQ5_H2['H2'])\n", + "dfMQ5_LPG['LPG'] = pd.to_numeric(dfMQ5_LPG['LPG'])\n", + "dfMQ5_CH4['CH4'] = pd.to_numeric(dfMQ5_CH4['CH4'])\n", + "dfMQ5_CO['CO'] = pd.to_numeric(dfMQ5_CO['CO'])\n", + "\n", + "dfMQ5_H2['H2'] = dfMQ5_H2['H2'].replace('',None, regex=True)\n", + "dfMQ5_LPG['LPG'] = dfMQ5_LPG['LPG'].replace('',None, regex=True)\n", + "dfMQ5_CH4['CH4'] = dfMQ5_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ5_CO['CO'] = dfMQ5_CO['CO'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ5_LPG.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train H2\n", + "dataset2TrainH2 = dfMQ5_H2.copy()\n", + "dataset2TrainH2.dropna(inplace=True)\n", + "X_trainH2 = dataset2TrainH2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainH2 = dataset2TrainH2['H2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainH2, y_trainH2)\n", + "#Predict\n", + "H2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ5_H2 = H2_Predicted\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train LPG\n", + "dataset2TrainLPG = dfMQ5_LPG.copy()\n", + "dataset2TrainLPG.dropna(inplace=True)\n", + "X_trainLPG = dataset2TrainLPG.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainLPG = dataset2TrainLPG['LPG'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainLPG, y_trainLPG)\n", + "#Predict\n", + "LPG_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ5_LPG = LPG_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CH4\n", + "dataset2TrainCH4 = dfMQ5_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ5_CH4 = CH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ5_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ5_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ5_H2, x_MQ5, marker='o', linewidth=1, label='H2')\n", + "plt.plot(MQ5_LPG, x_MQ5, marker='o', linewidth=1, label='LPG')\n", + "plt.plot(MQ5_CH4, x_MQ5, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ5_CO, x_MQ5, marker='o', linewidth=1, label='CO')\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-5 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ5.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ5.png')\n", + "plt.savefig('MQ5.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ7_Regression-checkpoint.ipynb b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ7_Regression-checkpoint.ipynb new file mode 100644 index 0000000..a63cc80 --- /dev/null +++ b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ7_Regression-checkpoint.ipynb @@ -0,0 +1,2374 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.01 \t \t \t \t \t \n", + "0.02 \t \t \t \t \t \n", + "0.03 \t \t \t \t \t \n", + "0.04 \t \t \t \t \t \n", + "0.05 \t \t 4000.0 \t \t \t \n", + "0.06 \t \t \t \t \t \n", + "0.07 \t \t \t \t \t \n", + "0.08 \t \t \t \t \t \n", + "0.09 \t \t \t \t 3000.0 \t \n", + "0.1 \t \t \t \t \t \n", + "0.2 \t \t \t \t \t \n", + "0.3 \t \t 400.0 \t \t \t \n", + "0.4 \t \t \t \t 400.0 \t \n", + "0.5 \t \t \t \t \t \n", + "0.6 \t \t \t \t \t \n", + "0.7 \t \t \t \t \t \n", + "0.8 \t \t 100.0 \t \t \t \n", + "0.9 \t \t \t \t \t \n", + "1.0 \t \t \t \t 100.0 \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, CO, H2, LPG, CH4, Alcohol = sheetMQ7.row_values(row_index, start_colx=0, end_colx=6)\n", + " print(RsR0, \"\t\", LPG, \"\t\", H2, \"\t\", CH4, \"\t\", CO, \"\t\", Alcohol)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ7 = sheetMQ7.col_values(0)[2:]\n", + "MQ7_CO = sheetMQ7.col_values(1)[2:]\n", + "MQ7_H2 = sheetMQ7.col_values(2)[2:]\n", + "MQ7_LPG = sheetMQ7.col_values(3)[2:]\n", + "MQ7_CH4 = sheetMQ7.col_values(4)[2:]\n", + "MQ7_Alcohol = sheetMQ7.col_values(5)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "MQ7_H2 =zero_to_nan(MQ7_H2)\n", + "MQ7_LPG =zero_to_nan(MQ7_LPG)\n", + "MQ7_CH4 =zero_to_nan(MQ7_CH4)\n", + "MQ7_CO =zero_to_nan(MQ7_CO)\n", + "MQ7_Alcohol =zero_to_nan(MQ7_Alcohol)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataH2 = {'RsRo': x_MQ7, 'H2': MQ7_H2}\n", + "dataLPG = {'RsRo': x_MQ7, 'LPG': MQ7_LPG}\n", + "dataCH4 = {'RsRo': x_MQ7, 'CH4': MQ7_CH4}\n", + "dataCO = {'RsRo': x_MQ7, 'CO': MQ7_CO}\n", + "dataALcohol = {'RsRo': x_MQ7, 'Alcohol': MQ7_Alcohol}\n", + "\n", + "dfMQ7_H2 = pd.DataFrame(dataH2)\n", + "dfMQ7_LPG = pd.DataFrame(dataLPG)\n", + "dfMQ7_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ7_CO = pd.DataFrame(dataCO)\n", + "dfMQ7_Alcohol = pd.DataFrame(dataALcohol)\n", + "\n", + "dfMQ7_H2['H2'] = pd.to_numeric(dfMQ7_H2['H2'])\n", + "dfMQ7_LPG['LPG'] = pd.to_numeric(dfMQ7_LPG['LPG'])\n", + "dfMQ7_CH4['CH4'] = pd.to_numeric(dfMQ7_CH4['CH4'])\n", + "dfMQ7_CO['CO'] = pd.to_numeric(dfMQ7_CO['CO'])\n", + "dfMQ7_Alcohol['Alcohol'] = pd.to_numeric(dfMQ7_Alcohol['Alcohol'])\n", + "\n", + "dfMQ7_H2['H2'] = dfMQ7_H2['H2'].replace('',None, regex=True)\n", + "dfMQ7_LPG['LPG'] = dfMQ7_LPG['LPG'].replace('',None, regex=True)\n", + "dfMQ7_CH4['CH4'] = dfMQ7_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ7_CO['CO'] = dfMQ7_CO['CO'].replace('',None, regex=True)\n", + "dfMQ7_Alcohol['Alcohol'] = dfMQ7_Alcohol['Alcohol'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ7_LPG.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train H2\n", + "dataset2TrainH2 = dfMQ7_H2.copy()\n", + "dataset2TrainH2.dropna(inplace=True)\n", + "X_trainH2 = dataset2TrainH2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainH2 = dataset2TrainH2['H2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainH2, y_trainH2)\n", + "#Predict\n", + "H2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ7_H2 = H2_Predicted\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train LPG\n", + "dataset2TrainLPG = dfMQ7_LPG.copy()\n", + "dataset2TrainLPG.dropna(inplace=True)\n", + "X_trainLPG = dataset2TrainLPG.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainLPG = dataset2TrainLPG['LPG'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainLPG, y_trainLPG)\n", + "#Predict\n", + "LPG_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ7_LPG = LPG_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CH4\n", + "dataset2TrainCH4 = dfMQ7_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ7_CH4 = CH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ7_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ7_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Alcohol\n", + "dataset2TrainAlcohol = dfMQ7_Alcohol.copy()\n", + "dataset2TrainAlcohol.dropna(inplace=True)\n", + "X_trainAlcohol = dataset2TrainAlcohol.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAlcohol = dataset2TrainAlcohol['Alcohol'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAlcohol, y_trainAlcohol)\n", + "#Predict\n", + "Alcohol_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ7_Alcohol = Alcohol_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ7_H2, x_MQ7, marker='o', linewidth=1, label='H2')\n", + "plt.plot(MQ7_LPG, x_MQ7, marker='o', linewidth=1, label='LPG')\n", + "plt.plot(MQ7_CH4, x_MQ7, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ7_CO, x_MQ7, marker='o', linewidth=1, label='CO')\n", + "plt.plot(MQ7_Alcohol, x_MQ7, marker='o', linewidth=1, label='Alcohol')\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-7 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ7.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ7.png')\n", + "plt.savefig('MQ7.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ8_Regression-checkpoint.ipynb b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ8_Regression-checkpoint.ipynb new file mode 100644 index 0000000..03be25a --- /dev/null +++ b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ8_Regression-checkpoint.ipynb @@ -0,0 +1,2605 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.01 \t \t \t \t \t \n", + "0.02 \t \t \t \t \t \n", + "0.03 \t \t \t \t \t \n", + "0.04 \t \t \t \t \t \n", + "0.05 \t \t \t \t \t \n", + "0.06 \t \t \t \t \t \n", + "0.07 \t \t \t \t \t \n", + "0.08 \t \t \t \t \t \n", + "0.09 \t \t \t \t \t \n", + "0.1 \t \t 5000.0 \t \t \t \n", + "0.2 \t \t \t \t \t \n", + "0.3 \t \t \t \t \t \n", + "0.4 \t \t \t \t \t \n", + "0.5 \t \t \t \t \t \n", + "0.6 \t \t \t \t \t \n", + "0.7 \t \t \t \t \t \n", + "0.8 \t \t \t \t \t \n", + "0.9 \t \t \t \t \t \n", + "1.0 \t \t 1000.0 \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, H2, LPG, CH4, CO, Alcohol = sheetMQ8.row_values(row_index, start_colx=0, end_colx=6)\n", + " print(RsR0, \"\t\", LPG, \"\t\", H2, \"\t\", CH4, \"\t\", CO, \"\t\", Alcohol)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ8 = sheetMQ8.col_values(0)[2:]\n", + "MQ8_H2 = sheetMQ8.col_values(1)[2:]\n", + "MQ8_LPG = sheetMQ8.col_values(2)[2:]\n", + "MQ8_CH4 = sheetMQ8.col_values(3)[2:]\n", + "MQ8_CO = sheetMQ8.col_values(4)[2:]\n", + "MQ8_Alcohol = sheetMQ8.col_values(5)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "MQ8_H2 =zero_to_nan(MQ8_H2)\n", + "MQ8_LPG =zero_to_nan(MQ8_LPG)\n", + "MQ8_CH4 =zero_to_nan(MQ8_CH4)\n", + "MQ8_CO =zero_to_nan(MQ8_CO)\n", + "MQ8_Alcohol =zero_to_nan(MQ8_Alcohol)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataH2 = {'RsRo': x_MQ8, 'H2': MQ8_H2}\n", + "dataLPG = {'RsRo': x_MQ8, 'LPG': MQ8_LPG}\n", + "dataCH4 = {'RsRo': x_MQ8, 'CH4': MQ8_CH4}\n", + "dataCO = {'RsRo': x_MQ8, 'CO': MQ8_CO}\n", + "dataALcohol = {'RsRo': x_MQ8, 'Alcohol': MQ8_Alcohol}\n", + "\n", + "dfMQ8_H2 = pd.DataFrame(dataH2)\n", + "dfMQ8_LPG = pd.DataFrame(dataLPG)\n", + "dfMQ8_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ8_CO = pd.DataFrame(dataCO)\n", + "dfMQ8_Alcohol = pd.DataFrame(dataALcohol)\n", + "\n", + "dfMQ8_H2['H2'] = pd.to_numeric(dfMQ8_H2['H2'])\n", + "dfMQ8_LPG['LPG'] = pd.to_numeric(dfMQ8_LPG['LPG'])\n", + "dfMQ8_CH4['CH4'] = pd.to_numeric(dfMQ8_CH4['CH4'])\n", + "dfMQ8_CO['CO'] = pd.to_numeric(dfMQ8_CO['CO'])\n", + "dfMQ8_Alcohol['Alcohol'] = pd.to_numeric(dfMQ8_Alcohol['Alcohol'])\n", + "\n", + "dfMQ8_H2['H2'] = dfMQ8_H2['H2'].replace('',None, regex=True)\n", + "dfMQ8_LPG['LPG'] = dfMQ8_LPG['LPG'].replace('',None, regex=True)\n", + "dfMQ8_CH4['CH4'] = dfMQ8_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ8_CO['CO'] = dfMQ8_CO['CO'].replace('',None, regex=True)\n", + "dfMQ8_Alcohol['Alcohol'] = dfMQ8_Alcohol['Alcohol'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ8_LPG.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train H2\n", + "dataset2TrainH2 = dfMQ8_H2.copy()\n", + "dataset2TrainH2.dropna(inplace=True)\n", + "X_trainH2 = dataset2TrainH2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainH2 = dataset2TrainH2['H2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainH2, y_trainH2)\n", + "#Predict\n", + "H2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ8_H2 = H2_Predicted\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train LPG\n", + "dataset2TrainLPG = dfMQ8_LPG.copy()\n", + "dataset2TrainLPG.dropna(inplace=True)\n", + "X_trainLPG = dataset2TrainLPG.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainLPG = dataset2TrainLPG['LPG'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainLPG, y_trainLPG)\n", + "#Predict\n", + "LPG_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ8_LPG = LPG_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CH4\n", + "dataset2TrainCH4 = dfMQ8_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ8_CH4 = CH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ8_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ8_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Alcohol\n", + "dataset2TrainAlcohol = dfMQ8_Alcohol.copy()\n", + "dataset2TrainAlcohol.dropna(inplace=True)\n", + "X_trainAlcohol = dataset2TrainAlcohol.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAlcohol = dataset2TrainAlcohol['Alcohol'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAlcohol, y_trainAlcohol)\n", + "#Predict\n", + "Alcohol_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ8_Alcohol = Alcohol_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ8_H2, x_MQ8, marker='o', linewidth=1, label='H2')\n", + "plt.plot(MQ8_LPG, x_MQ8, marker='o', linewidth=1, label='LPG')\n", + "plt.plot(MQ8_CH4, x_MQ8, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ8_CO, x_MQ8, marker='o', linewidth=1, label='CO')\n", + "plt.plot(MQ8_Alcohol, x_MQ8, marker='o', linewidth=1, label='Alcohol')\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-8 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ8.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ8.png')\n", + "plt.savefig('MQ8.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ9_Regression -checkpoint.ipynb b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ9_Regression -checkpoint.ipynb new file mode 100644 index 0000000..0eeca8b --- /dev/null +++ b/Internal_design_documents/Experiments/.ipynb_checkpoints/MQ9_Regression -checkpoint.ipynb @@ -0,0 +1,1632 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \n", + "0.2 \t \t \t \n", + "0.3 \t \t \t \n", + "0.4 \t \t \t \n", + "0.5 \t \t \t \n", + "0.6 \t 3000.0 \t \t \n", + "0.7 \t \t \t 1000.0\n", + "0.8 \t \t 1000.0 \t \n", + "0.9 \t \t 800.0 \t 5000.0\n", + "1.0 \t 1000.0 \t \t \n", + "2.0 \t 200.0 \t 200.0 \t \n", + "3.0 \t \t \t 200.0\n", + "4.0 \t \t \t \n", + "5.0 \t \t \t \n", + "6.0 \t \t \t \n", + "7.0 \t \t \t \n", + "8.0 \t \t \t \n", + "9.0 \t \t \t \n", + "10.0 \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, LPG, CO, CH4 = sheetMQ9.row_values(row_index, start_colx=0, end_colx=4)\n", + " print(RsR0, \"\t\", LPG, \"\t\", CO, \"\t\", CH4)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ9 = sheetMQ9.col_values(0)[2:]\n", + "MQ9_LPG = sheetMQ9.col_values(1)[2:]\n", + "MQ9_CO = sheetMQ9.col_values(2)[2:]\n", + "MQ9_CH4 = sheetMQ9.col_values(3)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "MQ9_LPG =zero_to_nan(MQ9_LPG)\n", + "MQ9_CH4 =zero_to_nan(MQ9_CH4)\n", + "MQ9_CO =zero_to_nan(MQ9_CO)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataLPG = {'RsRo': x_MQ9, 'LPG': MQ9_LPG}\n", + "dataCH4 = {'RsRo': x_MQ9, 'CH4': MQ9_CH4}\n", + "dataCO = {'RsRo': x_MQ9, 'CO': MQ9_CO}\n", + "\n", + "dfMQ9_LPG = pd.DataFrame(dataLPG)\n", + "dfMQ9_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ9_CO = pd.DataFrame(dataCO)\n", + "\n", + "dfMQ9_LPG['LPG'] = pd.to_numeric(dfMQ9_LPG['LPG'])\n", + "dfMQ9_CH4['CH4'] = pd.to_numeric(dfMQ9_CH4['CH4'])\n", + "dfMQ9_CO['CO'] = pd.to_numeric(dfMQ9_CO['CO'])\n", + "\n", + "dfMQ9_LPG['LPG'] = dfMQ9_LPG['LPG'].replace('',None, regex=True)\n", + "dfMQ9_CH4['CH4'] = dfMQ9_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ9_CO['CO'] = dfMQ9_CO['CO'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ9_LPG.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train LPG\n", + "dataset2TrainLPG = dfMQ9_LPG.copy()\n", + "dataset2TrainLPG.dropna(inplace=True)\n", + "X_trainLPG = dataset2TrainLPG.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainLPG = dataset2TrainLPG['LPG'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainLPG, y_trainLPG)\n", + "#Predict\n", + "LPG_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ9_LPG = LPG_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CH4\n", + "dataset2TrainCH4 = dfMQ9_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ9_CH4 = CH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ9_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ9_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ9_LPG, x_MQ9, marker='o', linewidth=1, label='LPG')\n", + "plt.plot(MQ9_CH4, x_MQ9, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ9_CO, x_MQ9, marker='o', linewidth=1, label='CO')\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-9 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ9.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ9.png')\n", + "plt.savefig('MQ9.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/Datasheets info.xlsx b/Internal_design_documents/Experiments/Datasheets info.xlsx new file mode 100644 index 0000000..56d77bb Binary files /dev/null and b/Internal_design_documents/Experiments/Datasheets info.xlsx differ diff --git a/Internal_design_documents/Experiments/Experiment 3.ipynb b/Internal_design_documents/Experiments/Experiment 3.ipynb new file mode 100644 index 0000000..d6d7364 --- /dev/null +++ b/Internal_design_documents/Experiments/Experiment 3.ipynb @@ -0,0 +1,4944 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Este experimento fue realizado despues de +48 horas de precalentamiento.\n", + "## El objetivo fue determinar R0 de forma practica en un espacio con aire limpio.\n", + "### Por ello fue durante las horas de la noche." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "install xlrd library" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install pandas\n", + "!pip install xlrd" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Experimento 3 - 1 de Junio.xlsx\")\n", + "sheet = book.sheet_by_name(\"Experimento 3 - 1 de Junio\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0 11.00 4.00 50.00 72.00 14.00 4.00 1.00 9.00\n", + "2.0 11.00 4.00 51.00 72.00 13.00 4.00 1.00 8.00\n", + "3.0 11.00 4.00 51.00 72.00 14.00 4.00 1.00 10.00\n", + "4.0 10.00 4.00 51.00 72.00 14.00 4.00 1.00 10.00\n", + "5.0 11.00 4.00 51.00 72.00 14.00 4.00 1.00 10.00\n", + "6.0 11.00 4.00 51.00 72.00 14.00 4.00 1.00 10.00\n", + "7.0 11.00 4.00 51.00 72.00 14.00 4.00 1.00 10.00\n", + "8.0 11.00 4.00 51.00 72.00 14.00 4.00 1.00 9.00\n", + "9.0 11.00 4.00 51.00 72.00 14.00 4.00 1.00 9.00\n", + "10.0 11.00 4.00 52.00 73.00 14.00 4.00 1.00 9.00\n", + "11.0 11.00 4.00 52.00 73.00 13.00 4.00 1.00 9.00\n", + "12.0 10.00 4.00 51.00 72.00 13.00 4.00 1.00 9.00\n", + "13.0 10.00 4.00 50.00 71.00 13.00 4.00 1.00 9.00\n", + "14.0 10.00 4.00 50.00 70.00 13.00 4.00 1.00 9.00\n", + "15.0 10.00 4.00 50.00 71.00 13.00 4.00 1.00 9.00\n" + ] + } + ], + "source": [ + "for row_index in range(5,20): #reading first columns\n", + " id, MQ2_R0, MQ3_R0, MQ4_R0, MQ5_R0, MQ6_R0, MQ7_R0, MQ8_R0, MQ9_R0, MQ2_Vm, MQ3_Vm, MQ4_Vm, MQ5_Vm, MQ6_Vm, MQ7_Vm, MQ8_Vm, MQ9_Vm = sheet.row_values(row_index)\n", + " print(id, MQ2_R0, MQ3_R0, MQ4_R0, MQ5_R0, MQ6_R0, MQ7_R0, MQ8_R0, MQ9_R0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "x = sheet.col_values(0)[5:]\n", + "MQ2_R0 = sheet.col_values(1)[5:]\n", + "MQ3_R0 = sheet.col_values(2)[5:]\n", + "MQ4_R0 = sheet.col_values(3)[5:]\n", + "MQ5_R0 = sheet.col_values(4)[5:]\n", + "MQ6_R0 = sheet.col_values(5)[5:]\n", + "MQ7_R0 = sheet.col_values(6)[5:]\n", + "MQ8_R0 = sheet.col_values(7)[5:]\n", + "MQ9_R0 = sheet.col_values(8)[5:]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(18.5, 10.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(x,MQ2_R0, marker='o', linewidth=1, label='MQ2')\n", + "plt.plot(x, MQ3_R0, marker='o', linewidth=1, label='MQ3')\n", + "plt.plot(x, MQ4_R0, marker='o', linewidth=1, label='MQ4')\n", + "plt.plot(x, MQ5_R0, marker='o', linewidth=1, label='MQ5')\n", + "plt.plot(x, MQ6_R0, marker='o', linewidth=1, label='MQ6')\n", + "plt.plot(x, MQ7_R0, marker='o', linewidth=1, label='MQ7')\n", + "plt.plot(x, MQ8_R0, marker='o', linewidth=1, label='MQ8')\n", + "plt.plot(x, MQ9_R0, marker='o', linewidth=1, label='MQ9')\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "fig.suptitle('Calibration plot for MQ data')\n", + "ax.set_xlabel('Samples')\n", + "ax.set_ylabel('R0 (Kohms)')\n", + "plt.legend()\n", + "plt.savefig('demo1.svg')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/Experimento 3 - 1 de Junio.xlsx b/Internal_design_documents/Experiments/Experimento 3 - 1 de Junio.xlsx new file mode 100644 index 0000000..edc388d Binary files /dev/null and b/Internal_design_documents/Experiments/Experimento 3 - 1 de Junio.xlsx differ diff --git a/Internal_design_documents/Experiments/MQ131.eps b/Internal_design_documents/Experiments/MQ131.eps new file mode 100644 index 0000000..7dcddfb --- /dev/null +++ b/Internal_design_documents/Experiments/MQ131.eps @@ -0,0 +1,2311 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: MQ131.eps +%%Creator: matplotlib version 3.0.3, http://matplotlib.org/ +%%CreationDate: Wed Jul 3 21:19:02 2019 +%%Orientation: portrait +%%BoundingBox: -18 198 630 594 +%%EndComments +%%BeginProlog +/mpldict 8 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/c { curveto } bind def +/cl { closepath } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +cl +} bind def +/clipbox { +box +clip +newpath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: DejaVu Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain +%%Creator: Converted from TrueType to type 3 by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-1021 -463 1793 1232]def +/FontType 3 def +/Encoding [ /space /hyphen /slash /zero /one /two /three /C /L /M /N /O /P /Q /R /a /b /c /d /e /f /i /l /n /o /p /r /s /t /x ] def +/FontInfo 10 dict dup begin +/FamilyName (DejaVu Sans) def +/FullName (DejaVu Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def +/Weight (Book) def +/Version (Version 2.35) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -130 def +/UnderlineThickness 90 def +end readonly def +/CharStrings 31 dict dup begin +/.notdef 0 def +/space{318 0 0 0 0 0 _sc +}_d +/hyphen{361 0 49 234 312 314 _sc +49 314 _m +312 314 _l +312 234 _l +49 234 _l +49 314 _l +_cl}_d +/slash{337 0 0 -92 337 729 _sc +254 729 _m +337 729 _l +83 -92 _l +0 -92 _l +254 729 _l +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/two{{636 0 73 0 536 742 _sc +192 83 _m +536 83 _l +536 0 _l +73 0 _l +73 83 _l +110 121 161 173 226 239 _c +290 304 331 346 348 365 _c +380 400 402 430 414 455 _c +426 479 433 504 433 528 _c +433 566 419 598 392 622 _c +365 646 330 659 286 659 _c +255 659 222 653 188 643 _c +154 632 117 616 78 594 _c +78 694 _l +118 710 155 722 189 730 _c +223 738 255 742 284 742 _c +}_e{359 742 419 723 464 685 _c +509 647 532 597 532 534 _c +532 504 526 475 515 449 _c +504 422 484 390 454 354 _c +446 344 420 317 376 272 _c +332 227 271 164 192 83 _c +_cl}_e}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +}_e{202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/C{{698 0 56 -13 644 742 _sc +644 673 _m +644 569 _l +610 599 575 622 537 638 _c +499 653 460 661 418 661 _c +334 661 270 635 226 584 _c +182 533 160 460 160 364 _c +160 268 182 194 226 143 _c +270 92 334 67 418 67 _c +460 67 499 74 537 90 _c +575 105 610 128 644 159 _c +644 56 _l +609 32 572 15 534 4 _c +496 -7 455 -13 412 -13 _c +302 -13 215 20 151 87 _c +}_e{87 154 56 246 56 364 _c +56 481 87 573 151 641 _c +215 708 302 742 412 742 _c +456 742 497 736 535 725 _c +573 713 610 696 644 673 _c +_cl}_e}_d +/L{557 0 98 0 552 729 _sc +98 729 _m +197 729 _l +197 83 _l +552 83 _l +552 0 _l +98 0 _l +98 729 _l +_cl}_d +/M{863 0 98 0 765 729 _sc +98 729 _m +245 729 _l +431 233 _l +618 729 _l +765 729 _l +765 0 _l +669 0 _l +669 640 _l +481 140 _l +382 140 _l +194 640 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/N{748 0 98 0 650 729 _sc +98 729 _m +231 729 _l +554 119 _l +554 729 _l +650 729 _l +650 0 _l +517 0 _l +194 610 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/O{787 0 56 -13 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +394 742 _m +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 248 700 157 639 89 _c +577 21 496 -13 394 -13 _c +291 -13 209 21 148 89 _c +86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +_cl}_d +/P{603 0 98 0 569 729 _sc +197 648 _m +197 374 _l +321 374 _l +367 374 402 385 427 409 _c +452 433 465 467 465 511 _c +465 555 452 588 427 612 _c +402 636 367 648 321 648 _c +197 648 _l +98 729 _m +321 729 _l +402 729 464 710 506 673 _c +548 636 569 582 569 511 _c +569 439 548 384 506 348 _c +464 311 402 293 321 293 _c +197 293 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/Q{{787 0 56 -128 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +532 13 _m +662 -128 _l +543 -128 _l +435 -11 _l +424 -11 416 -12 410 -12 _c +404 -12 399 -13 394 -13 _c +291 -13 209 21 148 89 _c +}_e{86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 279 714 206 680 146 _c +646 86 596 41 532 13 _c +_cl}_e}_d +/R{{695 0 98 0 666 729 _sc +444 342 _m +465 334 486 319 506 296 _c +526 272 546 240 566 199 _c +666 0 _l +560 0 _l +467 187 _l +443 235 419 268 397 284 _c +374 300 343 308 304 308 _c +197 308 _l +197 0 _l +98 0 _l +98 729 _l +321 729 _l +404 729 466 711 507 677 _c +548 642 569 589 569 519 _c +569 473 558 434 537 404 _c +515 374 484 353 444 342 _c +197 648 _m +197 389 _l +321 389 _l +}_e{368 389 404 400 428 422 _c +452 444 465 476 465 519 _c +465 561 452 593 428 615 _c +404 637 368 648 321 648 _c +197 648 _l +_cl}_e}_d +/a{{613 0 60 -13 522 560 _sc +343 275 _m +270 275 220 266 192 250 _c +164 233 150 205 150 165 _c +150 133 160 107 181 89 _c +202 70 231 61 267 61 _c +317 61 357 78 387 114 _c +417 149 432 196 432 255 _c +432 275 _l +343 275 _l +522 312 _m +522 0 _l +432 0 _l +432 83 _l +411 49 385 25 355 10 _c +325 -5 287 -13 243 -13 _c +187 -13 142 2 109 33 _c +76 64 60 106 60 159 _c +}_e{60 220 80 266 122 298 _c +163 329 224 345 306 345 _c +432 345 _l +432 354 _l +432 395 418 427 391 450 _c +364 472 326 484 277 484 _c +245 484 215 480 185 472 _c +155 464 127 453 100 439 _c +100 522 _l +132 534 164 544 195 550 _c +226 556 256 560 286 560 _c +365 560 424 539 463 498 _c +502 457 522 395 522 312 _c +_cl}_e}_d +/b{{635 0 91 -13 580 760 _sc +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +181 464 _m +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +}_e{580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 464 _l +_cl}_e}_d +/c{{550 0 55 -13 488 560 _sc +488 526 _m +488 442 _l +462 456 437 466 411 473 _c +385 480 360 484 334 484 _c +276 484 230 465 198 428 _c +166 391 150 339 150 273 _c +150 206 166 154 198 117 _c +230 80 276 62 334 62 _c +360 62 385 65 411 72 _c +437 79 462 90 488 104 _c +488 21 _l +462 9 436 0 410 -5 _c +383 -10 354 -13 324 -13 _c +242 -13 176 12 128 64 _c +}_e{79 115 55 185 55 273 _c +55 362 79 432 128 483 _c +177 534 244 560 330 560 _c +358 560 385 557 411 551 _c +437 545 463 537 488 526 _c +_cl}_e}_d +/d{{635 0 55 -13 544 760 _sc +454 464 _m +454 760 _l +544 760 _l +544 0 _l +454 0 _l +454 82 _l +435 49 411 25 382 10 _c +353 -5 319 -13 279 -13 _c +213 -13 159 13 117 65 _c +75 117 55 187 55 273 _c +55 359 75 428 117 481 _c +159 533 213 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +148 273 _m +148 207 161 155 188 117 _c +215 79 253 61 301 61 _c +}_e{348 61 385 79 413 117 _c +440 155 454 207 454 273 _c +454 339 440 390 413 428 _c +385 466 348 485 301 485 _c +253 485 215 466 188 428 _c +161 390 148 339 148 273 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +}_e{540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/f{352 0 23 0 371 760 _sc +371 760 _m +371 685 _l +285 685 _l +253 685 230 678 218 665 _c +205 652 199 629 199 595 _c +199 547 _l +347 547 _l +347 477 _l +199 477 _l +199 0 _l +109 0 _l +109 477 _l +23 477 _l +23 547 _l +109 547 _l +109 585 _l +109 645 123 690 151 718 _c +179 746 224 760 286 760 _c +371 760 _l +_cl}_d +/i{278 0 94 0 184 760 _sc +94 547 _m +184 547 _l +184 0 _l +94 0 _l +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/l{278 0 94 0 184 760 _sc +94 760 _m +184 760 _l +184 0 _l +94 0 _l +94 760 _l +_cl}_d +/n{634 0 91 0 549 560 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/o{612 0 55 -13 557 560 _sc +306 484 _m +258 484 220 465 192 427 _c +164 389 150 338 150 273 _c +150 207 163 156 191 118 _c +219 80 257 62 306 62 _c +354 62 392 80 420 118 _c +448 156 462 207 462 273 _c +462 337 448 389 420 427 _c +392 465 354 484 306 484 _c +306 560 _m +384 560 445 534 490 484 _c +534 433 557 363 557 273 _c +557 183 534 113 490 63 _c +445 12 384 -13 306 -13 _c +227 -13 165 12 121 63 _c +77 113 55 183 55 273 _c +55 363 77 433 121 484 _c +165 534 227 560 306 560 _c +_cl}_d +/p{{635 0 91 -207 580 560 _sc +181 82 _m +181 -207 _l +91 -207 _l +91 547 _l +181 547 _l +181 464 _l +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +}_e{286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +_cl}_e}_d +/r{411 0 91 0 411 560 _sc +411 463 _m +401 469 390 473 378 476 _c +366 478 353 480 339 480 _c +288 480 249 463 222 430 _c +194 397 181 350 181 288 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +199 495 224 520 254 536 _c +284 552 321 560 365 560 _c +371 560 378 559 386 559 _c +393 558 401 557 411 555 _c +411 463 _l +_cl}_d +/s{{521 0 54 -13 472 560 _sc +443 531 _m +443 446 _l +417 458 391 468 364 475 _c +336 481 308 485 279 485 _c +234 485 200 478 178 464 _c +156 450 145 430 145 403 _c +145 382 153 366 169 354 _c +185 342 217 330 265 320 _c +296 313 _l +360 299 405 279 432 255 _c +458 230 472 195 472 151 _c +472 100 452 60 412 31 _c +372 1 316 -13 246 -13 _c +216 -13 186 -10 154 -5 _c +}_e{122 0 89 8 54 20 _c +54 113 _l +87 95 120 82 152 74 _c +184 65 216 61 248 61 _c +290 61 323 68 346 82 _c +368 96 380 117 380 144 _c +380 168 371 187 355 200 _c +339 213 303 226 247 238 _c +216 245 _l +160 257 119 275 95 299 _c +70 323 58 356 58 399 _c +58 450 76 490 112 518 _c +148 546 200 560 268 560 _c +301 560 332 557 362 552 _c +391 547 418 540 443 531 _c +}_e{_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +/x{592 0 29 0 559 547 _sc +549 547 _m +351 281 _l +559 0 _l +453 0 _l +294 215 _l +135 0 _l +29 0 _l +241 286 _l +47 547 _l +153 547 _l +298 352 _l +443 547 _l +549 547 _l +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +end +%%EndProlog +mpldict begin +-18 198 translate +648 396 0 0 clipbox +gsave +0 0 m +648 0 l +648 396 l +0 396 l +cl +1.000 setgray +fill +grestore +gsave +81 49.5 m +583.2 49.5 l +583.2 348.48 l +81 348.48 l +cl +1.000 setgray +fill +grestore +0.800 setlinewidth +1 setlinejoin +0 setlinecap +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +294.059 49.5 o +grestore +gsave +285.059395 34.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/one glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +525.677 49.5 o +grestore +gsave +516.677464 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/two glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +132.165312 49.5 m +132.165312 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +132.165 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +172.951229 49.5 m +172.951229 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +172.951 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +201.889298 49.5 m +201.889298 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +201.889 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +224.335408 49.5 m +224.335408 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +224.335 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +242.675216 49.5 m +242.675216 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +242.675 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +258.181302 49.5 m +258.181302 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +258.181 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +271.613284 49.5 m +271.613284 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +271.613 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +283.461133 49.5 m +283.461133 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +283.461 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +363.783381 49.5 m +363.783381 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +363.783 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +404.569298 49.5 m +404.569298 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +404.569 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +433.507367 49.5 m +433.507367 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +433.507 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +455.953478 49.5 m +455.953478 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +455.953 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +474.293285 49.5 m +474.293285 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +474.293 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +489.799371 49.5 m +489.799371 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +489.799 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +503.231354 49.5 m +503.231354 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +503.231 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +515.079202 49.5 m +515.079202 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +515.079 49.5 o +grestore +/DejaVuSans findfont +10.000 scalefont +setfont +gsave +284.771875 19.906250 translate +0.000000 rotate +0.000000 0.000000 m /P glyphshow +6.030273 0.000000 m /P glyphshow +12.060547 0.000000 m /M glyphshow +20.688477 0.000000 m /space glyphshow +23.867188 0.000000 m /C glyphshow +30.849609 0.000000 m /o glyphshow +36.967773 0.000000 m /n glyphshow +43.305664 0.000000 m /c glyphshow +48.803711 0.000000 m /e glyphshow +54.956055 0.000000 m /n glyphshow +61.293945 0.000000 m /t glyphshow +65.214844 0.000000 m /r glyphshow +69.326172 0.000000 m /a glyphshow +75.454102 0.000000 m /t glyphshow +79.375000 0.000000 m /i glyphshow +82.153320 0.000000 m /o glyphshow +88.271484 0.000000 m /n glyphshow +grestore +0.800 setlinewidth +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 174.911 o +grestore +gsave +56.000000 170.449781 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/zero glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 334.89 o +grestore +gsave +56.000000 330.929063 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/one glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 63.09 m +583.2 63.09 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 63.09 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 91.260953 m +583.2 91.260953 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 91.261 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 111.248562 m +583.2 111.248562 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 111.249 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 126.752157 m +583.2 126.752157 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 126.752 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 139.419515 m +583.2 139.419515 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 139.42 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 150.129615 m +583.2 150.129615 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 150.13 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 159.407125 m +583.2 159.407125 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 159.407 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 167.590468 m +583.2 167.590468 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 167.59 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 223.069281 m +583.2 223.069281 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 223.069 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 251.240234 m +583.2 251.240234 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 251.24 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 271.227843 m +583.2 271.227843 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 271.228 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 286.731438 m +583.2 286.731438 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 286.731 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 299.398797 m +583.2 299.398797 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 299.399 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 310.108896 m +583.2 310.108896 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 310.109 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 319.386406 m +583.2 319.386406 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 319.386 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 327.56975 m +583.2 327.56975 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 327.57 o +grestore +gsave +49.921875 184.677500 translate +90.000000 rotate +0.000000 0.000000 m /R glyphshow +6.948242 0.000000 m /s glyphshow +12.158203 0.000000 m /slash glyphshow +15.527344 0.000000 m /R glyphshow +22.475586 0.000000 m /o glyphshow +grestore +1.000 setlinewidth +2 setlinecap +0.122 0.467 0.706 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +560.372727 63.09 m +559.170802 91.260953 l +557.954341 111.248562 l +556.72299 126.752157 l +555.476378 139.419515 l +554.214123 150.129615 l +552.935826 159.407125 l +551.641077 167.590468 l +550.329444 174.910719 l +536.176703 223.069281 l +519.701502 251.240234 l +499.989053 271.227843 l +475.448209 286.731438 l +442.918964 299.398797 l +394.541557 310.108896 l +297.849058 319.386406 l +-1 319.396954 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +560.373 63.09 o +559.171 91.261 o +557.954 111.249 o +556.723 126.752 o +555.476 139.42 o +554.214 150.13 o +552.936 159.407 o +551.641 167.59 o +550.329 174.911 o +536.177 223.069 o +519.702 251.24 o +499.989 271.228 o +475.448 286.731 o +442.919 299.399 o +394.542 310.109 o +297.849 319.386 o +-1 319.397 o +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +463.543976 63.09 m +462.282571 91.260953 l +461.005145 111.248562 l +459.711289 126.752157 l +458.400573 139.419515 l +457.072553 150.129615 l +455.726765 159.407125 l +454.362727 167.590468 l +452.979938 174.910719 l +437.993648 223.069281 l +420.377072 251.240234 l +399.006151 271.227843 l +371.834913 286.731438 l +334.492197 299.398797 l +274.442528 310.108896 l +103.827273 319.386406 l +-1 319.390109 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +463.544 63.09 o +462.283 91.261 o +461.005 111.249 o +459.711 126.752 o +458.401 139.42 o +457.073 150.13 o +455.727 159.407 o +454.363 167.59 o +452.98 174.911 o +437.994 223.069 o +420.377 251.24 o +399.006 271.228 o +371.835 286.731 o +334.492 299.399 o +274.443 310.109 o +103.827 319.386 o +-1 319.39 o +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +502.929649 63.09 m +501.088514 91.260953 l +499.213051 111.248562 l +497.301955 126.752157 l +495.353847 139.419515 l +493.367263 150.129615 l +491.340655 159.407125 l +489.272375 167.590468 l +487.160673 174.910719 l +463.175175 223.069281 l +431.617921 251.240234 l +385.379708 271.227843 l +297.264028 286.731438 l +-1 286.747733 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +502.93 63.09 o +501.089 91.261 o +499.213 111.249 o +497.302 126.752 o +495.354 139.42 o +493.367 150.13 o +491.341 159.407 o +489.272 167.59 o +487.161 174.911 o +463.175 223.069 o +431.618 251.24 o +385.38 271.228 o +297.264 286.731 o +-1 286.748 o +grestore +0.800 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0.000 setgray +gsave +81 49.5 m +81 348.48 l +stroke +grestore +gsave +583.2 49.5 m +583.2 348.48 l +stroke +grestore +gsave +81 49.5 m +583.2 49.5 l +stroke +grestore +gsave +81 348.48 m +583.2 348.48 l +stroke +grestore +1.000 setlinewidth +0 setlinecap +0.800 setgray +gsave +524.66875 296.464375 m +576.2 296.464375 l +577.533333 296.464375 578.2 297.131042 578.2 298.464375 c +578.2 341.48 l +578.2 342.813333 577.533333 343.48 576.2 343.48 c +524.66875 343.48 l +523.335417 343.48 522.66875 342.813333 522.66875 341.48 c +522.66875 298.464375 l +522.66875 297.131042 523.335417 296.464375 524.66875 296.464375 c +cl +gsave +1.000 setgray +fill +grestore +stroke +grestore +1 setlinejoin +2 setlinecap +[] 0 setdash +0.122 0.467 0.706 setrgbcolor +gsave +526.66875 335.38625 m +546.66875 335.38625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +536.669 335.386 o +grestore +0.000 setgray +gsave +554.668750 331.886250 translate +0.000000 rotate +0.000000 0.000000 m /N glyphshow +7.480469 0.000000 m /o glyphshow +13.598633 0.000000 m /x glyphshow +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +526.66875 320.714375 m +546.66875 320.714375 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +536.669 320.714 o +grestore +0.000 setgray +gsave +554.668750 317.214375 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /L glyphshow +12.553711 0.000000 m /two glyphshow +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +526.66875 306.0425 m +546.66875 306.0425 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +536.669 306.043 o +grestore +0.000 setgray +gsave +554.668750 302.542500 translate +0.000000 rotate +0.000000 0.000000 m /O glyphshow +7.871094 0.000000 m /three glyphshow +grestore +/DejaVuSans findfont +12.000 scalefont +setfont +gsave +226.921875 378.955000 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +8.378906 0.000000 m /a glyphshow +15.732422 0.000000 m /l glyphshow +19.066406 0.000000 m /i glyphshow +22.400391 0.000000 m /b glyphshow +30.017578 0.000000 m /r glyphshow +34.951172 0.000000 m /a glyphshow +42.304688 0.000000 m /t glyphshow +47.009766 0.000000 m /i glyphshow +50.343750 0.000000 m /o glyphshow +57.685547 0.000000 m /n glyphshow +65.291016 0.000000 m /space glyphshow +69.105469 0.000000 m /p glyphshow +76.722656 0.000000 m /l glyphshow +80.056641 0.000000 m /o glyphshow +87.398438 0.000000 m /t glyphshow +92.103516 0.000000 m /space glyphshow +95.917969 0.000000 m /f glyphshow +100.142578 0.000000 m /o glyphshow +107.484375 0.000000 m /r glyphshow +112.417969 0.000000 m /space glyphshow +116.232422 0.000000 m /M glyphshow +126.585938 0.000000 m /Q glyphshow +136.031250 0.000000 m /hyphen glyphshow +140.361328 0.000000 m /one glyphshow +147.996094 0.000000 m /three glyphshow +155.630859 0.000000 m /one glyphshow +163.265625 0.000000 m /space glyphshow +167.080078 0.000000 m /d glyphshow +174.697266 0.000000 m /a glyphshow +182.050781 0.000000 m /t glyphshow +186.755859 0.000000 m /a glyphshow +grestore + +end +showpage diff --git a/Internal_design_documents/Experiments/MQ131.png b/Internal_design_documents/Experiments/MQ131.png new file mode 100644 index 0000000..cdda0be Binary files /dev/null and b/Internal_design_documents/Experiments/MQ131.png differ diff --git a/Internal_design_documents/Experiments/MQ131.svg b/Internal_design_documents/Experiments/MQ131.svg new file mode 100644 index 0000000..27280a3 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ131.svg @@ -0,0 +1,1391 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Internal_design_documents/Experiments/MQ131_Regression.ipynb b/Internal_design_documents/Experiments/MQ131_Regression.ipynb new file mode 100644 index 0000000..2e5152f --- /dev/null +++ b/Internal_design_documents/Experiments/MQ131_Regression.ipynb @@ -0,0 +1,1705 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \n", + "0.2 \t \t \t \n", + "0.3 \t \t \t \n", + "0.4 \t \t \t \n", + "0.5 \t \t \t 100.0\n", + "0.6 \t \t \t \n", + "0.7 \t \t \t \n", + "0.8 \t \t \t \n", + "0.9 \t \t \t \n", + "1.0 \t \t 50.0 \t \n", + "2.0 \t \t \t 20.0\n", + "3.0 \t 100.0 \t \t \n", + "4.0 \t \t \t \n", + "5.0 \t \t \t \n", + "6.0 \t \t 10.0 \t 5.0\n", + "7.0 \t 10.0 \t \t \n", + "8.0 \t \t 5.0 \t \n", + "9.0 \t 5.0 \t \t \n", + "10.0 \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, Nox, CL2, O3 = sheetMQ131.row_values(row_index, start_colx=0, end_colx=4)\n", + " print(RsR0, \"\t\", Nox, \"\t\", CL2, \"\t\", O3)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ131 = sheetMQ131.col_values(0)[2:]\n", + "MQ131_Nox = sheetMQ131.col_values(1)[2:]\n", + "MQ131_CL2 = sheetMQ131.col_values(2)[2:]\n", + "MQ131_O3 = sheetMQ131.col_values(3)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "MQ131_Nox =zero_to_nan(MQ131_Nox)\n", + "MQ131_CL2 =zero_to_nan(MQ131_CL2)\n", + "MQ131_O3 =zero_to_nan(MQ131_O3)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataNox = {'RsRo': x_MQ131, 'Nox': MQ131_Nox}\n", + "dataCL2 = {'RsRo': x_MQ131, 'CL2': MQ131_CL2}\n", + "dataO3 = {'RsRo': x_MQ131, 'O3': MQ131_O3}\n", + "\n", + "dfMQ131_Nox = pd.DataFrame(dataNox)\n", + "dfMQ131_CL2 = pd.DataFrame(dataCL2)\n", + "dfMQ131_O3 = pd.DataFrame(dataO3)\n", + "\n", + "dfMQ131_Nox['Nox'] = pd.to_numeric(dfMQ131_Nox['Nox'])\n", + "dfMQ131_CL2['CL2'] = pd.to_numeric(dfMQ131_CL2['CL2'])\n", + "dfMQ131_O3['O3'] = pd.to_numeric(dfMQ131_O3['O3'])\n", + "\n", + "dfMQ131_Nox['Nox'] = dfMQ131_Nox['Nox'].replace('',None, regex=True)\n", + "dfMQ131_CL2['CL2'] = dfMQ131_CL2['CL2'].replace('',None, regex=True)\n", + "dfMQ131_O3['O3'] = dfMQ131_O3['O3'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ131_Nox.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Nox\n", + "dataset2TrainNox = dfMQ131_Nox.copy()\n", + "dataset2TrainNox.dropna(inplace=True)\n", + "X_trainNox = dataset2TrainNox.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainNox = dataset2TrainNox['Nox'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainNox, y_trainNox)\n", + "#Predict\n", + "Nox_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ131_Nox = Nox_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CL2\n", + "dataset2TrainCL2 = dfMQ131_CL2.copy()\n", + "dataset2TrainCL2.dropna(inplace=True)\n", + "X_trainCL2 = dataset2TrainCL2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCL2 = dataset2TrainCL2['CL2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCL2, y_trainCL2)\n", + "#Predict\n", + "CL2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ131_CL2 = CL2_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train O3\n", + "dataset2TrainO3 = dfMQ131_O3.copy()\n", + "dataset2TrainO3.dropna(inplace=True)\n", + "X_trainO3 = dataset2TrainO3.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainO3 = dataset2TrainO3['O3'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainO3, y_trainO3)\n", + "#Predict\n", + "O3_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ131_O3 = O3_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ131_Nox, x_MQ131, marker='o', linewidth=1, label='Nox')\n", + "plt.plot(MQ131_CL2, x_MQ131, marker='o', linewidth=1, label='CL2')\n", + "plt.plot(MQ131_O3, x_MQ131, marker='o', linewidth=1, label='O3')\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-131 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ131.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ131.png')\n", + "plt.savefig('MQ131.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/MQ135.eps b/Internal_design_documents/Experiments/MQ135.eps new file mode 100644 index 0000000..0e61295 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ135.eps @@ -0,0 +1,2760 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: MQ135.eps +%%Creator: matplotlib version 3.0.3, http://matplotlib.org/ +%%CreationDate: Wed Jul 3 21:40:37 2019 +%%Orientation: portrait +%%BoundingBox: -18 198 630 594 +%%EndComments +%%BeginProlog +/mpldict 8 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/c { curveto } bind def +/cl { closepath } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +cl +} bind def +/clipbox { +box +clip +newpath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: DejaVu Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain +%%Creator: Converted from TrueType to type 3 by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-1021 -463 1793 1232]def +/FontType 3 def +/Encoding [ /space /hyphen /slash /zero /one /two /three /four /five /A /C /H /M /N /O /P /Q /R /T /a /b /c /d /e /f /h /i /l /n /o /p /r /s /t /u ] def +/FontInfo 10 dict dup begin +/FamilyName (DejaVu Sans) def +/FullName (DejaVu Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def +/Weight (Book) def +/Version (Version 2.35) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -130 def +/UnderlineThickness 90 def +end readonly def +/CharStrings 36 dict dup begin +/.notdef 0 def +/space{318 0 0 0 0 0 _sc +}_d +/hyphen{361 0 49 234 312 314 _sc +49 314 _m +312 314 _l +312 234 _l +49 234 _l +49 314 _l +_cl}_d +/slash{337 0 0 -92 337 729 _sc +254 729 _m +337 729 _l +83 -92 _l +0 -92 _l +254 729 _l +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/two{{636 0 73 0 536 742 _sc +192 83 _m +536 83 _l +536 0 _l +73 0 _l +73 83 _l +110 121 161 173 226 239 _c +290 304 331 346 348 365 _c +380 400 402 430 414 455 _c +426 479 433 504 433 528 _c +433 566 419 598 392 622 _c +365 646 330 659 286 659 _c +255 659 222 653 188 643 _c +154 632 117 616 78 594 _c +78 694 _l +118 710 155 722 189 730 _c +223 738 255 742 284 742 _c +}_e{359 742 419 723 464 685 _c +509 647 532 597 532 534 _c +532 504 526 475 515 449 _c +504 422 484 390 454 354 _c +446 344 420 317 376 272 _c +332 227 271 164 192 83 _c +_cl}_e}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +}_e{202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/four{636 0 49 0 580 729 _sc +378 643 _m +129 254 _l +378 254 _l +378 643 _l +352 729 _m +476 729 _l +476 254 _l +580 254 _l +580 172 _l +476 172 _l +476 0 _l +378 0 _l +378 172 _l +49 172 _l +49 267 _l +352 729 _l +_cl}_d +/five{{636 0 77 -13 549 729 _sc +108 729 _m +495 729 _l +495 646 _l +198 646 _l +198 467 _l +212 472 227 476 241 478 _c +255 480 270 482 284 482 _c +365 482 429 459 477 415 _c +525 370 549 310 549 234 _c +549 155 524 94 475 51 _c +426 8 357 -13 269 -13 _c +238 -13 207 -10 175 -6 _c +143 -1 111 6 77 17 _c +77 116 _l +106 100 136 88 168 80 _c +199 72 232 69 267 69 _c +}_e{323 69 368 83 401 113 _c +433 143 450 183 450 234 _c +450 284 433 324 401 354 _c +368 384 323 399 267 399 _c +241 399 214 396 188 390 _c +162 384 135 375 108 363 _c +108 729 _l +_cl}_e}_d +/A{684 0 8 0 676 729 _sc +342 632 _m +208 269 _l +476 269 _l +342 632 _l +286 729 _m +398 729 _l +676 0 _l +573 0 _l +507 187 _l +178 187 _l +112 0 _l +8 0 _l +286 729 _l +_cl}_d +/C{{698 0 56 -13 644 742 _sc +644 673 _m +644 569 _l +610 599 575 622 537 638 _c +499 653 460 661 418 661 _c +334 661 270 635 226 584 _c +182 533 160 460 160 364 _c +160 268 182 194 226 143 _c +270 92 334 67 418 67 _c +460 67 499 74 537 90 _c +575 105 610 128 644 159 _c +644 56 _l +609 32 572 15 534 4 _c +496 -7 455 -13 412 -13 _c +302 -13 215 20 151 87 _c +}_e{87 154 56 246 56 364 _c +56 481 87 573 151 641 _c +215 708 302 742 412 742 _c +456 742 497 736 535 725 _c +573 713 610 696 644 673 _c +_cl}_e}_d +/H{752 0 98 0 654 729 _sc +98 729 _m +197 729 _l +197 430 _l +555 430 _l +555 729 _l +654 729 _l +654 0 _l +555 0 _l +555 347 _l +197 347 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/M{863 0 98 0 765 729 _sc +98 729 _m +245 729 _l +431 233 _l +618 729 _l +765 729 _l +765 0 _l +669 0 _l +669 640 _l +481 140 _l +382 140 _l +194 640 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/N{748 0 98 0 650 729 _sc +98 729 _m +231 729 _l +554 119 _l +554 729 _l +650 729 _l +650 0 _l +517 0 _l +194 610 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/O{787 0 56 -13 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +394 742 _m +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 248 700 157 639 89 _c +577 21 496 -13 394 -13 _c +291 -13 209 21 148 89 _c +86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +_cl}_d +/P{603 0 98 0 569 729 _sc +197 648 _m +197 374 _l +321 374 _l +367 374 402 385 427 409 _c +452 433 465 467 465 511 _c +465 555 452 588 427 612 _c +402 636 367 648 321 648 _c +197 648 _l +98 729 _m +321 729 _l +402 729 464 710 506 673 _c +548 636 569 582 569 511 _c +569 439 548 384 506 348 _c +464 311 402 293 321 293 _c +197 293 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/Q{{787 0 56 -128 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +532 13 _m +662 -128 _l +543 -128 _l +435 -11 _l +424 -11 416 -12 410 -12 _c +404 -12 399 -13 394 -13 _c +291 -13 209 21 148 89 _c +}_e{86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 279 714 206 680 146 _c +646 86 596 41 532 13 _c +_cl}_e}_d +/R{{695 0 98 0 666 729 _sc +444 342 _m +465 334 486 319 506 296 _c +526 272 546 240 566 199 _c +666 0 _l +560 0 _l +467 187 _l +443 235 419 268 397 284 _c +374 300 343 308 304 308 _c +197 308 _l +197 0 _l +98 0 _l +98 729 _l +321 729 _l +404 729 466 711 507 677 _c +548 642 569 589 569 519 _c +569 473 558 434 537 404 _c +515 374 484 353 444 342 _c +197 648 _m +197 389 _l +321 389 _l +}_e{368 389 404 400 428 422 _c +452 444 465 476 465 519 _c +465 561 452 593 428 615 _c +404 637 368 648 321 648 _c +197 648 _l +_cl}_e}_d +/T{611 0 -2 0 614 729 _sc +-2 729 _m +614 729 _l +614 646 _l +355 646 _l +355 0 _l +256 0 _l +256 646 _l +-2 646 _l +-2 729 _l +_cl}_d +/a{{613 0 60 -13 522 560 _sc +343 275 _m +270 275 220 266 192 250 _c +164 233 150 205 150 165 _c +150 133 160 107 181 89 _c +202 70 231 61 267 61 _c +317 61 357 78 387 114 _c +417 149 432 196 432 255 _c +432 275 _l +343 275 _l +522 312 _m +522 0 _l +432 0 _l +432 83 _l +411 49 385 25 355 10 _c +325 -5 287 -13 243 -13 _c +187 -13 142 2 109 33 _c +76 64 60 106 60 159 _c +}_e{60 220 80 266 122 298 _c +163 329 224 345 306 345 _c +432 345 _l +432 354 _l +432 395 418 427 391 450 _c +364 472 326 484 277 484 _c +245 484 215 480 185 472 _c +155 464 127 453 100 439 _c +100 522 _l +132 534 164 544 195 550 _c +226 556 256 560 286 560 _c +365 560 424 539 463 498 _c +502 457 522 395 522 312 _c +_cl}_e}_d +/b{{635 0 91 -13 580 760 _sc +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +181 464 _m +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +}_e{580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 464 _l +_cl}_e}_d +/c{{550 0 55 -13 488 560 _sc +488 526 _m +488 442 _l +462 456 437 466 411 473 _c +385 480 360 484 334 484 _c +276 484 230 465 198 428 _c +166 391 150 339 150 273 _c +150 206 166 154 198 117 _c +230 80 276 62 334 62 _c +360 62 385 65 411 72 _c +437 79 462 90 488 104 _c +488 21 _l +462 9 436 0 410 -5 _c +383 -10 354 -13 324 -13 _c +242 -13 176 12 128 64 _c +}_e{79 115 55 185 55 273 _c +55 362 79 432 128 483 _c +177 534 244 560 330 560 _c +358 560 385 557 411 551 _c +437 545 463 537 488 526 _c +_cl}_e}_d +/d{{635 0 55 -13 544 760 _sc +454 464 _m +454 760 _l +544 760 _l +544 0 _l +454 0 _l +454 82 _l +435 49 411 25 382 10 _c +353 -5 319 -13 279 -13 _c +213 -13 159 13 117 65 _c +75 117 55 187 55 273 _c +55 359 75 428 117 481 _c +159 533 213 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +148 273 _m +148 207 161 155 188 117 _c +215 79 253 61 301 61 _c +}_e{348 61 385 79 413 117 _c +440 155 454 207 454 273 _c +454 339 440 390 413 428 _c +385 466 348 485 301 485 _c +253 485 215 466 188 428 _c +161 390 148 339 148 273 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +}_e{540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/f{352 0 23 0 371 760 _sc +371 760 _m +371 685 _l +285 685 _l +253 685 230 678 218 665 _c +205 652 199 629 199 595 _c +199 547 _l +347 547 _l +347 477 _l +199 477 _l +199 0 _l +109 0 _l +109 477 _l +23 477 _l +23 547 _l +109 547 _l +109 585 _l +109 645 123 690 151 718 _c +179 746 224 760 286 760 _c +371 760 _l +_cl}_d +/h{634 0 91 0 549 760 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/i{278 0 94 0 184 760 _sc +94 547 _m +184 547 _l +184 0 _l +94 0 _l +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/l{278 0 94 0 184 760 _sc +94 760 _m +184 760 _l +184 0 _l +94 0 _l +94 760 _l +_cl}_d +/n{634 0 91 0 549 560 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/o{612 0 55 -13 557 560 _sc +306 484 _m +258 484 220 465 192 427 _c +164 389 150 338 150 273 _c +150 207 163 156 191 118 _c +219 80 257 62 306 62 _c +354 62 392 80 420 118 _c +448 156 462 207 462 273 _c +462 337 448 389 420 427 _c +392 465 354 484 306 484 _c +306 560 _m +384 560 445 534 490 484 _c +534 433 557 363 557 273 _c +557 183 534 113 490 63 _c +445 12 384 -13 306 -13 _c +227 -13 165 12 121 63 _c +77 113 55 183 55 273 _c +55 363 77 433 121 484 _c +165 534 227 560 306 560 _c +_cl}_d +/p{{635 0 91 -207 580 560 _sc +181 82 _m +181 -207 _l +91 -207 _l +91 547 _l +181 547 _l +181 464 _l +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +}_e{286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +_cl}_e}_d +/r{411 0 91 0 411 560 _sc +411 463 _m +401 469 390 473 378 476 _c +366 478 353 480 339 480 _c +288 480 249 463 222 430 _c +194 397 181 350 181 288 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +199 495 224 520 254 536 _c +284 552 321 560 365 560 _c +371 560 378 559 386 559 _c +393 558 401 557 411 555 _c +411 463 _l +_cl}_d +/s{{521 0 54 -13 472 560 _sc +443 531 _m +443 446 _l +417 458 391 468 364 475 _c +336 481 308 485 279 485 _c +234 485 200 478 178 464 _c +156 450 145 430 145 403 _c +145 382 153 366 169 354 _c +185 342 217 330 265 320 _c +296 313 _l +360 299 405 279 432 255 _c +458 230 472 195 472 151 _c +472 100 452 60 412 31 _c +372 1 316 -13 246 -13 _c +216 -13 186 -10 154 -5 _c +}_e{122 0 89 8 54 20 _c +54 113 _l +87 95 120 82 152 74 _c +184 65 216 61 248 61 _c +290 61 323 68 346 82 _c +368 96 380 117 380 144 _c +380 168 371 187 355 200 _c +339 213 303 226 247 238 _c +216 245 _l +160 257 119 275 95 299 _c +70 323 58 356 58 399 _c +58 450 76 490 112 518 _c +148 546 200 560 268 560 _c +301 560 332 557 362 552 _c +391 547 418 540 443 531 _c +}_e{_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +/u{634 0 85 -13 543 560 _sc +85 216 _m +85 547 _l +175 547 _l +175 219 _l +175 167 185 129 205 103 _c +225 77 255 64 296 64 _c +344 64 383 79 411 110 _c +439 141 453 183 453 237 _c +453 547 _l +543 547 _l +543 0 _l +453 0 _l +453 84 _l +431 50 405 26 377 10 _c +348 -5 315 -13 277 -13 _c +214 -13 166 6 134 45 _c +101 83 85 140 85 216 _c +311 560 _m +311 560 _l +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +end +%%EndProlog +mpldict begin +-18 198 translate +648 396 0 0 clipbox +gsave +0 0 m +648 0 l +648 396 l +0 396 l +cl +1.000 setgray +fill +grestore +gsave +81 49.5 m +583.2 49.5 l +583.2 348.48 l +81 348.48 l +cl +1.000 setgray +fill +grestore +0.800 setlinewidth +1 setlinejoin +0 setlinecap +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +223.508 49.5 o +grestore +gsave +214.508259 34.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/one glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +435.816 49.5 o +grestore +gsave +426.815873 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/two glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +112.49712 49.5 m +112.49712 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +112.497 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +139.022565 49.5 m +139.022565 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +139.023 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +159.597299 49.5 m +159.597299 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +159.597 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +176.40808 49.5 m +176.40808 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +176.408 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +190.621394 49.5 m +190.621394 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +190.621 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +202.933525 49.5 m +202.933525 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +202.934 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +213.793595 49.5 m +213.793595 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +213.794 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +287.419219 49.5 m +287.419219 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +287.419 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +324.804734 49.5 m +324.804734 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +324.805 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +351.330179 49.5 m +351.330179 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +351.33 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +371.904913 49.5 m +371.904913 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +371.905 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +388.715694 49.5 m +388.715694 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +388.716 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +402.929007 49.5 m +402.929007 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +402.929 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +415.241139 49.5 m +415.241139 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +415.241 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +426.101209 49.5 m +426.101209 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +426.101 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +499.726833 49.5 m +499.726833 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +499.727 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +537.112348 49.5 m +537.112348 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +537.112 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +563.637793 49.5 m +563.637793 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +563.638 49.5 o +grestore +/DejaVuSans findfont +10.000 scalefont +setfont +gsave +284.771875 19.906250 translate +0.000000 rotate +0.000000 0.000000 m /P glyphshow +6.030273 0.000000 m /P glyphshow +12.060547 0.000000 m /M glyphshow +20.688477 0.000000 m /space glyphshow +23.867188 0.000000 m /C glyphshow +30.849609 0.000000 m /o glyphshow +36.967773 0.000000 m /n glyphshow +43.305664 0.000000 m /c glyphshow +48.803711 0.000000 m /e glyphshow +54.956055 0.000000 m /n glyphshow +61.293945 0.000000 m /t glyphshow +65.214844 0.000000 m /r glyphshow +69.326172 0.000000 m /a glyphshow +75.454102 0.000000 m /t glyphshow +79.375000 0.000000 m /i glyphshow +82.153320 0.000000 m /o glyphshow +88.271484 0.000000 m /n glyphshow +grestore +0.800 setlinewidth +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 174.911 o +grestore +gsave +56.000000 170.449781 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/zero glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 334.89 o +grestore +gsave +56.000000 330.929063 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/one glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 63.09 m +583.2 63.09 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 63.09 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 91.260953 m +583.2 91.260953 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 91.261 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 111.248562 m +583.2 111.248562 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 111.249 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 126.752157 m +583.2 126.752157 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 126.752 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 139.419515 m +583.2 139.419515 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 139.42 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 150.129615 m +583.2 150.129615 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 150.13 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 159.407125 m +583.2 159.407125 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 159.407 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 167.590468 m +583.2 167.590468 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 167.59 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 223.069281 m +583.2 223.069281 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 223.069 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 251.240234 m +583.2 251.240234 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 251.24 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 271.227843 m +583.2 271.227843 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 271.228 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 286.731438 m +583.2 286.731438 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 286.731 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 299.398797 m +583.2 299.398797 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 299.399 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 310.108896 m +583.2 310.108896 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 310.109 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 319.386406 m +583.2 319.386406 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 319.386 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 327.56975 m +583.2 327.56975 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 327.57 o +grestore +gsave +49.921875 184.677500 translate +90.000000 rotate +0.000000 0.000000 m /R glyphshow +6.948242 0.000000 m /s glyphshow +12.158203 0.000000 m /slash glyphshow +15.527344 0.000000 m /R glyphshow +22.475586 0.000000 m /o glyphshow +grestore +1.000 setlinewidth +2 setlinecap +0.122 0.467 0.706 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +519.680822 63.09 m +514.490344 91.260953 l +508.990155 111.248562 l +503.140936 126.752157 l +496.895371 139.419515 l +490.195816 150.129615 l +482.97106 159.407125 l +475.131701 167.590468 l +466.563366 174.910719 l +130.661154 223.069281 l +-1 223.086741 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.681 63.09 o +514.49 91.261 o +508.99 111.249 o +503.141 126.752 o +496.895 139.42 o +490.196 150.13 o +482.971 159.407 o +475.132 167.59 o +466.563 174.911 o +130.661 223.069 o +-1 223.087 o +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +529.364075 63.09 m +526.135797 91.260953 l +522.790375 111.248562 l +519.318987 126.752157 l +515.711774 139.419515 l +511.957674 150.129615 l +508.044214 159.407125 l +503.957262 167.590468 l +499.680719 174.910719 l +440.314522 223.069281 l +224.42572 251.240234 l +-1 251.261436 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +529.364 63.09 o +526.136 91.261 o +522.79 111.249 o +519.319 126.752 o +515.712 139.42 o +511.958 150.13 o +508.044 159.407 o +503.957 167.59 o +499.681 174.911 o +440.315 223.069 o +224.426 251.24 o +-1 251.261 o +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +511.612635 63.09 m +506.437381 91.260953 l +500.954286 111.248562 l +495.124395 126.752157 l +488.900863 139.419515 l +482.226655 150.129615 l +475.031369 159.407125 l +467.226699 167.590468 l +458.699792 174.910719 l +138.708412 223.069281 l +-1 223.087808 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +511.613 63.09 o +506.437 91.261 o +500.954 111.249 o +495.124 126.752 o +488.901 139.42 o +482.227 150.13 o +475.031 159.407 o +467.227 167.59 o +458.7 174.911 o +138.708 223.069 o +-1 223.088 o +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +500.014003 63.09 m +496.763562 91.260953 l +493.394333 111.248562 l +489.897304 126.752157 l +486.262397 139.419515 l +482.478291 150.129615 l +478.532212 159.407125 l +474.409671 167.590468 l +470.094145 174.910719 l +409.94708 223.069281 l +177.063358 251.240234 l +-1 251.256985 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +500.014 63.09 o +496.764 91.261 o +493.394 111.249 o +489.897 126.752 o +486.262 139.42 o +482.478 150.13 o +478.532 159.407 o +474.41 167.59 o +470.094 174.911 o +409.947 223.069 o +177.063 251.24 o +-1 251.257 o +grestore +2 setlinecap +0.580 0.404 0.741 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +560.372727 63.09 m +548.369972 91.260953 l +534.567552 111.248562 l +518.328963 126.752157 l +498.605915 139.419515 l +473.482693 150.129615 l +438.839226 159.407125 l +382.696658 167.590468 l +214.643408 174.910719 l +-1 174.959587 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.580 0.404 0.741 setrgbcolor +fill +grestore +stroke +grestore +} bind def +560.373 63.09 o +548.37 91.261 o +534.568 111.249 o +518.329 126.752 o +498.606 139.42 o +473.483 150.13 o +438.839 159.407 o +382.697 167.59 o +214.643 174.911 o +-1 174.96 o +grestore +2 setlinecap +0.549 0.337 0.294 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +550.705509 63.09 m +538.496783 91.260953 l +524.421165 111.248562 l +507.802811 126.752157 l +487.515968 139.419515 l +461.468353 150.129615 l +425.031131 159.407125 l +363.907901 167.590468 l +103.827273 174.910719 l +-1 174.934487 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.549 0.337 0.294 setrgbcolor +fill +grestore +stroke +grestore +} bind def +550.706 63.09 o +538.497 91.261 o +524.421 111.249 o +507.803 126.752 o +487.516 139.42 o +461.468 150.13 o +425.031 159.407 o +363.908 167.59 o +103.827 174.911 o +-1 174.934 o +grestore +0.800 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0.000 setgray +gsave +81 49.5 m +81 348.48 l +stroke +grestore +gsave +583.2 49.5 m +583.2 348.48 l +stroke +grestore +gsave +81 49.5 m +583.2 49.5 l +stroke +grestore +gsave +81 348.48 m +583.2 348.48 l +stroke +grestore +1.000 setlinewidth +0 setlinecap +0.800 setgray +gsave +503.184375 252.44875 m +576.2 252.44875 l +577.533333 252.44875 578.2 253.115417 578.2 254.44875 c +578.2 341.48 l +578.2 342.813333 577.533333 343.48 576.2 343.48 c +503.184375 343.48 l +501.851042 343.48 501.184375 342.813333 501.184375 341.48 c +501.184375 254.44875 l +501.184375 253.115417 501.851042 252.44875 503.184375 252.44875 c +cl +gsave +1.000 setgray +fill +grestore +stroke +grestore +1 setlinejoin +2 setlinecap +[] 0 setdash +0.122 0.467 0.706 setrgbcolor +gsave +505.184375 335.38625 m +525.184375 335.38625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +515.184 335.386 o +grestore +0.000 setgray +gsave +533.184375 331.886250 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /O glyphshow +14.853516 0.000000 m /two glyphshow +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +505.184375 320.714375 m +525.184375 320.714375 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +515.184 320.714 o +grestore +0.000 setgray +gsave +533.184375 317.214375 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /O glyphshow +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +505.184375 306.0425 m +525.184375 306.0425 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +515.184 306.043 o +grestore +0.000 setgray +gsave +533.184375 302.542500 translate +0.000000 rotate +0.000000 0.000000 m /A glyphshow +6.840820 0.000000 m /l glyphshow +9.619141 0.000000 m /c glyphshow +15.117188 0.000000 m /o glyphshow +21.235352 0.000000 m /h glyphshow +27.573242 0.000000 m /o glyphshow +33.691406 0.000000 m /l glyphshow +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +505.184375 291.370625 m +525.184375 291.370625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +515.184 291.371 o +grestore +0.000 setgray +gsave +533.184375 287.870625 translate +0.000000 rotate +0.000000 0.000000 m /N glyphshow +7.480469 0.000000 m /H glyphshow +15.000000 0.000000 m /four glyphshow +grestore +2 setlinecap +0.580 0.404 0.741 setrgbcolor +gsave +505.184375 276.69875 m +525.184375 276.69875 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.580 0.404 0.741 setrgbcolor +fill +grestore +stroke +grestore +} bind def +515.184 276.699 o +grestore +0.000 setgray +gsave +533.184375 273.198750 translate +0.000000 rotate +0.000000 0.000000 m /T glyphshow +6.092773 0.000000 m /o glyphshow +12.210938 0.000000 m /l glyphshow +14.989258 0.000000 m /u glyphshow +21.327148 0.000000 m /e glyphshow +27.479492 0.000000 m /n glyphshow +33.817383 0.000000 m /o glyphshow +grestore +2 setlinecap +0.549 0.337 0.294 setrgbcolor +gsave +505.184375 262.026875 m +525.184375 262.026875 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.549 0.337 0.294 setrgbcolor +fill +grestore +stroke +grestore +} bind def +515.184 262.027 o +grestore +0.000 setgray +gsave +533.184375 258.526875 translate +0.000000 rotate +0.000000 0.000000 m /A glyphshow +6.840820 0.000000 m /c glyphshow +12.338867 0.000000 m /e glyphshow +18.491211 0.000000 m /t glyphshow +22.412109 0.000000 m /o glyphshow +28.530273 0.000000 m /n glyphshow +34.868164 0.000000 m /a glyphshow +grestore +/DejaVuSans findfont +12.000 scalefont +setfont +gsave +226.921875 378.955000 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +8.378906 0.000000 m /a glyphshow +15.732422 0.000000 m /l glyphshow +19.066406 0.000000 m /i glyphshow +22.400391 0.000000 m /b glyphshow +30.017578 0.000000 m /r glyphshow +34.951172 0.000000 m /a glyphshow +42.304688 0.000000 m /t glyphshow +47.009766 0.000000 m /i glyphshow +50.343750 0.000000 m /o glyphshow +57.685547 0.000000 m /n glyphshow +65.291016 0.000000 m /space glyphshow +69.105469 0.000000 m /p glyphshow +76.722656 0.000000 m /l glyphshow +80.056641 0.000000 m /o glyphshow +87.398438 0.000000 m /t glyphshow +92.103516 0.000000 m /space glyphshow +95.917969 0.000000 m /f glyphshow +100.142578 0.000000 m /o glyphshow +107.484375 0.000000 m /r glyphshow +112.417969 0.000000 m /space glyphshow +116.232422 0.000000 m /M glyphshow +126.585938 0.000000 m /Q glyphshow +136.031250 0.000000 m /hyphen glyphshow +140.361328 0.000000 m /one glyphshow +147.996094 0.000000 m /three glyphshow +155.630859 0.000000 m /five glyphshow +163.265625 0.000000 m /space glyphshow +167.080078 0.000000 m /d glyphshow +174.697266 0.000000 m /a glyphshow +182.050781 0.000000 m /t glyphshow +186.755859 0.000000 m /a glyphshow +grestore + +end +showpage diff --git a/Internal_design_documents/Experiments/MQ135.png b/Internal_design_documents/Experiments/MQ135.png new file mode 100644 index 0000000..6cc8a01 Binary files /dev/null and b/Internal_design_documents/Experiments/MQ135.png differ diff --git a/Internal_design_documents/Experiments/MQ135.svg b/Internal_design_documents/Experiments/MQ135.svg new file mode 100644 index 0000000..c5072ae --- /dev/null +++ b/Internal_design_documents/Experiments/MQ135.svg @@ -0,0 +1,1670 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Internal_design_documents/Experiments/MQ135_Regression.ipynb b/Internal_design_documents/Experiments/MQ135_Regression.ipynb new file mode 100644 index 0000000..636d956 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ135_Regression.ipynb @@ -0,0 +1,2061 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \t \t \t \n", + "0.2 \t \t \t \t \t \t \n", + "0.3 \t \t \t \t \t \t \n", + "0.4 \t \t \t \t \t \t \n", + "0.5 \t \t \t \t \t \t \n", + "0.6 \t \t \t \t \t 200.0 \t 200.0\n", + "0.7 \t \t \t 200.0 \t \t \t 100.0\n", + "0.8 \t 200.0 \t \t \t 200.0 \t 100.0 \t \n", + "0.9 \t \t \t 100.0 \t \t \t \n", + "1.0 \t 100.0 \t 200.0 \t \t 100.0 \t 10.0 \t 10.0\n", + "2.0 \t 10.0 \t \t 10.0 \t \t \t \n", + "3.0 \t \t 10.0 \t \t 10.0 \t \t \n", + "4.0 \t \t \t \t \t \t \n", + "5.0 \t \t \t \t \t \t \n", + "6.0 \t \t \t \t \t \t \n", + "7.0 \t \t \t \t \t \t \n", + "8.0 \t \t \t \t \t \t \n", + "9.0 \t \t \t \t \t \t \n", + "10.0 \t \t \t \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, CO2, CO, Alcohol, NH4, Tolueno, Acetona = sheetMQ135.row_values(row_index, start_colx=0, end_colx=7)\n", + " print(RsR0, \"\t\", CO2, \"\t\", CO, \"\t\", Alcohol, \"\t\", NH4, \"\t\", Tolueno, \"\t\", Acetona)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ135 = sheetMQ135.col_values(0)[2:]\n", + "MQ135_CO2 = sheetMQ135.col_values(1)[2:]\n", + "MQ135_CO = sheetMQ135.col_values(2)[2:]\n", + "MQ135_Alcohol = sheetMQ135.col_values(3)[2:]\n", + "MQ135_NH4 = sheetMQ135.col_values(4)[2:]\n", + "MQ135_Tolueno = sheetMQ135.col_values(5)[2:]\n", + "MQ135_Acetona = sheetMQ135.col_values(6)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "MQ135_CO2 =zero_to_nan(MQ135_CO2)\n", + "MQ135_CO =zero_to_nan(MQ135_CO)\n", + "MQ135_Alcohol =zero_to_nan(MQ135_Alcohol)\n", + "MQ135_NH4 =zero_to_nan(MQ135_NH4)\n", + "MQ135_Tolueno =zero_to_nan(MQ135_Tolueno)\n", + "MQ135_Acetona =zero_to_nan(MQ135_Acetona)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataCO2 = {'RsRo': x_MQ135, 'CO2': MQ135_CO2}\n", + "dataCO = {'RsRo': x_MQ135, 'CO': MQ135_CO}\n", + "dataAlcohol = {'RsRo': x_MQ135, 'Alcohol': MQ135_Alcohol}\n", + "dataNH4 = {'RsRo': x_MQ135, 'NH4': MQ135_NH4}\n", + "dataTolueno = {'RsRo': x_MQ135, 'Tolueno': MQ135_Tolueno}\n", + "dataAcetona = {'RsRo': x_MQ135, 'Acetona': MQ135_Acetona}\n", + "\n", + "dfMQ135_CO2 = pd.DataFrame(dataCO2)\n", + "dfMQ135_CO = pd.DataFrame(dataCO)\n", + "dfMQ135_Alcohol = pd.DataFrame(dataAlcohol)\n", + "dfMQ135_NH4 = pd.DataFrame(dataNH4)\n", + "dfMQ135_Tolueno = pd.DataFrame(dataTolueno)\n", + "dfMQ135_Acetona = pd.DataFrame(dataAcetona)\n", + "\n", + "dfMQ135_CO2['CO2'] = pd.to_numeric(dfMQ135_CO2['CO2'])\n", + "dfMQ135_CO['CO'] = pd.to_numeric(dfMQ135_CO['CO'])\n", + "dfMQ135_Alcohol['Alcohol'] = pd.to_numeric(dfMQ135_Alcohol['Alcohol'])\n", + "dfMQ135_NH4['NH4'] = pd.to_numeric(dfMQ135_NH4['NH4'])\n", + "dfMQ135_Tolueno['Tolueno'] = pd.to_numeric(dfMQ135_Tolueno['Tolueno'])\n", + "dfMQ135_Acetona['Acetona'] = pd.to_numeric(dfMQ135_Acetona['Acetona'])\n", + "\n", + "dfMQ135_CO2['CO2'] = dfMQ135_CO2['CO2'].replace('',None, regex=True)\n", + "dfMQ135_CO['CO'] = dfMQ135_CO['CO'].replace('',None, regex=True)\n", + "dfMQ135_Alcohol['Alcohol'] = dfMQ135_Alcohol['Alcohol'].replace('',None, regex=True)\n", + "dfMQ135_NH4['NH4'] = dfMQ135_NH4['NH4'].replace('',None, regex=True)\n", + "dfMQ135_Tolueno['Tolueno'] = dfMQ135_Tolueno['Tolueno'].replace('',None, regex=True)\n", + "dfMQ135_Acetona['Acetona'] = dfMQ135_Acetona['Acetona'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ135_CO2.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO2\n", + "dataset2TrainCO2 = dfMQ135_CO2.copy()\n", + "dataset2TrainCO2.dropna(inplace=True)\n", + "X_trainCO2 = dataset2TrainCO2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO2 = dataset2TrainCO2['CO2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO2, y_trainCO2)\n", + "#Predict\n", + "CO2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ135_CO2 = CO2_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ135_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ135_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Alcohol\n", + "dataset2TrainAlcohol = dfMQ135_Alcohol.copy()\n", + "dataset2TrainAlcohol.dropna(inplace=True)\n", + "X_trainAlcohol = dataset2TrainAlcohol.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAlcohol = dataset2TrainAlcohol['Alcohol'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAlcohol, y_trainAlcohol)\n", + "#Predict\n", + "Alcohol_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ135_Alcohol = Alcohol_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train NH4\n", + "dataset2TrainNH4 = dfMQ135_NH4.copy()\n", + "dataset2TrainNH4.dropna(inplace=True)\n", + "X_trainNH4 = dataset2TrainNH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainNH4 = dataset2TrainNH4['NH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainNH4, y_trainNH4)\n", + "#Predict\n", + "NH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ135_NH4 = NH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Tolueno\n", + "dataset2TrainTolueno = dfMQ135_Tolueno.copy()\n", + "dataset2TrainTolueno.dropna(inplace=True)\n", + "X_trainTolueno = dataset2TrainTolueno.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainTolueno = dataset2TrainTolueno['Tolueno'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainTolueno, y_trainTolueno)\n", + "#Predict\n", + "Tolueno_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ135_Tolueno = Tolueno_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Acetona\n", + "dataset2TrainAcetona = dfMQ135_Acetona.copy()\n", + "dataset2TrainAcetona.dropna(inplace=True)\n", + "X_trainAcetona = dataset2TrainAcetona.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAcetona = dataset2TrainAcetona['Acetona'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAcetona, y_trainAcetona)\n", + "#Predict\n", + "Acetona_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ135_Acetona = Acetona_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ135_CO2, x_MQ135, marker='o', linewidth=1, label='CO2')\n", + "plt.plot(MQ135_CO, x_MQ135, marker='o', linewidth=1, label='CO')\n", + "plt.plot(MQ135_Alcohol, x_MQ135, marker='o', linewidth=1, label='Alcohol')\n", + "plt.plot(MQ135_NH4, x_MQ135, marker='o', linewidth=1, label='NH4')\n", + "plt.plot(MQ135_Tolueno, x_MQ135, marker='o', linewidth=1, label='Tolueno')\n", + "plt.plot(MQ135_Acetona, x_MQ135, marker='o', linewidth=1, label='Acetona')\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-135 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ135.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ135.png')\n", + "plt.savefig('MQ135.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/MQ2.eps b/Internal_design_documents/Experiments/MQ2.eps new file mode 100644 index 0000000..e3041d9 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ2.eps @@ -0,0 +1,2749 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: MQ2.eps +%%Creator: matplotlib version 3.0.3, http://matplotlib.org/ +%%CreationDate: Mon Jul 1 21:45:42 2019 +%%Orientation: portrait +%%BoundingBox: -18 198 630 594 +%%EndComments +%%BeginProlog +/mpldict 8 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/c { curveto } bind def +/cl { closepath } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +cl +} bind def +/clipbox { +box +clip +newpath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: DejaVu Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain +%%Creator: Converted from TrueType to type 3 by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-1021 -463 1793 1232]def +/FontType 3 def +/Encoding [ /space /hyphen /slash /zero /one /two /three /four /A /C /G /H /L /M /O /P /Q /R /a /b /c /d /e /f /h /i /l /n /o /p /r /s /t /minus ] def +/FontInfo 10 dict dup begin +/FamilyName (DejaVu Sans) def +/FullName (DejaVu Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def +/Weight (Book) def +/Version (Version 2.35) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -130 def +/UnderlineThickness 90 def +end readonly def +/CharStrings 35 dict dup begin +/.notdef 0 def +/space{318 0 0 0 0 0 _sc +}_d +/hyphen{361 0 49 234 312 314 _sc +49 314 _m +312 314 _l +312 234 _l +49 234 _l +49 314 _l +_cl}_d +/slash{337 0 0 -92 337 729 _sc +254 729 _m +337 729 _l +83 -92 _l +0 -92 _l +254 729 _l +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/two{{636 0 73 0 536 742 _sc +192 83 _m +536 83 _l +536 0 _l +73 0 _l +73 83 _l +110 121 161 173 226 239 _c +290 304 331 346 348 365 _c +380 400 402 430 414 455 _c +426 479 433 504 433 528 _c +433 566 419 598 392 622 _c +365 646 330 659 286 659 _c +255 659 222 653 188 643 _c +154 632 117 616 78 594 _c +78 694 _l +118 710 155 722 189 730 _c +223 738 255 742 284 742 _c +}_e{359 742 419 723 464 685 _c +509 647 532 597 532 534 _c +532 504 526 475 515 449 _c +504 422 484 390 454 354 _c +446 344 420 317 376 272 _c +332 227 271 164 192 83 _c +_cl}_e}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +}_e{202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/four{636 0 49 0 580 729 _sc +378 643 _m +129 254 _l +378 254 _l +378 643 _l +352 729 _m +476 729 _l +476 254 _l +580 254 _l +580 172 _l +476 172 _l +476 0 _l +378 0 _l +378 172 _l +49 172 _l +49 267 _l +352 729 _l +_cl}_d +/A{684 0 8 0 676 729 _sc +342 632 _m +208 269 _l +476 269 _l +342 632 _l +286 729 _m +398 729 _l +676 0 _l +573 0 _l +507 187 _l +178 187 _l +112 0 _l +8 0 _l +286 729 _l +_cl}_d +/C{{698 0 56 -13 644 742 _sc +644 673 _m +644 569 _l +610 599 575 622 537 638 _c +499 653 460 661 418 661 _c +334 661 270 635 226 584 _c +182 533 160 460 160 364 _c +160 268 182 194 226 143 _c +270 92 334 67 418 67 _c +460 67 499 74 537 90 _c +575 105 610 128 644 159 _c +644 56 _l +609 32 572 15 534 4 _c +496 -7 455 -13 412 -13 _c +302 -13 215 20 151 87 _c +}_e{87 154 56 246 56 364 _c +56 481 87 573 151 641 _c +215 708 302 742 412 742 _c +456 742 497 736 535 725 _c +573 713 610 696 644 673 _c +_cl}_e}_d +/G{{775 0 56 -13 693 742 _sc +595 104 _m +595 300 _l +434 300 _l +434 381 _l +693 381 _l +693 68 _l +655 40 613 20 567 7 _c +521 -6 472 -13 420 -13 _c +306 -13 216 20 152 86 _c +88 152 56 245 56 364 _c +56 482 88 575 152 642 _c +216 708 306 742 420 742 _c +467 742 512 736 555 724 _c +598 712 638 695 674 673 _c +674 568 _l +637 598 598 621 557 637 _c +516 653 473 661 428 661 _c +}_e{338 661 271 636 227 586 _c +182 536 160 462 160 364 _c +160 265 182 191 227 141 _c +271 91 338 67 428 67 _c +462 67 493 70 521 76 _c +549 82 573 91 595 104 _c +_cl}_e}_d +/H{752 0 98 0 654 729 _sc +98 729 _m +197 729 _l +197 430 _l +555 430 _l +555 729 _l +654 729 _l +654 0 _l +555 0 _l +555 347 _l +197 347 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/L{557 0 98 0 552 729 _sc +98 729 _m +197 729 _l +197 83 _l +552 83 _l +552 0 _l +98 0 _l +98 729 _l +_cl}_d +/M{863 0 98 0 765 729 _sc +98 729 _m +245 729 _l +431 233 _l +618 729 _l +765 729 _l +765 0 _l +669 0 _l +669 640 _l +481 140 _l +382 140 _l +194 640 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/O{787 0 56 -13 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +394 742 _m +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 248 700 157 639 89 _c +577 21 496 -13 394 -13 _c +291 -13 209 21 148 89 _c +86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +_cl}_d +/P{603 0 98 0 569 729 _sc +197 648 _m +197 374 _l +321 374 _l +367 374 402 385 427 409 _c +452 433 465 467 465 511 _c +465 555 452 588 427 612 _c +402 636 367 648 321 648 _c +197 648 _l +98 729 _m +321 729 _l +402 729 464 710 506 673 _c +548 636 569 582 569 511 _c +569 439 548 384 506 348 _c +464 311 402 293 321 293 _c +197 293 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/Q{{787 0 56 -128 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +532 13 _m +662 -128 _l +543 -128 _l +435 -11 _l +424 -11 416 -12 410 -12 _c +404 -12 399 -13 394 -13 _c +291 -13 209 21 148 89 _c +}_e{86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 279 714 206 680 146 _c +646 86 596 41 532 13 _c +_cl}_e}_d +/R{{695 0 98 0 666 729 _sc +444 342 _m +465 334 486 319 506 296 _c +526 272 546 240 566 199 _c +666 0 _l +560 0 _l +467 187 _l +443 235 419 268 397 284 _c +374 300 343 308 304 308 _c +197 308 _l +197 0 _l +98 0 _l +98 729 _l +321 729 _l +404 729 466 711 507 677 _c +548 642 569 589 569 519 _c +569 473 558 434 537 404 _c +515 374 484 353 444 342 _c +197 648 _m +197 389 _l +321 389 _l +}_e{368 389 404 400 428 422 _c +452 444 465 476 465 519 _c +465 561 452 593 428 615 _c +404 637 368 648 321 648 _c +197 648 _l +_cl}_e}_d +/a{{613 0 60 -13 522 560 _sc +343 275 _m +270 275 220 266 192 250 _c +164 233 150 205 150 165 _c +150 133 160 107 181 89 _c +202 70 231 61 267 61 _c +317 61 357 78 387 114 _c +417 149 432 196 432 255 _c +432 275 _l +343 275 _l +522 312 _m +522 0 _l +432 0 _l +432 83 _l +411 49 385 25 355 10 _c +325 -5 287 -13 243 -13 _c +187 -13 142 2 109 33 _c +76 64 60 106 60 159 _c +}_e{60 220 80 266 122 298 _c +163 329 224 345 306 345 _c +432 345 _l +432 354 _l +432 395 418 427 391 450 _c +364 472 326 484 277 484 _c +245 484 215 480 185 472 _c +155 464 127 453 100 439 _c +100 522 _l +132 534 164 544 195 550 _c +226 556 256 560 286 560 _c +365 560 424 539 463 498 _c +502 457 522 395 522 312 _c +_cl}_e}_d +/b{{635 0 91 -13 580 760 _sc +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +181 464 _m +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +}_e{580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 464 _l +_cl}_e}_d +/c{{550 0 55 -13 488 560 _sc +488 526 _m +488 442 _l +462 456 437 466 411 473 _c +385 480 360 484 334 484 _c +276 484 230 465 198 428 _c +166 391 150 339 150 273 _c +150 206 166 154 198 117 _c +230 80 276 62 334 62 _c +360 62 385 65 411 72 _c +437 79 462 90 488 104 _c +488 21 _l +462 9 436 0 410 -5 _c +383 -10 354 -13 324 -13 _c +242 -13 176 12 128 64 _c +}_e{79 115 55 185 55 273 _c +55 362 79 432 128 483 _c +177 534 244 560 330 560 _c +358 560 385 557 411 551 _c +437 545 463 537 488 526 _c +_cl}_e}_d +/d{{635 0 55 -13 544 760 _sc +454 464 _m +454 760 _l +544 760 _l +544 0 _l +454 0 _l +454 82 _l +435 49 411 25 382 10 _c +353 -5 319 -13 279 -13 _c +213 -13 159 13 117 65 _c +75 117 55 187 55 273 _c +55 359 75 428 117 481 _c +159 533 213 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +148 273 _m +148 207 161 155 188 117 _c +215 79 253 61 301 61 _c +}_e{348 61 385 79 413 117 _c +440 155 454 207 454 273 _c +454 339 440 390 413 428 _c +385 466 348 485 301 485 _c +253 485 215 466 188 428 _c +161 390 148 339 148 273 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +}_e{540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/f{352 0 23 0 371 760 _sc +371 760 _m +371 685 _l +285 685 _l +253 685 230 678 218 665 _c +205 652 199 629 199 595 _c +199 547 _l +347 547 _l +347 477 _l +199 477 _l +199 0 _l +109 0 _l +109 477 _l +23 477 _l +23 547 _l +109 547 _l +109 585 _l +109 645 123 690 151 718 _c +179 746 224 760 286 760 _c +371 760 _l +_cl}_d +/h{634 0 91 0 549 760 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/i{278 0 94 0 184 760 _sc +94 547 _m +184 547 _l +184 0 _l +94 0 _l +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/l{278 0 94 0 184 760 _sc +94 760 _m +184 760 _l +184 0 _l +94 0 _l +94 760 _l +_cl}_d +/n{634 0 91 0 549 560 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/o{612 0 55 -13 557 560 _sc +306 484 _m +258 484 220 465 192 427 _c +164 389 150 338 150 273 _c +150 207 163 156 191 118 _c +219 80 257 62 306 62 _c +354 62 392 80 420 118 _c +448 156 462 207 462 273 _c +462 337 448 389 420 427 _c +392 465 354 484 306 484 _c +306 560 _m +384 560 445 534 490 484 _c +534 433 557 363 557 273 _c +557 183 534 113 490 63 _c +445 12 384 -13 306 -13 _c +227 -13 165 12 121 63 _c +77 113 55 183 55 273 _c +55 363 77 433 121 484 _c +165 534 227 560 306 560 _c +_cl}_d +/p{{635 0 91 -207 580 560 _sc +181 82 _m +181 -207 _l +91 -207 _l +91 547 _l +181 547 _l +181 464 _l +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +}_e{286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +_cl}_e}_d +/r{411 0 91 0 411 560 _sc +411 463 _m +401 469 390 473 378 476 _c +366 478 353 480 339 480 _c +288 480 249 463 222 430 _c +194 397 181 350 181 288 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +199 495 224 520 254 536 _c +284 552 321 560 365 560 _c +371 560 378 559 386 559 _c +393 558 401 557 411 555 _c +411 463 _l +_cl}_d +/s{{521 0 54 -13 472 560 _sc +443 531 _m +443 446 _l +417 458 391 468 364 475 _c +336 481 308 485 279 485 _c +234 485 200 478 178 464 _c +156 450 145 430 145 403 _c +145 382 153 366 169 354 _c +185 342 217 330 265 320 _c +296 313 _l +360 299 405 279 432 255 _c +458 230 472 195 472 151 _c +472 100 452 60 412 31 _c +372 1 316 -13 246 -13 _c +216 -13 186 -10 154 -5 _c +}_e{122 0 89 8 54 20 _c +54 113 _l +87 95 120 82 152 74 _c +184 65 216 61 248 61 _c +290 61 323 68 346 82 _c +368 96 380 117 380 144 _c +380 168 371 187 355 200 _c +339 213 303 226 247 238 _c +216 245 _l +160 257 119 275 95 299 _c +70 323 58 356 58 399 _c +58 450 76 490 112 518 _c +148 546 200 560 268 560 _c +301 560 332 557 362 552 _c +391 547 418 540 443 531 _c +}_e{_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +/minus{838 0 106 272 732 355 _sc +106 355 _m +732 355 _l +732 272 _l +106 272 _l +106 355 _l +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +end +%%EndProlog +mpldict begin +-18 198 translate +648 396 0 0 clipbox +gsave +0 0 m +648 0 l +648 396 l +0 396 l +cl +1.000 setgray +fill +grestore +gsave +81 49.5 m +583.2 49.5 l +583.2 348.48 l +81 348.48 l +cl +1.000 setgray +fill +grestore +0.800 setlinewidth +1 setlinejoin +0 setlinecap +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +94.7571 49.5 o +grestore +gsave +85.757140 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/two glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +353.389 49.5 o +grestore +gsave +344.389241 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/three glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +82.922784 49.5 m +82.922784 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +82.9228 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +172.61316 49.5 m +172.61316 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +172.613 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +218.156012 49.5 m +218.156012 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +218.156 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +250.46918 49.5 m +250.46918 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +250.469 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +275.53322 49.5 m +275.53322 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +275.533 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +296.012032 49.5 m +296.012032 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +296.012 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +313.326621 49.5 m +313.326621 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +313.327 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +328.3252 49.5 m +328.3252 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +328.325 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +341.554885 49.5 m +341.554885 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +341.555 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +431.245261 49.5 m +431.245261 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +431.245 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +476.788113 49.5 m +476.788113 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +476.788 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +509.101281 49.5 m +509.101281 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +509.101 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +534.165321 49.5 m +534.165321 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +534.165 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +554.644133 49.5 m +554.644133 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +554.644 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +571.958722 49.5 m +571.958722 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +571.959 49.5 o +grestore +/DejaVuSans findfont +10.000 scalefont +setfont +gsave +284.771875 19.906250 translate +0.000000 rotate +0.000000 0.000000 m /P glyphshow +6.030273 0.000000 m /P glyphshow +12.060547 0.000000 m /M glyphshow +20.688477 0.000000 m /space glyphshow +23.867188 0.000000 m /C glyphshow +30.849609 0.000000 m /o glyphshow +36.967773 0.000000 m /n glyphshow +43.305664 0.000000 m /c glyphshow +48.803711 0.000000 m /e glyphshow +54.956055 0.000000 m /n glyphshow +61.293945 0.000000 m /t glyphshow +65.214844 0.000000 m /r glyphshow +69.326172 0.000000 m /a glyphshow +75.454102 0.000000 m /t glyphshow +79.375000 0.000000 m /i glyphshow +82.153320 0.000000 m /o glyphshow +88.271484 0.000000 m /n glyphshow +grestore +0.800 setlinewidth +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 63.09 o +grestore +gsave +50.000000 59.129063 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/minus glyphshow + +18.685547 3.892188 moveto +/one glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 198.99 o +grestore +gsave +56.000000 194.529063 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/zero glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 334.89 o +grestore +gsave +56.000000 330.929063 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/one glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 49.919929 m +583.2 49.919929 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 49.9199 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 56.871557 m +583.2 56.871557 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 56.8716 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 103.999976 m +583.2 103.999976 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 104 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 127.930779 m +583.2 127.930779 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 127.931 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 144.909953 m +583.2 144.909953 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 144.91 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 158.080024 m +583.2 158.080024 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 158.08 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 168.840755 m +583.2 168.840755 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 168.841 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 177.938824 m +583.2 177.938824 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 177.939 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 185.819929 m +583.2 185.819929 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 185.82 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 192.771557 m +583.2 192.771557 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 192.772 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 239.899976 m +583.2 239.899976 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 239.9 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 263.830779 m +583.2 263.830779 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 263.831 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 280.809953 m +583.2 280.809953 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 280.81 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 293.980024 m +583.2 293.980024 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 293.98 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 304.740755 m +583.2 304.740755 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 304.741 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 313.838824 m +583.2 313.838824 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 313.839 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 321.719929 m +583.2 321.719929 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 321.72 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 328.671557 m +583.2 328.671557 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 328.672 o +grestore +gsave +43.921875 184.677500 translate +90.000000 rotate +0.000000 0.000000 m /R glyphshow +6.948242 0.000000 m /s glyphshow +12.158203 0.000000 m /slash glyphshow +15.527344 0.000000 m /R glyphshow +22.475586 0.000000 m /o glyphshow +grestore +1.000 setlinewidth +2 setlinecap +0.122 0.467 0.706 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +459.264802 63.09 m +453.455098 103.999976 l +447.328428 127.930779 l +440.848198 144.909953 l +433.97109 158.080024 l +426.645301 168.840755 l +418.808172 177.938824 l +410.382929 185.819929 l +401.27409 192.771557 l +391.360854 198.99 l +103.827273 239.899976 l +-1 239.909656 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +459.265 63.09 o +453.455 104 o +447.328 127.931 o +440.848 144.91 o +433.971 158.08 o +426.645 168.841 o +418.808 177.939 o +410.383 185.82 o +401.274 192.772 o +391.361 198.99 o +103.827 239.9 o +-1 239.91 o +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +509.781177 63.09 m +497.5985 103.999976 l +483.931889 127.930779 l +468.369038 144.909953 l +450.297651 158.080024 l +428.75068 168.840755 l +402.065111 177.938824 l +366.996265 185.819929 l +315.730546 192.771557 l +218.716225 198.99 l +-1 199.024668 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +509.781 63.09 o +497.598 104 o +483.932 127.931 o +468.369 144.91 o +450.298 158.08 o +428.751 168.841 o +402.065 177.939 o +366.996 185.82 o +315.731 192.772 o +218.716 198.99 o +-1 199.025 o +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +560.372727 63.09 m +556.18435 103.999976 l +551.833723 127.930779 l +547.307768 144.909953 l +542.591758 158.080024 l +537.669029 168.840755 l +532.520624 177.938824 l +527.124854 185.819929 l +521.456743 192.771557 l +515.487331 198.99 l +426.83337 239.899976 l +-1 239.939434 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +560.373 63.09 o +556.184 104 o +551.834 127.931 o +547.308 144.91 o +542.592 158.08 o +537.669 168.841 o +532.521 177.939 o +527.125 185.82 o +521.457 192.772 o +515.487 198.99 o +426.833 239.9 o +-1 239.939 o +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +438.111929 63.09 m +435.979375 103.999976 l +433.805547 127.930779 l +431.588816 144.909953 l +429.327455 158.080024 l +427.019629 168.840755 l +424.66339 177.938824 l +422.256661 185.819929 l +419.797232 192.771557 l +417.282744 198.99 l +388.451285 239.899976 l +349.563903 263.830779 l +289.591857 280.809953 l +152.235393 293.980024 l +-1 293.986385 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +438.112 63.09 o +435.979 104 o +433.806 127.931 o +431.589 144.91 o +429.327 158.08 o +427.02 168.841 o +424.663 177.939 o +422.257 185.82 o +419.797 192.772 o +417.283 198.99 o +388.451 239.9 o +349.564 263.831 o +289.592 280.81 o +152.235 293.98 o +-1 293.986 o +grestore +2 setlinecap +0.580 0.404 0.741 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +558.732334 63.09 m +554.472662 103.999976 l +550.045059 127.930779 l +545.435738 144.909953 l +540.629143 158.080024 l +535.607628 168.840755 l +530.351072 177.938824 l +524.836386 185.819929 l +519.036902 192.771557 l +512.921597 198.99 l +420.825596 239.899976 l +-1 239.93888 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.580 0.404 0.741 setrgbcolor +fill +grestore +stroke +grestore +} bind def +558.732 63.09 o +554.473 104 o +550.045 127.931 o +545.436 144.91 o +540.629 158.08 o +535.608 168.841 o +530.351 177.939 o +524.836 185.82 o +519.037 192.772 o +512.922 198.99 o +420.826 239.9 o +-1 239.939 o +grestore +2 setlinecap +0.549 0.337 0.294 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +509.781177 63.09 m +497.5985 103.999976 l +483.931889 127.930779 l +468.369038 144.909953 l +450.297651 158.080024 l +428.75068 168.840755 l +402.065111 177.938824 l +366.996265 185.819929 l +315.730546 192.771557 l +218.716225 198.99 l +-1 199.024668 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.549 0.337 0.294 setrgbcolor +fill +grestore +stroke +grestore +} bind def +509.781 63.09 o +497.598 104 o +483.932 127.931 o +468.369 144.91 o +450.298 158.08 o +428.751 168.841 o +402.065 177.939 o +366.996 185.82 o +315.731 192.772 o +218.716 198.99 o +-1 199.025 o +grestore +0.800 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0.000 setgray +gsave +81 49.5 m +81 348.48 l +stroke +grestore +gsave +583.2 49.5 m +583.2 348.48 l +stroke +grestore +gsave +81 49.5 m +583.2 49.5 l +stroke +grestore +gsave +81 348.48 m +583.2 348.48 l +stroke +grestore +1.000 setlinewidth +0 setlinecap +0.800 setgray +gsave +502.965625 252.44875 m +576.2 252.44875 l +577.533333 252.44875 578.2 253.115417 578.2 254.44875 c +578.2 341.48 l +578.2 342.813333 577.533333 343.48 576.2 343.48 c +502.965625 343.48 l +501.632292 343.48 500.965625 342.813333 500.965625 341.48 c +500.965625 254.44875 l +500.965625 253.115417 501.632292 252.44875 502.965625 252.44875 c +cl +gsave +1.000 setgray +fill +grestore +stroke +grestore +1 setlinejoin +2 setlinecap +[] 0 setdash +0.122 0.467 0.706 setrgbcolor +gsave +504.965625 335.38625 m +524.965625 335.38625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +514.966 335.386 o +grestore +0.000 setgray +gsave +532.965625 331.886250 translate +0.000000 rotate +0.000000 0.000000 m /H glyphshow +7.519531 0.000000 m /two glyphshow +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +504.965625 320.714375 m +524.965625 320.714375 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +514.966 320.714 o +grestore +0.000 setgray +gsave +532.965625 317.214375 translate +0.000000 rotate +0.000000 0.000000 m /L glyphshow +5.571289 0.000000 m /P glyphshow +11.601562 0.000000 m /G glyphshow +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +504.965625 306.0425 m +524.965625 306.0425 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +514.966 306.043 o +grestore +0.000 setgray +gsave +532.965625 302.542500 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /H glyphshow +14.501953 0.000000 m /four glyphshow +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +504.965625 291.370625 m +524.965625 291.370625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +514.966 291.371 o +grestore +0.000 setgray +gsave +532.965625 287.870625 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /O glyphshow +grestore +2 setlinecap +0.580 0.404 0.741 setrgbcolor +gsave +504.965625 276.69875 m +524.965625 276.69875 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.580 0.404 0.741 setrgbcolor +fill +grestore +stroke +grestore +} bind def +514.966 276.699 o +grestore +0.000 setgray +gsave +532.965625 273.198750 translate +0.000000 rotate +0.000000 0.000000 m /A glyphshow +6.840820 0.000000 m /l glyphshow +9.619141 0.000000 m /c glyphshow +15.117188 0.000000 m /o glyphshow +21.235352 0.000000 m /h glyphshow +27.573242 0.000000 m /o glyphshow +33.691406 0.000000 m /l glyphshow +grestore +2 setlinecap +0.549 0.337 0.294 setrgbcolor +gsave +504.965625 262.026875 m +524.965625 262.026875 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.549 0.337 0.294 setrgbcolor +fill +grestore +stroke +grestore +} bind def +514.966 262.027 o +grestore +0.000 setgray +gsave +532.965625 258.526875 translate +0.000000 rotate +0.000000 0.000000 m /P glyphshow +6.030273 0.000000 m /r glyphshow +10.141602 0.000000 m /o glyphshow +16.259766 0.000000 m /p glyphshow +22.607422 0.000000 m /a glyphshow +28.735352 0.000000 m /n glyphshow +35.073242 0.000000 m /e glyphshow +grestore +/DejaVuSans findfont +12.000 scalefont +setfont +gsave +234.562500 378.955000 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +8.378906 0.000000 m /a glyphshow +15.732422 0.000000 m /l glyphshow +19.066406 0.000000 m /i glyphshow +22.400391 0.000000 m /b glyphshow +30.017578 0.000000 m /r glyphshow +34.951172 0.000000 m /a glyphshow +42.304688 0.000000 m /t glyphshow +47.009766 0.000000 m /i glyphshow +50.343750 0.000000 m /o glyphshow +57.685547 0.000000 m /n glyphshow +65.291016 0.000000 m /space glyphshow +69.105469 0.000000 m /p glyphshow +76.722656 0.000000 m /l glyphshow +80.056641 0.000000 m /o glyphshow +87.398438 0.000000 m /t glyphshow +92.103516 0.000000 m /space glyphshow +95.917969 0.000000 m /f glyphshow +100.142578 0.000000 m /o glyphshow +107.484375 0.000000 m /r glyphshow +112.417969 0.000000 m /space glyphshow +116.232422 0.000000 m /M glyphshow +126.585938 0.000000 m /Q glyphshow +136.031250 0.000000 m /hyphen glyphshow +140.361328 0.000000 m /two glyphshow +147.996094 0.000000 m /space glyphshow +151.810547 0.000000 m /d glyphshow +159.427734 0.000000 m /a glyphshow +166.781250 0.000000 m /t glyphshow +171.486328 0.000000 m /a glyphshow +grestore + +end +showpage diff --git a/Internal_design_documents/Experiments/MQ2.png b/Internal_design_documents/Experiments/MQ2.png new file mode 100644 index 0000000..4a67441 Binary files /dev/null and b/Internal_design_documents/Experiments/MQ2.png differ diff --git a/Internal_design_documents/Experiments/MQ2.svg b/Internal_design_documents/Experiments/MQ2.svg new file mode 100644 index 0000000..3711ef1 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ2.svg @@ -0,0 +1,1659 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Internal_design_documents/Experiments/MQ2_Regression.ipynb b/Internal_design_documents/Experiments/MQ2_Regression.ipynb new file mode 100644 index 0000000..5c410c7 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ2_Regression.ipynb @@ -0,0 +1,2026 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RS/R0 \t H2 \t LPG \t CH4 \t CO \t Alcohol \t Propane\n", + "0.1 \t \t \t \t \t \t \n", + "0.2 \t \t \t \t \t \t \n", + "0.3 \t \t \t \t \t \t \n", + "0.4 \t \t \t \t \t \t \n", + "0.5 \t \t \t \t \t \t \n", + "0.6 \t \t 2000.0 \t \t \t \t 2000.0\n", + "0.7 \t 2100.0 \t \t \t \t \t \n", + "0.8 \t \t 1000.0 \t \t \t \t 1000.0\n", + "0.9 \t \t 800.0 \t 5000.0 \t \t 5000.0 \t 800.0\n", + "1.0 \t 1000.0 \t \t \t \t \t \n", + "2.0 \t 201.0 \t \t 800.0 \t \t 500.0 \t \n", + "3.0 \t \t \t 200.0 \t 1000.0 \t 200.0 \t \n", + "4.0 \t \t \t \t 500.0 \t \t \n", + "5.0 \t \t \t \t 200.0 \t \t \n", + "6.0 \t \t \t \t \t \t \n", + "7.0 \t \t \t \t \t \t \n", + "8.0 \t \t \t \t \t \t \n", + "9.0 \t \t \t \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, H2, LPG, CH4, CO, Alcohol, propane = sheetMQ2.row_values(row_index, start_colx=0, end_colx=7)\n", + " print(RsR0, \"\t\", H2, \"\t\", LPG, \"\t\", CH4, \"\t\", CO, \"\t\", Alcohol, \"\t\", propane)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ2 = sheetMQ2.col_values(0)[2:]\n", + "MQ2_H2 = sheetMQ2.col_values(1)[2:]\n", + "MQ2_LPG = sheetMQ2.col_values(2)[2:]\n", + "MQ2_CH4 = sheetMQ2.col_values(3)[2:]\n", + "MQ2_CO = sheetMQ2.col_values(4)[2:]\n", + "MQ2_Alcohol = sheetMQ2.col_values(5)[2:]\n", + "MQ2_propane = sheetMQ2.col_values(6)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "MQ2_H2 =zero_to_nan(MQ2_H2)\n", + "MQ2_LPG =zero_to_nan(MQ2_LPG)\n", + "MQ2_CH4 =zero_to_nan(MQ2_CH4)\n", + "MQ2_CO =zero_to_nan(MQ2_CO)\n", + "MQ2_Alcohol =zero_to_nan(MQ2_Alcohol)\n", + "MQ2_propane =zero_to_nan(MQ2_propane)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataH2 = {'RsRo': x_MQ2, 'H2': MQ2_H2}\n", + "dataLPG = {'RsRo': x_MQ2, 'LPG': MQ2_LPG}\n", + "dataCH4 = {'RsRo': x_MQ2, 'CH4': MQ2_CH4}\n", + "dataCO = {'RsRo': x_MQ2, 'CO': MQ2_CO}\n", + "dataAlcohol = {'RsRo': x_MQ2, 'Alcohol': MQ2_Alcohol}\n", + "dataPropane = {'RsRo': x_MQ2, 'Propane': MQ2_propane}\n", + "\n", + "dfMQ2_H2 = pd.DataFrame(dataH2)\n", + "dfMQ2_LPG = pd.DataFrame(dataLPG)\n", + "dfMQ2_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ2_CO = pd.DataFrame(dataCO)\n", + "dfMQ2_Alcohol = pd.DataFrame(dataAlcohol)\n", + "dfMQ2_Propane = pd.DataFrame(dataPropane)\n", + "\n", + "dfMQ2_H2['H2'] = pd.to_numeric(dfMQ2_H2['H2'])\n", + "dfMQ2_LPG['LPG'] = pd.to_numeric(dfMQ2_LPG['LPG'])\n", + "dfMQ2_CH4['CH4'] = pd.to_numeric(dfMQ2_CH4['CH4'])\n", + "dfMQ2_CO['CO'] = pd.to_numeric(dfMQ2_CO['CO'])\n", + "dfMQ2_Alcohol['Alcohol'] = pd.to_numeric(dfMQ2_Alcohol['Alcohol'])\n", + "dfMQ2_Propane['Propane'] = pd.to_numeric(dfMQ2_Propane['Propane'])\n", + "\n", + "dfMQ2_H2['H2'] = dfMQ2_H2['H2'].replace('',None, regex=True)\n", + "dfMQ2_LPG['LPG'] = dfMQ2_LPG['LPG'].replace('',None, regex=True)\n", + "dfMQ2_CH4['CH4'] = dfMQ2_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ2_CO['CO'] = dfMQ2_CO['CO'].replace('',None, regex=True)\n", + "dfMQ2_Alcohol['Alcohol'] = dfMQ2_Alcohol['Alcohol'].replace('',None, regex=True)\n", + "dfMQ2_Propane['Propane'] = dfMQ2_Propane['Propane'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ2_H2.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train\n", + "dataset2TrainH2 = dfMQ2_H2.copy()\n", + "dataset2TrainH2.dropna(inplace=True)\n", + "X_trainH2 = dataset2TrainH2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainH2 = dataset2TrainH2['H2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainH2, y_trainH2)\n", + "#Predict\n", + "H2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ2_H2 = H2_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train\n", + "dataset2TrainLPG = dfMQ2_LPG.copy()\n", + "dataset2TrainLPG.dropna(inplace=True)\n", + "X_trainLPG = dataset2TrainLPG.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainLPG = dataset2TrainLPG['LPG'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainLPG, y_trainLPG)\n", + "#Predict\n", + "LPG_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ2_LPG = LPG_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train\n", + "dataset2TrainCH4 = dfMQ2_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ2_CH4 = CH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train\n", + "dataset2TrainCO = dfMQ2_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ2_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train\n", + "dataset2TrainAlcohol = dfMQ2_Alcohol.copy()\n", + "dataset2TrainAlcohol.dropna(inplace=True)\n", + "X_trainAlcohol = dataset2TrainAlcohol.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAlcohol = dataset2TrainAlcohol['Alcohol'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAlcohol, y_trainAlcohol)\n", + "#Predict\n", + "Alcohol_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ2_Alcohol = Alcohol_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train\n", + "dataset2TrainPropane = dfMQ2_Propane.copy()\n", + "dataset2TrainPropane.dropna(inplace=True)\n", + "X_trainPropane = dataset2TrainPropane.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainPropane = dataset2TrainPropane['Propane'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainPropane, y_trainPropane)\n", + "#Predict\n", + "Propane_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ2_propane = Propane_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ2_H2, x_MQ2, marker='o', linewidth=1, label='H2')\n", + "plt.plot(MQ2_LPG, x_MQ2, marker='o', linewidth=1, label='LPG')\n", + "plt.plot(MQ2_CH4, x_MQ2, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ2_CO, x_MQ2, marker='o', linewidth=1, label='CO')\n", + "plt.plot(MQ2_Alcohol, x_MQ2, marker='o', linewidth=1, label='Alcohol')\n", + "plt.plot(MQ2_propane, x_MQ2, marker='o', linewidth=1, label='Propane')\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-2 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ2.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ2.png')\n", + "plt.savefig('MQ2.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/MQ3.eps b/Internal_design_documents/Experiments/MQ3.eps new file mode 100644 index 0000000..f691d65 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ3.eps @@ -0,0 +1,3345 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: MQ3.eps +%%Creator: matplotlib version 3.0.3, http://matplotlib.org/ +%%CreationDate: Mon Jul 1 22:07:09 2019 +%%Orientation: portrait +%%BoundingBox: -18 198 630 594 +%%EndComments +%%BeginProlog +/mpldict 8 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/c { curveto } bind def +/cl { closepath } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +cl +} bind def +/clipbox { +box +clip +newpath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: DejaVu Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain +%%Creator: Converted from TrueType to type 3 by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-1021 -463 1793 1232]def +/FontType 3 def +/Encoding [ /space /hyphen /slash /zero /one /two /three /four /A /B /C /G /H /L /M /O /P /Q /R /a /b /c /d /e /f /h /i /l /n /o /p /r /s /t /x /z /minus ] def +/FontInfo 10 dict dup begin +/FamilyName (DejaVu Sans) def +/FullName (DejaVu Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def +/Weight (Book) def +/Version (Version 2.35) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -130 def +/UnderlineThickness 90 def +end readonly def +/CharStrings 38 dict dup begin +/.notdef 0 def +/space{318 0 0 0 0 0 _sc +}_d +/hyphen{361 0 49 234 312 314 _sc +49 314 _m +312 314 _l +312 234 _l +49 234 _l +49 314 _l +_cl}_d +/slash{337 0 0 -92 337 729 _sc +254 729 _m +337 729 _l +83 -92 _l +0 -92 _l +254 729 _l +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/two{{636 0 73 0 536 742 _sc +192 83 _m +536 83 _l +536 0 _l +73 0 _l +73 83 _l +110 121 161 173 226 239 _c +290 304 331 346 348 365 _c +380 400 402 430 414 455 _c +426 479 433 504 433 528 _c +433 566 419 598 392 622 _c +365 646 330 659 286 659 _c +255 659 222 653 188 643 _c +154 632 117 616 78 594 _c +78 694 _l +118 710 155 722 189 730 _c +223 738 255 742 284 742 _c +}_e{359 742 419 723 464 685 _c +509 647 532 597 532 534 _c +532 504 526 475 515 449 _c +504 422 484 390 454 354 _c +446 344 420 317 376 272 _c +332 227 271 164 192 83 _c +_cl}_e}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +}_e{202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/four{636 0 49 0 580 729 _sc +378 643 _m +129 254 _l +378 254 _l +378 643 _l +352 729 _m +476 729 _l +476 254 _l +580 254 _l +580 172 _l +476 172 _l +476 0 _l +378 0 _l +378 172 _l +49 172 _l +49 267 _l +352 729 _l +_cl}_d +/A{684 0 8 0 676 729 _sc +342 632 _m +208 269 _l +476 269 _l +342 632 _l +286 729 _m +398 729 _l +676 0 _l +573 0 _l +507 187 _l +178 187 _l +112 0 _l +8 0 _l +286 729 _l +_cl}_d +/B{{686 0 98 0 615 729 _sc +197 348 _m +197 81 _l +355 81 _l +408 81 447 92 473 114 _c +498 136 511 169 511 215 _c +511 260 498 293 473 315 _c +447 337 408 348 355 348 _c +197 348 _l +197 648 _m +197 428 _l +343 428 _l +391 428 426 437 450 455 _c +474 473 486 500 486 538 _c +486 574 474 602 450 620 _c +426 638 391 648 343 648 _c +197 648 _l +98 729 _m +350 729 _l +}_e{425 729 483 713 524 682 _c +564 650 585 606 585 549 _c +585 504 574 468 553 442 _c +532 416 502 399 462 393 _c +510 382 548 360 575 327 _c +601 294 615 253 615 204 _c +615 138 592 88 548 53 _c +504 17 441 0 360 0 _c +98 0 _l +98 729 _l +_cl}_e}_d +/C{{698 0 56 -13 644 742 _sc +644 673 _m +644 569 _l +610 599 575 622 537 638 _c +499 653 460 661 418 661 _c +334 661 270 635 226 584 _c +182 533 160 460 160 364 _c +160 268 182 194 226 143 _c +270 92 334 67 418 67 _c +460 67 499 74 537 90 _c +575 105 610 128 644 159 _c +644 56 _l +609 32 572 15 534 4 _c +496 -7 455 -13 412 -13 _c +302 -13 215 20 151 87 _c +}_e{87 154 56 246 56 364 _c +56 481 87 573 151 641 _c +215 708 302 742 412 742 _c +456 742 497 736 535 725 _c +573 713 610 696 644 673 _c +_cl}_e}_d +/G{{775 0 56 -13 693 742 _sc +595 104 _m +595 300 _l +434 300 _l +434 381 _l +693 381 _l +693 68 _l +655 40 613 20 567 7 _c +521 -6 472 -13 420 -13 _c +306 -13 216 20 152 86 _c +88 152 56 245 56 364 _c +56 482 88 575 152 642 _c +216 708 306 742 420 742 _c +467 742 512 736 555 724 _c +598 712 638 695 674 673 _c +674 568 _l +637 598 598 621 557 637 _c +516 653 473 661 428 661 _c +}_e{338 661 271 636 227 586 _c +182 536 160 462 160 364 _c +160 265 182 191 227 141 _c +271 91 338 67 428 67 _c +462 67 493 70 521 76 _c +549 82 573 91 595 104 _c +_cl}_e}_d +/H{752 0 98 0 654 729 _sc +98 729 _m +197 729 _l +197 430 _l +555 430 _l +555 729 _l +654 729 _l +654 0 _l +555 0 _l +555 347 _l +197 347 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/L{557 0 98 0 552 729 _sc +98 729 _m +197 729 _l +197 83 _l +552 83 _l +552 0 _l +98 0 _l +98 729 _l +_cl}_d +/M{863 0 98 0 765 729 _sc +98 729 _m +245 729 _l +431 233 _l +618 729 _l +765 729 _l +765 0 _l +669 0 _l +669 640 _l +481 140 _l +382 140 _l +194 640 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/O{787 0 56 -13 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +394 742 _m +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 248 700 157 639 89 _c +577 21 496 -13 394 -13 _c +291 -13 209 21 148 89 _c +86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +_cl}_d +/P{603 0 98 0 569 729 _sc +197 648 _m +197 374 _l +321 374 _l +367 374 402 385 427 409 _c +452 433 465 467 465 511 _c +465 555 452 588 427 612 _c +402 636 367 648 321 648 _c +197 648 _l +98 729 _m +321 729 _l +402 729 464 710 506 673 _c +548 636 569 582 569 511 _c +569 439 548 384 506 348 _c +464 311 402 293 321 293 _c +197 293 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/Q{{787 0 56 -128 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +532 13 _m +662 -128 _l +543 -128 _l +435 -11 _l +424 -11 416 -12 410 -12 _c +404 -12 399 -13 394 -13 _c +291 -13 209 21 148 89 _c +}_e{86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 279 714 206 680 146 _c +646 86 596 41 532 13 _c +_cl}_e}_d +/R{{695 0 98 0 666 729 _sc +444 342 _m +465 334 486 319 506 296 _c +526 272 546 240 566 199 _c +666 0 _l +560 0 _l +467 187 _l +443 235 419 268 397 284 _c +374 300 343 308 304 308 _c +197 308 _l +197 0 _l +98 0 _l +98 729 _l +321 729 _l +404 729 466 711 507 677 _c +548 642 569 589 569 519 _c +569 473 558 434 537 404 _c +515 374 484 353 444 342 _c +197 648 _m +197 389 _l +321 389 _l +}_e{368 389 404 400 428 422 _c +452 444 465 476 465 519 _c +465 561 452 593 428 615 _c +404 637 368 648 321 648 _c +197 648 _l +_cl}_e}_d +/a{{613 0 60 -13 522 560 _sc +343 275 _m +270 275 220 266 192 250 _c +164 233 150 205 150 165 _c +150 133 160 107 181 89 _c +202 70 231 61 267 61 _c +317 61 357 78 387 114 _c +417 149 432 196 432 255 _c +432 275 _l +343 275 _l +522 312 _m +522 0 _l +432 0 _l +432 83 _l +411 49 385 25 355 10 _c +325 -5 287 -13 243 -13 _c +187 -13 142 2 109 33 _c +76 64 60 106 60 159 _c +}_e{60 220 80 266 122 298 _c +163 329 224 345 306 345 _c +432 345 _l +432 354 _l +432 395 418 427 391 450 _c +364 472 326 484 277 484 _c +245 484 215 480 185 472 _c +155 464 127 453 100 439 _c +100 522 _l +132 534 164 544 195 550 _c +226 556 256 560 286 560 _c +365 560 424 539 463 498 _c +502 457 522 395 522 312 _c +_cl}_e}_d +/b{{635 0 91 -13 580 760 _sc +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +181 464 _m +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +}_e{580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 464 _l +_cl}_e}_d +/c{{550 0 55 -13 488 560 _sc +488 526 _m +488 442 _l +462 456 437 466 411 473 _c +385 480 360 484 334 484 _c +276 484 230 465 198 428 _c +166 391 150 339 150 273 _c +150 206 166 154 198 117 _c +230 80 276 62 334 62 _c +360 62 385 65 411 72 _c +437 79 462 90 488 104 _c +488 21 _l +462 9 436 0 410 -5 _c +383 -10 354 -13 324 -13 _c +242 -13 176 12 128 64 _c +}_e{79 115 55 185 55 273 _c +55 362 79 432 128 483 _c +177 534 244 560 330 560 _c +358 560 385 557 411 551 _c +437 545 463 537 488 526 _c +_cl}_e}_d +/d{{635 0 55 -13 544 760 _sc +454 464 _m +454 760 _l +544 760 _l +544 0 _l +454 0 _l +454 82 _l +435 49 411 25 382 10 _c +353 -5 319 -13 279 -13 _c +213 -13 159 13 117 65 _c +75 117 55 187 55 273 _c +55 359 75 428 117 481 _c +159 533 213 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +148 273 _m +148 207 161 155 188 117 _c +215 79 253 61 301 61 _c +}_e{348 61 385 79 413 117 _c +440 155 454 207 454 273 _c +454 339 440 390 413 428 _c +385 466 348 485 301 485 _c +253 485 215 466 188 428 _c +161 390 148 339 148 273 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +}_e{540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/f{352 0 23 0 371 760 _sc +371 760 _m +371 685 _l +285 685 _l +253 685 230 678 218 665 _c +205 652 199 629 199 595 _c +199 547 _l +347 547 _l +347 477 _l +199 477 _l +199 0 _l +109 0 _l +109 477 _l +23 477 _l +23 547 _l +109 547 _l +109 585 _l +109 645 123 690 151 718 _c +179 746 224 760 286 760 _c +371 760 _l +_cl}_d +/h{634 0 91 0 549 760 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/i{278 0 94 0 184 760 _sc +94 547 _m +184 547 _l +184 0 _l +94 0 _l +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/l{278 0 94 0 184 760 _sc +94 760 _m +184 760 _l +184 0 _l +94 0 _l +94 760 _l +_cl}_d +/n{634 0 91 0 549 560 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/o{612 0 55 -13 557 560 _sc +306 484 _m +258 484 220 465 192 427 _c +164 389 150 338 150 273 _c +150 207 163 156 191 118 _c +219 80 257 62 306 62 _c +354 62 392 80 420 118 _c +448 156 462 207 462 273 _c +462 337 448 389 420 427 _c +392 465 354 484 306 484 _c +306 560 _m +384 560 445 534 490 484 _c +534 433 557 363 557 273 _c +557 183 534 113 490 63 _c +445 12 384 -13 306 -13 _c +227 -13 165 12 121 63 _c +77 113 55 183 55 273 _c +55 363 77 433 121 484 _c +165 534 227 560 306 560 _c +_cl}_d +/p{{635 0 91 -207 580 560 _sc +181 82 _m +181 -207 _l +91 -207 _l +91 547 _l +181 547 _l +181 464 _l +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +}_e{286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +_cl}_e}_d +/r{411 0 91 0 411 560 _sc +411 463 _m +401 469 390 473 378 476 _c +366 478 353 480 339 480 _c +288 480 249 463 222 430 _c +194 397 181 350 181 288 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +199 495 224 520 254 536 _c +284 552 321 560 365 560 _c +371 560 378 559 386 559 _c +393 558 401 557 411 555 _c +411 463 _l +_cl}_d +/s{{521 0 54 -13 472 560 _sc +443 531 _m +443 446 _l +417 458 391 468 364 475 _c +336 481 308 485 279 485 _c +234 485 200 478 178 464 _c +156 450 145 430 145 403 _c +145 382 153 366 169 354 _c +185 342 217 330 265 320 _c +296 313 _l +360 299 405 279 432 255 _c +458 230 472 195 472 151 _c +472 100 452 60 412 31 _c +372 1 316 -13 246 -13 _c +216 -13 186 -10 154 -5 _c +}_e{122 0 89 8 54 20 _c +54 113 _l +87 95 120 82 152 74 _c +184 65 216 61 248 61 _c +290 61 323 68 346 82 _c +368 96 380 117 380 144 _c +380 168 371 187 355 200 _c +339 213 303 226 247 238 _c +216 245 _l +160 257 119 275 95 299 _c +70 323 58 356 58 399 _c +58 450 76 490 112 518 _c +148 546 200 560 268 560 _c +301 560 332 557 362 552 _c +391 547 418 540 443 531 _c +}_e{_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +/x{592 0 29 0 559 547 _sc +549 547 _m +351 281 _l +559 0 _l +453 0 _l +294 215 _l +135 0 _l +29 0 _l +241 286 _l +47 547 _l +153 547 _l +298 352 _l +443 547 _l +549 547 _l +_cl}_d +/z{525 0 43 0 482 547 _sc +55 547 _m +482 547 _l +482 465 _l +144 72 _l +482 72 _l +482 0 _l +43 0 _l +43 82 _l +381 475 _l +55 475 _l +55 547 _l +_cl}_d +/minus{838 0 106 272 732 355 _sc +106 355 _m +732 355 _l +732 272 _l +106 272 _l +106 355 _l +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +end +%%EndProlog +mpldict begin +-18 198 translate +648 396 0 0 clipbox +gsave +0 0 m +648 0 l +648 396 l +0 396 l +cl +1.000 setgray +fill +grestore +gsave +81 49.5 m +583.2 49.5 l +583.2 348.48 l +81 348.48 l +cl +1.000 setgray +fill +grestore +0.800 setlinewidth +1 setlinejoin +0 setlinecap +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +121.567 49.5 o +grestore +gsave +109.566941 34.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/minus glyphshow + +18.685547 3.892188 moveto +/one glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +305.474 49.5 o +grestore +gsave +296.474439 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/zero glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +489.382 49.5 o +grestore +gsave +480.381938 34.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/one glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +80.767292 49.5 m +80.767292 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +80.7673 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +93.079309 49.5 m +93.079309 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +93.0793 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +103.744463 49.5 m +103.744463 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +103.744 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +113.151795 49.5 m +113.151795 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +113.152 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +176.928614 49.5 m +176.928614 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +176.929 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +209.313117 49.5 m +209.313117 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +209.313 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +232.290288 49.5 m +232.290288 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +232.29 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +250.112766 49.5 m +250.112766 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +250.113 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +264.674791 49.5 m +264.674791 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +264.675 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +276.986807 49.5 m +276.986807 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +276.987 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +287.651961 49.5 m +287.651961 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +287.652 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +297.059294 49.5 m +297.059294 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +297.059 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +360.836113 49.5 m +360.836113 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +360.836 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +393.220616 49.5 m +393.220616 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +393.221 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +416.197786 49.5 m +416.197786 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +416.198 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +434.020264 49.5 m +434.020264 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +434.02 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +448.582289 49.5 m +448.582289 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +448.582 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +460.894306 49.5 m +460.894306 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +460.894 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +471.559459 49.5 m +471.559459 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +471.559 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +480.966792 49.5 m +480.966792 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +480.967 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +544.743611 49.5 m +544.743611 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +544.744 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +577.128114 49.5 m +577.128114 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +577.128 49.5 o +grestore +/DejaVuSans findfont +10.000 scalefont +setfont +gsave +284.771875 19.906250 translate +0.000000 rotate +0.000000 0.000000 m /P glyphshow +6.030273 0.000000 m /P glyphshow +12.060547 0.000000 m /M glyphshow +20.688477 0.000000 m /space glyphshow +23.867188 0.000000 m /C glyphshow +30.849609 0.000000 m /o glyphshow +36.967773 0.000000 m /n glyphshow +43.305664 0.000000 m /c glyphshow +48.803711 0.000000 m /e glyphshow +54.956055 0.000000 m /n glyphshow +61.293945 0.000000 m /t glyphshow +65.214844 0.000000 m /r glyphshow +69.326172 0.000000 m /a glyphshow +75.454102 0.000000 m /t glyphshow +79.375000 0.000000 m /i glyphshow +82.153320 0.000000 m /o glyphshow +88.271484 0.000000 m /n glyphshow +grestore +0.800 setlinewidth +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 133.48 o +grestore +gsave +56.000000 129.018895 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/zero glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 234.185 o +grestore +gsave +56.000000 230.223979 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/one glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 334.89 o +grestore +gsave +56.000000 330.429062 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/two glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 63.09 m +583.2 63.09 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 63.09 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 80.823285 m +583.2 80.823285 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 80.8233 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 93.405251 m +583.2 93.405251 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 93.4053 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 103.164582 m +583.2 103.164582 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 103.165 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 111.138536 m +583.2 111.138536 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 111.139 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 117.880418 m +583.2 117.880418 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 117.88 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 123.720502 m +583.2 123.720502 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 123.721 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 128.871821 m +583.2 128.871821 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 128.872 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 163.795084 m +583.2 163.795084 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 163.795 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 181.528369 m +583.2 181.528369 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 181.528 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 194.110335 m +583.2 194.110335 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 194.11 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 203.869665 m +583.2 203.869665 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 203.87 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 211.843619 m +583.2 211.843619 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 211.844 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 218.585502 m +583.2 218.585502 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 218.586 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 224.425585 m +583.2 224.425585 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 224.426 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 229.576904 m +583.2 229.576904 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 229.577 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 264.500167 m +583.2 264.500167 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 264.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 282.233452 m +583.2 282.233452 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 282.233 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 294.815418 m +583.2 294.815418 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 294.815 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 304.574749 m +583.2 304.574749 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 304.575 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 312.548703 m +583.2 312.548703 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 312.549 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 319.290585 m +583.2 319.290585 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 319.291 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 325.130669 m +583.2 325.130669 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 325.131 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 330.281988 m +583.2 330.281988 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 330.282 o +grestore +gsave +49.921875 184.677500 translate +90.000000 rotate +0.000000 0.000000 m /R glyphshow +6.948242 0.000000 m /s glyphshow +12.158203 0.000000 m /slash glyphshow +15.527344 0.000000 m /R glyphshow +22.475586 0.000000 m /o glyphshow +grestore +1.000 setlinewidth +2 setlinecap +0.122 0.467 0.706 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +392.948486 63.09 m +383.772523 80.823285 l +373.403862 93.405251 l +361.485466 103.164582 l +347.471271 111.138536 l +330.463555 117.880418 l +308.82612 123.720502 l +279.055499 128.871821 l +231.058335 133.479833 l +-1 133.518101 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +392.948 63.09 o +383.773 80.8233 o +373.404 93.4053 o +361.485 103.165 o +347.471 111.139 o +330.464 117.88 o +308.826 123.721 o +279.055 128.872 o +231.058 133.48 o +-1 133.518 o +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +464.779903 63.09 m +462.67343 80.823285 l +460.509892 93.405251 l +458.286113 103.164582 l +455.99864 111.138536 l +453.643718 117.880418 l +451.217247 123.720502 l +448.714743 128.871821 l +446.131288 133.479833 l +414.294532 163.795084 l +360.553916 181.528369 l +103.827273 194.110335 l +-1 194.115903 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +464.78 63.09 o +462.673 80.8233 o +460.51 93.4053 o +458.286 103.165 o +455.999 111.139 o +453.644 117.88 o +451.217 123.721 o +448.715 128.872 o +446.131 133.48 o +414.295 163.795 o +360.554 181.528 o +103.827 194.11 o +-1 194.116 o +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +560.372727 63.09 m +560.212977 80.823285 l +560.052907 93.405251 l +559.892516 103.164582 l +559.731801 111.138536 l +559.570763 117.880418 l +559.409399 123.720502 l +559.247709 128.871821 l +559.085691 133.479833 l +557.44717 163.795084 l +555.774331 181.528369 l +554.065703 194.110335 l +552.319723 203.869665 l +550.534721 211.843619 l +548.708913 218.585502 l +546.840388 224.425585 l +544.927101 229.576904 l +542.966854 234.184916 l +520.15285 264.500167 l +488.093684 282.233452 l +433.700143 294.815418 l +136.128966 304.574749 l +-1 304.5807 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +560.373 63.09 o +560.213 80.8233 o +560.053 93.4053 o +559.893 103.165 o +559.732 111.139 o +559.571 117.88 o +559.409 123.721 o +559.248 128.872 o +559.086 133.48 o +557.447 163.795 o +555.774 181.528 o +554.066 194.11 o +552.32 203.87 o +550.535 211.844 o +548.709 218.586 o +546.84 224.426 o +544.927 229.577 o +542.967 234.185 o +520.153 264.5 o +488.094 282.233 o +433.7 294.815 o +136.129 304.575 o +-1 304.581 o +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +478.329351 63.09 m +478.148335 80.823285 l +477.966908 93.405251 l +477.785068 103.164582 l +477.602814 111.138536 l +477.420142 117.880418 l +477.237051 123.720502 l +477.05354 128.871821 l +476.869607 133.479833 l +475.00659 163.795084 l +473.099078 181.528369 l +471.144892 194.110335 l +469.141691 203.869665 l +467.086953 211.843619 l +464.977955 218.585502 l +462.811755 224.425585 l +460.585163 229.576904 l +458.294713 234.184916 l +430.836039 264.500167 l +388.655372 282.233452 l +293.621463 294.815418 l +-1 294.831054 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +478.329 63.09 o +478.148 80.8233 o +477.967 93.4053 o +477.785 103.165 o +477.603 111.139 o +477.42 117.88 o +477.237 123.721 o +477.054 128.872 o +476.87 133.48 o +475.007 163.795 o +473.099 181.528 o +471.145 194.11 o +469.142 203.87 o +467.087 211.844 o +464.978 218.586 o +462.812 224.426 o +460.585 229.577 o +458.295 234.185 o +430.836 264.5 o +388.655 282.233 o +293.621 294.815 o +-1 294.831 o +grestore +2 setlinecap +0.580 0.404 0.741 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +383.276353 63.09 m +383.107316 80.823285 l +382.937921 93.405251 l +382.768165 103.164582 l +382.598048 111.138536 l +382.427567 117.880418 l +382.256722 123.720502 l +382.085511 128.871821 l +381.913932 133.479833 l +380.177559 163.795084 l +378.402597 181.528369 l +376.587291 194.110335 l +374.729765 203.869665 l +372.828009 211.843619 l +370.879863 218.585502 l +368.883009 224.425585 l +366.834947 229.576904 l +364.732984 234.184916 l +339.960906 264.500167 l +303.860849 282.233452 l +236.187159 294.815418 l +-1 294.82801 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.580 0.404 0.741 setrgbcolor +fill +grestore +stroke +grestore +} bind def +383.276 63.09 o +383.107 80.8233 o +382.938 93.4053 o +382.768 103.165 o +382.598 111.139 o +382.428 117.88 o +382.257 123.721 o +382.086 128.872 o +381.914 133.48 o +380.178 163.795 o +378.403 181.528 o +376.587 194.11 o +374.73 203.87 o +372.828 211.844 o +370.88 218.586 o +368.883 224.426 o +366.835 229.577 o +364.733 234.185 o +339.961 264.5 o +303.861 282.233 o +236.187 294.815 o +-1 294.828 o +grestore +2 setlinecap +0.549 0.337 0.294 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +487.352665 63.09 m +487.182137 80.823285 l +487.011244 93.405251 l +486.839985 103.164582 l +486.668358 111.138536 l +486.496361 117.880418 l +486.323993 123.720502 l +486.151252 128.871821 l +485.978137 133.479833 l +484.226028 163.795084 l +482.43462 181.528369 l +480.602108 194.110335 l +478.726563 203.869665 l +476.805914 211.843619 l +474.837938 218.585502 l +472.820245 224.425585 l +470.750256 229.576904 l +468.625188 234.184916 l +443.528954 264.500167 l +406.729815 282.233452 l +336.439164 294.815418 l +-1 294.833322 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.549 0.337 0.294 setrgbcolor +fill +grestore +stroke +grestore +} bind def +487.353 63.09 o +487.182 80.8233 o +487.011 93.4053 o +486.84 103.165 o +486.668 111.139 o +486.496 117.88 o +486.324 123.721 o +486.151 128.872 o +485.978 133.48 o +484.226 163.795 o +482.435 181.528 o +480.602 194.11 o +478.727 203.87 o +476.806 211.844 o +474.838 218.586 o +472.82 224.426 o +470.75 229.577 o +468.625 234.185 o +443.529 264.5 o +406.73 282.233 o +336.439 294.815 o +-1 294.833 o +grestore +0.800 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0.000 setgray +gsave +81 49.5 m +81 348.48 l +stroke +grestore +gsave +583.2 49.5 m +583.2 348.48 l +stroke +grestore +gsave +81 49.5 m +583.2 49.5 l +stroke +grestore +gsave +81 348.48 m +583.2 348.48 l +stroke +grestore +1.000 setlinewidth +0 setlinecap +0.800 setgray +gsave +88 54.5 m +159.890625 54.5 l +161.223958 54.5 161.890625 55.166667 161.890625 56.5 c +161.890625 143.53125 l +161.890625 144.864583 161.223958 145.53125 159.890625 145.53125 c +88 145.53125 l +86.666667 145.53125 86 144.864583 86 143.53125 c +86 56.5 l +86 55.166667 86.666667 54.5 88 54.5 c +cl +gsave +1.000 setgray +fill +grestore +stroke +grestore +1 setlinejoin +2 setlinecap +[] 0 setdash +0.122 0.467 0.706 setrgbcolor +gsave +90 137.4375 m +110 137.4375 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +100 137.438 o +grestore +0.000 setgray +gsave +118.000000 133.937500 translate +0.000000 rotate +0.000000 0.000000 m /A glyphshow +6.840820 0.000000 m /l glyphshow +9.619141 0.000000 m /c glyphshow +15.117188 0.000000 m /o glyphshow +21.235352 0.000000 m /h glyphshow +27.573242 0.000000 m /o glyphshow +33.691406 0.000000 m /l glyphshow +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +90 122.765625 m +110 122.765625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +100 122.766 o +grestore +0.000 setgray +gsave +118.000000 119.265625 translate +0.000000 rotate +0.000000 0.000000 m /B glyphshow +6.860352 0.000000 m /e glyphshow +13.012695 0.000000 m /n glyphshow +19.350586 0.000000 m /z glyphshow +24.599609 0.000000 m /i glyphshow +27.377930 0.000000 m /n glyphshow +33.715820 0.000000 m /e glyphshow +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +90 108.09375 m +110 108.09375 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +100 108.094 o +grestore +0.000 setgray +gsave +118.000000 104.593750 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /H glyphshow +14.501953 0.000000 m /four glyphshow +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +90 93.421875 m +110 93.421875 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +100 93.4219 o +grestore +0.000 setgray +gsave +118.000000 89.921875 translate +0.000000 rotate +0.000000 0.000000 m /H glyphshow +7.519531 0.000000 m /e glyphshow +13.671875 0.000000 m /x glyphshow +19.589844 0.000000 m /a glyphshow +25.717773 0.000000 m /n glyphshow +32.055664 0.000000 m /e glyphshow +grestore +2 setlinecap +0.580 0.404 0.741 setrgbcolor +gsave +90 78.75 m +110 78.75 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.580 0.404 0.741 setrgbcolor +fill +grestore +stroke +grestore +} bind def +100 78.75 o +grestore +0.000 setgray +gsave +118.000000 75.250000 translate +0.000000 rotate +0.000000 0.000000 m /L glyphshow +5.571289 0.000000 m /P glyphshow +11.601562 0.000000 m /G glyphshow +grestore +2 setlinecap +0.549 0.337 0.294 setrgbcolor +gsave +90 64.078125 m +110 64.078125 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.549 0.337 0.294 setrgbcolor +fill +grestore +stroke +grestore +} bind def +100 64.0781 o +grestore +0.000 setgray +gsave +118.000000 60.578125 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /O glyphshow +grestore +/DejaVuSans findfont +12.000 scalefont +setfont +gsave +234.562500 378.955000 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +8.378906 0.000000 m /a glyphshow +15.732422 0.000000 m /l glyphshow +19.066406 0.000000 m /i glyphshow +22.400391 0.000000 m /b glyphshow +30.017578 0.000000 m /r glyphshow +34.951172 0.000000 m /a glyphshow +42.304688 0.000000 m /t glyphshow +47.009766 0.000000 m /i glyphshow +50.343750 0.000000 m /o glyphshow +57.685547 0.000000 m /n glyphshow +65.291016 0.000000 m /space glyphshow +69.105469 0.000000 m /p glyphshow +76.722656 0.000000 m /l glyphshow +80.056641 0.000000 m /o glyphshow +87.398438 0.000000 m /t glyphshow +92.103516 0.000000 m /space glyphshow +95.917969 0.000000 m /f glyphshow +100.142578 0.000000 m /o glyphshow +107.484375 0.000000 m /r glyphshow +112.417969 0.000000 m /space glyphshow +116.232422 0.000000 m /M glyphshow +126.585938 0.000000 m /Q glyphshow +136.031250 0.000000 m /hyphen glyphshow +140.361328 0.000000 m /three glyphshow +147.996094 0.000000 m /space glyphshow +151.810547 0.000000 m /d glyphshow +159.427734 0.000000 m /a glyphshow +166.781250 0.000000 m /t glyphshow +171.486328 0.000000 m /a glyphshow +grestore + +end +showpage diff --git a/Internal_design_documents/Experiments/MQ3.png b/Internal_design_documents/Experiments/MQ3.png new file mode 100644 index 0000000..9364547 Binary files /dev/null and b/Internal_design_documents/Experiments/MQ3.png differ diff --git a/Internal_design_documents/Experiments/MQ3.svg b/Internal_design_documents/Experiments/MQ3.svg new file mode 100644 index 0000000..97681d7 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ3.svg @@ -0,0 +1,1965 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Internal_design_documents/Experiments/MQ303A.eps b/Internal_design_documents/Experiments/MQ303A.eps new file mode 100644 index 0000000..4b2ac0f --- /dev/null +++ b/Internal_design_documents/Experiments/MQ303A.eps @@ -0,0 +1,2475 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: MQ303A.eps +%%Creator: matplotlib version 3.0.3, http://matplotlib.org/ +%%CreationDate: Wed Jul 3 20:35:37 2019 +%%Orientation: portrait +%%BoundingBox: -18 198 630 594 +%%EndComments +%%BeginProlog +/mpldict 8 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/c { curveto } bind def +/cl { closepath } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +cl +} bind def +/clipbox { +box +clip +newpath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: DejaVu Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain +%%Creator: Converted from TrueType to type 3 by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-1021 -463 1793 1232]def +/FontType 3 def +/Encoding [ /space /hyphen /slash /zero /one /two /three /A /B /C /H /I /M /P /Q /R /a /b /c /d /e /f /g /h /i /l /n /o /p /r /s /t /u /minus ] def +/FontInfo 10 dict dup begin +/FamilyName (DejaVu Sans) def +/FullName (DejaVu Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def +/Weight (Book) def +/Version (Version 2.35) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -130 def +/UnderlineThickness 90 def +end readonly def +/CharStrings 35 dict dup begin +/.notdef 0 def +/space{318 0 0 0 0 0 _sc +}_d +/hyphen{361 0 49 234 312 314 _sc +49 314 _m +312 314 _l +312 234 _l +49 234 _l +49 314 _l +_cl}_d +/slash{337 0 0 -92 337 729 _sc +254 729 _m +337 729 _l +83 -92 _l +0 -92 _l +254 729 _l +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/two{{636 0 73 0 536 742 _sc +192 83 _m +536 83 _l +536 0 _l +73 0 _l +73 83 _l +110 121 161 173 226 239 _c +290 304 331 346 348 365 _c +380 400 402 430 414 455 _c +426 479 433 504 433 528 _c +433 566 419 598 392 622 _c +365 646 330 659 286 659 _c +255 659 222 653 188 643 _c +154 632 117 616 78 594 _c +78 694 _l +118 710 155 722 189 730 _c +223 738 255 742 284 742 _c +}_e{359 742 419 723 464 685 _c +509 647 532 597 532 534 _c +532 504 526 475 515 449 _c +504 422 484 390 454 354 _c +446 344 420 317 376 272 _c +332 227 271 164 192 83 _c +_cl}_e}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +}_e{202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/A{684 0 8 0 676 729 _sc +342 632 _m +208 269 _l +476 269 _l +342 632 _l +286 729 _m +398 729 _l +676 0 _l +573 0 _l +507 187 _l +178 187 _l +112 0 _l +8 0 _l +286 729 _l +_cl}_d +/B{{686 0 98 0 615 729 _sc +197 348 _m +197 81 _l +355 81 _l +408 81 447 92 473 114 _c +498 136 511 169 511 215 _c +511 260 498 293 473 315 _c +447 337 408 348 355 348 _c +197 348 _l +197 648 _m +197 428 _l +343 428 _l +391 428 426 437 450 455 _c +474 473 486 500 486 538 _c +486 574 474 602 450 620 _c +426 638 391 648 343 648 _c +197 648 _l +98 729 _m +350 729 _l +}_e{425 729 483 713 524 682 _c +564 650 585 606 585 549 _c +585 504 574 468 553 442 _c +532 416 502 399 462 393 _c +510 382 548 360 575 327 _c +601 294 615 253 615 204 _c +615 138 592 88 548 53 _c +504 17 441 0 360 0 _c +98 0 _l +98 729 _l +_cl}_e}_d +/C{{698 0 56 -13 644 742 _sc +644 673 _m +644 569 _l +610 599 575 622 537 638 _c +499 653 460 661 418 661 _c +334 661 270 635 226 584 _c +182 533 160 460 160 364 _c +160 268 182 194 226 143 _c +270 92 334 67 418 67 _c +460 67 499 74 537 90 _c +575 105 610 128 644 159 _c +644 56 _l +609 32 572 15 534 4 _c +496 -7 455 -13 412 -13 _c +302 -13 215 20 151 87 _c +}_e{87 154 56 246 56 364 _c +56 481 87 573 151 641 _c +215 708 302 742 412 742 _c +456 742 497 736 535 725 _c +573 713 610 696 644 673 _c +_cl}_e}_d +/H{752 0 98 0 654 729 _sc +98 729 _m +197 729 _l +197 430 _l +555 430 _l +555 729 _l +654 729 _l +654 0 _l +555 0 _l +555 347 _l +197 347 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/I{295 0 98 0 197 729 _sc +98 729 _m +197 729 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/M{863 0 98 0 765 729 _sc +98 729 _m +245 729 _l +431 233 _l +618 729 _l +765 729 _l +765 0 _l +669 0 _l +669 640 _l +481 140 _l +382 140 _l +194 640 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/P{603 0 98 0 569 729 _sc +197 648 _m +197 374 _l +321 374 _l +367 374 402 385 427 409 _c +452 433 465 467 465 511 _c +465 555 452 588 427 612 _c +402 636 367 648 321 648 _c +197 648 _l +98 729 _m +321 729 _l +402 729 464 710 506 673 _c +548 636 569 582 569 511 _c +569 439 548 384 506 348 _c +464 311 402 293 321 293 _c +197 293 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/Q{{787 0 56 -128 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +532 13 _m +662 -128 _l +543 -128 _l +435 -11 _l +424 -11 416 -12 410 -12 _c +404 -12 399 -13 394 -13 _c +291 -13 209 21 148 89 _c +}_e{86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 279 714 206 680 146 _c +646 86 596 41 532 13 _c +_cl}_e}_d +/R{{695 0 98 0 666 729 _sc +444 342 _m +465 334 486 319 506 296 _c +526 272 546 240 566 199 _c +666 0 _l +560 0 _l +467 187 _l +443 235 419 268 397 284 _c +374 300 343 308 304 308 _c +197 308 _l +197 0 _l +98 0 _l +98 729 _l +321 729 _l +404 729 466 711 507 677 _c +548 642 569 589 569 519 _c +569 473 558 434 537 404 _c +515 374 484 353 444 342 _c +197 648 _m +197 389 _l +321 389 _l +}_e{368 389 404 400 428 422 _c +452 444 465 476 465 519 _c +465 561 452 593 428 615 _c +404 637 368 648 321 648 _c +197 648 _l +_cl}_e}_d +/a{{613 0 60 -13 522 560 _sc +343 275 _m +270 275 220 266 192 250 _c +164 233 150 205 150 165 _c +150 133 160 107 181 89 _c +202 70 231 61 267 61 _c +317 61 357 78 387 114 _c +417 149 432 196 432 255 _c +432 275 _l +343 275 _l +522 312 _m +522 0 _l +432 0 _l +432 83 _l +411 49 385 25 355 10 _c +325 -5 287 -13 243 -13 _c +187 -13 142 2 109 33 _c +76 64 60 106 60 159 _c +}_e{60 220 80 266 122 298 _c +163 329 224 345 306 345 _c +432 345 _l +432 354 _l +432 395 418 427 391 450 _c +364 472 326 484 277 484 _c +245 484 215 480 185 472 _c +155 464 127 453 100 439 _c +100 522 _l +132 534 164 544 195 550 _c +226 556 256 560 286 560 _c +365 560 424 539 463 498 _c +502 457 522 395 522 312 _c +_cl}_e}_d +/b{{635 0 91 -13 580 760 _sc +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +181 464 _m +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +}_e{580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 464 _l +_cl}_e}_d +/c{{550 0 55 -13 488 560 _sc +488 526 _m +488 442 _l +462 456 437 466 411 473 _c +385 480 360 484 334 484 _c +276 484 230 465 198 428 _c +166 391 150 339 150 273 _c +150 206 166 154 198 117 _c +230 80 276 62 334 62 _c +360 62 385 65 411 72 _c +437 79 462 90 488 104 _c +488 21 _l +462 9 436 0 410 -5 _c +383 -10 354 -13 324 -13 _c +242 -13 176 12 128 64 _c +}_e{79 115 55 185 55 273 _c +55 362 79 432 128 483 _c +177 534 244 560 330 560 _c +358 560 385 557 411 551 _c +437 545 463 537 488 526 _c +_cl}_e}_d +/d{{635 0 55 -13 544 760 _sc +454 464 _m +454 760 _l +544 760 _l +544 0 _l +454 0 _l +454 82 _l +435 49 411 25 382 10 _c +353 -5 319 -13 279 -13 _c +213 -13 159 13 117 65 _c +75 117 55 187 55 273 _c +55 359 75 428 117 481 _c +159 533 213 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +148 273 _m +148 207 161 155 188 117 _c +215 79 253 61 301 61 _c +}_e{348 61 385 79 413 117 _c +440 155 454 207 454 273 _c +454 339 440 390 413 428 _c +385 466 348 485 301 485 _c +253 485 215 466 188 428 _c +161 390 148 339 148 273 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +}_e{540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/f{352 0 23 0 371 760 _sc +371 760 _m +371 685 _l +285 685 _l +253 685 230 678 218 665 _c +205 652 199 629 199 595 _c +199 547 _l +347 547 _l +347 477 _l +199 477 _l +199 0 _l +109 0 _l +109 477 _l +23 477 _l +23 547 _l +109 547 _l +109 585 _l +109 645 123 690 151 718 _c +179 746 224 760 286 760 _c +371 760 _l +_cl}_d +/g{{635 0 55 -207 544 560 _sc +454 280 _m +454 344 440 395 414 431 _c +387 467 349 485 301 485 _c +253 485 215 467 188 431 _c +161 395 148 344 148 280 _c +148 215 161 165 188 129 _c +215 93 253 75 301 75 _c +349 75 387 93 414 129 _c +440 165 454 215 454 280 _c +544 68 _m +544 -24 523 -93 482 -139 _c +440 -184 377 -207 292 -207 _c +260 -207 231 -204 203 -200 _c +175 -195 147 -188 121 -178 _c +}_e{121 -91 _l +147 -105 173 -115 199 -122 _c +225 -129 251 -133 278 -133 _c +336 -133 380 -117 410 -87 _c +439 -56 454 -10 454 52 _c +454 96 _l +435 64 411 40 382 24 _c +353 8 319 0 279 0 _c +211 0 157 25 116 76 _c +75 127 55 195 55 280 _c +55 364 75 432 116 483 _c +157 534 211 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +454 547 _l +544 547 _l +}_e{544 68 _l +_cl}_e}_d +/h{634 0 91 0 549 760 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/i{278 0 94 0 184 760 _sc +94 547 _m +184 547 _l +184 0 _l +94 0 _l +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/l{278 0 94 0 184 760 _sc +94 760 _m +184 760 _l +184 0 _l +94 0 _l +94 760 _l +_cl}_d +/n{634 0 91 0 549 560 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/o{612 0 55 -13 557 560 _sc +306 484 _m +258 484 220 465 192 427 _c +164 389 150 338 150 273 _c +150 207 163 156 191 118 _c +219 80 257 62 306 62 _c +354 62 392 80 420 118 _c +448 156 462 207 462 273 _c +462 337 448 389 420 427 _c +392 465 354 484 306 484 _c +306 560 _m +384 560 445 534 490 484 _c +534 433 557 363 557 273 _c +557 183 534 113 490 63 _c +445 12 384 -13 306 -13 _c +227 -13 165 12 121 63 _c +77 113 55 183 55 273 _c +55 363 77 433 121 484 _c +165 534 227 560 306 560 _c +_cl}_d +/p{{635 0 91 -207 580 560 _sc +181 82 _m +181 -207 _l +91 -207 _l +91 547 _l +181 547 _l +181 464 _l +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +}_e{286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +_cl}_e}_d +/r{411 0 91 0 411 560 _sc +411 463 _m +401 469 390 473 378 476 _c +366 478 353 480 339 480 _c +288 480 249 463 222 430 _c +194 397 181 350 181 288 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +199 495 224 520 254 536 _c +284 552 321 560 365 560 _c +371 560 378 559 386 559 _c +393 558 401 557 411 555 _c +411 463 _l +_cl}_d +/s{{521 0 54 -13 472 560 _sc +443 531 _m +443 446 _l +417 458 391 468 364 475 _c +336 481 308 485 279 485 _c +234 485 200 478 178 464 _c +156 450 145 430 145 403 _c +145 382 153 366 169 354 _c +185 342 217 330 265 320 _c +296 313 _l +360 299 405 279 432 255 _c +458 230 472 195 472 151 _c +472 100 452 60 412 31 _c +372 1 316 -13 246 -13 _c +216 -13 186 -10 154 -5 _c +}_e{122 0 89 8 54 20 _c +54 113 _l +87 95 120 82 152 74 _c +184 65 216 61 248 61 _c +290 61 323 68 346 82 _c +368 96 380 117 380 144 _c +380 168 371 187 355 200 _c +339 213 303 226 247 238 _c +216 245 _l +160 257 119 275 95 299 _c +70 323 58 356 58 399 _c +58 450 76 490 112 518 _c +148 546 200 560 268 560 _c +301 560 332 557 362 552 _c +391 547 418 540 443 531 _c +}_e{_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +/u{634 0 85 -13 543 560 _sc +85 216 _m +85 547 _l +175 547 _l +175 219 _l +175 167 185 129 205 103 _c +225 77 255 64 296 64 _c +344 64 383 79 411 110 _c +439 141 453 183 453 237 _c +453 547 _l +543 547 _l +543 0 _l +453 0 _l +453 84 _l +431 50 405 26 377 10 _c +348 -5 315 -13 277 -13 _c +214 -13 166 6 134 45 _c +101 83 85 140 85 216 _c +311 560 _m +311 560 _l +_cl}_d +/minus{838 0 106 272 732 355 _sc +106 355 _m +732 355 _l +732 272 _l +106 272 _l +106 355 _l +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +end +%%EndProlog +mpldict begin +-18 198 translate +648 396 0 0 clipbox +gsave +0 0 m +648 0 l +648 396 l +0 396 l +cl +1.000 setgray +fill +grestore +gsave +81 49.5 m +583.2 49.5 l +583.2 348.48 l +81 348.48 l +cl +1.000 setgray +fill +grestore +0.800 setlinewidth +1 setlinejoin +0 setlinecap +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +208.578 49.5 o +grestore +gsave +199.578408 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/two glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +433.735 49.5 o +grestore +gsave +424.734825 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/three glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +90.848904 49.5 m +90.848904 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +90.8489 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +118.979662 49.5 m +118.979662 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +118.98 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +140.799573 49.5 m +140.799573 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +140.8 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +158.627739 49.5 m +158.627739 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +158.628 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +173.701238 49.5 m +173.701238 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +173.701 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +186.758497 49.5 m +186.758497 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +186.758 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +198.275816 49.5 m +198.275816 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +198.276 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +276.357243 49.5 m +276.357243 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +276.357 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +316.00532 49.5 m +316.00532 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +316.005 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +344.136079 49.5 m +344.136079 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +344.136 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +365.95599 49.5 m +365.95599 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +365.956 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +383.784155 49.5 m +383.784155 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +383.784 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +398.857655 49.5 m +398.857655 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +398.858 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +411.914914 49.5 m +411.914914 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +411.915 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +423.432232 49.5 m +423.432232 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +423.432 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +501.51366 49.5 m +501.51366 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +501.514 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +541.161737 49.5 m +541.161737 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +541.162 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +569.292495 49.5 m +569.292495 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +569.292 49.5 o +grestore +/DejaVuSans findfont +10.000 scalefont +setfont +gsave +284.771875 19.906250 translate +0.000000 rotate +0.000000 0.000000 m /P glyphshow +6.030273 0.000000 m /P glyphshow +12.060547 0.000000 m /M glyphshow +20.688477 0.000000 m /space glyphshow +23.867188 0.000000 m /C glyphshow +30.849609 0.000000 m /o glyphshow +36.967773 0.000000 m /n glyphshow +43.305664 0.000000 m /c glyphshow +48.803711 0.000000 m /e glyphshow +54.956055 0.000000 m /n glyphshow +61.293945 0.000000 m /t glyphshow +65.214844 0.000000 m /r glyphshow +69.326172 0.000000 m /a glyphshow +75.454102 0.000000 m /t glyphshow +79.375000 0.000000 m /i glyphshow +82.153320 0.000000 m /o glyphshow +88.271484 0.000000 m /n glyphshow +grestore +0.800 setlinewidth +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 174.911 o +grestore +gsave +50.000000 170.949781 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/minus glyphshow + +18.685547 3.892188 moveto +/one glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 334.89 o +grestore +gsave +56.000000 330.429062 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/zero glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 63.09 m +583.2 63.09 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 63.09 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 91.260953 m +583.2 91.260953 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 91.261 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 111.248562 m +583.2 111.248562 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 111.249 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 126.752157 m +583.2 126.752157 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 126.752 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 139.419515 m +583.2 139.419515 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 139.42 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 150.129615 m +583.2 150.129615 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 150.13 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 159.407125 m +583.2 159.407125 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 159.407 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 167.590468 m +583.2 167.590468 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 167.59 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 223.069281 m +583.2 223.069281 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 223.069 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 251.240234 m +583.2 251.240234 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 251.24 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 271.227843 m +583.2 271.227843 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 271.228 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 286.731438 m +583.2 286.731438 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 286.731 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 299.398797 m +583.2 299.398797 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 299.399 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 310.108896 m +583.2 310.108896 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 310.109 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 319.386406 m +583.2 319.386406 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 319.386 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 327.56975 m +583.2 327.56975 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 327.57 o +grestore +gsave +43.921875 184.677500 translate +90.000000 rotate +0.000000 0.000000 m /R glyphshow +6.948242 0.000000 m /s glyphshow +12.158203 0.000000 m /slash glyphshow +15.527344 0.000000 m /R glyphshow +22.475586 0.000000 m /o glyphshow +grestore +1.000 setlinewidth +2 setlinecap +0.122 0.467 0.706 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +560.372727 63.09 m +557.600034 91.260953 l +554.74642 111.248562 l +551.807021 126.752157 l +548.776517 139.419515 l +545.64908 150.129615 l +542.418304 159.407125 l +539.077126 167.590468 l +535.617732 174.910719 l +491.960968 223.069281 l +411.064344 251.240234 l +-1 251.276708 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +560.373 63.09 o +557.6 91.261 o +554.746 111.249 o +551.807 126.752 o +548.777 139.42 o +545.649 150.13 o +542.418 159.407 o +539.077 167.59 o +535.618 174.911 o +491.961 223.069 o +411.064 251.24 o +-1 251.277 o +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +314.494349 63.09 m +313.214778 91.260953 l +311.918241 111.248562 l +310.604282 126.752157 l +309.272426 139.419515 l +307.922179 150.129615 l +306.553025 159.407125 l +305.164429 167.590468 l +303.755829 174.910719 l +288.42676 223.069281 l +270.239671 251.240234 l +247.878892 271.227843 l +218.839986 286.731438 l +177.349913 299.398797 l +103.827273 310.108896 l +-1 310.113209 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +314.494 63.09 o +313.215 91.261 o +311.918 111.249 o +310.604 126.752 o +309.272 139.42 o +307.922 150.13 o +306.553 159.407 o +305.164 167.59 o +303.756 174.911 o +288.427 223.069 o +270.24 251.24 o +247.879 271.228 o +218.84 286.731 o +177.35 299.399 o +103.827 310.109 o +-1 310.113 o +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +440.034735 63.09 m +438.112088 91.260953 l +436.150878 111.248562 l +434.149527 126.752157 l +432.106357 139.419515 l +430.019582 150.129615 l +427.887302 159.407125 l +425.707487 167.590468 l +423.477969 174.910719 l +397.841466 223.069281 l +362.998781 251.240234 l +308.363366 271.227843 l +173.406707 286.731438 l +-1 286.741232 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +440.035 63.09 o +438.112 91.261 o +436.151 111.249 o +434.15 126.752 o +432.106 139.42 o +430.02 150.13 o +427.887 159.407 o +425.707 167.59 o +423.478 174.911 o +397.841 223.069 o +362.999 251.24 o +308.363 271.228 o +173.407 286.731 o +-1 286.741 o +grestore +0.800 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0.000 setgray +gsave +81 49.5 m +81 348.48 l +stroke +grestore +gsave +583.2 49.5 m +583.2 348.48 l +stroke +grestore +gsave +81 49.5 m +583.2 49.5 l +stroke +grestore +gsave +81 348.48 m +583.2 348.48 l +stroke +grestore +1.000 setlinewidth +0 setlinecap +0.800 setgray +gsave +490.575 296.464375 m +576.2 296.464375 l +577.533333 296.464375 578.2 297.131042 578.2 298.464375 c +578.2 341.48 l +578.2 342.813333 577.533333 343.48 576.2 343.48 c +490.575 343.48 l +489.241667 343.48 488.575 342.813333 488.575 341.48 c +488.575 298.464375 l +488.575 297.131042 489.241667 296.464375 490.575 296.464375 c +cl +gsave +1.000 setgray +fill +grestore +stroke +grestore +1 setlinejoin +2 setlinecap +[] 0 setdash +0.122 0.467 0.706 setrgbcolor +gsave +492.575 335.38625 m +512.575 335.38625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +502.575 335.386 o +grestore +0.000 setgray +gsave +520.575000 331.886250 translate +0.000000 rotate +0.000000 0.000000 m /I glyphshow +2.949219 0.000000 m /s glyphshow +8.159180 0.000000 m /o glyphshow +14.277344 0.000000 m /hyphen glyphshow +17.885742 0.000000 m /B glyphshow +24.746094 0.000000 m /u glyphshow +31.083984 0.000000 m /t glyphshow +35.004883 0.000000 m /a glyphshow +41.132812 0.000000 m /n glyphshow +47.470703 0.000000 m /o glyphshow +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +492.575 320.714375 m +512.575 320.714375 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +502.575 320.714 o +grestore +0.000 setgray +gsave +520.575000 317.214375 translate +0.000000 rotate +0.000000 0.000000 m /H glyphshow +7.519531 0.000000 m /i glyphshow +10.297852 0.000000 m /d glyphshow +16.645508 0.000000 m /r glyphshow +20.756836 0.000000 m /o glyphshow +26.875000 0.000000 m /g glyphshow +33.222656 0.000000 m /e glyphshow +39.375000 0.000000 m /n glyphshow +45.712891 0.000000 m /o glyphshow +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +492.575 306.0425 m +512.575 306.0425 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +502.575 306.043 o +grestore +0.000 setgray +gsave +520.575000 302.542500 translate +0.000000 rotate +0.000000 0.000000 m /A glyphshow +6.840820 0.000000 m /l glyphshow +9.619141 0.000000 m /c glyphshow +15.117188 0.000000 m /o glyphshow +21.235352 0.000000 m /h glyphshow +27.573242 0.000000 m /o glyphshow +33.691406 0.000000 m /l glyphshow +grestore +/DejaVuSans findfont +12.000 scalefont +setfont +gsave +222.820312 378.955000 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +8.378906 0.000000 m /a glyphshow +15.732422 0.000000 m /l glyphshow +19.066406 0.000000 m /i glyphshow +22.400391 0.000000 m /b glyphshow +30.017578 0.000000 m /r glyphshow +34.951172 0.000000 m /a glyphshow +42.304688 0.000000 m /t glyphshow +47.009766 0.000000 m /i glyphshow +50.343750 0.000000 m /o glyphshow +57.685547 0.000000 m /n glyphshow +65.291016 0.000000 m /space glyphshow +69.105469 0.000000 m /p glyphshow +76.722656 0.000000 m /l glyphshow +80.056641 0.000000 m /o glyphshow +87.398438 0.000000 m /t glyphshow +92.103516 0.000000 m /space glyphshow +95.917969 0.000000 m /f glyphshow +100.142578 0.000000 m /o glyphshow +107.484375 0.000000 m /r glyphshow +112.417969 0.000000 m /space glyphshow +116.232422 0.000000 m /M glyphshow +126.585938 0.000000 m /Q glyphshow +136.031250 0.000000 m /hyphen glyphshow +140.361328 0.000000 m /three glyphshow +147.996094 0.000000 m /zero glyphshow +155.630859 0.000000 m /three glyphshow +163.265625 0.000000 m /A glyphshow +171.474609 0.000000 m /space glyphshow +175.289062 0.000000 m /d glyphshow +182.906250 0.000000 m /a glyphshow +190.259766 0.000000 m /t glyphshow +194.964844 0.000000 m /a glyphshow +grestore + +end +showpage diff --git a/Internal_design_documents/Experiments/MQ303A.png b/Internal_design_documents/Experiments/MQ303A.png new file mode 100644 index 0000000..88cb5d0 Binary files /dev/null and b/Internal_design_documents/Experiments/MQ303A.png differ diff --git a/Internal_design_documents/Experiments/MQ303A.svg b/Internal_design_documents/Experiments/MQ303A.svg new file mode 100644 index 0000000..79a4a31 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ303A.svg @@ -0,0 +1,1512 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Internal_design_documents/Experiments/MQ303_Regression.ipynb b/Internal_design_documents/Experiments/MQ303_Regression.ipynb new file mode 100644 index 0000000..8791c7d --- /dev/null +++ b/Internal_design_documents/Experiments/MQ303_Regression.ipynb @@ -0,0 +1,1827 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.01 \t \t \t \n", + "0.02 \t \t \t \n", + "0.03 \t \t \t \n", + "0.04 \t \t \t \n", + "0.05 \t \t \t \n", + "0.06 \t \t \t \n", + "0.07 \t \t \t \n", + "0.08 \t \t \t \n", + "0.09 \t \t \t \n", + "0.1 \t 3000.0 \t \t 1000.0\n", + "0.2 \t \t 300.0 \t \n", + "0.3 \t 300.0 \t 100.0 \t \n", + "0.4 \t 100.0 \t \t 30.0\n", + "0.5 \t \t \t \n", + "0.6 \t \t \t 10.0\n", + "0.7 \t \t \t \n", + "0.8 \t \t 10.0 \t \n", + "0.9 \t \t \t \n", + "1.0 \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, Iso_butano, Hidrogeno , Alcohol = sheetMQ303A.row_values(row_index, start_colx=0, end_colx=4)\n", + " print(RsR0, \"\t\", Iso_butano, \"\t\", Hidrogeno, \"\t\", Alcohol)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ303A = sheetMQ303A.col_values(0)[2:]\n", + "MQ303A_Iso_butano = sheetMQ303A.col_values(1)[2:]\n", + "MQ303A_Hidrogeno = sheetMQ303A.col_values(2)[2:]\n", + "MQ303A_Alcohol = sheetMQ303A.col_values(3)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "MQ303A_Iso_butano =zero_to_nan(MQ303A_Iso_butano)\n", + "MQ303A_Hidrogeno =zero_to_nan(MQ303A_Hidrogeno)\n", + "MQ303A_Alcohol =zero_to_nan(MQ303A_Alcohol)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataIso_Butano = {'RsRo': x_MQ303A, 'Iso_Butano': MQ303A_Iso_butano}\n", + "dataHidrogeno = {'RsRo': x_MQ303A, 'Hidrogeno': MQ303A_Hidrogeno}\n", + "dataAlcohol = {'RsRo': x_MQ303A, 'Alcohol': MQ303A_Alcohol}\n", + "\n", + "dfMQ303A_Iso_Butano = pd.DataFrame(dataIso_Butano)\n", + "dfMQ303A_Hidrogeno = pd.DataFrame(dataHidrogeno)\n", + "dfMQ303A_Alcohol = pd.DataFrame(dataAlcohol)\n", + "\n", + "dfMQ303A_Iso_Butano['Iso_Butano'] = pd.to_numeric(dfMQ303A_Iso_Butano['Iso_Butano'])\n", + "dfMQ303A_Hidrogeno['Hidrogeno'] = pd.to_numeric(dfMQ303A_Hidrogeno['Hidrogeno'])\n", + "dfMQ303A_Alcohol['Alchol'] = pd.to_numeric(dfMQ303A_Alcohol['Alcohol'])\n", + "\n", + "dfMQ303A_Iso_Butano['Iso_Butano'] = dfMQ303A_Iso_Butano['Iso_Butano'].replace('',None, regex=True)\n", + "dfMQ303A_Hidrogeno['Hidrogeno'] = dfMQ303A_Hidrogeno['Hidrogeno'].replace('',None, regex=True)\n", + "dfMQ303A_Alcohol['Alchol'] = dfMQ303A_Alcohol['Alchol'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ303A_Iso_Butano.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Iso-Butano\n", + "dataset2TrainIso_Butano = dfMQ303A_Iso_Butano.copy()\n", + "dataset2TrainIso_Butano.dropna(inplace=True)\n", + "X_trainIso_Butano = dataset2TrainIso_Butano.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainIso_Butano = dataset2TrainIso_Butano['Iso_Butano'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainIso_Butano, y_trainIso_Butano)\n", + "#Predict\n", + "Iso_Butano_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ303A_Iso_Butano = Iso_Butano_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Hidrogeno\n", + "dataset2TrainHidrogeno = dfMQ303A_Hidrogeno.copy()\n", + "dataset2TrainHidrogeno.dropna(inplace=True)\n", + "X_trainHidrogeno = dataset2TrainHidrogeno.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainHidrogeno = dataset2TrainHidrogeno['Hidrogeno'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainHidrogeno, y_trainHidrogeno)\n", + "#Predict\n", + "Hidrogeno_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ303A_Hidrogeno = Hidrogeno_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Alchol\n", + "dataset2TrainAlchol = dfMQ303A_Alcohol.copy()\n", + "dataset2TrainAlchol.dropna(inplace=True)\n", + "X_trainAlchol = dataset2TrainAlchol.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAlchol = dataset2TrainAlchol['Alchol'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAlchol, y_trainAlchol)\n", + "#Predict\n", + "Alchol_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ303A_Alchol = Alchol_Predicted\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ303A_Iso_Butano, x_MQ303A, marker='o', linewidth=1, label='Iso-Butano')\n", + "plt.plot(MQ303A_Hidrogeno, x_MQ303A, marker='o', linewidth=1, label='Hidrogeno')\n", + "plt.plot(MQ303A_Alchol, x_MQ303A, marker='o', linewidth=1, label='Alcohol')\n", + "\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-303A data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ303A.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ303A.png')\n", + "plt.savefig('MQ303A.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/MQ309A.eps b/Internal_design_documents/Experiments/MQ309A.eps new file mode 100644 index 0000000..fd0e2b1 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ309A.eps @@ -0,0 +1,2561 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: MQ309A.eps +%%Creator: matplotlib version 3.0.3, http://matplotlib.org/ +%%CreationDate: Wed Jul 3 20:23:34 2019 +%%Orientation: portrait +%%BoundingBox: -18 198 630 594 +%%EndComments +%%BeginProlog +/mpldict 8 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/c { curveto } bind def +/cl { closepath } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +cl +} bind def +/clipbox { +box +clip +newpath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: DejaVu Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain +%%Creator: Converted from TrueType to type 3 by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-1021 -463 1793 1232]def +/FontType 3 def +/Encoding [ /space /hyphen /slash /zero /one /two /three /four /nine /A /C /H /M /O /P /Q /R /a /b /c /d /e /f /h /i /l /n /o /p /r /s /t ] def +/FontInfo 10 dict dup begin +/FamilyName (DejaVu Sans) def +/FullName (DejaVu Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def +/Weight (Book) def +/Version (Version 2.35) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -130 def +/UnderlineThickness 90 def +end readonly def +/CharStrings 33 dict dup begin +/.notdef 0 def +/space{318 0 0 0 0 0 _sc +}_d +/hyphen{361 0 49 234 312 314 _sc +49 314 _m +312 314 _l +312 234 _l +49 234 _l +49 314 _l +_cl}_d +/slash{337 0 0 -92 337 729 _sc +254 729 _m +337 729 _l +83 -92 _l +0 -92 _l +254 729 _l +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/two{{636 0 73 0 536 742 _sc +192 83 _m +536 83 _l +536 0 _l +73 0 _l +73 83 _l +110 121 161 173 226 239 _c +290 304 331 346 348 365 _c +380 400 402 430 414 455 _c +426 479 433 504 433 528 _c +433 566 419 598 392 622 _c +365 646 330 659 286 659 _c +255 659 222 653 188 643 _c +154 632 117 616 78 594 _c +78 694 _l +118 710 155 722 189 730 _c +223 738 255 742 284 742 _c +}_e{359 742 419 723 464 685 _c +509 647 532 597 532 534 _c +532 504 526 475 515 449 _c +504 422 484 390 454 354 _c +446 344 420 317 376 272 _c +332 227 271 164 192 83 _c +_cl}_e}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +}_e{202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/four{636 0 49 0 580 729 _sc +378 643 _m +129 254 _l +378 254 _l +378 643 _l +352 729 _m +476 729 _l +476 254 _l +580 254 _l +580 172 _l +476 172 _l +476 0 _l +378 0 _l +378 172 _l +49 172 _l +49 267 _l +352 729 _l +_cl}_d +/nine{{636 0 63 -13 566 742 _sc +110 15 _m +110 105 _l +134 93 159 84 185 78 _c +210 72 235 69 260 69 _c +324 69 374 90 408 134 _c +442 178 462 244 468 334 _c +448 306 424 284 396 269 _c +367 254 335 247 300 247 _c +226 247 168 269 126 313 _c +84 357 63 417 63 494 _c +63 568 85 628 129 674 _c +173 719 232 742 306 742 _c +390 742 455 709 499 645 _c +543 580 566 486 566 364 _c +}_e{566 248 538 157 484 89 _c +429 21 356 -13 264 -13 _c +239 -13 214 -10 189 -6 _c +163 -2 137 5 110 15 _c +306 324 _m +350 324 385 339 411 369 _c +437 399 450 441 450 494 _c +450 546 437 588 411 618 _c +385 648 350 664 306 664 _c +262 664 227 648 201 618 _c +175 588 162 546 162 494 _c +162 441 175 399 201 369 _c +227 339 262 324 306 324 _c +_cl}_e}_d +/A{684 0 8 0 676 729 _sc +342 632 _m +208 269 _l +476 269 _l +342 632 _l +286 729 _m +398 729 _l +676 0 _l +573 0 _l +507 187 _l +178 187 _l +112 0 _l +8 0 _l +286 729 _l +_cl}_d +/C{{698 0 56 -13 644 742 _sc +644 673 _m +644 569 _l +610 599 575 622 537 638 _c +499 653 460 661 418 661 _c +334 661 270 635 226 584 _c +182 533 160 460 160 364 _c +160 268 182 194 226 143 _c +270 92 334 67 418 67 _c +460 67 499 74 537 90 _c +575 105 610 128 644 159 _c +644 56 _l +609 32 572 15 534 4 _c +496 -7 455 -13 412 -13 _c +302 -13 215 20 151 87 _c +}_e{87 154 56 246 56 364 _c +56 481 87 573 151 641 _c +215 708 302 742 412 742 _c +456 742 497 736 535 725 _c +573 713 610 696 644 673 _c +_cl}_e}_d +/H{752 0 98 0 654 729 _sc +98 729 _m +197 729 _l +197 430 _l +555 430 _l +555 729 _l +654 729 _l +654 0 _l +555 0 _l +555 347 _l +197 347 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/M{863 0 98 0 765 729 _sc +98 729 _m +245 729 _l +431 233 _l +618 729 _l +765 729 _l +765 0 _l +669 0 _l +669 640 _l +481 140 _l +382 140 _l +194 640 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/O{787 0 56 -13 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +394 742 _m +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 248 700 157 639 89 _c +577 21 496 -13 394 -13 _c +291 -13 209 21 148 89 _c +86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +_cl}_d +/P{603 0 98 0 569 729 _sc +197 648 _m +197 374 _l +321 374 _l +367 374 402 385 427 409 _c +452 433 465 467 465 511 _c +465 555 452 588 427 612 _c +402 636 367 648 321 648 _c +197 648 _l +98 729 _m +321 729 _l +402 729 464 710 506 673 _c +548 636 569 582 569 511 _c +569 439 548 384 506 348 _c +464 311 402 293 321 293 _c +197 293 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/Q{{787 0 56 -128 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +532 13 _m +662 -128 _l +543 -128 _l +435 -11 _l +424 -11 416 -12 410 -12 _c +404 -12 399 -13 394 -13 _c +291 -13 209 21 148 89 _c +}_e{86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 279 714 206 680 146 _c +646 86 596 41 532 13 _c +_cl}_e}_d +/R{{695 0 98 0 666 729 _sc +444 342 _m +465 334 486 319 506 296 _c +526 272 546 240 566 199 _c +666 0 _l +560 0 _l +467 187 _l +443 235 419 268 397 284 _c +374 300 343 308 304 308 _c +197 308 _l +197 0 _l +98 0 _l +98 729 _l +321 729 _l +404 729 466 711 507 677 _c +548 642 569 589 569 519 _c +569 473 558 434 537 404 _c +515 374 484 353 444 342 _c +197 648 _m +197 389 _l +321 389 _l +}_e{368 389 404 400 428 422 _c +452 444 465 476 465 519 _c +465 561 452 593 428 615 _c +404 637 368 648 321 648 _c +197 648 _l +_cl}_e}_d +/a{{613 0 60 -13 522 560 _sc +343 275 _m +270 275 220 266 192 250 _c +164 233 150 205 150 165 _c +150 133 160 107 181 89 _c +202 70 231 61 267 61 _c +317 61 357 78 387 114 _c +417 149 432 196 432 255 _c +432 275 _l +343 275 _l +522 312 _m +522 0 _l +432 0 _l +432 83 _l +411 49 385 25 355 10 _c +325 -5 287 -13 243 -13 _c +187 -13 142 2 109 33 _c +76 64 60 106 60 159 _c +}_e{60 220 80 266 122 298 _c +163 329 224 345 306 345 _c +432 345 _l +432 354 _l +432 395 418 427 391 450 _c +364 472 326 484 277 484 _c +245 484 215 480 185 472 _c +155 464 127 453 100 439 _c +100 522 _l +132 534 164 544 195 550 _c +226 556 256 560 286 560 _c +365 560 424 539 463 498 _c +502 457 522 395 522 312 _c +_cl}_e}_d +/b{{635 0 91 -13 580 760 _sc +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +181 464 _m +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +}_e{580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 464 _l +_cl}_e}_d +/c{{550 0 55 -13 488 560 _sc +488 526 _m +488 442 _l +462 456 437 466 411 473 _c +385 480 360 484 334 484 _c +276 484 230 465 198 428 _c +166 391 150 339 150 273 _c +150 206 166 154 198 117 _c +230 80 276 62 334 62 _c +360 62 385 65 411 72 _c +437 79 462 90 488 104 _c +488 21 _l +462 9 436 0 410 -5 _c +383 -10 354 -13 324 -13 _c +242 -13 176 12 128 64 _c +}_e{79 115 55 185 55 273 _c +55 362 79 432 128 483 _c +177 534 244 560 330 560 _c +358 560 385 557 411 551 _c +437 545 463 537 488 526 _c +_cl}_e}_d +/d{{635 0 55 -13 544 760 _sc +454 464 _m +454 760 _l +544 760 _l +544 0 _l +454 0 _l +454 82 _l +435 49 411 25 382 10 _c +353 -5 319 -13 279 -13 _c +213 -13 159 13 117 65 _c +75 117 55 187 55 273 _c +55 359 75 428 117 481 _c +159 533 213 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +148 273 _m +148 207 161 155 188 117 _c +215 79 253 61 301 61 _c +}_e{348 61 385 79 413 117 _c +440 155 454 207 454 273 _c +454 339 440 390 413 428 _c +385 466 348 485 301 485 _c +253 485 215 466 188 428 _c +161 390 148 339 148 273 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +}_e{540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/f{352 0 23 0 371 760 _sc +371 760 _m +371 685 _l +285 685 _l +253 685 230 678 218 665 _c +205 652 199 629 199 595 _c +199 547 _l +347 547 _l +347 477 _l +199 477 _l +199 0 _l +109 0 _l +109 477 _l +23 477 _l +23 547 _l +109 547 _l +109 585 _l +109 645 123 690 151 718 _c +179 746 224 760 286 760 _c +371 760 _l +_cl}_d +/h{634 0 91 0 549 760 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/i{278 0 94 0 184 760 _sc +94 547 _m +184 547 _l +184 0 _l +94 0 _l +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/l{278 0 94 0 184 760 _sc +94 760 _m +184 760 _l +184 0 _l +94 0 _l +94 760 _l +_cl}_d +/n{634 0 91 0 549 560 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/o{612 0 55 -13 557 560 _sc +306 484 _m +258 484 220 465 192 427 _c +164 389 150 338 150 273 _c +150 207 163 156 191 118 _c +219 80 257 62 306 62 _c +354 62 392 80 420 118 _c +448 156 462 207 462 273 _c +462 337 448 389 420 427 _c +392 465 354 484 306 484 _c +306 560 _m +384 560 445 534 490 484 _c +534 433 557 363 557 273 _c +557 183 534 113 490 63 _c +445 12 384 -13 306 -13 _c +227 -13 165 12 121 63 _c +77 113 55 183 55 273 _c +55 363 77 433 121 484 _c +165 534 227 560 306 560 _c +_cl}_d +/p{{635 0 91 -207 580 560 _sc +181 82 _m +181 -207 _l +91 -207 _l +91 547 _l +181 547 _l +181 464 _l +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +}_e{286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +_cl}_e}_d +/r{411 0 91 0 411 560 _sc +411 463 _m +401 469 390 473 378 476 _c +366 478 353 480 339 480 _c +288 480 249 463 222 430 _c +194 397 181 350 181 288 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +199 495 224 520 254 536 _c +284 552 321 560 365 560 _c +371 560 378 559 386 559 _c +393 558 401 557 411 555 _c +411 463 _l +_cl}_d +/s{{521 0 54 -13 472 560 _sc +443 531 _m +443 446 _l +417 458 391 468 364 475 _c +336 481 308 485 279 485 _c +234 485 200 478 178 464 _c +156 450 145 430 145 403 _c +145 382 153 366 169 354 _c +185 342 217 330 265 320 _c +296 313 _l +360 299 405 279 432 255 _c +458 230 472 195 472 151 _c +472 100 452 60 412 31 _c +372 1 316 -13 246 -13 _c +216 -13 186 -10 154 -5 _c +}_e{122 0 89 8 54 20 _c +54 113 _l +87 95 120 82 152 74 _c +184 65 216 61 248 61 _c +290 61 323 68 346 82 _c +368 96 380 117 380 144 _c +380 168 371 187 355 200 _c +339 213 303 226 247 238 _c +216 245 _l +160 257 119 275 95 299 _c +70 323 58 356 58 399 _c +58 450 76 490 112 518 _c +148 546 200 560 268 560 _c +301 560 332 557 362 552 _c +391 547 418 540 443 531 _c +}_e{_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +end +%%EndProlog +mpldict begin +-18 198 translate +648 396 0 0 clipbox +gsave +0 0 m +648 0 l +648 396 l +0 396 l +cl +1.000 setgray +fill +grestore +gsave +81 49.5 m +583.2 49.5 l +583.2 348.48 l +81 348.48 l +cl +1.000 setgray +fill +grestore +0.800 setlinewidth +1 setlinejoin +0 setlinecap +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +97.735 49.5 o +grestore +gsave +88.735032 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/two glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +302.727 49.5 o +grestore +gsave +293.726723 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/three glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +507.718 49.5 o +grestore +gsave +498.718413 34.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/four glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +88.355127 49.5 m +88.355127 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +88.3551 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +159.44368 49.5 m +159.44368 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +159.444 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +195.540925 49.5 m +195.540925 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +195.541 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +221.152328 49.5 m +221.152328 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +221.152 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +241.018075 49.5 m +241.018075 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +241.018 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +257.249573 49.5 m +257.249573 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +257.25 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +270.973108 49.5 m +270.973108 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +270.973 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +282.860975 49.5 m +282.860975 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +282.861 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +293.346818 49.5 m +293.346818 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +293.347 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +364.435371 49.5 m +364.435371 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +364.435 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +400.532615 49.5 m +400.532615 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +400.533 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +426.144018 49.5 m +426.144018 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +426.144 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +446.009766 49.5 m +446.009766 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +446.01 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +462.241263 49.5 m +462.241263 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +462.241 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +475.964799 49.5 m +475.964799 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +475.965 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +487.852666 49.5 m +487.852666 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +487.853 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +498.338508 49.5 m +498.338508 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +498.339 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +569.427061 49.5 m +569.427061 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +569.427 49.5 o +grestore +/DejaVuSans findfont +10.000 scalefont +setfont +gsave +284.771875 19.906250 translate +0.000000 rotate +0.000000 0.000000 m /P glyphshow +6.030273 0.000000 m /P glyphshow +12.060547 0.000000 m /M glyphshow +20.688477 0.000000 m /space glyphshow +23.867188 0.000000 m /C glyphshow +30.849609 0.000000 m /o glyphshow +36.967773 0.000000 m /n glyphshow +43.305664 0.000000 m /c glyphshow +48.803711 0.000000 m /e glyphshow +54.956055 0.000000 m /n glyphshow +61.293945 0.000000 m /t glyphshow +65.214844 0.000000 m /r glyphshow +69.326172 0.000000 m /a glyphshow +75.454102 0.000000 m /t glyphshow +79.375000 0.000000 m /i glyphshow +82.153320 0.000000 m /o glyphshow +88.271484 0.000000 m /n glyphshow +grestore +0.800 setlinewidth +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 174.911 o +grestore +gsave +56.000000 170.449781 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/zero glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 334.89 o +grestore +gsave +56.000000 330.929063 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/one glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 63.09 m +583.2 63.09 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 63.09 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 91.260953 m +583.2 91.260953 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 91.261 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 111.248562 m +583.2 111.248562 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 111.249 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 126.752157 m +583.2 126.752157 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 126.752 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 139.419515 m +583.2 139.419515 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 139.42 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 150.129615 m +583.2 150.129615 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 150.13 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 159.407125 m +583.2 159.407125 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 159.407 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 167.590468 m +583.2 167.590468 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 167.59 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 223.069281 m +583.2 223.069281 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 223.069 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 251.240234 m +583.2 251.240234 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 251.24 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 271.227843 m +583.2 271.227843 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 271.228 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 286.731438 m +583.2 286.731438 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 286.731 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 299.398797 m +583.2 299.398797 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 299.399 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 310.108896 m +583.2 310.108896 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 310.109 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 319.386406 m +583.2 319.386406 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 319.386 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 327.56975 m +583.2 327.56975 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 327.57 o +grestore +gsave +49.921875 184.677500 translate +90.000000 rotate +0.000000 0.000000 m /R glyphshow +6.948242 0.000000 m /s glyphshow +12.158203 0.000000 m /slash glyphshow +15.527344 0.000000 m /R glyphshow +22.475586 0.000000 m /o glyphshow +grestore +1.000 setlinewidth +2 setlinecap +0.122 0.467 0.706 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +463.913146 63.09 m +458.325962 91.260953 l +452.364515 111.248562 l +445.975042 126.752157 l +439.091293 139.419515 l +431.630334 150.129615 l +423.486432 159.407125 l +414.521847 167.590468 l +404.552446 174.910719 l +-1 175.005663 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +463.913 63.09 o +458.326 91.261 o +452.365 111.249 o +445.975 126.752 o +439.091 139.42 o +431.63 150.13 o +423.486 159.407 o +414.522 167.59 o +404.552 174.911 o +-1 175.006 o +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +560.372727 63.09 m +558.882027 91.260953 l +557.36594 111.248562 l +555.823587 126.752157 l +554.254042 139.419515 l +552.656328 150.129615 l +551.029416 159.407125 l +549.372219 167.590468 l +547.683587 174.910719 l +528.760177 223.069281 l +504.697505 251.240234 l +471.619165 271.227843 l +418.397677 286.731438 l +266.649507 299.398797 l +-1 299.412741 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +560.373 63.09 o +558.882 91.261 o +557.366 111.249 o +555.824 126.752 o +554.254 139.42 o +552.656 150.13 o +551.029 159.407 o +549.372 167.59 o +547.684 174.911 o +528.76 223.069 o +504.698 251.24 o +471.619 271.228 o +418.398 286.731 o +266.65 299.399 o +-1 299.413 o +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +406.857518 63.09 m +401.942826 91.260953 l +396.740886 111.248562 l +391.216024 126.752157 l +385.325479 139.419515 l +379.017389 150.129615 l +372.228014 159.407125 l +364.877802 167.590468 l +356.865685 174.910719 l +103.827273 223.069281 l +-1 223.083658 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +406.858 63.09 o +401.943 91.261 o +396.741 111.249 o +391.216 126.752 o +385.325 139.42 o +379.017 150.13 o +372.228 159.407 o +364.878 167.59 o +356.866 174.911 o +103.827 223.069 o +-1 223.084 o +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +544.207088 63.09 m +542.416567 91.260953 l +540.589295 111.248562 l +538.72373 126.752157 l +536.818235 139.419515 l +534.871061 150.129615 l +532.880345 159.407125 l +530.844094 167.590468 l +528.760177 174.910719 l +504.697505 223.069281 l +471.619165 251.240234 l +418.397677 271.227843 l +266.649507 286.731438 l +-1 286.74793 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +544.207 63.09 o +542.417 91.261 o +540.589 111.249 o +538.724 126.752 o +536.818 139.42 o +534.871 150.13 o +532.88 159.407 o +530.844 167.59 o +528.76 174.911 o +504.698 223.069 o +471.619 251.24 o +418.398 271.228 o +266.65 286.731 o +-1 286.748 o +grestore +0.800 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0.000 setgray +gsave +81 49.5 m +81 348.48 l +stroke +grestore +gsave +583.2 49.5 m +583.2 348.48 l +stroke +grestore +gsave +81 49.5 m +583.2 49.5 l +stroke +grestore +gsave +81 348.48 m +583.2 348.48 l +stroke +grestore +1.000 setlinewidth +0 setlinecap +0.800 setgray +gsave +507.7 281.7925 m +576.2 281.7925 l +577.533333 281.7925 578.2 282.459167 578.2 283.7925 c +578.2 341.48 l +578.2 342.813333 577.533333 343.48 576.2 343.48 c +507.7 343.48 l +506.366667 343.48 505.7 342.813333 505.7 341.48 c +505.7 283.7925 l +505.7 282.459167 506.366667 281.7925 507.7 281.7925 c +cl +gsave +1.000 setgray +fill +grestore +stroke +grestore +1 setlinejoin +2 setlinecap +[] 0 setdash +0.122 0.467 0.706 setrgbcolor +gsave +509.7 335.38625 m +529.7 335.38625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 335.386 o +grestore +0.000 setgray +gsave +537.700000 331.886250 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /H glyphshow +14.501953 0.000000 m /four glyphshow +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +509.7 320.714375 m +529.7 320.714375 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 320.714 o +grestore +0.000 setgray +gsave +537.700000 317.214375 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /O glyphshow +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +509.7 306.0425 m +529.7 306.0425 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 306.043 o +grestore +0.000 setgray +gsave +537.700000 302.542500 translate +0.000000 rotate +0.000000 0.000000 m /H glyphshow +7.519531 0.000000 m /two glyphshow +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +509.7 291.370625 m +529.7 291.370625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 291.371 o +grestore +0.000 setgray +gsave +537.700000 287.870625 translate +0.000000 rotate +0.000000 0.000000 m /A glyphshow +6.840820 0.000000 m /l glyphshow +9.619141 0.000000 m /c glyphshow +15.117188 0.000000 m /o glyphshow +21.235352 0.000000 m /h glyphshow +27.573242 0.000000 m /o glyphshow +33.691406 0.000000 m /l glyphshow +grestore +/DejaVuSans findfont +12.000 scalefont +setfont +gsave +222.820312 378.955000 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +8.378906 0.000000 m /a glyphshow +15.732422 0.000000 m /l glyphshow +19.066406 0.000000 m /i glyphshow +22.400391 0.000000 m /b glyphshow +30.017578 0.000000 m /r glyphshow +34.951172 0.000000 m /a glyphshow +42.304688 0.000000 m /t glyphshow +47.009766 0.000000 m /i glyphshow +50.343750 0.000000 m /o glyphshow +57.685547 0.000000 m /n glyphshow +65.291016 0.000000 m /space glyphshow +69.105469 0.000000 m /p glyphshow +76.722656 0.000000 m /l glyphshow +80.056641 0.000000 m /o glyphshow +87.398438 0.000000 m /t glyphshow +92.103516 0.000000 m /space glyphshow +95.917969 0.000000 m /f glyphshow +100.142578 0.000000 m /o glyphshow +107.484375 0.000000 m /r glyphshow +112.417969 0.000000 m /space glyphshow +116.232422 0.000000 m /M glyphshow +126.585938 0.000000 m /Q glyphshow +136.031250 0.000000 m /hyphen glyphshow +140.361328 0.000000 m /three glyphshow +147.996094 0.000000 m /zero glyphshow +155.630859 0.000000 m /nine glyphshow +163.265625 0.000000 m /A glyphshow +171.474609 0.000000 m /space glyphshow +175.289062 0.000000 m /d glyphshow +182.906250 0.000000 m /a glyphshow +190.259766 0.000000 m /t glyphshow +194.964844 0.000000 m /a glyphshow +grestore + +end +showpage diff --git a/Internal_design_documents/Experiments/MQ309A.png b/Internal_design_documents/Experiments/MQ309A.png new file mode 100644 index 0000000..52fc603 Binary files /dev/null and b/Internal_design_documents/Experiments/MQ309A.png differ diff --git a/Internal_design_documents/Experiments/MQ309A.svg b/Internal_design_documents/Experiments/MQ309A.svg new file mode 100644 index 0000000..dc5dbdd --- /dev/null +++ b/Internal_design_documents/Experiments/MQ309A.svg @@ -0,0 +1,1536 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Internal_design_documents/Experiments/MQ309_Regression.ipynb b/Internal_design_documents/Experiments/MQ309_Regression.ipynb new file mode 100644 index 0000000..e215a7f --- /dev/null +++ b/Internal_design_documents/Experiments/MQ309_Regression.ipynb @@ -0,0 +1,1877 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \t \n", + "0.2 \t \t \t \t \n", + "0.3 \t 7000.0 \t \t \t \n", + "0.4 \t \t \t \t \n", + "0.5 \t \t \t \t \n", + "0.6 \t \t \t \t \n", + "0.7 \t \t \t 3000.0 \t \n", + "0.8 \t \t \t \t \n", + "0.9 \t \t \t \t \n", + "1.0 \t 1000.0 \t \t 1000.0 \t \n", + "2.0 \t 300.0 \t \t 300.0 \t \n", + "3.0 \t \t \t \t 7000.0\n", + "4.0 \t \t 7000.0 \t \t 3000.0\n", + "5.0 \t \t 3000.0 \t \t 1000.0\n", + "6.0 \t \t 1000.0 \t \t \n", + "7.0 \t \t \t \t \n", + "8.0 \t \t \t \t \n", + "9.0 \t \t \t \t \n", + "10.0 \t \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, CH4, CO , H2, Alcohol = sheetMQ309A.row_values(row_index, start_colx=0, end_colx=5)\n", + " print(RsR0, \"\t\", CH4, \"\t\", CO, \"\t\", H2, \"\t\", Alcohol)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ309A = sheetMQ309A.col_values(0)[2:]\n", + "MQ309A_CH4 = sheetMQ309A.col_values(1)[2:]\n", + "MQ309A_CO = sheetMQ309A.col_values(2)[2:]\n", + "MQ309A_H2 = sheetMQ309A.col_values(3)[2:]\n", + "MQ309A_Alcohol = sheetMQ309A.col_values(4)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "MQ309A_CH4 =zero_to_nan(MQ309A_CH4)\n", + "MQ309A_CO =zero_to_nan(MQ309A_CO)\n", + "MQ309A_H2 =zero_to_nan(MQ309A_H2)\n", + "MQ309A_Alcohol =zero_to_nan(MQ309A_Alcohol)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataCH4 = {'RsRo': x_MQ309A, 'CH4': MQ309A_CH4}\n", + "dataCO = {'RsRo': x_MQ309A, 'CO': MQ309A_CO}\n", + "dataH2 = {'RsRo': x_MQ309A, 'H2': MQ309A_H2}\n", + "dataAlcohol = {'RsRo': x_MQ309A, 'Alcohol': MQ309A_Alcohol}\n", + "\n", + "dfMQ309A_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ309A_CO = pd.DataFrame(dataCO)\n", + "dfMQ309A_H2 = pd.DataFrame(dataH2)\n", + "dfMQ309A_Alcohol = pd.DataFrame(dataAlcohol)\n", + "\n", + "dfMQ309A_CH4['CH4'] = pd.to_numeric(dfMQ309A_CH4['CH4'])\n", + "dfMQ309A_CO['CO'] = pd.to_numeric(dfMQ309A_CO['CO'])\n", + "dfMQ309A_H2['H2'] = pd.to_numeric(dfMQ309A_H2['H2'])\n", + "dfMQ309A_Alcohol['Alcohol'] = pd.to_numeric(dfMQ309A_Alcohol['Alcohol'])\n", + "\n", + "dfMQ309A_CH4['CH4'] = dfMQ309A_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ309A_CO['CO'] = dfMQ309A_CO['CO'].replace('',None, regex=True)\n", + "dfMQ309A_H2['H2'] = dfMQ309A_H2['H2'].replace('',None, regex=True)\n", + "dfMQ309A_Alcohol['Alcohol'] = dfMQ309A_Alcohol['Alcohol'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ309A_CH4.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CH4\n", + "dataset2TrainCH4 = dfMQ309A_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ309A_CH4 = CH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ309A_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ309A_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train H2\n", + "dataset2TrainH2 = dfMQ309A_H2.copy()\n", + "dataset2TrainH2.dropna(inplace=True)\n", + "X_trainH2 = dataset2TrainH2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainH2 = dataset2TrainH2['H2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainH2, y_trainH2)\n", + "#Predict\n", + "H2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ309A_H2 = H2_Predicted\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Alcohol\n", + "dataset2TrainAlcohol = dfMQ309A_Alcohol.copy()\n", + "dataset2TrainAlcohol.dropna(inplace=True)\n", + "X_trainAlcohol = dataset2TrainAlcohol.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAlcohol = dataset2TrainAlcohol['Alcohol'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAlcohol, y_trainAlcohol)\n", + "#Predict\n", + "Alcohol_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ309A_Alcohol = Alcohol_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ309A_CH4, x_MQ309A, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ309A_CO, x_MQ309A, marker='o', linewidth=1, label='CO')\n", + "plt.plot(MQ309A_H2, x_MQ309A, marker='o', linewidth=1, label='H2')\n", + "plt.plot(MQ309A_Alcohol, x_MQ309A, marker='o', linewidth=1, label='Alcohol')\n", + "\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-309A data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ309A.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ309A.png')\n", + "plt.savefig('MQ309A.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/MQ3_Regression.ipynb b/Internal_design_documents/Experiments/MQ3_Regression.ipynb new file mode 100644 index 0000000..3375f49 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ3_Regression.ipynb @@ -0,0 +1,2356 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \t \t \t \n", + "0.2 \t 4.0 \t \t \t \t \t \n", + "0.3 \t \t \t \t \t \t \n", + "0.4 \t \t \t \t \t \t \n", + "0.5 \t 1.0 \t \t \t \t \t \n", + "0.6 \t \t \t \t \t \t \n", + "0.7 \t \t \t \t \t \t \n", + "0.8 \t \t 8.0 \t \t \t \t \n", + "0.9 \t \t \t \t \t \t \n", + "1.0 \t 0.4 \t 4.0 \t \t \t \t \n", + "2.0 \t \t \t \t \t \t \n", + "3.0 \t \t \t \t \t \t \n", + "4.0 \t \t 0.1 \t \t \t \t \n", + "5.0 \t \t \t \t \t \t \n", + "6.0 \t \t \t \t \t \t \n", + "7.0 \t \t \t \t \t \t \n", + "8.0 \t \t \t \t \t \t \n", + "9.0 \t \t \t \t \t \t \n", + "10.0 \t \t \t \t 8.0 \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, Alcohol, Benzine, CH4, Hexane, LPG, CO = sheetMQ3.row_values(row_index, start_colx=0, end_colx=7)\n", + " print(RsR0, \"\t\", Alcohol, \"\t\", Benzine, \"\t\", CH4, \"\t\", Hexane, \"\t\", LPG, \"\t\", CO)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ3 = sheetMQ3.col_values(0)[2:]\n", + "MQ3_Alcohol = sheetMQ3.col_values(1)[2:]\n", + "MQ3_Benzine = sheetMQ3.col_values(2)[2:]\n", + "MQ3_CH4 = sheetMQ3.col_values(3)[2:]\n", + "MQ3_Hexane = sheetMQ3.col_values(4)[2:]\n", + "MQ3_LPG = sheetMQ3.col_values(5)[2:]\n", + "MQ3_CO = sheetMQ3.col_values(6)[2:]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [], + "source": [ + "MQ3_Alcohol =zero_to_nan(MQ3_Alcohol)\n", + "MQ3_Benzine =zero_to_nan(MQ3_Benzine)\n", + "MQ3_CH4 =zero_to_nan(MQ3_CH4)\n", + "MQ3_Hexane =zero_to_nan(MQ3_Hexane)\n", + "MQ3_LPG =zero_to_nan(MQ3_LPG)\n", + "MQ3_CO =zero_to_nan(MQ3_CO)" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataAlcohol = {'RsRo': x_MQ3, 'Alcohol': MQ3_Alcohol}\n", + "dataBenzine = {'RsRo': x_MQ3, 'Benzine': MQ3_Benzine}\n", + "dataCH4 = {'RsRo': x_MQ3, 'CH4': MQ3_CH4}\n", + "dataHexane = {'RsRo': x_MQ3, 'Hexane': MQ3_Hexane}\n", + "dataLPG = {'RsRo': x_MQ3, 'LPG': MQ3_LPG}\n", + "dataCO = {'RsRo': x_MQ3, 'CO': MQ3_CO}\n", + "\n", + "dfMQ3_Alcohol = pd.DataFrame(dataAlcohol)\n", + "dfMQ3_Benzine = pd.DataFrame(dataBenzine)\n", + "dfMQ3_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ3_Hexane = pd.DataFrame(dataHexane)\n", + "dfMQ3_LPG = pd.DataFrame(dataLPG)\n", + "dfMQ3_CO = pd.DataFrame(dataCO)\n", + "\n", + "dfMQ3_Alcohol['Alcohol'] = pd.to_numeric(dfMQ3_Alcohol['Alcohol'])\n", + "dfMQ3_Benzine['Benzine'] = pd.to_numeric(dfMQ3_Benzine['Benzine'])\n", + "dfMQ3_CH4['CH4'] = pd.to_numeric(dfMQ3_CH4['CH4'])\n", + "dfMQ3_Hexane['Hexane'] = pd.to_numeric(dfMQ3_Hexane['Hexane'])\n", + "dfMQ3_LPG['LPG'] = pd.to_numeric(dfMQ3_LPG['LPG'])\n", + "dfMQ3_CO['CO'] = pd.to_numeric(dfMQ3_CO['CO'])\n", + "\n", + "dfMQ3_Alcohol['Alcohol'] = dfMQ3_Alcohol['Alcohol'].replace('',None, regex=True)\n", + "dfMQ3_Benzine['Benzine'] = dfMQ3_Benzine['Benzine'].replace('',None, regex=True)\n", + "dfMQ3_CH4['CH4'] = dfMQ3_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ3_Hexane['Hexane'] = dfMQ3_Hexane['Hexane'].replace('',None, regex=True)\n", + "dfMQ3_LPG['LPG'] = dfMQ3_LPG['LPG'].replace('',None, regex=True)\n", + "dfMQ3_CO['CO'] = dfMQ3_CO['CO'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ3_Alcohol.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train alcohol\n", + "dataset2TrainAlcohol = dfMQ3_Alcohol.copy()\n", + "dataset2TrainAlcohol.dropna(inplace=True)\n", + "X_trainAlcohol = dataset2TrainAlcohol.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAlcohol = dataset2TrainAlcohol['Alcohol'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAlcohol, y_trainAlcohol)\n", + "#Predict\n", + "Alcohol_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ3_Alcohol = Alcohol_Predicted\n" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Benzine\n", + "dataset2TrainBenzine = dfMQ3_Benzine.copy()\n", + "dataset2TrainBenzine.dropna(inplace=True)\n", + "X_trainBenzine = dataset2TrainBenzine.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainBenzine = dataset2TrainBenzine['Benzine'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainBenzine, y_trainBenzine)\n", + "#Predict\n", + "Benzine_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ3_Benzine = Benzine_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CH4\n", + "dataset2TrainCH4 = dfMQ3_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ3_CH4 = CH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Hexane\n", + "dataset2TrainHexane = dfMQ3_Hexane.copy()\n", + "dataset2TrainHexane.dropna(inplace=True)\n", + "X_trainHexane = dataset2TrainHexane.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainHexane = dataset2TrainHexane['Hexane'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainHexane, y_trainHexane)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ3_Hexane = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train LPG\n", + "dataset2TrainLPG = dfMQ3_LPG.copy()\n", + "dataset2TrainLPG.dropna(inplace=True)\n", + "X_trainLPG = dataset2TrainLPG.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainLPG = dataset2TrainLPG['LPG'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainLPG, y_trainLPG)\n", + "#Predict\n", + "LPG_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ3_LPG = LPG_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ3_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ3_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ3_Alcohol, x_MQ3, marker='o', linewidth=1, label='Alcohol')\n", + "plt.plot(MQ3_Benzine, x_MQ3, marker='o', linewidth=1, label='Benzine')\n", + "plt.plot(MQ3_CH4, x_MQ3, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ3_Hexane, x_MQ3, marker='o', linewidth=1, label='Hexane')\n", + "plt.plot(MQ3_LPG, x_MQ3, marker='o', linewidth=1, label='LPG')\n", + "plt.plot(MQ3_CO, x_MQ3, marker='o', linewidth=1, label='CO')\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-3 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ3.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ3.png')\n", + "plt.savefig('MQ3.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/MQ4.eps b/Internal_design_documents/Experiments/MQ4.eps new file mode 100644 index 0000000..5e23852 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ4.eps @@ -0,0 +1,2755 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: MQ4.eps +%%Creator: matplotlib version 3.0.3, http://matplotlib.org/ +%%CreationDate: Wed Jul 3 20:40:18 2019 +%%Orientation: portrait +%%BoundingBox: -18 198 630 594 +%%EndComments +%%BeginProlog +/mpldict 8 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/c { curveto } bind def +/cl { closepath } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +cl +} bind def +/clipbox { +box +clip +newpath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: DejaVu Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain +%%Creator: Converted from TrueType to type 3 by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-1021 -463 1793 1232]def +/FontType 3 def +/Encoding [ /space /hyphen /slash /zero /one /two /three /four /A /C /H /M /O /P /Q /R /a /b /c /d /e /f /h /i /l /n /o /p /r /s /t ] def +/FontInfo 10 dict dup begin +/FamilyName (DejaVu Sans) def +/FullName (DejaVu Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def +/Weight (Book) def +/Version (Version 2.35) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -130 def +/UnderlineThickness 90 def +end readonly def +/CharStrings 32 dict dup begin +/.notdef 0 def +/space{318 0 0 0 0 0 _sc +}_d +/hyphen{361 0 49 234 312 314 _sc +49 314 _m +312 314 _l +312 234 _l +49 234 _l +49 314 _l +_cl}_d +/slash{337 0 0 -92 337 729 _sc +254 729 _m +337 729 _l +83 -92 _l +0 -92 _l +254 729 _l +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/two{{636 0 73 0 536 742 _sc +192 83 _m +536 83 _l +536 0 _l +73 0 _l +73 83 _l +110 121 161 173 226 239 _c +290 304 331 346 348 365 _c +380 400 402 430 414 455 _c +426 479 433 504 433 528 _c +433 566 419 598 392 622 _c +365 646 330 659 286 659 _c +255 659 222 653 188 643 _c +154 632 117 616 78 594 _c +78 694 _l +118 710 155 722 189 730 _c +223 738 255 742 284 742 _c +}_e{359 742 419 723 464 685 _c +509 647 532 597 532 534 _c +532 504 526 475 515 449 _c +504 422 484 390 454 354 _c +446 344 420 317 376 272 _c +332 227 271 164 192 83 _c +_cl}_e}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +}_e{202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/four{636 0 49 0 580 729 _sc +378 643 _m +129 254 _l +378 254 _l +378 643 _l +352 729 _m +476 729 _l +476 254 _l +580 254 _l +580 172 _l +476 172 _l +476 0 _l +378 0 _l +378 172 _l +49 172 _l +49 267 _l +352 729 _l +_cl}_d +/A{684 0 8 0 676 729 _sc +342 632 _m +208 269 _l +476 269 _l +342 632 _l +286 729 _m +398 729 _l +676 0 _l +573 0 _l +507 187 _l +178 187 _l +112 0 _l +8 0 _l +286 729 _l +_cl}_d +/C{{698 0 56 -13 644 742 _sc +644 673 _m +644 569 _l +610 599 575 622 537 638 _c +499 653 460 661 418 661 _c +334 661 270 635 226 584 _c +182 533 160 460 160 364 _c +160 268 182 194 226 143 _c +270 92 334 67 418 67 _c +460 67 499 74 537 90 _c +575 105 610 128 644 159 _c +644 56 _l +609 32 572 15 534 4 _c +496 -7 455 -13 412 -13 _c +302 -13 215 20 151 87 _c +}_e{87 154 56 246 56 364 _c +56 481 87 573 151 641 _c +215 708 302 742 412 742 _c +456 742 497 736 535 725 _c +573 713 610 696 644 673 _c +_cl}_e}_d +/H{752 0 98 0 654 729 _sc +98 729 _m +197 729 _l +197 430 _l +555 430 _l +555 729 _l +654 729 _l +654 0 _l +555 0 _l +555 347 _l +197 347 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/M{863 0 98 0 765 729 _sc +98 729 _m +245 729 _l +431 233 _l +618 729 _l +765 729 _l +765 0 _l +669 0 _l +669 640 _l +481 140 _l +382 140 _l +194 640 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/O{787 0 56 -13 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +394 742 _m +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 248 700 157 639 89 _c +577 21 496 -13 394 -13 _c +291 -13 209 21 148 89 _c +86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +_cl}_d +/P{603 0 98 0 569 729 _sc +197 648 _m +197 374 _l +321 374 _l +367 374 402 385 427 409 _c +452 433 465 467 465 511 _c +465 555 452 588 427 612 _c +402 636 367 648 321 648 _c +197 648 _l +98 729 _m +321 729 _l +402 729 464 710 506 673 _c +548 636 569 582 569 511 _c +569 439 548 384 506 348 _c +464 311 402 293 321 293 _c +197 293 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/Q{{787 0 56 -128 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +532 13 _m +662 -128 _l +543 -128 _l +435 -11 _l +424 -11 416 -12 410 -12 _c +404 -12 399 -13 394 -13 _c +291 -13 209 21 148 89 _c +}_e{86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 279 714 206 680 146 _c +646 86 596 41 532 13 _c +_cl}_e}_d +/R{{695 0 98 0 666 729 _sc +444 342 _m +465 334 486 319 506 296 _c +526 272 546 240 566 199 _c +666 0 _l +560 0 _l +467 187 _l +443 235 419 268 397 284 _c +374 300 343 308 304 308 _c +197 308 _l +197 0 _l +98 0 _l +98 729 _l +321 729 _l +404 729 466 711 507 677 _c +548 642 569 589 569 519 _c +569 473 558 434 537 404 _c +515 374 484 353 444 342 _c +197 648 _m +197 389 _l +321 389 _l +}_e{368 389 404 400 428 422 _c +452 444 465 476 465 519 _c +465 561 452 593 428 615 _c +404 637 368 648 321 648 _c +197 648 _l +_cl}_e}_d +/a{{613 0 60 -13 522 560 _sc +343 275 _m +270 275 220 266 192 250 _c +164 233 150 205 150 165 _c +150 133 160 107 181 89 _c +202 70 231 61 267 61 _c +317 61 357 78 387 114 _c +417 149 432 196 432 255 _c +432 275 _l +343 275 _l +522 312 _m +522 0 _l +432 0 _l +432 83 _l +411 49 385 25 355 10 _c +325 -5 287 -13 243 -13 _c +187 -13 142 2 109 33 _c +76 64 60 106 60 159 _c +}_e{60 220 80 266 122 298 _c +163 329 224 345 306 345 _c +432 345 _l +432 354 _l +432 395 418 427 391 450 _c +364 472 326 484 277 484 _c +245 484 215 480 185 472 _c +155 464 127 453 100 439 _c +100 522 _l +132 534 164 544 195 550 _c +226 556 256 560 286 560 _c +365 560 424 539 463 498 _c +502 457 522 395 522 312 _c +_cl}_e}_d +/b{{635 0 91 -13 580 760 _sc +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +181 464 _m +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +}_e{580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 464 _l +_cl}_e}_d +/c{{550 0 55 -13 488 560 _sc +488 526 _m +488 442 _l +462 456 437 466 411 473 _c +385 480 360 484 334 484 _c +276 484 230 465 198 428 _c +166 391 150 339 150 273 _c +150 206 166 154 198 117 _c +230 80 276 62 334 62 _c +360 62 385 65 411 72 _c +437 79 462 90 488 104 _c +488 21 _l +462 9 436 0 410 -5 _c +383 -10 354 -13 324 -13 _c +242 -13 176 12 128 64 _c +}_e{79 115 55 185 55 273 _c +55 362 79 432 128 483 _c +177 534 244 560 330 560 _c +358 560 385 557 411 551 _c +437 545 463 537 488 526 _c +_cl}_e}_d +/d{{635 0 55 -13 544 760 _sc +454 464 _m +454 760 _l +544 760 _l +544 0 _l +454 0 _l +454 82 _l +435 49 411 25 382 10 _c +353 -5 319 -13 279 -13 _c +213 -13 159 13 117 65 _c +75 117 55 187 55 273 _c +55 359 75 428 117 481 _c +159 533 213 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +148 273 _m +148 207 161 155 188 117 _c +215 79 253 61 301 61 _c +}_e{348 61 385 79 413 117 _c +440 155 454 207 454 273 _c +454 339 440 390 413 428 _c +385 466 348 485 301 485 _c +253 485 215 466 188 428 _c +161 390 148 339 148 273 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +}_e{540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/f{352 0 23 0 371 760 _sc +371 760 _m +371 685 _l +285 685 _l +253 685 230 678 218 665 _c +205 652 199 629 199 595 _c +199 547 _l +347 547 _l +347 477 _l +199 477 _l +199 0 _l +109 0 _l +109 477 _l +23 477 _l +23 547 _l +109 547 _l +109 585 _l +109 645 123 690 151 718 _c +179 746 224 760 286 760 _c +371 760 _l +_cl}_d +/h{634 0 91 0 549 760 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/i{278 0 94 0 184 760 _sc +94 547 _m +184 547 _l +184 0 _l +94 0 _l +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/l{278 0 94 0 184 760 _sc +94 760 _m +184 760 _l +184 0 _l +94 0 _l +94 760 _l +_cl}_d +/n{634 0 91 0 549 560 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/o{612 0 55 -13 557 560 _sc +306 484 _m +258 484 220 465 192 427 _c +164 389 150 338 150 273 _c +150 207 163 156 191 118 _c +219 80 257 62 306 62 _c +354 62 392 80 420 118 _c +448 156 462 207 462 273 _c +462 337 448 389 420 427 _c +392 465 354 484 306 484 _c +306 560 _m +384 560 445 534 490 484 _c +534 433 557 363 557 273 _c +557 183 534 113 490 63 _c +445 12 384 -13 306 -13 _c +227 -13 165 12 121 63 _c +77 113 55 183 55 273 _c +55 363 77 433 121 484 _c +165 534 227 560 306 560 _c +_cl}_d +/p{{635 0 91 -207 580 560 _sc +181 82 _m +181 -207 _l +91 -207 _l +91 547 _l +181 547 _l +181 464 _l +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +}_e{286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +_cl}_e}_d +/r{411 0 91 0 411 560 _sc +411 463 _m +401 469 390 473 378 476 _c +366 478 353 480 339 480 _c +288 480 249 463 222 430 _c +194 397 181 350 181 288 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +199 495 224 520 254 536 _c +284 552 321 560 365 560 _c +371 560 378 559 386 559 _c +393 558 401 557 411 555 _c +411 463 _l +_cl}_d +/s{{521 0 54 -13 472 560 _sc +443 531 _m +443 446 _l +417 458 391 468 364 475 _c +336 481 308 485 279 485 _c +234 485 200 478 178 464 _c +156 450 145 430 145 403 _c +145 382 153 366 169 354 _c +185 342 217 330 265 320 _c +296 313 _l +360 299 405 279 432 255 _c +458 230 472 195 472 151 _c +472 100 452 60 412 31 _c +372 1 316 -13 246 -13 _c +216 -13 186 -10 154 -5 _c +}_e{122 0 89 8 54 20 _c +54 113 _l +87 95 120 82 152 74 _c +184 65 216 61 248 61 _c +290 61 323 68 346 82 _c +368 96 380 117 380 144 _c +380 168 371 187 355 200 _c +339 213 303 226 247 238 _c +216 245 _l +160 257 119 275 95 299 _c +70 323 58 356 58 399 _c +58 450 76 490 112 518 _c +148 546 200 560 268 560 _c +301 560 332 557 362 552 _c +391 547 418 540 443 531 _c +}_e{_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +end +%%EndProlog +mpldict begin +-18 198 translate +648 396 0 0 clipbox +gsave +0 0 m +648 0 l +648 396 l +0 396 l +cl +1.000 setgray +fill +grestore +gsave +81 49.5 m +583.2 49.5 l +583.2 348.48 l +81 348.48 l +cl +1.000 setgray +fill +grestore +0.800 setlinewidth +1 setlinejoin +0 setlinecap +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +202.083 49.5 o +grestore +gsave +193.083032 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/two glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +360.217 49.5 o +grestore +gsave +351.217374 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/three glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +518.352 49.5 o +grestore +gsave +509.351716 34.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/four glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +91.55187 49.5 m +91.55187 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +91.5519 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +119.397945 49.5 m +119.397945 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +119.398 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +139.15505 49.5 m +139.15505 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +139.155 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +154.479851 49.5 m +154.479851 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +154.48 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +167.001126 49.5 m +167.001126 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +167.001 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +177.587712 49.5 m +177.587712 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +177.588 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +186.75823 49.5 m +186.75823 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +186.758 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +194.847201 49.5 m +194.847201 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +194.847 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +249.686212 49.5 m +249.686212 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +249.686 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +277.532287 49.5 m +277.532287 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +277.532 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +297.289392 49.5 m +297.289392 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +297.289 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +312.614193 49.5 m +312.614193 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +312.614 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +325.135468 49.5 m +325.135468 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +325.135 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +335.722054 49.5 m +335.722054 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +335.722 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +344.892573 49.5 m +344.892573 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +344.893 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +352.981543 49.5 m +352.981543 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +352.982 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +407.820554 49.5 m +407.820554 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +407.821 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +435.666629 49.5 m +435.666629 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +435.667 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +455.423734 49.5 m +455.423734 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +455.424 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +470.748536 49.5 m +470.748536 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +470.749 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +483.26981 49.5 m +483.26981 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +483.27 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +493.856396 49.5 m +493.856396 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +493.856 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +503.026915 49.5 m +503.026915 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +503.027 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +511.115885 49.5 m +511.115885 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +511.116 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +565.954896 49.5 m +565.954896 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +565.955 49.5 o +grestore +/DejaVuSans findfont +10.000 scalefont +setfont +gsave +284.771875 19.906250 translate +0.000000 rotate +0.000000 0.000000 m /P glyphshow +6.030273 0.000000 m /P glyphshow +12.060547 0.000000 m /M glyphshow +20.688477 0.000000 m /space glyphshow +23.867188 0.000000 m /C glyphshow +30.849609 0.000000 m /o glyphshow +36.967773 0.000000 m /n glyphshow +43.305664 0.000000 m /c glyphshow +48.803711 0.000000 m /e glyphshow +54.956055 0.000000 m /n glyphshow +61.293945 0.000000 m /t glyphshow +65.214844 0.000000 m /r glyphshow +69.326172 0.000000 m /a glyphshow +75.454102 0.000000 m /t glyphshow +79.375000 0.000000 m /i glyphshow +82.153320 0.000000 m /o glyphshow +88.271484 0.000000 m /n glyphshow +grestore +0.800 setlinewidth +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 174.911 o +grestore +gsave +56.000000 170.449781 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/zero glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 334.89 o +grestore +gsave +56.000000 330.929063 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/one glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 63.09 m +583.2 63.09 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 63.09 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 91.260953 m +583.2 91.260953 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 91.261 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 111.248562 m +583.2 111.248562 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 111.249 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 126.752157 m +583.2 126.752157 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 126.752 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 139.419515 m +583.2 139.419515 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 139.42 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 150.129615 m +583.2 150.129615 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 150.13 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 159.407125 m +583.2 159.407125 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 159.407 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 167.590468 m +583.2 167.590468 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 167.59 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 223.069281 m +583.2 223.069281 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 223.069 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 251.240234 m +583.2 251.240234 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 251.24 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 271.227843 m +583.2 271.227843 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 271.228 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 286.731438 m +583.2 286.731438 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 286.731 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 299.398797 m +583.2 299.398797 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 299.399 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 310.108896 m +583.2 310.108896 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 310.109 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 319.386406 m +583.2 319.386406 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 319.386 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 327.56975 m +583.2 327.56975 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 327.57 o +grestore +gsave +49.921875 184.677500 translate +90.000000 rotate +0.000000 0.000000 m /R glyphshow +6.948242 0.000000 m /s glyphshow +12.158203 0.000000 m /slash glyphshow +15.527344 0.000000 m /R glyphshow +22.475586 0.000000 m /o glyphshow +grestore +1.000 setlinewidth +2 setlinecap +0.122 0.467 0.706 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +484.900495 63.09 m +482.270986 91.260953 l +479.536776 111.248562 l +476.68918 126.752157 l +473.718385 139.419515 l +470.613248 150.129615 l +467.36104 159.407125 l +463.947134 167.590468 l +460.354607 174.910719 l +407.46708 223.069281 l +-1 223.141809 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +484.9 63.09 o +482.271 91.261 o +479.537 111.249 o +476.689 126.752 o +473.718 139.42 o +470.613 150.13 o +467.361 159.407 o +463.947 167.59 o +460.355 174.911 o +407.467 223.069 o +-1 223.142 o +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +-1 150.122525 m +103.827273 150.129615 l +209.147273 159.407125 l +248.91042 167.590468 l +273.9308 174.910719 l +370.046466 223.069281 l +408.608051 251.240234 l +433.154872 271.227843 l +451.200945 286.731438 l +465.478284 299.398797 l +477.292268 310.108896 l +487.369149 319.386406 l +496.154891 327.56975 l +503.943094 334.89 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +-1 150.123 o +103.827 150.13 o +209.147 159.407 o +248.91 167.59 o +273.931 174.911 o +370.046 223.069 o +408.608 251.24 o +433.155 271.228 o +451.201 286.731 o +465.478 299.399 o +477.292 310.109 o +487.369 319.386 o +496.155 327.57 o +503.943 334.89 o +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +440.924088 63.09 m +439.207238 91.260953 l +437.446365 111.248562 l +435.639153 126.752157 l +433.783097 139.419515 l +431.875482 150.129615 l +429.913363 159.407125 l +427.893532 167.590468 l +425.812492 174.910719 l +400.561827 223.069281 l +360.203637 251.240234 l +249.754855 271.227843 l +-1 271.252371 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +440.924 63.09 o +439.207 91.261 o +437.446 111.249 o +435.639 126.752 o +433.783 139.42 o +431.875 150.13 o +429.913 159.407 o +427.894 167.59 o +425.812 174.911 o +400.562 223.069 o +360.204 251.24 o +249.755 271.228 o +-1 271.252 o +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +560.372727 63.09 m +558.561386 91.260953 l +556.700973 111.248562 l +554.788756 126.752157 l +552.821768 139.419515 l +550.796777 150.129615 l +548.71026 159.407125 l +546.558358 167.590468 l +544.336843 174.910719 l +516.960052 223.069281 l +470.745788 251.240234 l +249.754855 271.227843 l +-1 271.252371 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +560.373 63.09 o +558.561 91.261 o +556.701 111.249 o +554.789 126.752 o +552.822 139.42 o +550.797 150.13 o +548.71 159.407 o +546.558 167.59 o +544.337 174.911 o +516.96 223.069 o +470.746 251.24 o +249.755 271.228 o +-1 271.252 o +grestore +0.800 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0.000 setgray +gsave +81 49.5 m +81 348.48 l +stroke +grestore +gsave +583.2 49.5 m +583.2 348.48 l +stroke +grestore +gsave +81 49.5 m +583.2 49.5 l +stroke +grestore +gsave +81 348.48 m +583.2 348.48 l +stroke +grestore +1.000 setlinewidth +0 setlinecap +0.800 setgray +gsave +507.7 281.7925 m +576.2 281.7925 l +577.533333 281.7925 578.2 282.459167 578.2 283.7925 c +578.2 341.48 l +578.2 342.813333 577.533333 343.48 576.2 343.48 c +507.7 343.48 l +506.366667 343.48 505.7 342.813333 505.7 341.48 c +505.7 283.7925 l +505.7 282.459167 506.366667 281.7925 507.7 281.7925 c +cl +gsave +1.000 setgray +fill +grestore +stroke +grestore +1 setlinejoin +2 setlinecap +[] 0 setdash +0.122 0.467 0.706 setrgbcolor +gsave +509.7 335.38625 m +529.7 335.38625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 335.386 o +grestore +0.000 setgray +gsave +537.700000 331.886250 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /H glyphshow +14.501953 0.000000 m /four glyphshow +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +509.7 320.714375 m +529.7 320.714375 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 320.714 o +grestore +0.000 setgray +gsave +537.700000 317.214375 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /O glyphshow +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +509.7 306.0425 m +529.7 306.0425 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 306.043 o +grestore +0.000 setgray +gsave +537.700000 302.542500 translate +0.000000 rotate +0.000000 0.000000 m /H glyphshow +7.519531 0.000000 m /two glyphshow +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +509.7 291.370625 m +529.7 291.370625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 291.371 o +grestore +0.000 setgray +gsave +537.700000 287.870625 translate +0.000000 rotate +0.000000 0.000000 m /A glyphshow +6.840820 0.000000 m /l glyphshow +9.619141 0.000000 m /c glyphshow +15.117188 0.000000 m /o glyphshow +21.235352 0.000000 m /h glyphshow +27.573242 0.000000 m /o glyphshow +33.691406 0.000000 m /l glyphshow +grestore +/DejaVuSans findfont +12.000 scalefont +setfont +gsave +234.562500 378.955000 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +8.378906 0.000000 m /a glyphshow +15.732422 0.000000 m /l glyphshow +19.066406 0.000000 m /i glyphshow +22.400391 0.000000 m /b glyphshow +30.017578 0.000000 m /r glyphshow +34.951172 0.000000 m /a glyphshow +42.304688 0.000000 m /t glyphshow +47.009766 0.000000 m /i glyphshow +50.343750 0.000000 m /o glyphshow +57.685547 0.000000 m /n glyphshow +65.291016 0.000000 m /space glyphshow +69.105469 0.000000 m /p glyphshow +76.722656 0.000000 m /l glyphshow +80.056641 0.000000 m /o glyphshow +87.398438 0.000000 m /t glyphshow +92.103516 0.000000 m /space glyphshow +95.917969 0.000000 m /f glyphshow +100.142578 0.000000 m /o glyphshow +107.484375 0.000000 m /r glyphshow +112.417969 0.000000 m /space glyphshow +116.232422 0.000000 m /M glyphshow +126.585938 0.000000 m /Q glyphshow +136.031250 0.000000 m /hyphen glyphshow +140.361328 0.000000 m /four glyphshow +147.996094 0.000000 m /space glyphshow +151.810547 0.000000 m /d glyphshow +159.427734 0.000000 m /a glyphshow +166.781250 0.000000 m /t glyphshow +171.486328 0.000000 m /a glyphshow +grestore + +end +showpage diff --git a/Internal_design_documents/Experiments/MQ4.png b/Internal_design_documents/Experiments/MQ4.png new file mode 100644 index 0000000..9659914 Binary files /dev/null and b/Internal_design_documents/Experiments/MQ4.png differ diff --git a/Internal_design_documents/Experiments/MQ4.svg b/Internal_design_documents/Experiments/MQ4.svg new file mode 100644 index 0000000..c5afd20 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ4.svg @@ -0,0 +1,1589 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Internal_design_documents/Experiments/MQ4_Regression.ipynb b/Internal_design_documents/Experiments/MQ4_Regression.ipynb new file mode 100644 index 0000000..728a44f --- /dev/null +++ b/Internal_design_documents/Experiments/MQ4_Regression.ipynb @@ -0,0 +1,1935 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \t \n", + "0.2 \t \t \t \t \n", + "0.3 \t \t \t \t \n", + "0.4 \t \t \t \t \n", + "0.5 \t \t \t \t \n", + "0.6 \t \t \t \t \n", + "0.7 \t \t \t \t \n", + "0.8 \t \t \t \t \n", + "0.9 \t 5000.0 \t \t \t \n", + "1.0 \t \t 1000.0 \t \t \n", + "2.0 \t 1000.0 \t 200.0 \t \t \n", + "3.0 \t 200.0 \t \t 1000.0 \t 5000.0\n", + "4.0 \t \t \t 200.0 \t 200.0\n", + "5.0 \t \t 4000.0 \t \t \n", + "6.0 \t \t \t \t \n", + "7.0 \t \t \t \t \n", + "8.0 \t \t \t \t \n", + "9.0 \t \t \t \t \n", + "10.0 \t \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, CH4, CO, H2, Alcohol = sheetMQ4.row_values(row_index, start_colx=0, end_colx=5)\n", + " print(RsR0, \"\t\", CH4, \"\t\", CO, \"\t\", H2, \"\t\", Alcohol)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ4 = sheetMQ4.col_values(0)[2:]\n", + "MQ4_CH4 = sheetMQ4.col_values(1)[2:]\n", + "MQ4_CO = sheetMQ4.col_values(2)[2:]\n", + "MQ4_H2 = sheetMQ4.col_values(3)[2:]\n", + "MQ4_Alcohol = sheetMQ4.col_values(4)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "MQ4_CH4 =zero_to_nan(MQ4_CH4)\n", + "MQ4_CO =zero_to_nan(MQ4_CO)\n", + "MQ4_H2 =zero_to_nan(MQ4_H2)\n", + "MQ4_Alcohol =zero_to_nan(MQ4_Alcohol)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataCH4 = {'RsRo': x_MQ4, 'CH4': MQ4_CH4}\n", + "dataCO = {'RsRo': x_MQ4, 'CO': MQ4_CO}\n", + "dataH2 = {'RsRo': x_MQ4, 'H2': MQ4_H2}\n", + "dataAlcohol = {'RsRo': x_MQ4, 'Alcohol': MQ4_Alcohol}\n", + "\n", + "dfMQ4_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ4_CO = pd.DataFrame(dataCO)\n", + "dfMQ4_H2 = pd.DataFrame(dataH2)\n", + "dfMQ4_Alcohol = pd.DataFrame(dataAlcohol)\n", + "\n", + "dfMQ4_CH4['CH4'] = pd.to_numeric(dfMQ4_CH4['CH4'])\n", + "dfMQ4_CO['CO'] = pd.to_numeric(dfMQ4_CO['CO'])\n", + "dfMQ4_H2['H2'] = pd.to_numeric(dfMQ4_H2['H2'])\n", + "dfMQ4_Alcohol['Alcohol'] = pd.to_numeric(dfMQ4_Alcohol['Alcohol'])\n", + "\n", + "dfMQ4_CH4['CH4'] = dfMQ4_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ4_CO['CO'] = dfMQ4_CO['CO'].replace('',None, regex=True)\n", + "dfMQ4_H2['H2'] = dfMQ4_H2['H2'].replace('',None, regex=True)\n", + "dfMQ4_Alcohol['Alcohol'] = dfMQ4_Alcohol['Alcohol'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ4_Alcohol.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CH4\n", + "dataset2TrainCH4 = dfMQ4_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ4_CH4 = CH4_Predicted\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ4_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ4_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train H2\n", + "dataset2TrainH2 = dfMQ4_H2.copy()\n", + "dataset2TrainH2.dropna(inplace=True)\n", + "X_trainH2 = dataset2TrainH2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainH2 = dataset2TrainH2['H2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainH2, y_trainH2)\n", + "#Predict\n", + "H2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ4_H2 = H2_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Alcohol\n", + "dataset2TrainAlcohol = dfMQ4_Alcohol.copy()\n", + "dataset2TrainAlcohol.dropna(inplace=True)\n", + "X_trainAlcohol = dataset2TrainAlcohol.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAlcohol = dataset2TrainAlcohol['Alcohol'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAlcohol, y_trainAlcohol)\n", + "#Predict\n", + "Alcohol_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ4_Alcohol = Alcohol_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ4_CH4, x_MQ4, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ4_CO, x_MQ4, marker='o', linewidth=1, label='CO')\n", + "plt.plot(MQ4_H2, x_MQ4, marker='o', linewidth=1, label='H2')\n", + "plt.plot(MQ4_Alcohol, x_MQ4, marker='o', linewidth=1, label='Alcohol')\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-4 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ4.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ4.png')\n", + "plt.savefig('MQ4.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/MQ5.eps b/Internal_design_documents/Experiments/MQ5.eps new file mode 100644 index 0000000..49074a2 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ5.eps @@ -0,0 +1,2418 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: MQ5.eps +%%Creator: matplotlib version 3.0.3, http://matplotlib.org/ +%%CreationDate: Wed Jul 3 20:39:52 2019 +%%Orientation: portrait +%%BoundingBox: -18 198 630 594 +%%EndComments +%%BeginProlog +/mpldict 8 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/c { curveto } bind def +/cl { closepath } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +cl +} bind def +/clipbox { +box +clip +newpath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: DejaVu Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain +%%Creator: Converted from TrueType to type 3 by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-1021 -463 1793 1232]def +/FontType 3 def +/Encoding [ /space /hyphen /slash /zero /one /two /three /four /five /C /G /H /L /M /O /P /Q /R /a /b /c /d /e /f /i /l /n /o /p /r /s /t ] def +/FontInfo 10 dict dup begin +/FamilyName (DejaVu Sans) def +/FullName (DejaVu Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def +/Weight (Book) def +/Version (Version 2.35) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -130 def +/UnderlineThickness 90 def +end readonly def +/CharStrings 33 dict dup begin +/.notdef 0 def +/space{318 0 0 0 0 0 _sc +}_d +/hyphen{361 0 49 234 312 314 _sc +49 314 _m +312 314 _l +312 234 _l +49 234 _l +49 314 _l +_cl}_d +/slash{337 0 0 -92 337 729 _sc +254 729 _m +337 729 _l +83 -92 _l +0 -92 _l +254 729 _l +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/two{{636 0 73 0 536 742 _sc +192 83 _m +536 83 _l +536 0 _l +73 0 _l +73 83 _l +110 121 161 173 226 239 _c +290 304 331 346 348 365 _c +380 400 402 430 414 455 _c +426 479 433 504 433 528 _c +433 566 419 598 392 622 _c +365 646 330 659 286 659 _c +255 659 222 653 188 643 _c +154 632 117 616 78 594 _c +78 694 _l +118 710 155 722 189 730 _c +223 738 255 742 284 742 _c +}_e{359 742 419 723 464 685 _c +509 647 532 597 532 534 _c +532 504 526 475 515 449 _c +504 422 484 390 454 354 _c +446 344 420 317 376 272 _c +332 227 271 164 192 83 _c +_cl}_e}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +}_e{202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/four{636 0 49 0 580 729 _sc +378 643 _m +129 254 _l +378 254 _l +378 643 _l +352 729 _m +476 729 _l +476 254 _l +580 254 _l +580 172 _l +476 172 _l +476 0 _l +378 0 _l +378 172 _l +49 172 _l +49 267 _l +352 729 _l +_cl}_d +/five{{636 0 77 -13 549 729 _sc +108 729 _m +495 729 _l +495 646 _l +198 646 _l +198 467 _l +212 472 227 476 241 478 _c +255 480 270 482 284 482 _c +365 482 429 459 477 415 _c +525 370 549 310 549 234 _c +549 155 524 94 475 51 _c +426 8 357 -13 269 -13 _c +238 -13 207 -10 175 -6 _c +143 -1 111 6 77 17 _c +77 116 _l +106 100 136 88 168 80 _c +199 72 232 69 267 69 _c +}_e{323 69 368 83 401 113 _c +433 143 450 183 450 234 _c +450 284 433 324 401 354 _c +368 384 323 399 267 399 _c +241 399 214 396 188 390 _c +162 384 135 375 108 363 _c +108 729 _l +_cl}_e}_d +/C{{698 0 56 -13 644 742 _sc +644 673 _m +644 569 _l +610 599 575 622 537 638 _c +499 653 460 661 418 661 _c +334 661 270 635 226 584 _c +182 533 160 460 160 364 _c +160 268 182 194 226 143 _c +270 92 334 67 418 67 _c +460 67 499 74 537 90 _c +575 105 610 128 644 159 _c +644 56 _l +609 32 572 15 534 4 _c +496 -7 455 -13 412 -13 _c +302 -13 215 20 151 87 _c +}_e{87 154 56 246 56 364 _c +56 481 87 573 151 641 _c +215 708 302 742 412 742 _c +456 742 497 736 535 725 _c +573 713 610 696 644 673 _c +_cl}_e}_d +/G{{775 0 56 -13 693 742 _sc +595 104 _m +595 300 _l +434 300 _l +434 381 _l +693 381 _l +693 68 _l +655 40 613 20 567 7 _c +521 -6 472 -13 420 -13 _c +306 -13 216 20 152 86 _c +88 152 56 245 56 364 _c +56 482 88 575 152 642 _c +216 708 306 742 420 742 _c +467 742 512 736 555 724 _c +598 712 638 695 674 673 _c +674 568 _l +637 598 598 621 557 637 _c +516 653 473 661 428 661 _c +}_e{338 661 271 636 227 586 _c +182 536 160 462 160 364 _c +160 265 182 191 227 141 _c +271 91 338 67 428 67 _c +462 67 493 70 521 76 _c +549 82 573 91 595 104 _c +_cl}_e}_d +/H{752 0 98 0 654 729 _sc +98 729 _m +197 729 _l +197 430 _l +555 430 _l +555 729 _l +654 729 _l +654 0 _l +555 0 _l +555 347 _l +197 347 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/L{557 0 98 0 552 729 _sc +98 729 _m +197 729 _l +197 83 _l +552 83 _l +552 0 _l +98 0 _l +98 729 _l +_cl}_d +/M{863 0 98 0 765 729 _sc +98 729 _m +245 729 _l +431 233 _l +618 729 _l +765 729 _l +765 0 _l +669 0 _l +669 640 _l +481 140 _l +382 140 _l +194 640 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/O{787 0 56 -13 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +394 742 _m +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 248 700 157 639 89 _c +577 21 496 -13 394 -13 _c +291 -13 209 21 148 89 _c +86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +_cl}_d +/P{603 0 98 0 569 729 _sc +197 648 _m +197 374 _l +321 374 _l +367 374 402 385 427 409 _c +452 433 465 467 465 511 _c +465 555 452 588 427 612 _c +402 636 367 648 321 648 _c +197 648 _l +98 729 _m +321 729 _l +402 729 464 710 506 673 _c +548 636 569 582 569 511 _c +569 439 548 384 506 348 _c +464 311 402 293 321 293 _c +197 293 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/Q{{787 0 56 -128 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +532 13 _m +662 -128 _l +543 -128 _l +435 -11 _l +424 -11 416 -12 410 -12 _c +404 -12 399 -13 394 -13 _c +291 -13 209 21 148 89 _c +}_e{86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 279 714 206 680 146 _c +646 86 596 41 532 13 _c +_cl}_e}_d +/R{{695 0 98 0 666 729 _sc +444 342 _m +465 334 486 319 506 296 _c +526 272 546 240 566 199 _c +666 0 _l +560 0 _l +467 187 _l +443 235 419 268 397 284 _c +374 300 343 308 304 308 _c +197 308 _l +197 0 _l +98 0 _l +98 729 _l +321 729 _l +404 729 466 711 507 677 _c +548 642 569 589 569 519 _c +569 473 558 434 537 404 _c +515 374 484 353 444 342 _c +197 648 _m +197 389 _l +321 389 _l +}_e{368 389 404 400 428 422 _c +452 444 465 476 465 519 _c +465 561 452 593 428 615 _c +404 637 368 648 321 648 _c +197 648 _l +_cl}_e}_d +/a{{613 0 60 -13 522 560 _sc +343 275 _m +270 275 220 266 192 250 _c +164 233 150 205 150 165 _c +150 133 160 107 181 89 _c +202 70 231 61 267 61 _c +317 61 357 78 387 114 _c +417 149 432 196 432 255 _c +432 275 _l +343 275 _l +522 312 _m +522 0 _l +432 0 _l +432 83 _l +411 49 385 25 355 10 _c +325 -5 287 -13 243 -13 _c +187 -13 142 2 109 33 _c +76 64 60 106 60 159 _c +}_e{60 220 80 266 122 298 _c +163 329 224 345 306 345 _c +432 345 _l +432 354 _l +432 395 418 427 391 450 _c +364 472 326 484 277 484 _c +245 484 215 480 185 472 _c +155 464 127 453 100 439 _c +100 522 _l +132 534 164 544 195 550 _c +226 556 256 560 286 560 _c +365 560 424 539 463 498 _c +502 457 522 395 522 312 _c +_cl}_e}_d +/b{{635 0 91 -13 580 760 _sc +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +181 464 _m +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +}_e{580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 464 _l +_cl}_e}_d +/c{{550 0 55 -13 488 560 _sc +488 526 _m +488 442 _l +462 456 437 466 411 473 _c +385 480 360 484 334 484 _c +276 484 230 465 198 428 _c +166 391 150 339 150 273 _c +150 206 166 154 198 117 _c +230 80 276 62 334 62 _c +360 62 385 65 411 72 _c +437 79 462 90 488 104 _c +488 21 _l +462 9 436 0 410 -5 _c +383 -10 354 -13 324 -13 _c +242 -13 176 12 128 64 _c +}_e{79 115 55 185 55 273 _c +55 362 79 432 128 483 _c +177 534 244 560 330 560 _c +358 560 385 557 411 551 _c +437 545 463 537 488 526 _c +_cl}_e}_d +/d{{635 0 55 -13 544 760 _sc +454 464 _m +454 760 _l +544 760 _l +544 0 _l +454 0 _l +454 82 _l +435 49 411 25 382 10 _c +353 -5 319 -13 279 -13 _c +213 -13 159 13 117 65 _c +75 117 55 187 55 273 _c +55 359 75 428 117 481 _c +159 533 213 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +148 273 _m +148 207 161 155 188 117 _c +215 79 253 61 301 61 _c +}_e{348 61 385 79 413 117 _c +440 155 454 207 454 273 _c +454 339 440 390 413 428 _c +385 466 348 485 301 485 _c +253 485 215 466 188 428 _c +161 390 148 339 148 273 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +}_e{540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/f{352 0 23 0 371 760 _sc +371 760 _m +371 685 _l +285 685 _l +253 685 230 678 218 665 _c +205 652 199 629 199 595 _c +199 547 _l +347 547 _l +347 477 _l +199 477 _l +199 0 _l +109 0 _l +109 477 _l +23 477 _l +23 547 _l +109 547 _l +109 585 _l +109 645 123 690 151 718 _c +179 746 224 760 286 760 _c +371 760 _l +_cl}_d +/i{278 0 94 0 184 760 _sc +94 547 _m +184 547 _l +184 0 _l +94 0 _l +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/l{278 0 94 0 184 760 _sc +94 760 _m +184 760 _l +184 0 _l +94 0 _l +94 760 _l +_cl}_d +/n{634 0 91 0 549 560 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/o{612 0 55 -13 557 560 _sc +306 484 _m +258 484 220 465 192 427 _c +164 389 150 338 150 273 _c +150 207 163 156 191 118 _c +219 80 257 62 306 62 _c +354 62 392 80 420 118 _c +448 156 462 207 462 273 _c +462 337 448 389 420 427 _c +392 465 354 484 306 484 _c +306 560 _m +384 560 445 534 490 484 _c +534 433 557 363 557 273 _c +557 183 534 113 490 63 _c +445 12 384 -13 306 -13 _c +227 -13 165 12 121 63 _c +77 113 55 183 55 273 _c +55 363 77 433 121 484 _c +165 534 227 560 306 560 _c +_cl}_d +/p{{635 0 91 -207 580 560 _sc +181 82 _m +181 -207 _l +91 -207 _l +91 547 _l +181 547 _l +181 464 _l +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +}_e{286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +_cl}_e}_d +/r{411 0 91 0 411 560 _sc +411 463 _m +401 469 390 473 378 476 _c +366 478 353 480 339 480 _c +288 480 249 463 222 430 _c +194 397 181 350 181 288 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +199 495 224 520 254 536 _c +284 552 321 560 365 560 _c +371 560 378 559 386 559 _c +393 558 401 557 411 555 _c +411 463 _l +_cl}_d +/s{{521 0 54 -13 472 560 _sc +443 531 _m +443 446 _l +417 458 391 468 364 475 _c +336 481 308 485 279 485 _c +234 485 200 478 178 464 _c +156 450 145 430 145 403 _c +145 382 153 366 169 354 _c +185 342 217 330 265 320 _c +296 313 _l +360 299 405 279 432 255 _c +458 230 472 195 472 151 _c +472 100 452 60 412 31 _c +372 1 316 -13 246 -13 _c +216 -13 186 -10 154 -5 _c +}_e{122 0 89 8 54 20 _c +54 113 _l +87 95 120 82 152 74 _c +184 65 216 61 248 61 _c +290 61 323 68 346 82 _c +368 96 380 117 380 144 _c +380 168 371 187 355 200 _c +339 213 303 226 247 238 _c +216 245 _l +160 257 119 275 95 299 _c +70 323 58 356 58 399 _c +58 450 76 490 112 518 _c +148 546 200 560 268 560 _c +301 560 332 557 362 552 _c +391 547 418 540 443 531 _c +}_e{_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +end +%%EndProlog +mpldict begin +-18 198 translate +648 396 0 0 clipbox +gsave +0 0 m +648 0 l +648 396 l +0 396 l +cl +1.000 setgray +fill +grestore +gsave +81 49.5 m +583.2 49.5 l +583.2 348.48 l +81 348.48 l +cl +1.000 setgray +fill +grestore +0.800 setlinewidth +1 setlinejoin +0 setlinecap +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +289.934 49.5 o +grestore +gsave +280.933976 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/three glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +556.358 49.5 o +grestore +gsave +547.357929 34.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/four glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +103.711624 49.5 m +103.711624 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +103.712 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +150.626553 49.5 m +150.626553 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +150.627 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +183.913226 49.5 m +183.913226 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +183.913 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +209.732374 49.5 m +209.732374 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +209.732 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +230.828155 49.5 m +230.828155 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +230.828 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +248.664383 49.5 m +248.664383 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +248.664 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +264.114827 49.5 m +264.114827 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +264.115 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +277.743084 49.5 m +277.743084 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +277.743 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +370.135577 49.5 m +370.135577 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +370.136 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +417.050506 49.5 m +417.050506 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +417.051 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +450.337179 49.5 m +450.337179 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +450.337 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +476.156327 49.5 m +476.156327 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +476.156 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +497.252108 49.5 m +497.252108 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +497.252 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +515.088336 49.5 m +515.088336 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +515.088 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +530.53878 49.5 m +530.53878 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +530.539 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +544.167037 49.5 m +544.167037 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +544.167 49.5 o +grestore +/DejaVuSans findfont +10.000 scalefont +setfont +gsave +284.771875 19.906250 translate +0.000000 rotate +0.000000 0.000000 m /P glyphshow +6.030273 0.000000 m /P glyphshow +12.060547 0.000000 m /M glyphshow +20.688477 0.000000 m /space glyphshow +23.867188 0.000000 m /C glyphshow +30.849609 0.000000 m /o glyphshow +36.967773 0.000000 m /n glyphshow +43.305664 0.000000 m /c glyphshow +48.803711 0.000000 m /e glyphshow +54.956055 0.000000 m /n glyphshow +61.293945 0.000000 m /t glyphshow +65.214844 0.000000 m /r glyphshow +69.326172 0.000000 m /a glyphshow +75.454102 0.000000 m /t glyphshow +79.375000 0.000000 m /i glyphshow +82.153320 0.000000 m /o glyphshow +88.271484 0.000000 m /n glyphshow +grestore +0.800 setlinewidth +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 174.911 o +grestore +gsave +56.000000 170.449781 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/zero glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 334.89 o +grestore +gsave +56.000000 330.929063 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/one glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 63.09 m +583.2 63.09 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 63.09 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 91.260953 m +583.2 91.260953 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 91.261 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 111.248562 m +583.2 111.248562 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 111.249 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 126.752157 m +583.2 126.752157 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 126.752 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 139.419515 m +583.2 139.419515 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 139.42 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 150.129615 m +583.2 150.129615 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 150.13 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 159.407125 m +583.2 159.407125 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 159.407 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 167.590468 m +583.2 167.590468 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 167.59 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 223.069281 m +583.2 223.069281 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 223.069 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 251.240234 m +583.2 251.240234 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 251.24 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 271.227843 m +583.2 271.227843 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 271.228 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 286.731438 m +583.2 286.731438 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 286.731 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 299.398797 m +583.2 299.398797 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 299.399 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 310.108896 m +583.2 310.108896 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 310.109 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 319.386406 m +583.2 319.386406 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 319.386 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 327.56975 m +583.2 327.56975 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 327.57 o +grestore +gsave +49.921875 184.677500 translate +90.000000 rotate +0.000000 0.000000 m /R glyphshow +6.948242 0.000000 m /s glyphshow +12.158203 0.000000 m /slash glyphshow +15.527344 0.000000 m /R glyphshow +22.475586 0.000000 m /o glyphshow +grestore +1.000 setlinewidth +2 setlinecap +0.122 0.467 0.706 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +560.372727 63.09 m +545.945826 91.260953 l +529.460386 111.248562 l +510.229603 126.752157 l +487.152769 139.419515 l +458.296955 150.129615 l +419.765064 159.407125 l +361.587505 167.590468 l +239.003759 174.910719 l +-1 174.95398 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +560.373 63.09 o +545.946 91.261 o +529.46 111.249 o +510.23 126.752 o +487.153 139.42 o +458.297 150.13 o +419.765 159.407 o +361.588 167.59 o +239.004 174.911 o +-1 174.954 o +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +453.178676 63.09 m +424.506611 91.260953 l +386.302964 111.248562 l +328.879033 126.752157 l +209.823685 139.419515 l +-1 139.427968 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +453.179 63.09 o +424.507 91.261 o +386.303 111.249 o +328.879 126.752 o +209.824 139.42 o +-1 139.428 o +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +405.378821 63.09 m +383.686671 91.260953 l +356.967165 111.248562 l +322.16415 126.752157 l +272.155586 139.419515 l +182.143502 150.129615 l +-1 150.135976 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +405.379 63.09 o +383.687 91.261 o +356.967 111.249 o +322.164 126.752 o +272.156 139.42 o +182.144 150.13 o +-1 150.136 o +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +394.96375 63.09 m +392.130366 91.260953 l +389.225855 111.248562 l +386.246551 126.752157 l +383.188502 139.419515 l +380.047432 150.129615 l +376.818706 159.407125 l +373.497292 167.590468 l +370.077709 174.910719 l +328.816385 223.069281 l +264.085897 251.240234 l +103.827273 271.227843 l +-1 271.23393 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +394.964 63.09 o +392.13 91.261 o +389.226 111.249 o +386.247 126.752 o +383.189 139.42 o +380.047 150.13 o +376.819 159.407 o +373.497 167.59 o +370.078 174.911 o +328.816 223.069 o +264.086 251.24 o +103.827 271.228 o +-1 271.234 o +grestore +0.800 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0.000 setgray +gsave +81 49.5 m +81 348.48 l +stroke +grestore +gsave +583.2 49.5 m +583.2 348.48 l +stroke +grestore +gsave +81 49.5 m +583.2 49.5 l +stroke +grestore +gsave +81 348.48 m +583.2 348.48 l +stroke +grestore +1.000 setlinewidth +0 setlinecap +0.800 setgray +gsave +523.340625 281.7925 m +576.2 281.7925 l +577.533333 281.7925 578.2 282.459167 578.2 283.7925 c +578.2 341.48 l +578.2 342.813333 577.533333 343.48 576.2 343.48 c +523.340625 343.48 l +522.007292 343.48 521.340625 342.813333 521.340625 341.48 c +521.340625 283.7925 l +521.340625 282.459167 522.007292 281.7925 523.340625 281.7925 c +cl +gsave +1.000 setgray +fill +grestore +stroke +grestore +1 setlinejoin +2 setlinecap +[] 0 setdash +0.122 0.467 0.706 setrgbcolor +gsave +525.340625 335.38625 m +545.340625 335.38625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +535.341 335.386 o +grestore +0.000 setgray +gsave +553.340625 331.886250 translate +0.000000 rotate +0.000000 0.000000 m /H glyphshow +7.519531 0.000000 m /two glyphshow +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +525.340625 320.714375 m +545.340625 320.714375 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +535.341 320.714 o +grestore +0.000 setgray +gsave +553.340625 317.214375 translate +0.000000 rotate +0.000000 0.000000 m /L glyphshow +5.571289 0.000000 m /P glyphshow +11.601562 0.000000 m /G glyphshow +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +525.340625 306.0425 m +545.340625 306.0425 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +535.341 306.043 o +grestore +0.000 setgray +gsave +553.340625 302.542500 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /H glyphshow +14.501953 0.000000 m /four glyphshow +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +525.340625 291.370625 m +545.340625 291.370625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +535.341 291.371 o +grestore +0.000 setgray +gsave +553.340625 287.870625 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /O glyphshow +grestore +/DejaVuSans findfont +12.000 scalefont +setfont +gsave +234.562500 378.955000 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +8.378906 0.000000 m /a glyphshow +15.732422 0.000000 m /l glyphshow +19.066406 0.000000 m /i glyphshow +22.400391 0.000000 m /b glyphshow +30.017578 0.000000 m /r glyphshow +34.951172 0.000000 m /a glyphshow +42.304688 0.000000 m /t glyphshow +47.009766 0.000000 m /i glyphshow +50.343750 0.000000 m /o glyphshow +57.685547 0.000000 m /n glyphshow +65.291016 0.000000 m /space glyphshow +69.105469 0.000000 m /p glyphshow +76.722656 0.000000 m /l glyphshow +80.056641 0.000000 m /o glyphshow +87.398438 0.000000 m /t glyphshow +92.103516 0.000000 m /space glyphshow +95.917969 0.000000 m /f glyphshow +100.142578 0.000000 m /o glyphshow +107.484375 0.000000 m /r glyphshow +112.417969 0.000000 m /space glyphshow +116.232422 0.000000 m /M glyphshow +126.585938 0.000000 m /Q glyphshow +136.031250 0.000000 m /hyphen glyphshow +140.361328 0.000000 m /five glyphshow +147.996094 0.000000 m /space glyphshow +151.810547 0.000000 m /d glyphshow +159.427734 0.000000 m /a glyphshow +166.781250 0.000000 m /t glyphshow +171.486328 0.000000 m /a glyphshow +grestore + +end +showpage diff --git a/Internal_design_documents/Experiments/MQ5.png b/Internal_design_documents/Experiments/MQ5.png new file mode 100644 index 0000000..78739c5 Binary files /dev/null and b/Internal_design_documents/Experiments/MQ5.png differ diff --git a/Internal_design_documents/Experiments/MQ5.svg b/Internal_design_documents/Experiments/MQ5.svg new file mode 100644 index 0000000..b0c0e79 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ5.svg @@ -0,0 +1,1454 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Internal_design_documents/Experiments/MQ5_Regression.ipynb b/Internal_design_documents/Experiments/MQ5_Regression.ipynb new file mode 100644 index 0000000..8bf022f --- /dev/null +++ b/Internal_design_documents/Experiments/MQ5_Regression.ipynb @@ -0,0 +1,1794 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \t \n", + "0.2 \t \t 5000.0 \t \t \n", + "0.3 \t \t \t \t \n", + "0.4 \t \t 800.0 \t 2000.0 \t \n", + "0.5 \t \t \t 1000.0 \t \n", + "0.6 \t \t \t \t \n", + "0.7 \t 5000.0 \t 200.0 \t 500.0 \t \n", + "0.8 \t 2000.0 \t \t \t \n", + "0.9 \t \t \t \t \n", + "1.0 \t 1000.0 \t \t \t \n", + "2.0 \t \t \t \t \n", + "3.0 \t \t \t \t 800.0\n", + "4.0 \t \t \t \t 200.0\n", + "5.0 \t \t \t \t \n", + "6.0 \t \t \t \t \n", + "7.0 \t \t \t \t \n", + "8.0 \t \t \t \t \n", + "9.0 \t \t \t \t \n", + "10.0 \t \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, H2, LPG , CH4, CO = sheetMQ5.row_values(row_index, start_colx=0, end_colx=5)\n", + " print(RsR0, \"\t\", H2, \"\t\", LPG, \"\t\", CH4, \"\t\", CO)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ5 = sheetMQ5.col_values(0)[2:]\n", + "MQ5_H2 = sheetMQ5.col_values(1)[2:]\n", + "MQ5_LPG = sheetMQ5.col_values(2)[2:]\n", + "MQ5_CH4 = sheetMQ5.col_values(3)[2:]\n", + "MQ5_CO = sheetMQ5.col_values(4)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "MQ5_H2 =zero_to_nan(MQ5_H2)\n", + "MQ5_LPG =zero_to_nan(MQ5_LPG)\n", + "MQ5_CH4 =zero_to_nan(MQ5_CH4)\n", + "MQ5_CO =zero_to_nan(MQ5_CO)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataH2 = {'RsRo': x_MQ5, 'H2': MQ5_H2}\n", + "dataLPG = {'RsRo': x_MQ5, 'LPG': MQ5_LPG}\n", + "dataCH4 = {'RsRo': x_MQ5, 'CH4': MQ5_CH4}\n", + "dataCO = {'RsRo': x_MQ5, 'CO': MQ5_CO}\n", + "\n", + "dfMQ5_H2 = pd.DataFrame(dataH2)\n", + "dfMQ5_LPG = pd.DataFrame(dataLPG)\n", + "dfMQ5_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ5_CO = pd.DataFrame(dataCO)\n", + "\n", + "dfMQ5_H2['H2'] = pd.to_numeric(dfMQ5_H2['H2'])\n", + "dfMQ5_LPG['LPG'] = pd.to_numeric(dfMQ5_LPG['LPG'])\n", + "dfMQ5_CH4['CH4'] = pd.to_numeric(dfMQ5_CH4['CH4'])\n", + "dfMQ5_CO['CO'] = pd.to_numeric(dfMQ5_CO['CO'])\n", + "\n", + "dfMQ5_H2['H2'] = dfMQ5_H2['H2'].replace('',None, regex=True)\n", + "dfMQ5_LPG['LPG'] = dfMQ5_LPG['LPG'].replace('',None, regex=True)\n", + "dfMQ5_CH4['CH4'] = dfMQ5_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ5_CO['CO'] = dfMQ5_CO['CO'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ5_LPG.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train H2\n", + "dataset2TrainH2 = dfMQ5_H2.copy()\n", + "dataset2TrainH2.dropna(inplace=True)\n", + "X_trainH2 = dataset2TrainH2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainH2 = dataset2TrainH2['H2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainH2, y_trainH2)\n", + "#Predict\n", + "H2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ5_H2 = H2_Predicted\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train LPG\n", + "dataset2TrainLPG = dfMQ5_LPG.copy()\n", + "dataset2TrainLPG.dropna(inplace=True)\n", + "X_trainLPG = dataset2TrainLPG.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainLPG = dataset2TrainLPG['LPG'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainLPG, y_trainLPG)\n", + "#Predict\n", + "LPG_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ5_LPG = LPG_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CH4\n", + "dataset2TrainCH4 = dfMQ5_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ5_CH4 = CH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ5_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ5_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ5_H2, x_MQ5, marker='o', linewidth=1, label='H2')\n", + "plt.plot(MQ5_LPG, x_MQ5, marker='o', linewidth=1, label='LPG')\n", + "plt.plot(MQ5_CH4, x_MQ5, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ5_CO, x_MQ5, marker='o', linewidth=1, label='CO')\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-5 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ5.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ5.png')\n", + "plt.savefig('MQ5.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/MQ6.eps b/Internal_design_documents/Experiments/MQ6.eps new file mode 100644 index 0000000..525c111 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ6.eps @@ -0,0 +1,2441 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: MQ6.eps +%%Creator: matplotlib version 3.0.3, http://matplotlib.org/ +%%CreationDate: Wed Jul 3 20:49:28 2019 +%%Orientation: portrait +%%BoundingBox: -18 198 630 594 +%%EndComments +%%BeginProlog +/mpldict 8 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/c { curveto } bind def +/cl { closepath } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +cl +} bind def +/clipbox { +box +clip +newpath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: DejaVu Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain +%%Creator: Converted from TrueType to type 3 by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-1021 -463 1793 1232]def +/FontType 3 def +/Encoding [ /space /hyphen /slash /zero /one /two /three /four /six /A /C /G /H /L /M /O /P /Q /R /a /b /c /d /e /f /h /i /l /n /o /p /r /s /t ] def +/FontInfo 10 dict dup begin +/FamilyName (DejaVu Sans) def +/FullName (DejaVu Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def +/Weight (Book) def +/Version (Version 2.35) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -130 def +/UnderlineThickness 90 def +end readonly def +/CharStrings 35 dict dup begin +/.notdef 0 def +/space{318 0 0 0 0 0 _sc +}_d +/hyphen{361 0 49 234 312 314 _sc +49 314 _m +312 314 _l +312 234 _l +49 234 _l +49 314 _l +_cl}_d +/slash{337 0 0 -92 337 729 _sc +254 729 _m +337 729 _l +83 -92 _l +0 -92 _l +254 729 _l +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/two{{636 0 73 0 536 742 _sc +192 83 _m +536 83 _l +536 0 _l +73 0 _l +73 83 _l +110 121 161 173 226 239 _c +290 304 331 346 348 365 _c +380 400 402 430 414 455 _c +426 479 433 504 433 528 _c +433 566 419 598 392 622 _c +365 646 330 659 286 659 _c +255 659 222 653 188 643 _c +154 632 117 616 78 594 _c +78 694 _l +118 710 155 722 189 730 _c +223 738 255 742 284 742 _c +}_e{359 742 419 723 464 685 _c +509 647 532 597 532 534 _c +532 504 526 475 515 449 _c +504 422 484 390 454 354 _c +446 344 420 317 376 272 _c +332 227 271 164 192 83 _c +_cl}_e}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +}_e{202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/four{636 0 49 0 580 729 _sc +378 643 _m +129 254 _l +378 254 _l +378 643 _l +352 729 _m +476 729 _l +476 254 _l +580 254 _l +580 172 _l +476 172 _l +476 0 _l +378 0 _l +378 172 _l +49 172 _l +49 267 _l +352 729 _l +_cl}_d +/six{{636 0 70 -13 573 742 _sc +330 404 _m +286 404 251 388 225 358 _c +199 328 186 286 186 234 _c +186 181 199 139 225 109 _c +251 79 286 64 330 64 _c +374 64 409 79 435 109 _c +461 139 474 181 474 234 _c +474 286 461 328 435 358 _c +409 388 374 404 330 404 _c +526 713 _m +526 623 _l +501 635 476 644 451 650 _c +425 656 400 659 376 659 _c +310 659 260 637 226 593 _c +}_e{192 549 172 482 168 394 _c +187 422 211 444 240 459 _c +269 474 301 482 336 482 _c +409 482 467 459 509 415 _c +551 371 573 310 573 234 _c +573 159 550 99 506 54 _c +462 9 403 -13 330 -13 _c +246 -13 181 19 137 83 _c +92 147 70 241 70 364 _c +70 479 97 571 152 639 _c +206 707 280 742 372 742 _c +396 742 421 739 447 735 _c +472 730 498 723 526 713 _c +_cl}_e}_d +/A{684 0 8 0 676 729 _sc +342 632 _m +208 269 _l +476 269 _l +342 632 _l +286 729 _m +398 729 _l +676 0 _l +573 0 _l +507 187 _l +178 187 _l +112 0 _l +8 0 _l +286 729 _l +_cl}_d +/C{{698 0 56 -13 644 742 _sc +644 673 _m +644 569 _l +610 599 575 622 537 638 _c +499 653 460 661 418 661 _c +334 661 270 635 226 584 _c +182 533 160 460 160 364 _c +160 268 182 194 226 143 _c +270 92 334 67 418 67 _c +460 67 499 74 537 90 _c +575 105 610 128 644 159 _c +644 56 _l +609 32 572 15 534 4 _c +496 -7 455 -13 412 -13 _c +302 -13 215 20 151 87 _c +}_e{87 154 56 246 56 364 _c +56 481 87 573 151 641 _c +215 708 302 742 412 742 _c +456 742 497 736 535 725 _c +573 713 610 696 644 673 _c +_cl}_e}_d +/G{{775 0 56 -13 693 742 _sc +595 104 _m +595 300 _l +434 300 _l +434 381 _l +693 381 _l +693 68 _l +655 40 613 20 567 7 _c +521 -6 472 -13 420 -13 _c +306 -13 216 20 152 86 _c +88 152 56 245 56 364 _c +56 482 88 575 152 642 _c +216 708 306 742 420 742 _c +467 742 512 736 555 724 _c +598 712 638 695 674 673 _c +674 568 _l +637 598 598 621 557 637 _c +516 653 473 661 428 661 _c +}_e{338 661 271 636 227 586 _c +182 536 160 462 160 364 _c +160 265 182 191 227 141 _c +271 91 338 67 428 67 _c +462 67 493 70 521 76 _c +549 82 573 91 595 104 _c +_cl}_e}_d +/H{752 0 98 0 654 729 _sc +98 729 _m +197 729 _l +197 430 _l +555 430 _l +555 729 _l +654 729 _l +654 0 _l +555 0 _l +555 347 _l +197 347 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/L{557 0 98 0 552 729 _sc +98 729 _m +197 729 _l +197 83 _l +552 83 _l +552 0 _l +98 0 _l +98 729 _l +_cl}_d +/M{863 0 98 0 765 729 _sc +98 729 _m +245 729 _l +431 233 _l +618 729 _l +765 729 _l +765 0 _l +669 0 _l +669 640 _l +481 140 _l +382 140 _l +194 640 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/O{787 0 56 -13 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +394 742 _m +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 248 700 157 639 89 _c +577 21 496 -13 394 -13 _c +291 -13 209 21 148 89 _c +86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +_cl}_d +/P{603 0 98 0 569 729 _sc +197 648 _m +197 374 _l +321 374 _l +367 374 402 385 427 409 _c +452 433 465 467 465 511 _c +465 555 452 588 427 612 _c +402 636 367 648 321 648 _c +197 648 _l +98 729 _m +321 729 _l +402 729 464 710 506 673 _c +548 636 569 582 569 511 _c +569 439 548 384 506 348 _c +464 311 402 293 321 293 _c +197 293 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/Q{{787 0 56 -128 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +532 13 _m +662 -128 _l +543 -128 _l +435 -11 _l +424 -11 416 -12 410 -12 _c +404 -12 399 -13 394 -13 _c +291 -13 209 21 148 89 _c +}_e{86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 279 714 206 680 146 _c +646 86 596 41 532 13 _c +_cl}_e}_d +/R{{695 0 98 0 666 729 _sc +444 342 _m +465 334 486 319 506 296 _c +526 272 546 240 566 199 _c +666 0 _l +560 0 _l +467 187 _l +443 235 419 268 397 284 _c +374 300 343 308 304 308 _c +197 308 _l +197 0 _l +98 0 _l +98 729 _l +321 729 _l +404 729 466 711 507 677 _c +548 642 569 589 569 519 _c +569 473 558 434 537 404 _c +515 374 484 353 444 342 _c +197 648 _m +197 389 _l +321 389 _l +}_e{368 389 404 400 428 422 _c +452 444 465 476 465 519 _c +465 561 452 593 428 615 _c +404 637 368 648 321 648 _c +197 648 _l +_cl}_e}_d +/a{{613 0 60 -13 522 560 _sc +343 275 _m +270 275 220 266 192 250 _c +164 233 150 205 150 165 _c +150 133 160 107 181 89 _c +202 70 231 61 267 61 _c +317 61 357 78 387 114 _c +417 149 432 196 432 255 _c +432 275 _l +343 275 _l +522 312 _m +522 0 _l +432 0 _l +432 83 _l +411 49 385 25 355 10 _c +325 -5 287 -13 243 -13 _c +187 -13 142 2 109 33 _c +76 64 60 106 60 159 _c +}_e{60 220 80 266 122 298 _c +163 329 224 345 306 345 _c +432 345 _l +432 354 _l +432 395 418 427 391 450 _c +364 472 326 484 277 484 _c +245 484 215 480 185 472 _c +155 464 127 453 100 439 _c +100 522 _l +132 534 164 544 195 550 _c +226 556 256 560 286 560 _c +365 560 424 539 463 498 _c +502 457 522 395 522 312 _c +_cl}_e}_d +/b{{635 0 91 -13 580 760 _sc +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +181 464 _m +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +}_e{580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 464 _l +_cl}_e}_d +/c{{550 0 55 -13 488 560 _sc +488 526 _m +488 442 _l +462 456 437 466 411 473 _c +385 480 360 484 334 484 _c +276 484 230 465 198 428 _c +166 391 150 339 150 273 _c +150 206 166 154 198 117 _c +230 80 276 62 334 62 _c +360 62 385 65 411 72 _c +437 79 462 90 488 104 _c +488 21 _l +462 9 436 0 410 -5 _c +383 -10 354 -13 324 -13 _c +242 -13 176 12 128 64 _c +}_e{79 115 55 185 55 273 _c +55 362 79 432 128 483 _c +177 534 244 560 330 560 _c +358 560 385 557 411 551 _c +437 545 463 537 488 526 _c +_cl}_e}_d +/d{{635 0 55 -13 544 760 _sc +454 464 _m +454 760 _l +544 760 _l +544 0 _l +454 0 _l +454 82 _l +435 49 411 25 382 10 _c +353 -5 319 -13 279 -13 _c +213 -13 159 13 117 65 _c +75 117 55 187 55 273 _c +55 359 75 428 117 481 _c +159 533 213 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +148 273 _m +148 207 161 155 188 117 _c +215 79 253 61 301 61 _c +}_e{348 61 385 79 413 117 _c +440 155 454 207 454 273 _c +454 339 440 390 413 428 _c +385 466 348 485 301 485 _c +253 485 215 466 188 428 _c +161 390 148 339 148 273 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +}_e{540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/f{352 0 23 0 371 760 _sc +371 760 _m +371 685 _l +285 685 _l +253 685 230 678 218 665 _c +205 652 199 629 199 595 _c +199 547 _l +347 547 _l +347 477 _l +199 477 _l +199 0 _l +109 0 _l +109 477 _l +23 477 _l +23 547 _l +109 547 _l +109 585 _l +109 645 123 690 151 718 _c +179 746 224 760 286 760 _c +371 760 _l +_cl}_d +/h{634 0 91 0 549 760 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/i{278 0 94 0 184 760 _sc +94 547 _m +184 547 _l +184 0 _l +94 0 _l +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/l{278 0 94 0 184 760 _sc +94 760 _m +184 760 _l +184 0 _l +94 0 _l +94 760 _l +_cl}_d +/n{634 0 91 0 549 560 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/o{612 0 55 -13 557 560 _sc +306 484 _m +258 484 220 465 192 427 _c +164 389 150 338 150 273 _c +150 207 163 156 191 118 _c +219 80 257 62 306 62 _c +354 62 392 80 420 118 _c +448 156 462 207 462 273 _c +462 337 448 389 420 427 _c +392 465 354 484 306 484 _c +306 560 _m +384 560 445 534 490 484 _c +534 433 557 363 557 273 _c +557 183 534 113 490 63 _c +445 12 384 -13 306 -13 _c +227 -13 165 12 121 63 _c +77 113 55 183 55 273 _c +55 363 77 433 121 484 _c +165 534 227 560 306 560 _c +_cl}_d +/p{{635 0 91 -207 580 560 _sc +181 82 _m +181 -207 _l +91 -207 _l +91 547 _l +181 547 _l +181 464 _l +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +}_e{286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +_cl}_e}_d +/r{411 0 91 0 411 560 _sc +411 463 _m +401 469 390 473 378 476 _c +366 478 353 480 339 480 _c +288 480 249 463 222 430 _c +194 397 181 350 181 288 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +199 495 224 520 254 536 _c +284 552 321 560 365 560 _c +371 560 378 559 386 559 _c +393 558 401 557 411 555 _c +411 463 _l +_cl}_d +/s{{521 0 54 -13 472 560 _sc +443 531 _m +443 446 _l +417 458 391 468 364 475 _c +336 481 308 485 279 485 _c +234 485 200 478 178 464 _c +156 450 145 430 145 403 _c +145 382 153 366 169 354 _c +185 342 217 330 265 320 _c +296 313 _l +360 299 405 279 432 255 _c +458 230 472 195 472 151 _c +472 100 452 60 412 31 _c +372 1 316 -13 246 -13 _c +216 -13 186 -10 154 -5 _c +}_e{122 0 89 8 54 20 _c +54 113 _l +87 95 120 82 152 74 _c +184 65 216 61 248 61 _c +290 61 323 68 346 82 _c +368 96 380 117 380 144 _c +380 168 371 187 355 200 _c +339 213 303 226 247 238 _c +216 245 _l +160 257 119 275 95 299 _c +70 323 58 356 58 399 _c +58 450 76 490 112 518 _c +148 546 200 560 268 560 _c +301 560 332 557 362 552 _c +391 547 418 540 443 531 _c +}_e{_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +end +%%EndProlog +mpldict begin +-18 198 translate +648 396 0 0 clipbox +gsave +0 0 m +648 0 l +648 396 l +0 396 l +cl +1.000 setgray +fill +grestore +gsave +81 49.5 m +583.2 49.5 l +583.2 348.48 l +81 348.48 l +cl +1.000 setgray +fill +grestore +0.800 setlinewidth +1 setlinejoin +0 setlinecap +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +123.632 49.5 o +grestore +gsave +114.632479 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/three glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +455.059 49.5 o +grestore +gsave +446.058622 34.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/four glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +91.513967 49.5 m +91.513967 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +91.514 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +108.46725 49.5 m +108.46725 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +108.467 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +223.401689 49.5 m +223.401689 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +223.402 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +281.762936 49.5 m +281.762936 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +281.763 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +323.170899 49.5 m +323.170899 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +323.171 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +355.289411 49.5 m +355.289411 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +355.289 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +381.532146 49.5 m +381.532146 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +381.532 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +403.720062 49.5 m +403.720062 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +403.72 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +422.94011 49.5 m +422.94011 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +422.94 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +439.893393 49.5 m +439.893393 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +439.893 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +554.827832 49.5 m +554.827832 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +554.828 49.5 o +grestore +/DejaVuSans findfont +10.000 scalefont +setfont +gsave +284.771875 19.906250 translate +0.000000 rotate +0.000000 0.000000 m /P glyphshow +6.030273 0.000000 m /P glyphshow +12.060547 0.000000 m /M glyphshow +20.688477 0.000000 m /space glyphshow +23.867188 0.000000 m /C glyphshow +30.849609 0.000000 m /o glyphshow +36.967773 0.000000 m /n glyphshow +43.305664 0.000000 m /c glyphshow +48.803711 0.000000 m /e glyphshow +54.956055 0.000000 m /n glyphshow +61.293945 0.000000 m /t glyphshow +65.214844 0.000000 m /r glyphshow +69.326172 0.000000 m /a glyphshow +75.454102 0.000000 m /t glyphshow +79.375000 0.000000 m /i glyphshow +82.153320 0.000000 m /o glyphshow +88.271484 0.000000 m /n glyphshow +grestore +0.800 setlinewidth +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 174.911 o +grestore +gsave +56.000000 170.449781 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/zero glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 334.89 o +grestore +gsave +56.000000 330.929063 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/one glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 63.09 m +583.2 63.09 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 63.09 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 91.260953 m +583.2 91.260953 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 91.261 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 111.248562 m +583.2 111.248562 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 111.249 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 126.752157 m +583.2 126.752157 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 126.752 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 139.419515 m +583.2 139.419515 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 139.42 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 150.129615 m +583.2 150.129615 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 150.13 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 159.407125 m +583.2 159.407125 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 159.407 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 167.590468 m +583.2 167.590468 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 167.59 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 223.069281 m +583.2 223.069281 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 223.069 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 251.240234 m +583.2 251.240234 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 251.24 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 271.227843 m +583.2 271.227843 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 271.228 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 286.731438 m +583.2 286.731438 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 286.731 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 299.398797 m +583.2 299.398797 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 299.399 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 310.108896 m +583.2 310.108896 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 310.109 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 319.386406 m +583.2 319.386406 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 319.386 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 327.56975 m +583.2 327.56975 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 327.57 o +grestore +gsave +49.921875 184.677500 translate +90.000000 rotate +0.000000 0.000000 m /R glyphshow +6.948242 0.000000 m /s glyphshow +12.158203 0.000000 m /slash glyphshow +15.527344 0.000000 m /R glyphshow +22.475586 0.000000 m /o glyphshow +grestore +1.000 setlinewidth +2 setlinecap +0.122 0.467 0.706 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +491.075673 63.09 m +488.303418 91.260953 l +485.476719 111.248562 l +482.593393 126.752157 l +479.651126 139.419515 l +476.647457 150.129615 l +473.57977 159.407125 l +470.445275 167.590468 l +467.240999 174.910719 l +430.531564 223.069281 l +381.130864 251.240234 l +305.31519 271.227843 l +135.158532 286.731438 l +-1 286.736626 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +491.076 63.09 o +488.303 91.261 o +485.477 111.249 o +482.593 126.752 o +479.651 139.42 o +476.647 150.13 o +473.58 159.407 o +470.445 167.59 o +467.241 174.911 o +430.532 223.069 o +381.131 251.24 o +305.315 271.228 o +135.159 286.731 o +-1 286.737 o +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +339.576827 63.09 m +330.687862 91.260953 l +321.213605 111.248562 l +311.071512 126.752157 l +300.160245 139.419515 l +288.353489 150.129615 l +275.491013 159.407125 l +261.36531 167.590468 l +245.700965 174.910719 l +-1 174.946446 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +339.577 63.09 o +330.688 91.261 o +321.214 111.249 o +311.072 126.752 o +300.16 139.42 o +288.353 150.13 o +275.491 159.407 o +261.365 167.59 o +245.701 174.911 o +-1 174.946 o +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +381.518818 63.09 m +368.996398 91.260953 l +355.279815 111.248562 l +340.117075 126.752157 l +323.166901 139.419515 l +303.950852 150.129615 l +281.768267 159.407125 l +255.532995 167.590468 l +223.425677 174.910719 l +-1 174.943222 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +381.519 63.09 o +368.996 91.261 o +355.28 111.249 o +340.117 126.752 o +323.167 139.42 o +303.951 150.13 o +281.768 159.407 o +255.533 167.59 o +223.426 174.911 o +-1 174.943 o +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +560.372727 63.09 m +558.701198 91.260953 l +557.010029 111.248562 l +555.298753 126.752157 l +553.566886 139.419515 l +551.813928 150.129615 l +550.039357 159.407125 l +548.242634 167.590468 l +546.4232 174.910719 l +526.839544 223.069281 l +504.165384 251.240234 l +477.239135 271.227843 l +444.089228 286.731438 l +400.945678 299.398797 l +339.049184 310.108896 l +228.121343 319.386406 l +-1 319.392044 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +560.373 63.09 o +558.701 91.261 o +557.01 111.249 o +555.299 126.752 o +553.567 139.42 o +551.814 150.13 o +550.039 159.407 o +548.243 167.59 o +546.423 174.911 o +526.84 223.069 o +504.165 251.24 o +477.239 271.228 o +444.089 286.731 o +400.946 299.399 o +339.049 310.109 o +228.121 319.386 o +-1 319.392 o +grestore +2 setlinecap +0.580 0.404 0.741 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +415.061401 63.09 m +413.175941 91.260953 l +411.265455 111.248562 l +409.329269 126.752157 l +407.366683 139.419515 l +405.376966 150.129615 l +403.359358 159.407125 l +401.313067 167.590468 l +399.237263 174.910719 l +376.645029 223.069281 l +349.834333 251.240234 l +316.859656 271.227843 l +274.013336 286.731438 l +212.731522 299.398797 l +103.827273 310.108896 l +-1 310.111822 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.580 0.404 0.741 setrgbcolor +fill +grestore +stroke +grestore +} bind def +415.061 63.09 o +413.176 91.261 o +411.265 111.249 o +409.329 126.752 o +407.367 139.42 o +405.377 150.13 o +403.359 159.407 o +401.313 167.59 o +399.237 174.911 o +376.645 223.069 o +349.834 251.24 o +316.86 271.228 o +274.013 286.731 o +212.732 299.399 o +103.827 310.109 o +-1 310.112 o +grestore +0.800 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0.000 setgray +gsave +81 49.5 m +81 348.48 l +stroke +grestore +gsave +583.2 49.5 m +583.2 348.48 l +stroke +grestore +gsave +81 49.5 m +583.2 49.5 l +stroke +grestore +gsave +81 348.48 m +583.2 348.48 l +stroke +grestore +1.000 setlinewidth +0 setlinecap +0.800 setgray +gsave +507.7 267.120625 m +576.2 267.120625 l +577.533333 267.120625 578.2 267.787292 578.2 269.120625 c +578.2 341.48 l +578.2 342.813333 577.533333 343.48 576.2 343.48 c +507.7 343.48 l +506.366667 343.48 505.7 342.813333 505.7 341.48 c +505.7 269.120625 l +505.7 267.787292 506.366667 267.120625 507.7 267.120625 c +cl +gsave +1.000 setgray +fill +grestore +stroke +grestore +1 setlinejoin +2 setlinecap +[] 0 setdash +0.122 0.467 0.706 setrgbcolor +gsave +509.7 335.38625 m +529.7 335.38625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 335.386 o +grestore +0.000 setgray +gsave +537.700000 331.886250 translate +0.000000 rotate +0.000000 0.000000 m /H glyphshow +7.519531 0.000000 m /two glyphshow +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +509.7 320.714375 m +529.7 320.714375 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 320.714 o +grestore +0.000 setgray +gsave +537.700000 317.214375 translate +0.000000 rotate +0.000000 0.000000 m /L glyphshow +5.571289 0.000000 m /P glyphshow +11.601562 0.000000 m /G glyphshow +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +509.7 306.0425 m +529.7 306.0425 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 306.043 o +grestore +0.000 setgray +gsave +537.700000 302.542500 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /H glyphshow +14.501953 0.000000 m /four glyphshow +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +509.7 291.370625 m +529.7 291.370625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 291.371 o +grestore +0.000 setgray +gsave +537.700000 287.870625 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /O glyphshow +grestore +2 setlinecap +0.580 0.404 0.741 setrgbcolor +gsave +509.7 276.69875 m +529.7 276.69875 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.580 0.404 0.741 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 276.699 o +grestore +0.000 setgray +gsave +537.700000 273.198750 translate +0.000000 rotate +0.000000 0.000000 m /A glyphshow +6.840820 0.000000 m /l glyphshow +9.619141 0.000000 m /c glyphshow +15.117188 0.000000 m /o glyphshow +21.235352 0.000000 m /h glyphshow +27.573242 0.000000 m /o glyphshow +33.691406 0.000000 m /l glyphshow +grestore +/DejaVuSans findfont +12.000 scalefont +setfont +gsave +234.562500 378.955000 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +8.378906 0.000000 m /a glyphshow +15.732422 0.000000 m /l glyphshow +19.066406 0.000000 m /i glyphshow +22.400391 0.000000 m /b glyphshow +30.017578 0.000000 m /r glyphshow +34.951172 0.000000 m /a glyphshow +42.304688 0.000000 m /t glyphshow +47.009766 0.000000 m /i glyphshow +50.343750 0.000000 m /o glyphshow +57.685547 0.000000 m /n glyphshow +65.291016 0.000000 m /space glyphshow +69.105469 0.000000 m /p glyphshow +76.722656 0.000000 m /l glyphshow +80.056641 0.000000 m /o glyphshow +87.398438 0.000000 m /t glyphshow +92.103516 0.000000 m /space glyphshow +95.917969 0.000000 m /f glyphshow +100.142578 0.000000 m /o glyphshow +107.484375 0.000000 m /r glyphshow +112.417969 0.000000 m /space glyphshow +116.232422 0.000000 m /M glyphshow +126.585938 0.000000 m /Q glyphshow +136.031250 0.000000 m /hyphen glyphshow +140.361328 0.000000 m /six glyphshow +147.996094 0.000000 m /space glyphshow +151.810547 0.000000 m /d glyphshow +159.427734 0.000000 m /a glyphshow +166.781250 0.000000 m /t glyphshow +171.486328 0.000000 m /a glyphshow +grestore + +end +showpage diff --git a/Internal_design_documents/Experiments/MQ6.png b/Internal_design_documents/Experiments/MQ6.png new file mode 100644 index 0000000..8856f3d Binary files /dev/null and b/Internal_design_documents/Experiments/MQ6.png differ diff --git a/Internal_design_documents/Experiments/MQ6.svg b/Internal_design_documents/Experiments/MQ6.svg new file mode 100644 index 0000000..dc28fe1 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ6.svg @@ -0,0 +1,1537 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Internal_design_documents/Experiments/MQ6_Regression.ipynb b/Internal_design_documents/Experiments/MQ6_Regression.ipynb new file mode 100644 index 0000000..8aa6b08 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ6_Regression.ipynb @@ -0,0 +1,1903 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \t \t \n", + "0.2 \t \t \t \t \t \n", + "0.3 \t 5000.0 \t \t \t \t \n", + "0.4 \t \t \t 5000.0 \t \t \n", + "0.5 \t \t \t \t \t \n", + "0.6 \t \t \t \t \t \n", + "0.7 \t \t \t \t \t \n", + "0.8 \t \t \t \t \t \n", + "0.9 \t \t \t \t \t \n", + "1.0 \t 1000.0 \t \t 2000.0 \t \t \n", + "2.0 \t 200.0 \t 10000.0 \t \t \t \n", + "3.0 \t \t \t \t \t \n", + "4.0 \t \t 400.0 \t \t \t \n", + "5.0 \t \t \t \t \t 3000.0\n", + "6.0 \t \t 200.0 \t \t \t \n", + "7.0 \t \t \t \t 5000.0 \t 400.0\n", + "8.0 \t \t \t \t 1000.0 \t 200.0\n", + "9.0 \t \t \t \t 200.0 \t \n", + "10.0 \t \t \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, LPG, H2, CH4, CO, Alcohol = sheetMQ6.row_values(row_index, start_colx=0, end_colx=6)\n", + " print(RsR0, \"\t\", LPG, \"\t\", H2, \"\t\", CH4, \"\t\", CO, \"\t\", Alcohol)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ6 = sheetMQ6.col_values(0)[2:]\n", + "MQ6_LPG = sheetMQ6.col_values(1)[2:]\n", + "MQ6_H2 = sheetMQ6.col_values(2)[2:]\n", + "MQ6_CH4 = sheetMQ6.col_values(3)[2:]\n", + "MQ6_CO = sheetMQ6.col_values(4)[2:]\n", + "MQ6_Alcohol = sheetMQ6.col_values(5)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "MQ6_H2 =zero_to_nan(MQ6_H2)\n", + "MQ6_LPG =zero_to_nan(MQ6_LPG)\n", + "MQ6_CH4 =zero_to_nan(MQ6_CH4)\n", + "MQ6_CO =zero_to_nan(MQ6_CO)\n", + "MQ6_Alcohol =zero_to_nan(MQ6_Alcohol)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataH2 = {'RsRo': x_MQ6, 'H2': MQ6_H2}\n", + "dataLPG = {'RsRo': x_MQ6, 'LPG': MQ6_LPG}\n", + "dataCH4 = {'RsRo': x_MQ6, 'CH4': MQ6_CH4}\n", + "dataCO = {'RsRo': x_MQ6, 'CO': MQ6_CO}\n", + "dataALcohol = {'RsRo': x_MQ6, 'Alcohol': MQ6_Alcohol}\n", + "\n", + "dfMQ6_H2 = pd.DataFrame(dataH2)\n", + "dfMQ6_LPG = pd.DataFrame(dataLPG)\n", + "dfMQ6_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ6_CO = pd.DataFrame(dataCO)\n", + "dfMQ6_Alcohol = pd.DataFrame(dataALcohol)\n", + "\n", + "dfMQ6_H2['H2'] = pd.to_numeric(dfMQ6_H2['H2'])\n", + "dfMQ6_LPG['LPG'] = pd.to_numeric(dfMQ6_LPG['LPG'])\n", + "dfMQ6_CH4['CH4'] = pd.to_numeric(dfMQ6_CH4['CH4'])\n", + "dfMQ6_CO['CO'] = pd.to_numeric(dfMQ6_CO['CO'])\n", + "dfMQ6_Alcohol['Alcohol'] = pd.to_numeric(dfMQ6_Alcohol['Alcohol'])\n", + "\n", + "dfMQ6_H2['H2'] = dfMQ6_H2['H2'].replace('',None, regex=True)\n", + "dfMQ6_LPG['LPG'] = dfMQ6_LPG['LPG'].replace('',None, regex=True)\n", + "dfMQ6_CH4['CH4'] = dfMQ6_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ6_CO['CO'] = dfMQ6_CO['CO'].replace('',None, regex=True)\n", + "dfMQ6_Alcohol['Alcohol'] = dfMQ6_Alcohol['Alcohol'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ6_LPG.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train H2\n", + "dataset2TrainH2 = dfMQ6_H2.copy()\n", + "dataset2TrainH2.dropna(inplace=True)\n", + "X_trainH2 = dataset2TrainH2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainH2 = dataset2TrainH2['H2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainH2, y_trainH2)\n", + "#Predict\n", + "H2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ6_H2 = H2_Predicted\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train LPG\n", + "dataset2TrainLPG = dfMQ6_LPG.copy()\n", + "dataset2TrainLPG.dropna(inplace=True)\n", + "X_trainLPG = dataset2TrainLPG.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainLPG = dataset2TrainLPG['LPG'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainLPG, y_trainLPG)\n", + "#Predict\n", + "LPG_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ6_LPG = LPG_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CH4\n", + "dataset2TrainCH4 = dfMQ6_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ6_CH4 = CH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ6_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ6_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Alcohol\n", + "dataset2TrainAlcohol = dfMQ6_Alcohol.copy()\n", + "dataset2TrainAlcohol.dropna(inplace=True)\n", + "X_trainAlcohol = dataset2TrainAlcohol.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAlcohol = dataset2TrainAlcohol['Alcohol'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAlcohol, y_trainAlcohol)\n", + "#Predict\n", + "Alcohol_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ6_Alcohol = Alcohol_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ6_H2, x_MQ6, marker='o', linewidth=1, label='H2')\n", + "plt.plot(MQ6_LPG, x_MQ6, marker='o', linewidth=1, label='LPG')\n", + "plt.plot(MQ6_CH4, x_MQ6, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ6_CO, x_MQ6, marker='o', linewidth=1, label='CO')\n", + "plt.plot(MQ6_Alcohol, x_MQ6, marker='o', linewidth=1, label='Alcohol')\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-6 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ6.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ6.png')\n", + "plt.savefig('MQ6.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/MQ7.eps b/Internal_design_documents/Experiments/MQ7.eps new file mode 100644 index 0000000..21a2229 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ7.eps @@ -0,0 +1,3548 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: MQ7.eps +%%Creator: matplotlib version 3.0.3, http://matplotlib.org/ +%%CreationDate: Wed Jul 3 20:58:22 2019 +%%Orientation: portrait +%%BoundingBox: -18 198 630 594 +%%EndComments +%%BeginProlog +/mpldict 8 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/c { curveto } bind def +/cl { closepath } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +cl +} bind def +/clipbox { +box +clip +newpath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: DejaVu Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain +%%Creator: Converted from TrueType to type 3 by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-1021 -463 1793 1232]def +/FontType 3 def +/Encoding [ /space /hyphen /slash /zero /one /two /three /four /seven /A /C /G /H /L /M /O /P /Q /R /a /b /c /d /e /f /h /i /l /n /o /p /r /s /t /minus ] def +/FontInfo 10 dict dup begin +/FamilyName (DejaVu Sans) def +/FullName (DejaVu Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def +/Weight (Book) def +/Version (Version 2.35) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -130 def +/UnderlineThickness 90 def +end readonly def +/CharStrings 36 dict dup begin +/.notdef 0 def +/space{318 0 0 0 0 0 _sc +}_d +/hyphen{361 0 49 234 312 314 _sc +49 314 _m +312 314 _l +312 234 _l +49 234 _l +49 314 _l +_cl}_d +/slash{337 0 0 -92 337 729 _sc +254 729 _m +337 729 _l +83 -92 _l +0 -92 _l +254 729 _l +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/two{{636 0 73 0 536 742 _sc +192 83 _m +536 83 _l +536 0 _l +73 0 _l +73 83 _l +110 121 161 173 226 239 _c +290 304 331 346 348 365 _c +380 400 402 430 414 455 _c +426 479 433 504 433 528 _c +433 566 419 598 392 622 _c +365 646 330 659 286 659 _c +255 659 222 653 188 643 _c +154 632 117 616 78 594 _c +78 694 _l +118 710 155 722 189 730 _c +223 738 255 742 284 742 _c +}_e{359 742 419 723 464 685 _c +509 647 532 597 532 534 _c +532 504 526 475 515 449 _c +504 422 484 390 454 354 _c +446 344 420 317 376 272 _c +332 227 271 164 192 83 _c +_cl}_e}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +}_e{202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/four{636 0 49 0 580 729 _sc +378 643 _m +129 254 _l +378 254 _l +378 643 _l +352 729 _m +476 729 _l +476 254 _l +580 254 _l +580 172 _l +476 172 _l +476 0 _l +378 0 _l +378 172 _l +49 172 _l +49 267 _l +352 729 _l +_cl}_d +/seven{636 0 82 0 551 729 _sc +82 729 _m +551 729 _l +551 687 _l +286 0 _l +183 0 _l +432 646 _l +82 646 _l +82 729 _l +_cl}_d +/A{684 0 8 0 676 729 _sc +342 632 _m +208 269 _l +476 269 _l +342 632 _l +286 729 _m +398 729 _l +676 0 _l +573 0 _l +507 187 _l +178 187 _l +112 0 _l +8 0 _l +286 729 _l +_cl}_d +/C{{698 0 56 -13 644 742 _sc +644 673 _m +644 569 _l +610 599 575 622 537 638 _c +499 653 460 661 418 661 _c +334 661 270 635 226 584 _c +182 533 160 460 160 364 _c +160 268 182 194 226 143 _c +270 92 334 67 418 67 _c +460 67 499 74 537 90 _c +575 105 610 128 644 159 _c +644 56 _l +609 32 572 15 534 4 _c +496 -7 455 -13 412 -13 _c +302 -13 215 20 151 87 _c +}_e{87 154 56 246 56 364 _c +56 481 87 573 151 641 _c +215 708 302 742 412 742 _c +456 742 497 736 535 725 _c +573 713 610 696 644 673 _c +_cl}_e}_d +/G{{775 0 56 -13 693 742 _sc +595 104 _m +595 300 _l +434 300 _l +434 381 _l +693 381 _l +693 68 _l +655 40 613 20 567 7 _c +521 -6 472 -13 420 -13 _c +306 -13 216 20 152 86 _c +88 152 56 245 56 364 _c +56 482 88 575 152 642 _c +216 708 306 742 420 742 _c +467 742 512 736 555 724 _c +598 712 638 695 674 673 _c +674 568 _l +637 598 598 621 557 637 _c +516 653 473 661 428 661 _c +}_e{338 661 271 636 227 586 _c +182 536 160 462 160 364 _c +160 265 182 191 227 141 _c +271 91 338 67 428 67 _c +462 67 493 70 521 76 _c +549 82 573 91 595 104 _c +_cl}_e}_d +/H{752 0 98 0 654 729 _sc +98 729 _m +197 729 _l +197 430 _l +555 430 _l +555 729 _l +654 729 _l +654 0 _l +555 0 _l +555 347 _l +197 347 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/L{557 0 98 0 552 729 _sc +98 729 _m +197 729 _l +197 83 _l +552 83 _l +552 0 _l +98 0 _l +98 729 _l +_cl}_d +/M{863 0 98 0 765 729 _sc +98 729 _m +245 729 _l +431 233 _l +618 729 _l +765 729 _l +765 0 _l +669 0 _l +669 640 _l +481 140 _l +382 140 _l +194 640 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/O{787 0 56 -13 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +394 742 _m +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 248 700 157 639 89 _c +577 21 496 -13 394 -13 _c +291 -13 209 21 148 89 _c +86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +_cl}_d +/P{603 0 98 0 569 729 _sc +197 648 _m +197 374 _l +321 374 _l +367 374 402 385 427 409 _c +452 433 465 467 465 511 _c +465 555 452 588 427 612 _c +402 636 367 648 321 648 _c +197 648 _l +98 729 _m +321 729 _l +402 729 464 710 506 673 _c +548 636 569 582 569 511 _c +569 439 548 384 506 348 _c +464 311 402 293 321 293 _c +197 293 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/Q{{787 0 56 -128 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +532 13 _m +662 -128 _l +543 -128 _l +435 -11 _l +424 -11 416 -12 410 -12 _c +404 -12 399 -13 394 -13 _c +291 -13 209 21 148 89 _c +}_e{86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 279 714 206 680 146 _c +646 86 596 41 532 13 _c +_cl}_e}_d +/R{{695 0 98 0 666 729 _sc +444 342 _m +465 334 486 319 506 296 _c +526 272 546 240 566 199 _c +666 0 _l +560 0 _l +467 187 _l +443 235 419 268 397 284 _c +374 300 343 308 304 308 _c +197 308 _l +197 0 _l +98 0 _l +98 729 _l +321 729 _l +404 729 466 711 507 677 _c +548 642 569 589 569 519 _c +569 473 558 434 537 404 _c +515 374 484 353 444 342 _c +197 648 _m +197 389 _l +321 389 _l +}_e{368 389 404 400 428 422 _c +452 444 465 476 465 519 _c +465 561 452 593 428 615 _c +404 637 368 648 321 648 _c +197 648 _l +_cl}_e}_d +/a{{613 0 60 -13 522 560 _sc +343 275 _m +270 275 220 266 192 250 _c +164 233 150 205 150 165 _c +150 133 160 107 181 89 _c +202 70 231 61 267 61 _c +317 61 357 78 387 114 _c +417 149 432 196 432 255 _c +432 275 _l +343 275 _l +522 312 _m +522 0 _l +432 0 _l +432 83 _l +411 49 385 25 355 10 _c +325 -5 287 -13 243 -13 _c +187 -13 142 2 109 33 _c +76 64 60 106 60 159 _c +}_e{60 220 80 266 122 298 _c +163 329 224 345 306 345 _c +432 345 _l +432 354 _l +432 395 418 427 391 450 _c +364 472 326 484 277 484 _c +245 484 215 480 185 472 _c +155 464 127 453 100 439 _c +100 522 _l +132 534 164 544 195 550 _c +226 556 256 560 286 560 _c +365 560 424 539 463 498 _c +502 457 522 395 522 312 _c +_cl}_e}_d +/b{{635 0 91 -13 580 760 _sc +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +181 464 _m +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +}_e{580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 464 _l +_cl}_e}_d +/c{{550 0 55 -13 488 560 _sc +488 526 _m +488 442 _l +462 456 437 466 411 473 _c +385 480 360 484 334 484 _c +276 484 230 465 198 428 _c +166 391 150 339 150 273 _c +150 206 166 154 198 117 _c +230 80 276 62 334 62 _c +360 62 385 65 411 72 _c +437 79 462 90 488 104 _c +488 21 _l +462 9 436 0 410 -5 _c +383 -10 354 -13 324 -13 _c +242 -13 176 12 128 64 _c +}_e{79 115 55 185 55 273 _c +55 362 79 432 128 483 _c +177 534 244 560 330 560 _c +358 560 385 557 411 551 _c +437 545 463 537 488 526 _c +_cl}_e}_d +/d{{635 0 55 -13 544 760 _sc +454 464 _m +454 760 _l +544 760 _l +544 0 _l +454 0 _l +454 82 _l +435 49 411 25 382 10 _c +353 -5 319 -13 279 -13 _c +213 -13 159 13 117 65 _c +75 117 55 187 55 273 _c +55 359 75 428 117 481 _c +159 533 213 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +148 273 _m +148 207 161 155 188 117 _c +215 79 253 61 301 61 _c +}_e{348 61 385 79 413 117 _c +440 155 454 207 454 273 _c +454 339 440 390 413 428 _c +385 466 348 485 301 485 _c +253 485 215 466 188 428 _c +161 390 148 339 148 273 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +}_e{540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/f{352 0 23 0 371 760 _sc +371 760 _m +371 685 _l +285 685 _l +253 685 230 678 218 665 _c +205 652 199 629 199 595 _c +199 547 _l +347 547 _l +347 477 _l +199 477 _l +199 0 _l +109 0 _l +109 477 _l +23 477 _l +23 547 _l +109 547 _l +109 585 _l +109 645 123 690 151 718 _c +179 746 224 760 286 760 _c +371 760 _l +_cl}_d +/h{634 0 91 0 549 760 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/i{278 0 94 0 184 760 _sc +94 547 _m +184 547 _l +184 0 _l +94 0 _l +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/l{278 0 94 0 184 760 _sc +94 760 _m +184 760 _l +184 0 _l +94 0 _l +94 760 _l +_cl}_d +/n{634 0 91 0 549 560 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/o{612 0 55 -13 557 560 _sc +306 484 _m +258 484 220 465 192 427 _c +164 389 150 338 150 273 _c +150 207 163 156 191 118 _c +219 80 257 62 306 62 _c +354 62 392 80 420 118 _c +448 156 462 207 462 273 _c +462 337 448 389 420 427 _c +392 465 354 484 306 484 _c +306 560 _m +384 560 445 534 490 484 _c +534 433 557 363 557 273 _c +557 183 534 113 490 63 _c +445 12 384 -13 306 -13 _c +227 -13 165 12 121 63 _c +77 113 55 183 55 273 _c +55 363 77 433 121 484 _c +165 534 227 560 306 560 _c +_cl}_d +/p{{635 0 91 -207 580 560 _sc +181 82 _m +181 -207 _l +91 -207 _l +91 547 _l +181 547 _l +181 464 _l +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +}_e{286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +_cl}_e}_d +/r{411 0 91 0 411 560 _sc +411 463 _m +401 469 390 473 378 476 _c +366 478 353 480 339 480 _c +288 480 249 463 222 430 _c +194 397 181 350 181 288 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +199 495 224 520 254 536 _c +284 552 321 560 365 560 _c +371 560 378 559 386 559 _c +393 558 401 557 411 555 _c +411 463 _l +_cl}_d +/s{{521 0 54 -13 472 560 _sc +443 531 _m +443 446 _l +417 458 391 468 364 475 _c +336 481 308 485 279 485 _c +234 485 200 478 178 464 _c +156 450 145 430 145 403 _c +145 382 153 366 169 354 _c +185 342 217 330 265 320 _c +296 313 _l +360 299 405 279 432 255 _c +458 230 472 195 472 151 _c +472 100 452 60 412 31 _c +372 1 316 -13 246 -13 _c +216 -13 186 -10 154 -5 _c +}_e{122 0 89 8 54 20 _c +54 113 _l +87 95 120 82 152 74 _c +184 65 216 61 248 61 _c +290 61 323 68 346 82 _c +368 96 380 117 380 144 _c +380 168 371 187 355 200 _c +339 213 303 226 247 238 _c +216 245 _l +160 257 119 275 95 299 _c +70 323 58 356 58 399 _c +58 450 76 490 112 518 _c +148 546 200 560 268 560 _c +301 560 332 557 362 552 _c +391 547 418 540 443 531 _c +}_e{_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +/minus{838 0 106 272 732 355 _sc +106 355 _m +732 355 _l +732 272 _l +106 272 _l +106 355 _l +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +end +%%EndProlog +mpldict begin +-18 198 translate +648 396 0 0 clipbox +gsave +0 0 m +648 0 l +648 396 l +0 396 l +cl +1.000 setgray +fill +grestore +gsave +81 49.5 m +583.2 49.5 l +583.2 348.48 l +81 348.48 l +cl +1.000 setgray +fill +grestore +0.800 setlinewidth +1 setlinejoin +0 setlinecap +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +203.286 49.5 o +grestore +gsave +194.286318 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/two glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +385.384 49.5 o +grestore +gsave +376.383992 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/three glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +567.482 49.5 o +grestore +gsave +558.481666 34.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/four glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +108.071315 49.5 m +108.071315 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +108.071 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +130.822368 49.5 m +130.822368 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +130.822 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +148.469456 49.5 m +148.469456 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +148.469 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +162.888177 49.5 m +162.888177 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +162.888 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +175.079031 49.5 m +175.079031 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +175.079 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +185.63923 49.5 m +185.63923 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +185.639 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +194.953985 49.5 m +194.953985 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +194.954 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +258.10318 49.5 m +258.10318 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +258.103 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +290.168988 49.5 m +290.168988 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +290.169 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +312.920042 49.5 m +312.920042 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +312.92 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +330.56713 49.5 m +330.56713 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +330.567 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +344.98585 49.5 m +344.98585 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +344.986 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +357.176705 49.5 m +357.176705 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +357.177 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +367.736904 49.5 m +367.736904 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +367.737 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +377.051659 49.5 m +377.051659 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +377.052 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +440.200854 49.5 m +440.200854 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +440.201 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +472.266662 49.5 m +472.266662 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +472.267 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +495.017716 49.5 m +495.017716 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +495.018 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +512.664804 49.5 m +512.664804 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +512.665 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +527.083524 49.5 m +527.083524 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +527.084 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +539.274379 49.5 m +539.274379 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +539.274 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +549.834578 49.5 m +549.834578 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +549.835 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +559.149333 49.5 m +559.149333 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +559.149 49.5 o +grestore +/DejaVuSans findfont +10.000 scalefont +setfont +gsave +284.771875 19.906250 translate +0.000000 rotate +0.000000 0.000000 m /P glyphshow +6.030273 0.000000 m /P glyphshow +12.060547 0.000000 m /M glyphshow +20.688477 0.000000 m /space glyphshow +23.867188 0.000000 m /C glyphshow +30.849609 0.000000 m /o glyphshow +36.967773 0.000000 m /n glyphshow +43.305664 0.000000 m /c glyphshow +48.803711 0.000000 m /e glyphshow +54.956055 0.000000 m /n glyphshow +61.293945 0.000000 m /t glyphshow +65.214844 0.000000 m /r glyphshow +69.326172 0.000000 m /a glyphshow +75.454102 0.000000 m /t glyphshow +79.375000 0.000000 m /i glyphshow +82.153320 0.000000 m /o glyphshow +88.271484 0.000000 m /n glyphshow +grestore +0.800 setlinewidth +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 114.45 o +grestore +gsave +50.000000 110.489319 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/minus glyphshow + +18.685547 3.892188 moveto +/one glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 187.93 o +grestore +gsave +56.000000 183.469233 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/zero glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 261.41 o +grestore +gsave +56.000000 257.449148 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/one glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 334.89 o +grestore +gsave +56.000000 330.429062 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/two glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 63.09 m +583.2 63.09 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 63.09 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 76.029171 m +583.2 76.029171 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 76.0292 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 85.209658 m +583.2 85.209658 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 85.2097 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 92.330598 m +583.2 92.330598 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 92.3306 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 98.148829 m +583.2 98.148829 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 98.1488 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 103.068073 m +583.2 103.068073 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 103.068 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 107.329317 m +583.2 107.329317 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 107.329 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 111.088 m +583.2 111.088 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 111.088 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 136.569915 m +583.2 136.569915 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 136.57 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 149.509085 m +583.2 149.509085 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 149.509 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 158.689573 m +583.2 158.689573 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 158.69 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 165.810512 m +583.2 165.810512 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 165.811 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 171.628744 m +583.2 171.628744 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 171.629 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 176.547988 m +583.2 176.547988 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 176.548 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 180.809231 m +583.2 180.809231 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 180.809 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 184.567914 m +583.2 184.567914 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 184.568 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 210.049829 m +583.2 210.049829 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 210.05 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 222.989 m +583.2 222.989 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 222.989 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 232.169488 m +583.2 232.169488 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 232.169 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 239.290427 m +583.2 239.290427 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 239.29 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 245.108658 m +583.2 245.108658 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 245.109 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 250.027903 m +583.2 250.027903 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 250.028 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 254.289146 m +583.2 254.289146 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 254.289 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 258.047829 m +583.2 258.047829 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 258.048 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 283.529744 m +583.2 283.529744 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 283.53 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 296.468914 m +583.2 296.468914 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 296.469 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 305.649402 m +583.2 305.649402 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 305.649 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 312.770342 m +583.2 312.770342 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 312.77 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 318.588573 m +583.2 318.588573 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 318.589 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 323.507817 m +583.2 323.507817 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 323.508 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 327.769061 m +583.2 327.769061 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 327.769 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 331.527744 m +583.2 331.527744 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 331.528 o +grestore +gsave +43.921875 184.677500 translate +90.000000 rotate +0.000000 0.000000 m /R glyphshow +6.948242 0.000000 m /s glyphshow +12.158203 0.000000 m /slash glyphshow +15.527344 0.000000 m /R glyphshow +22.475586 0.000000 m /o glyphshow +grestore +1.000 setlinewidth +2 setlinecap +0.122 0.467 0.706 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +476.130148 63.09 m +474.981647 76.029171 l +473.816221 85.209658 l +472.633363 92.330598 l +471.432544 98.148829 l +470.213211 103.068073 l +468.974783 107.329317 l +467.716652 111.088 l +466.438182 114.450256 l +452.369174 136.569915 l +435.243773 149.509085 l +413.354621 158.689573 l +382.984938 165.810512 l +333.048536 171.628744 l +165.167284 176.547988 l +-1 176.55187 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +476.13 63.09 o +474.982 76.0292 o +473.816 85.2097 o +472.633 92.3306 o +471.433 98.1488 o +470.213 103.068 o +468.975 107.329 o +467.717 111.088 o +466.438 114.45 o +452.369 136.57 o +435.244 149.509 o +413.355 158.69 o +382.985 165.811 o +333.049 171.629 o +165.167 176.548 o +-1 176.552 o +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +560.372727 63.09 m +560.270694 76.029171 l +560.16853 85.209658 l +560.066233 92.330598 l +559.963803 98.148829 l +559.861241 103.068073 l +559.758546 107.329317 l +559.655717 111.088 l +559.552754 114.450256 l +558.515686 136.569915 l +557.464837 149.509085 l +556.399836 158.689573 l +555.320297 165.810512 l +554.225818 171.628744 l +553.115979 176.547988 l +551.990343 180.809231 l +550.848453 184.567914 l +549.689834 187.930171 l +537.06172 210.049829 l +522.026744 222.989 l +503.446176 232.169488 l +479.11441 239.290427 l +443.789114 245.108658 l +378.300809 250.027903 l +-1 250.036752 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +560.373 63.09 o +560.271 76.0292 o +560.169 85.2097 o +560.066 92.3306 o +559.964 98.1488 o +559.861 103.068 o +559.759 107.329 o +559.656 111.088 o +559.553 114.45 o +558.516 136.57 o +557.465 149.509 o +556.4 158.69 o +555.32 165.811 o +554.226 171.629 o +553.116 176.548 o +551.99 180.809 o +550.848 184.568 o +549.69 187.93 o +537.062 210.05 o +522.027 222.989 o +503.446 232.169 o +479.114 239.29 o +443.789 245.109 o +378.301 250.028 o +-1 250.037 o +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +541.771862 63.09 m +541.732545 76.029171 l +541.693208 85.209658 l +541.653852 92.330598 l +541.614476 98.148829 l +541.57508 103.068073 l +541.535665 107.329317 l +541.49623 111.088 l +541.456775 114.450256 l +541.061142 136.569915 l +540.66352 149.509085 l +540.263889 158.689573 l +539.862228 165.810512 l +539.458517 171.628744 l +539.052734 176.547988 l +538.644859 180.809231 l +538.234869 184.567914 l +537.822742 187.930171 l +533.578858 210.049829 l +529.094256 222.989 l +524.339977 232.169488 l +519.281502 239.290427 l +513.877225 245.108658 l +508.076377 250.027903 l +501.816113 254.289146 l +495.017356 258.047829 l +487.578674 261.410085 l +148.498208 283.529744 l +-1 283.540349 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +541.772 63.09 o +541.733 76.0292 o +541.693 85.2097 o +541.654 92.3306 o +541.614 98.1488 o +541.575 103.068 o +541.536 107.329 o +541.496 111.088 o +541.457 114.45 o +541.061 136.57 o +540.664 149.509 o +540.264 158.69 o +539.862 165.811 o +539.459 171.629 o +539.053 176.548 o +538.645 180.809 o +538.235 184.568 o +537.823 187.93 o +533.579 210.05 o +529.094 222.989 o +524.34 232.169 o +519.282 239.29 o +513.877 245.109 o +508.076 250.028 o +501.816 254.289 o +495.017 258.048 o +487.579 261.41 o +148.498 283.53 o +-1 283.54 o +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +458.221993 63.09 m +457.328455 76.029171 l +456.424705 85.209658 l +455.510508 92.330598 l +454.58562 98.148829 l +453.649787 103.068073 l +452.702746 107.329317 l +451.744228 111.088 l +450.773949 114.450256 l +440.354137 136.569915 l +428.350079 149.509085 l +414.192133 158.689573 l +396.934603 165.810512 l +374.828579 171.628744 l +344.037256 176.547988 l +292.925065 180.809231 l +103.827273 184.567914 l +-1 184.569847 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +458.222 63.09 o +457.328 76.0292 o +456.425 85.2097 o +455.511 92.3306 o +454.586 98.1488 o +453.65 103.068 o +452.703 107.329 o +451.744 111.088 o +450.774 114.45 o +440.354 136.57 o +428.35 149.509 o +414.192 158.69 o +396.935 165.811 o +374.829 171.629 o +344.037 176.548 o +292.925 180.809 o +103.827 184.568 o +-1 184.57 o +grestore +2 setlinecap +0.580 0.404 0.741 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +549.259529 63.09 m +549.220187 76.029171 l +549.180825 85.209658 l +549.141444 92.330598 l +549.102043 98.148829 l +549.062623 103.068073 l +549.023182 107.329317 l +548.983723 111.088 l +548.944243 114.450256 l +548.54836 136.569915 l +548.150485 149.509085 l +547.750598 158.689573 l +547.348678 165.810512 l +546.944706 171.628744 l +546.538659 176.547988 l +546.130517 180.809231 l +545.720258 184.567914 l +545.307859 187.930171 l +541.06109 210.049829 l +536.573266 222.989 l +531.815366 232.169488 l +526.75279 239.290427 l +521.343832 245.108658 l +515.53759 250.027903 l +509.271044 254.289146 l +502.464876 258.047829 l +495.01732 261.410085 l +148.501083 283.529744 l +-1 283.540349 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.580 0.404 0.741 setrgbcolor +fill +grestore +stroke +grestore +} bind def +549.26 63.09 o +549.22 76.0292 o +549.181 85.2097 o +549.141 92.3306 o +549.102 98.1488 o +549.063 103.068 o +549.023 107.329 o +548.984 111.088 o +548.944 114.45 o +548.548 136.57 o +548.15 149.509 o +547.751 158.69 o +547.349 165.811 o +546.945 171.629 o +546.539 176.548 o +546.131 180.809 o +545.72 184.568 o +545.308 187.93 o +541.061 210.05 o +536.573 222.989 o +531.815 232.169 o +526.753 239.29 o +521.344 245.109 o +515.538 250.028 o +509.271 254.289 o +502.465 258.048 o +495.017 261.41 o +148.501 283.53 o +-1 283.54 o +grestore +0.800 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0.000 setgray +gsave +81 49.5 m +81 348.48 l +stroke +grestore +gsave +583.2 49.5 m +583.2 348.48 l +stroke +grestore +gsave +81 49.5 m +583.2 49.5 l +stroke +grestore +gsave +81 348.48 m +583.2 348.48 l +stroke +grestore +1.000 setlinewidth +0 setlinecap +0.800 setgray +gsave +507.7 267.120625 m +576.2 267.120625 l +577.533333 267.120625 578.2 267.787292 578.2 269.120625 c +578.2 341.48 l +578.2 342.813333 577.533333 343.48 576.2 343.48 c +507.7 343.48 l +506.366667 343.48 505.7 342.813333 505.7 341.48 c +505.7 269.120625 l +505.7 267.787292 506.366667 267.120625 507.7 267.120625 c +cl +gsave +1.000 setgray +fill +grestore +stroke +grestore +1 setlinejoin +2 setlinecap +[] 0 setdash +0.122 0.467 0.706 setrgbcolor +gsave +509.7 335.38625 m +529.7 335.38625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 335.386 o +grestore +0.000 setgray +gsave +537.700000 331.886250 translate +0.000000 rotate +0.000000 0.000000 m /H glyphshow +7.519531 0.000000 m /two glyphshow +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +509.7 320.714375 m +529.7 320.714375 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 320.714 o +grestore +0.000 setgray +gsave +537.700000 317.214375 translate +0.000000 rotate +0.000000 0.000000 m /L glyphshow +5.571289 0.000000 m /P glyphshow +11.601562 0.000000 m /G glyphshow +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +509.7 306.0425 m +529.7 306.0425 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 306.043 o +grestore +0.000 setgray +gsave +537.700000 302.542500 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /H glyphshow +14.501953 0.000000 m /four glyphshow +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +509.7 291.370625 m +529.7 291.370625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 291.371 o +grestore +0.000 setgray +gsave +537.700000 287.870625 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /O glyphshow +grestore +2 setlinecap +0.580 0.404 0.741 setrgbcolor +gsave +509.7 276.69875 m +529.7 276.69875 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.580 0.404 0.741 setrgbcolor +fill +grestore +stroke +grestore +} bind def +519.7 276.699 o +grestore +0.000 setgray +gsave +537.700000 273.198750 translate +0.000000 rotate +0.000000 0.000000 m /A glyphshow +6.840820 0.000000 m /l glyphshow +9.619141 0.000000 m /c glyphshow +15.117188 0.000000 m /o glyphshow +21.235352 0.000000 m /h glyphshow +27.573242 0.000000 m /o glyphshow +33.691406 0.000000 m /l glyphshow +grestore +/DejaVuSans findfont +12.000 scalefont +setfont +gsave +234.562500 378.955000 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +8.378906 0.000000 m /a glyphshow +15.732422 0.000000 m /l glyphshow +19.066406 0.000000 m /i glyphshow +22.400391 0.000000 m /b glyphshow +30.017578 0.000000 m /r glyphshow +34.951172 0.000000 m /a glyphshow +42.304688 0.000000 m /t glyphshow +47.009766 0.000000 m /i glyphshow +50.343750 0.000000 m /o glyphshow +57.685547 0.000000 m /n glyphshow +65.291016 0.000000 m /space glyphshow +69.105469 0.000000 m /p glyphshow +76.722656 0.000000 m /l glyphshow +80.056641 0.000000 m /o glyphshow +87.398438 0.000000 m /t glyphshow +92.103516 0.000000 m /space glyphshow +95.917969 0.000000 m /f glyphshow +100.142578 0.000000 m /o glyphshow +107.484375 0.000000 m /r glyphshow +112.417969 0.000000 m /space glyphshow +116.232422 0.000000 m /M glyphshow +126.585938 0.000000 m /Q glyphshow +136.031250 0.000000 m /hyphen glyphshow +140.361328 0.000000 m /seven glyphshow +147.996094 0.000000 m /space glyphshow +151.810547 0.000000 m /d glyphshow +159.427734 0.000000 m /a glyphshow +166.781250 0.000000 m /t glyphshow +171.486328 0.000000 m /a glyphshow +grestore + +end +showpage diff --git a/Internal_design_documents/Experiments/MQ7.png b/Internal_design_documents/Experiments/MQ7.png new file mode 100644 index 0000000..0bf1ea9 Binary files /dev/null and b/Internal_design_documents/Experiments/MQ7.png differ diff --git a/Internal_design_documents/Experiments/MQ7.svg b/Internal_design_documents/Experiments/MQ7.svg new file mode 100644 index 0000000..969e25a --- /dev/null +++ b/Internal_design_documents/Experiments/MQ7.svg @@ -0,0 +1,2008 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Internal_design_documents/Experiments/MQ7_Regression.ipynb b/Internal_design_documents/Experiments/MQ7_Regression.ipynb new file mode 100644 index 0000000..a63cc80 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ7_Regression.ipynb @@ -0,0 +1,2374 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.01 \t \t \t \t \t \n", + "0.02 \t \t \t \t \t \n", + "0.03 \t \t \t \t \t \n", + "0.04 \t \t \t \t \t \n", + "0.05 \t \t 4000.0 \t \t \t \n", + "0.06 \t \t \t \t \t \n", + "0.07 \t \t \t \t \t \n", + "0.08 \t \t \t \t \t \n", + "0.09 \t \t \t \t 3000.0 \t \n", + "0.1 \t \t \t \t \t \n", + "0.2 \t \t \t \t \t \n", + "0.3 \t \t 400.0 \t \t \t \n", + "0.4 \t \t \t \t 400.0 \t \n", + "0.5 \t \t \t \t \t \n", + "0.6 \t \t \t \t \t \n", + "0.7 \t \t \t \t \t \n", + "0.8 \t \t 100.0 \t \t \t \n", + "0.9 \t \t \t \t \t \n", + "1.0 \t \t \t \t 100.0 \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, CO, H2, LPG, CH4, Alcohol = sheetMQ7.row_values(row_index, start_colx=0, end_colx=6)\n", + " print(RsR0, \"\t\", LPG, \"\t\", H2, \"\t\", CH4, \"\t\", CO, \"\t\", Alcohol)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ7 = sheetMQ7.col_values(0)[2:]\n", + "MQ7_CO = sheetMQ7.col_values(1)[2:]\n", + "MQ7_H2 = sheetMQ7.col_values(2)[2:]\n", + "MQ7_LPG = sheetMQ7.col_values(3)[2:]\n", + "MQ7_CH4 = sheetMQ7.col_values(4)[2:]\n", + "MQ7_Alcohol = sheetMQ7.col_values(5)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "MQ7_H2 =zero_to_nan(MQ7_H2)\n", + "MQ7_LPG =zero_to_nan(MQ7_LPG)\n", + "MQ7_CH4 =zero_to_nan(MQ7_CH4)\n", + "MQ7_CO =zero_to_nan(MQ7_CO)\n", + "MQ7_Alcohol =zero_to_nan(MQ7_Alcohol)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataH2 = {'RsRo': x_MQ7, 'H2': MQ7_H2}\n", + "dataLPG = {'RsRo': x_MQ7, 'LPG': MQ7_LPG}\n", + "dataCH4 = {'RsRo': x_MQ7, 'CH4': MQ7_CH4}\n", + "dataCO = {'RsRo': x_MQ7, 'CO': MQ7_CO}\n", + "dataALcohol = {'RsRo': x_MQ7, 'Alcohol': MQ7_Alcohol}\n", + "\n", + "dfMQ7_H2 = pd.DataFrame(dataH2)\n", + "dfMQ7_LPG = pd.DataFrame(dataLPG)\n", + "dfMQ7_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ7_CO = pd.DataFrame(dataCO)\n", + "dfMQ7_Alcohol = pd.DataFrame(dataALcohol)\n", + "\n", + "dfMQ7_H2['H2'] = pd.to_numeric(dfMQ7_H2['H2'])\n", + "dfMQ7_LPG['LPG'] = pd.to_numeric(dfMQ7_LPG['LPG'])\n", + "dfMQ7_CH4['CH4'] = pd.to_numeric(dfMQ7_CH4['CH4'])\n", + "dfMQ7_CO['CO'] = pd.to_numeric(dfMQ7_CO['CO'])\n", + "dfMQ7_Alcohol['Alcohol'] = pd.to_numeric(dfMQ7_Alcohol['Alcohol'])\n", + "\n", + "dfMQ7_H2['H2'] = dfMQ7_H2['H2'].replace('',None, regex=True)\n", + "dfMQ7_LPG['LPG'] = dfMQ7_LPG['LPG'].replace('',None, regex=True)\n", + "dfMQ7_CH4['CH4'] = dfMQ7_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ7_CO['CO'] = dfMQ7_CO['CO'].replace('',None, regex=True)\n", + "dfMQ7_Alcohol['Alcohol'] = dfMQ7_Alcohol['Alcohol'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ7_LPG.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train H2\n", + "dataset2TrainH2 = dfMQ7_H2.copy()\n", + "dataset2TrainH2.dropna(inplace=True)\n", + "X_trainH2 = dataset2TrainH2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainH2 = dataset2TrainH2['H2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainH2, y_trainH2)\n", + "#Predict\n", + "H2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ7_H2 = H2_Predicted\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train LPG\n", + "dataset2TrainLPG = dfMQ7_LPG.copy()\n", + "dataset2TrainLPG.dropna(inplace=True)\n", + "X_trainLPG = dataset2TrainLPG.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainLPG = dataset2TrainLPG['LPG'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainLPG, y_trainLPG)\n", + "#Predict\n", + "LPG_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ7_LPG = LPG_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CH4\n", + "dataset2TrainCH4 = dfMQ7_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ7_CH4 = CH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ7_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ7_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Alcohol\n", + "dataset2TrainAlcohol = dfMQ7_Alcohol.copy()\n", + "dataset2TrainAlcohol.dropna(inplace=True)\n", + "X_trainAlcohol = dataset2TrainAlcohol.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAlcohol = dataset2TrainAlcohol['Alcohol'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAlcohol, y_trainAlcohol)\n", + "#Predict\n", + "Alcohol_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ7_Alcohol = Alcohol_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ7_H2, x_MQ7, marker='o', linewidth=1, label='H2')\n", + "plt.plot(MQ7_LPG, x_MQ7, marker='o', linewidth=1, label='LPG')\n", + "plt.plot(MQ7_CH4, x_MQ7, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ7_CO, x_MQ7, marker='o', linewidth=1, label='CO')\n", + "plt.plot(MQ7_Alcohol, x_MQ7, marker='o', linewidth=1, label='Alcohol')\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-7 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ7.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ7.png')\n", + "plt.savefig('MQ7.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/MQ8.eps b/Internal_design_documents/Experiments/MQ8.eps new file mode 100644 index 0000000..55430d9 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ8.eps @@ -0,0 +1,3999 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: MQ8.eps +%%Creator: matplotlib version 3.0.3, http://matplotlib.org/ +%%CreationDate: Wed Jul 3 21:04:01 2019 +%%Orientation: portrait +%%BoundingBox: -18 198 630 594 +%%EndComments +%%BeginProlog +/mpldict 8 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/c { curveto } bind def +/cl { closepath } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +cl +} bind def +/clipbox { +box +clip +newpath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: DejaVu Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain +%%Creator: Converted from TrueType to type 3 by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-1021 -463 1793 1232]def +/FontType 3 def +/Encoding [ /space /hyphen /slash /zero /one /two /three /four /eight /A /C /G /H /L /M /O /P /Q /R /a /b /c /d /e /f /h /i /l /n /o /p /r /s /t /minus ] def +/FontInfo 10 dict dup begin +/FamilyName (DejaVu Sans) def +/FullName (DejaVu Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def +/Weight (Book) def +/Version (Version 2.35) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -130 def +/UnderlineThickness 90 def +end readonly def +/CharStrings 36 dict dup begin +/.notdef 0 def +/space{318 0 0 0 0 0 _sc +}_d +/hyphen{361 0 49 234 312 314 _sc +49 314 _m +312 314 _l +312 234 _l +49 234 _l +49 314 _l +_cl}_d +/slash{337 0 0 -92 337 729 _sc +254 729 _m +337 729 _l +83 -92 _l +0 -92 _l +254 729 _l +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/two{{636 0 73 0 536 742 _sc +192 83 _m +536 83 _l +536 0 _l +73 0 _l +73 83 _l +110 121 161 173 226 239 _c +290 304 331 346 348 365 _c +380 400 402 430 414 455 _c +426 479 433 504 433 528 _c +433 566 419 598 392 622 _c +365 646 330 659 286 659 _c +255 659 222 653 188 643 _c +154 632 117 616 78 594 _c +78 694 _l +118 710 155 722 189 730 _c +223 738 255 742 284 742 _c +}_e{359 742 419 723 464 685 _c +509 647 532 597 532 534 _c +532 504 526 475 515 449 _c +504 422 484 390 454 354 _c +446 344 420 317 376 272 _c +332 227 271 164 192 83 _c +_cl}_e}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +}_e{202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/four{636 0 49 0 580 729 _sc +378 643 _m +129 254 _l +378 254 _l +378 643 _l +352 729 _m +476 729 _l +476 254 _l +580 254 _l +580 172 _l +476 172 _l +476 0 _l +378 0 _l +378 172 _l +49 172 _l +49 267 _l +352 729 _l +_cl}_d +/eight{{636 0 68 -13 568 742 _sc +318 346 _m +271 346 234 333 207 308 _c +180 283 167 249 167 205 _c +167 161 180 126 207 101 _c +234 76 271 64 318 64 _c +364 64 401 76 428 102 _c +455 127 469 161 469 205 _c +469 249 455 283 429 308 _c +402 333 365 346 318 346 _c +219 388 _m +177 398 144 418 120 447 _c +96 476 85 511 85 553 _c +85 611 105 657 147 691 _c +188 725 245 742 318 742 _c +}_e{390 742 447 725 489 691 _c +530 657 551 611 551 553 _c +551 511 539 476 515 447 _c +491 418 459 398 417 388 _c +464 377 501 355 528 323 _c +554 291 568 251 568 205 _c +568 134 546 80 503 43 _c +459 5 398 -13 318 -13 _c +237 -13 175 5 132 43 _c +89 80 68 134 68 205 _c +68 251 81 291 108 323 _c +134 355 171 377 219 388 _c +183 544 _m +183 506 194 476 218 455 _c +}_e{242 434 275 424 318 424 _c +360 424 393 434 417 455 _c +441 476 453 506 453 544 _c +453 582 441 611 417 632 _c +393 653 360 664 318 664 _c +275 664 242 653 218 632 _c +194 611 183 582 183 544 _c +_cl}_e}_d +/A{684 0 8 0 676 729 _sc +342 632 _m +208 269 _l +476 269 _l +342 632 _l +286 729 _m +398 729 _l +676 0 _l +573 0 _l +507 187 _l +178 187 _l +112 0 _l +8 0 _l +286 729 _l +_cl}_d +/C{{698 0 56 -13 644 742 _sc +644 673 _m +644 569 _l +610 599 575 622 537 638 _c +499 653 460 661 418 661 _c +334 661 270 635 226 584 _c +182 533 160 460 160 364 _c +160 268 182 194 226 143 _c +270 92 334 67 418 67 _c +460 67 499 74 537 90 _c +575 105 610 128 644 159 _c +644 56 _l +609 32 572 15 534 4 _c +496 -7 455 -13 412 -13 _c +302 -13 215 20 151 87 _c +}_e{87 154 56 246 56 364 _c +56 481 87 573 151 641 _c +215 708 302 742 412 742 _c +456 742 497 736 535 725 _c +573 713 610 696 644 673 _c +_cl}_e}_d +/G{{775 0 56 -13 693 742 _sc +595 104 _m +595 300 _l +434 300 _l +434 381 _l +693 381 _l +693 68 _l +655 40 613 20 567 7 _c +521 -6 472 -13 420 -13 _c +306 -13 216 20 152 86 _c +88 152 56 245 56 364 _c +56 482 88 575 152 642 _c +216 708 306 742 420 742 _c +467 742 512 736 555 724 _c +598 712 638 695 674 673 _c +674 568 _l +637 598 598 621 557 637 _c +516 653 473 661 428 661 _c +}_e{338 661 271 636 227 586 _c +182 536 160 462 160 364 _c +160 265 182 191 227 141 _c +271 91 338 67 428 67 _c +462 67 493 70 521 76 _c +549 82 573 91 595 104 _c +_cl}_e}_d +/H{752 0 98 0 654 729 _sc +98 729 _m +197 729 _l +197 430 _l +555 430 _l +555 729 _l +654 729 _l +654 0 _l +555 0 _l +555 347 _l +197 347 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/L{557 0 98 0 552 729 _sc +98 729 _m +197 729 _l +197 83 _l +552 83 _l +552 0 _l +98 0 _l +98 729 _l +_cl}_d +/M{863 0 98 0 765 729 _sc +98 729 _m +245 729 _l +431 233 _l +618 729 _l +765 729 _l +765 0 _l +669 0 _l +669 640 _l +481 140 _l +382 140 _l +194 640 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/O{787 0 56 -13 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +394 742 _m +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 248 700 157 639 89 _c +577 21 496 -13 394 -13 _c +291 -13 209 21 148 89 _c +86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +_cl}_d +/P{603 0 98 0 569 729 _sc +197 648 _m +197 374 _l +321 374 _l +367 374 402 385 427 409 _c +452 433 465 467 465 511 _c +465 555 452 588 427 612 _c +402 636 367 648 321 648 _c +197 648 _l +98 729 _m +321 729 _l +402 729 464 710 506 673 _c +548 636 569 582 569 511 _c +569 439 548 384 506 348 _c +464 311 402 293 321 293 _c +197 293 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/Q{{787 0 56 -128 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +532 13 _m +662 -128 _l +543 -128 _l +435 -11 _l +424 -11 416 -12 410 -12 _c +404 -12 399 -13 394 -13 _c +291 -13 209 21 148 89 _c +}_e{86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 279 714 206 680 146 _c +646 86 596 41 532 13 _c +_cl}_e}_d +/R{{695 0 98 0 666 729 _sc +444 342 _m +465 334 486 319 506 296 _c +526 272 546 240 566 199 _c +666 0 _l +560 0 _l +467 187 _l +443 235 419 268 397 284 _c +374 300 343 308 304 308 _c +197 308 _l +197 0 _l +98 0 _l +98 729 _l +321 729 _l +404 729 466 711 507 677 _c +548 642 569 589 569 519 _c +569 473 558 434 537 404 _c +515 374 484 353 444 342 _c +197 648 _m +197 389 _l +321 389 _l +}_e{368 389 404 400 428 422 _c +452 444 465 476 465 519 _c +465 561 452 593 428 615 _c +404 637 368 648 321 648 _c +197 648 _l +_cl}_e}_d +/a{{613 0 60 -13 522 560 _sc +343 275 _m +270 275 220 266 192 250 _c +164 233 150 205 150 165 _c +150 133 160 107 181 89 _c +202 70 231 61 267 61 _c +317 61 357 78 387 114 _c +417 149 432 196 432 255 _c +432 275 _l +343 275 _l +522 312 _m +522 0 _l +432 0 _l +432 83 _l +411 49 385 25 355 10 _c +325 -5 287 -13 243 -13 _c +187 -13 142 2 109 33 _c +76 64 60 106 60 159 _c +}_e{60 220 80 266 122 298 _c +163 329 224 345 306 345 _c +432 345 _l +432 354 _l +432 395 418 427 391 450 _c +364 472 326 484 277 484 _c +245 484 215 480 185 472 _c +155 464 127 453 100 439 _c +100 522 _l +132 534 164 544 195 550 _c +226 556 256 560 286 560 _c +365 560 424 539 463 498 _c +502 457 522 395 522 312 _c +_cl}_e}_d +/b{{635 0 91 -13 580 760 _sc +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +181 464 _m +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +}_e{580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 464 _l +_cl}_e}_d +/c{{550 0 55 -13 488 560 _sc +488 526 _m +488 442 _l +462 456 437 466 411 473 _c +385 480 360 484 334 484 _c +276 484 230 465 198 428 _c +166 391 150 339 150 273 _c +150 206 166 154 198 117 _c +230 80 276 62 334 62 _c +360 62 385 65 411 72 _c +437 79 462 90 488 104 _c +488 21 _l +462 9 436 0 410 -5 _c +383 -10 354 -13 324 -13 _c +242 -13 176 12 128 64 _c +}_e{79 115 55 185 55 273 _c +55 362 79 432 128 483 _c +177 534 244 560 330 560 _c +358 560 385 557 411 551 _c +437 545 463 537 488 526 _c +_cl}_e}_d +/d{{635 0 55 -13 544 760 _sc +454 464 _m +454 760 _l +544 760 _l +544 0 _l +454 0 _l +454 82 _l +435 49 411 25 382 10 _c +353 -5 319 -13 279 -13 _c +213 -13 159 13 117 65 _c +75 117 55 187 55 273 _c +55 359 75 428 117 481 _c +159 533 213 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +148 273 _m +148 207 161 155 188 117 _c +215 79 253 61 301 61 _c +}_e{348 61 385 79 413 117 _c +440 155 454 207 454 273 _c +454 339 440 390 413 428 _c +385 466 348 485 301 485 _c +253 485 215 466 188 428 _c +161 390 148 339 148 273 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +}_e{540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/f{352 0 23 0 371 760 _sc +371 760 _m +371 685 _l +285 685 _l +253 685 230 678 218 665 _c +205 652 199 629 199 595 _c +199 547 _l +347 547 _l +347 477 _l +199 477 _l +199 0 _l +109 0 _l +109 477 _l +23 477 _l +23 547 _l +109 547 _l +109 585 _l +109 645 123 690 151 718 _c +179 746 224 760 286 760 _c +371 760 _l +_cl}_d +/h{634 0 91 0 549 760 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/i{278 0 94 0 184 760 _sc +94 547 _m +184 547 _l +184 0 _l +94 0 _l +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/l{278 0 94 0 184 760 _sc +94 760 _m +184 760 _l +184 0 _l +94 0 _l +94 760 _l +_cl}_d +/n{634 0 91 0 549 560 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/o{612 0 55 -13 557 560 _sc +306 484 _m +258 484 220 465 192 427 _c +164 389 150 338 150 273 _c +150 207 163 156 191 118 _c +219 80 257 62 306 62 _c +354 62 392 80 420 118 _c +448 156 462 207 462 273 _c +462 337 448 389 420 427 _c +392 465 354 484 306 484 _c +306 560 _m +384 560 445 534 490 484 _c +534 433 557 363 557 273 _c +557 183 534 113 490 63 _c +445 12 384 -13 306 -13 _c +227 -13 165 12 121 63 _c +77 113 55 183 55 273 _c +55 363 77 433 121 484 _c +165 534 227 560 306 560 _c +_cl}_d +/p{{635 0 91 -207 580 560 _sc +181 82 _m +181 -207 _l +91 -207 _l +91 547 _l +181 547 _l +181 464 _l +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +}_e{286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +_cl}_e}_d +/r{411 0 91 0 411 560 _sc +411 463 _m +401 469 390 473 378 476 _c +366 478 353 480 339 480 _c +288 480 249 463 222 430 _c +194 397 181 350 181 288 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +199 495 224 520 254 536 _c +284 552 321 560 365 560 _c +371 560 378 559 386 559 _c +393 558 401 557 411 555 _c +411 463 _l +_cl}_d +/s{{521 0 54 -13 472 560 _sc +443 531 _m +443 446 _l +417 458 391 468 364 475 _c +336 481 308 485 279 485 _c +234 485 200 478 178 464 _c +156 450 145 430 145 403 _c +145 382 153 366 169 354 _c +185 342 217 330 265 320 _c +296 313 _l +360 299 405 279 432 255 _c +458 230 472 195 472 151 _c +472 100 452 60 412 31 _c +372 1 316 -13 246 -13 _c +216 -13 186 -10 154 -5 _c +}_e{122 0 89 8 54 20 _c +54 113 _l +87 95 120 82 152 74 _c +184 65 216 61 248 61 _c +290 61 323 68 346 82 _c +368 96 380 117 380 144 _c +380 168 371 187 355 200 _c +339 213 303 226 247 238 _c +216 245 _l +160 257 119 275 95 299 _c +70 323 58 356 58 399 _c +58 450 76 490 112 518 _c +148 546 200 560 268 560 _c +301 560 332 557 362 552 _c +391 547 418 540 443 531 _c +}_e{_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +/minus{838 0 106 272 732 355 _sc +106 355 _m +732 355 _l +732 272 _l +106 272 _l +106 355 _l +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +end +%%EndProlog +mpldict begin +-18 198 translate +648 396 0 0 clipbox +gsave +0 0 m +648 0 l +648 396 l +0 396 l +cl +1.000 setgray +fill +grestore +gsave +81 49.5 m +583.2 49.5 l +583.2 348.48 l +81 348.48 l +cl +1.000 setgray +fill +grestore +0.800 setlinewidth +1 setlinejoin +0 setlinecap +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +145.713 49.5 o +grestore +gsave +136.713016 34.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/one glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +268.613 49.5 o +grestore +gsave +259.613165 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/two glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +391.513 49.5 o +grestore +gsave +382.513315 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/three glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +514.413 49.5 o +grestore +gsave +505.413464 34.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/four glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81.45114 49.5 m +81.45114 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81.4511 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +96.80613 49.5 m +96.80613 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +96.8061 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +108.716385 49.5 m +108.716385 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +108.716 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +118.447772 49.5 m +118.447772 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +118.448 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +126.675542 49.5 m +126.675542 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +126.676 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +133.802761 49.5 m +133.802761 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +133.803 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +140.089414 49.5 m +140.089414 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +140.089 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +182.709648 49.5 m +182.709648 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +182.71 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +204.35129 49.5 m +204.35129 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +204.351 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +219.706279 49.5 m +219.706279 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +219.706 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +231.616534 49.5 m +231.616534 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +231.617 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +241.347921 49.5 m +241.347921 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +241.348 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +249.575691 49.5 m +249.575691 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +249.576 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +256.70291 49.5 m +256.70291 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +256.703 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +262.989563 49.5 m +262.989563 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +262.99 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +305.609797 49.5 m +305.609797 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +305.61 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +327.251439 49.5 m +327.251439 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +327.251 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +342.606428 49.5 m +342.606428 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +342.606 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +354.516683 49.5 m +354.516683 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +354.517 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +364.24807 49.5 m +364.24807 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +364.248 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +372.475841 49.5 m +372.475841 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +372.476 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +379.60306 49.5 m +379.60306 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +379.603 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +385.889712 49.5 m +385.889712 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +385.89 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +428.509946 49.5 m +428.509946 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +428.51 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +450.151588 49.5 m +450.151588 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +450.152 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +465.506578 49.5 m +465.506578 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +465.507 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +477.416833 49.5 m +477.416833 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +477.417 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +487.14822 49.5 m +487.14822 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +487.148 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +495.37599 49.5 m +495.37599 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +495.376 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +502.503209 49.5 m +502.503209 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +502.503 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +508.789862 49.5 m +508.789862 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +508.79 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +551.410096 49.5 m +551.410096 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +551.41 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +573.051738 49.5 m +573.051738 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +573.052 49.5 o +grestore +/DejaVuSans findfont +10.000 scalefont +setfont +gsave +284.771875 19.906250 translate +0.000000 rotate +0.000000 0.000000 m /P glyphshow +6.030273 0.000000 m /P glyphshow +12.060547 0.000000 m /M glyphshow +20.688477 0.000000 m /space glyphshow +23.867188 0.000000 m /C glyphshow +30.849609 0.000000 m /o glyphshow +36.967773 0.000000 m /n glyphshow +43.305664 0.000000 m /c glyphshow +48.803711 0.000000 m /e glyphshow +54.956055 0.000000 m /n glyphshow +61.293945 0.000000 m /t glyphshow +65.214844 0.000000 m /r glyphshow +69.326172 0.000000 m /a glyphshow +75.454102 0.000000 m /t glyphshow +79.375000 0.000000 m /i glyphshow +82.153320 0.000000 m /o glyphshow +88.271484 0.000000 m /n glyphshow +grestore +0.800 setlinewidth +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 114.45 o +grestore +gsave +50.000000 110.489319 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/minus glyphshow + +18.685547 3.892188 moveto +/one glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 187.93 o +grestore +gsave +56.000000 183.469233 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/zero glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 261.41 o +grestore +gsave +56.000000 257.449148 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/one glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 334.89 o +grestore +gsave +56.000000 330.429062 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/two glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 63.09 m +583.2 63.09 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 63.09 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 76.029171 m +583.2 76.029171 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 76.0292 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 85.209658 m +583.2 85.209658 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 85.2097 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 92.330598 m +583.2 92.330598 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 92.3306 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 98.148829 m +583.2 98.148829 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 98.1488 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 103.068073 m +583.2 103.068073 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 103.068 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 107.329317 m +583.2 107.329317 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 107.329 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 111.088 m +583.2 111.088 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 111.088 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 136.569915 m +583.2 136.569915 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 136.57 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 149.509085 m +583.2 149.509085 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 149.509 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 158.689573 m +583.2 158.689573 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 158.69 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 165.810512 m +583.2 165.810512 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 165.811 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 171.628744 m +583.2 171.628744 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 171.629 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 176.547988 m +583.2 176.547988 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 176.548 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 180.809231 m +583.2 180.809231 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 180.809 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 184.567914 m +583.2 184.567914 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 184.568 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 210.049829 m +583.2 210.049829 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 210.05 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 222.989 m +583.2 222.989 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 222.989 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 232.169488 m +583.2 232.169488 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 232.169 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 239.290427 m +583.2 239.290427 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 239.29 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 245.108658 m +583.2 245.108658 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 245.109 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 250.027903 m +583.2 250.027903 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 250.028 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 254.289146 m +583.2 254.289146 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 254.289 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 258.047829 m +583.2 258.047829 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 258.048 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 283.529744 m +583.2 283.529744 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 283.53 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 296.468914 m +583.2 296.468914 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 296.469 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 305.649402 m +583.2 305.649402 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 305.649 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 312.770342 m +583.2 312.770342 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 312.77 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 318.588573 m +583.2 318.588573 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 318.589 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 323.507817 m +583.2 323.507817 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 323.508 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 327.769061 m +583.2 327.769061 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 327.769 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 331.527744 m +583.2 331.527744 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 331.528 o +grestore +gsave +43.921875 184.677500 translate +90.000000 rotate +0.000000 0.000000 m /R glyphshow +6.948242 0.000000 m /s glyphshow +12.158203 0.000000 m /slash glyphshow +15.527344 0.000000 m /R glyphshow +22.475586 0.000000 m /o glyphshow +grestore +1.000 setlinewidth +2 setlinecap +0.122 0.467 0.706 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +455.104786 63.09 m +455.045398 76.029171 l +454.985943 85.209658 l +454.926423 92.330598 l +454.866836 98.148829 l +454.807182 103.068073 l +454.747462 107.329317 l +454.687674 111.088 l +454.62782 114.450256 l +454.025556 136.569915 l +453.416419 149.509085 l +452.800249 158.689573 l +452.176884 165.810512 l +451.546152 171.628744 l +450.907877 176.547988 l +450.261877 180.809231 l +449.607963 184.567914 l +448.945937 187.930171 l +441.830578 210.049829 l +433.618616 222.989 l +423.909353 232.169488 l +412.032267 239.290427 l +396.732514 245.108658 l +375.201173 250.027903 l +338.534084 254.289146 l +103.827273 258.047829 l +-1 258.050695 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +455.105 63.09 o +455.045 76.0292 o +454.986 85.2097 o +454.926 92.3306 o +454.867 98.1488 o +454.807 103.068 o +454.747 107.329 o +454.688 111.088 o +454.628 114.45 o +454.026 136.57 o +453.416 149.509 o +452.8 158.69 o +452.177 165.811 o +451.546 171.629 o +450.908 176.548 o +450.262 180.809 o +449.608 184.568 o +448.946 187.93 o +441.831 210.05 o +433.619 222.989 o +423.909 232.169 o +412.032 239.29 o +396.733 245.109 o +375.201 250.028 o +338.534 254.289 o +103.827 258.048 o +-1 258.051 o +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +428.475243 63.09 m +428.459219 76.029171 l +428.44319 85.209658 l +428.427156 92.330598 l +428.411118 98.148829 l +428.395074 103.068073 l +428.379026 107.329317 l +428.362973 111.088 l +428.346915 114.450256 l +428.186069 136.569915 l +428.024737 149.509085 l +427.862916 158.689573 l +427.700603 165.810512 l +427.537794 171.628744 l +427.374488 176.547988 l +427.21068 180.809231 l +427.046368 184.567914 l +426.881549 187.930171 l +425.204743 210.049829 l +423.473546 222.989 l +421.684311 232.169488 l +419.83301 239.290427 l +417.915182 245.108658 l +415.925868 250.027903 l +413.859531 254.289146 l +411.709966 258.047829 l +409.470185 261.410085 l +379.601725 283.529744 l +305.615134 296.468914 l +-1 296.491766 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +428.475 63.09 o +428.459 76.0292 o +428.443 85.2097 o +428.427 92.3306 o +428.411 98.1488 o +428.395 103.068 o +428.379 107.329 o +428.363 111.088 o +428.347 114.45 o +428.186 136.57 o +428.025 149.509 o +427.863 158.69 o +427.701 165.811 o +427.538 171.629 o +427.374 176.548 o +427.211 180.809 o +427.046 184.568 o +426.882 187.93 o +425.205 210.05 o +423.474 222.989 o +421.684 232.169 o +419.833 239.29 o +417.915 245.109 o +415.926 250.028 o +413.86 254.289 o +411.71 258.048 o +409.47 261.41 o +379.602 283.53 o +305.615 296.469 o +-1 296.492 o +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +560.372727 63.09 m +560.361671 76.029171 l +560.350612 85.209658 l +560.339551 92.330598 l +560.328487 98.148829 l +560.317422 103.068073 l +560.306353 107.329317 l +560.295283 111.088 l +560.284211 114.450256 l +560.173358 136.569915 l +560.062274 149.509085 l +559.950959 158.689573 l +559.839411 165.810512 l +559.72763 171.628744 l +559.615614 176.547988 l +559.503363 180.809231 l +559.390874 184.567914 l +559.278149 187.930171 l +558.137601 210.049829 l +556.972148 222.989 l +555.780678 232.169488 l +554.562003 239.290427 l +553.314851 245.108658 l +552.03786 250.027903 l +550.729566 254.289146 l +549.388397 258.047829 l +548.012656 261.410085 l +531.861738 283.529744 l +508.591721 296.468914 l +466.388827 305.649402 l +-1 305.676386 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +560.373 63.09 o +560.362 76.0292 o +560.351 85.2097 o +560.34 92.3306 o +560.328 98.1488 o +560.317 103.068 o +560.306 107.329 o +560.295 111.088 o +560.284 114.45 o +560.173 136.57 o +560.062 149.509 o +559.951 158.69 o +559.839 165.811 o +559.728 171.629 o +559.616 176.548 o +559.503 180.809 o +559.391 184.568 o +559.278 187.93 o +558.138 210.05 o +556.972 222.989 o +555.781 232.169 o +554.562 239.29 o +553.315 245.109 o +552.038 250.028 o +550.73 254.289 o +549.388 258.048 o +548.013 261.41 o +531.862 283.53 o +508.592 296.469 o +466.389 305.649 o +-1 305.676 o +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +552.451267 63.09 m +552.443415 76.029171 l +552.435562 85.209658 l +552.427708 92.330598 l +552.419852 98.148829 l +552.411995 103.068073 l +552.404137 107.329317 l +552.396278 111.088 l +552.388418 114.450256 l +552.309752 136.569915 l +552.23097 149.509085 l +552.152072 158.689573 l +552.073056 165.810512 l +551.993924 171.628744 l +551.914674 176.547988 l +551.835306 180.809231 l +551.75582 184.567914 l +551.676216 187.930171 l +550.873571 210.049829 l +550.058673 222.989 l +549.231139 232.169488 l +548.390573 239.290427 l +547.536558 245.108658 l +546.668655 250.027903 l +545.786407 254.289146 l +544.88933 258.047829 l +543.976917 261.410085 l +533.876159 283.529744 l +521.407009 296.468914 l +505.107323 305.649402 l +481.524596 312.770342 l +438.241428 318.588573 l +-1 318.606095 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +552.451 63.09 o +552.443 76.0292 o +552.436 85.2097 o +552.428 92.3306 o +552.42 98.1488 o +552.412 103.068 o +552.404 107.329 o +552.396 111.088 o +552.388 114.45 o +552.31 136.57 o +552.231 149.509 o +552.152 158.69 o +552.073 165.811 o +551.994 171.629 o +551.915 176.548 o +551.835 180.809 o +551.756 184.568 o +551.676 187.93 o +550.874 210.05 o +550.059 222.989 o +549.231 232.169 o +548.391 239.29 o +547.537 245.109 o +546.669 250.028 o +545.786 254.289 o +544.889 258.048 o +543.977 261.41 o +533.876 283.53 o +521.407 296.469 o +505.107 305.649 o +481.525 312.77 o +438.241 318.589 o +-1 318.606 o +grestore +2 setlinecap +0.580 0.404 0.741 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +497.761007 63.09 m +497.712375 76.029171 l +497.663698 85.209658 l +497.614976 92.330598 l +497.56621 98.148829 l +497.5174 103.068073 l +497.468544 107.329317 l +497.419644 111.088 l +497.3707 114.450256 l +496.878766 136.569915 l +496.382257 149.509085 l +495.881086 158.689573 l +495.375164 165.810512 l +494.864401 171.628744 l +494.348703 176.547988 l +493.827973 180.809231 l +493.302114 184.567914 l +492.771021 187.930171 l +487.147478 210.049829 l +480.8609 222.989 l +473.733776 232.169488 l +465.506133 239.290427 l +455.774924 245.108658 l +443.864936 250.027903 l +428.510391 254.289146 l +406.869639 258.047829 l +369.875676 261.410085 l +-1 261.476648 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.580 0.404 0.741 setrgbcolor +fill +grestore +stroke +grestore +} bind def +497.761 63.09 o +497.712 76.0292 o +497.664 85.2097 o +497.615 92.3306 o +497.566 98.1488 o +497.517 103.068 o +497.469 107.329 o +497.42 111.088 o +497.371 114.45 o +496.879 136.57 o +496.382 149.509 o +495.881 158.69 o +495.375 165.811 o +494.864 171.629 o +494.349 176.548 o +493.828 180.809 o +493.302 184.568 o +492.771 187.93 o +487.147 210.05 o +480.861 222.989 o +473.734 232.169 o +465.506 239.29 o +455.775 245.109 o +443.865 250.028 o +428.51 254.289 o +406.87 258.048 o +369.876 261.41 o +-1 261.477 o +grestore +0.800 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0.000 setgray +gsave +81 49.5 m +81 348.48 l +stroke +grestore +gsave +583.2 49.5 m +583.2 348.48 l +stroke +grestore +gsave +81 49.5 m +583.2 49.5 l +stroke +grestore +gsave +81 348.48 m +583.2 348.48 l +stroke +grestore +1.000 setlinewidth +0 setlinecap +0.800 setgray +gsave +88 54.5 m +156.5 54.5 l +157.833333 54.5 158.5 55.166667 158.5 56.5 c +158.5 128.859375 l +158.5 130.192708 157.833333 130.859375 156.5 130.859375 c +88 130.859375 l +86.666667 130.859375 86 130.192708 86 128.859375 c +86 56.5 l +86 55.166667 86.666667 54.5 88 54.5 c +cl +gsave +1.000 setgray +fill +grestore +stroke +grestore +1 setlinejoin +2 setlinecap +[] 0 setdash +0.122 0.467 0.706 setrgbcolor +gsave +90 122.765625 m +110 122.765625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +100 122.766 o +grestore +0.000 setgray +gsave +118.000000 119.265625 translate +0.000000 rotate +0.000000 0.000000 m /H glyphshow +7.519531 0.000000 m /two glyphshow +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +90 108.09375 m +110 108.09375 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +100 108.094 o +grestore +0.000 setgray +gsave +118.000000 104.593750 translate +0.000000 rotate +0.000000 0.000000 m /L glyphshow +5.571289 0.000000 m /P glyphshow +11.601562 0.000000 m /G glyphshow +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +90 93.421875 m +110 93.421875 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +100 93.4219 o +grestore +0.000 setgray +gsave +118.000000 89.921875 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /H glyphshow +14.501953 0.000000 m /four glyphshow +grestore +2 setlinecap +0.839 0.153 0.157 setrgbcolor +gsave +90 78.75 m +110 78.75 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.839 0.153 0.157 setrgbcolor +fill +grestore +stroke +grestore +} bind def +100 78.75 o +grestore +0.000 setgray +gsave +118.000000 75.250000 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /O glyphshow +grestore +2 setlinecap +0.580 0.404 0.741 setrgbcolor +gsave +90 64.078125 m +110 64.078125 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.580 0.404 0.741 setrgbcolor +fill +grestore +stroke +grestore +} bind def +100 64.0781 o +grestore +0.000 setgray +gsave +118.000000 60.578125 translate +0.000000 rotate +0.000000 0.000000 m /A glyphshow +6.840820 0.000000 m /l glyphshow +9.619141 0.000000 m /c glyphshow +15.117188 0.000000 m /o glyphshow +21.235352 0.000000 m /h glyphshow +27.573242 0.000000 m /o glyphshow +33.691406 0.000000 m /l glyphshow +grestore +/DejaVuSans findfont +12.000 scalefont +setfont +gsave +234.562500 378.955000 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +8.378906 0.000000 m /a glyphshow +15.732422 0.000000 m /l glyphshow +19.066406 0.000000 m /i glyphshow +22.400391 0.000000 m /b glyphshow +30.017578 0.000000 m /r glyphshow +34.951172 0.000000 m /a glyphshow +42.304688 0.000000 m /t glyphshow +47.009766 0.000000 m /i glyphshow +50.343750 0.000000 m /o glyphshow +57.685547 0.000000 m /n glyphshow +65.291016 0.000000 m /space glyphshow +69.105469 0.000000 m /p glyphshow +76.722656 0.000000 m /l glyphshow +80.056641 0.000000 m /o glyphshow +87.398438 0.000000 m /t glyphshow +92.103516 0.000000 m /space glyphshow +95.917969 0.000000 m /f glyphshow +100.142578 0.000000 m /o glyphshow +107.484375 0.000000 m /r glyphshow +112.417969 0.000000 m /space glyphshow +116.232422 0.000000 m /M glyphshow +126.585938 0.000000 m /Q glyphshow +136.031250 0.000000 m /hyphen glyphshow +140.361328 0.000000 m /eight glyphshow +147.996094 0.000000 m /space glyphshow +151.810547 0.000000 m /d glyphshow +159.427734 0.000000 m /a glyphshow +166.781250 0.000000 m /t glyphshow +171.486328 0.000000 m /a glyphshow +grestore + +end +showpage diff --git a/Internal_design_documents/Experiments/MQ8.png b/Internal_design_documents/Experiments/MQ8.png new file mode 100644 index 0000000..4bbdf30 Binary files /dev/null and b/Internal_design_documents/Experiments/MQ8.png differ diff --git a/Internal_design_documents/Experiments/MQ8.svg b/Internal_design_documents/Experiments/MQ8.svg new file mode 100644 index 0000000..88d68d7 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ8.svg @@ -0,0 +1,2239 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Internal_design_documents/Experiments/MQ8_Regression.ipynb b/Internal_design_documents/Experiments/MQ8_Regression.ipynb new file mode 100644 index 0000000..03be25a --- /dev/null +++ b/Internal_design_documents/Experiments/MQ8_Regression.ipynb @@ -0,0 +1,2605 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.01 \t \t \t \t \t \n", + "0.02 \t \t \t \t \t \n", + "0.03 \t \t \t \t \t \n", + "0.04 \t \t \t \t \t \n", + "0.05 \t \t \t \t \t \n", + "0.06 \t \t \t \t \t \n", + "0.07 \t \t \t \t \t \n", + "0.08 \t \t \t \t \t \n", + "0.09 \t \t \t \t \t \n", + "0.1 \t \t 5000.0 \t \t \t \n", + "0.2 \t \t \t \t \t \n", + "0.3 \t \t \t \t \t \n", + "0.4 \t \t \t \t \t \n", + "0.5 \t \t \t \t \t \n", + "0.6 \t \t \t \t \t \n", + "0.7 \t \t \t \t \t \n", + "0.8 \t \t \t \t \t \n", + "0.9 \t \t \t \t \t \n", + "1.0 \t \t 1000.0 \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, H2, LPG, CH4, CO, Alcohol = sheetMQ8.row_values(row_index, start_colx=0, end_colx=6)\n", + " print(RsR0, \"\t\", LPG, \"\t\", H2, \"\t\", CH4, \"\t\", CO, \"\t\", Alcohol)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ8 = sheetMQ8.col_values(0)[2:]\n", + "MQ8_H2 = sheetMQ8.col_values(1)[2:]\n", + "MQ8_LPG = sheetMQ8.col_values(2)[2:]\n", + "MQ8_CH4 = sheetMQ8.col_values(3)[2:]\n", + "MQ8_CO = sheetMQ8.col_values(4)[2:]\n", + "MQ8_Alcohol = sheetMQ8.col_values(5)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "MQ8_H2 =zero_to_nan(MQ8_H2)\n", + "MQ8_LPG =zero_to_nan(MQ8_LPG)\n", + "MQ8_CH4 =zero_to_nan(MQ8_CH4)\n", + "MQ8_CO =zero_to_nan(MQ8_CO)\n", + "MQ8_Alcohol =zero_to_nan(MQ8_Alcohol)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataH2 = {'RsRo': x_MQ8, 'H2': MQ8_H2}\n", + "dataLPG = {'RsRo': x_MQ8, 'LPG': MQ8_LPG}\n", + "dataCH4 = {'RsRo': x_MQ8, 'CH4': MQ8_CH4}\n", + "dataCO = {'RsRo': x_MQ8, 'CO': MQ8_CO}\n", + "dataALcohol = {'RsRo': x_MQ8, 'Alcohol': MQ8_Alcohol}\n", + "\n", + "dfMQ8_H2 = pd.DataFrame(dataH2)\n", + "dfMQ8_LPG = pd.DataFrame(dataLPG)\n", + "dfMQ8_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ8_CO = pd.DataFrame(dataCO)\n", + "dfMQ8_Alcohol = pd.DataFrame(dataALcohol)\n", + "\n", + "dfMQ8_H2['H2'] = pd.to_numeric(dfMQ8_H2['H2'])\n", + "dfMQ8_LPG['LPG'] = pd.to_numeric(dfMQ8_LPG['LPG'])\n", + "dfMQ8_CH4['CH4'] = pd.to_numeric(dfMQ8_CH4['CH4'])\n", + "dfMQ8_CO['CO'] = pd.to_numeric(dfMQ8_CO['CO'])\n", + "dfMQ8_Alcohol['Alcohol'] = pd.to_numeric(dfMQ8_Alcohol['Alcohol'])\n", + "\n", + "dfMQ8_H2['H2'] = dfMQ8_H2['H2'].replace('',None, regex=True)\n", + "dfMQ8_LPG['LPG'] = dfMQ8_LPG['LPG'].replace('',None, regex=True)\n", + "dfMQ8_CH4['CH4'] = dfMQ8_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ8_CO['CO'] = dfMQ8_CO['CO'].replace('',None, regex=True)\n", + "dfMQ8_Alcohol['Alcohol'] = dfMQ8_Alcohol['Alcohol'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ8_LPG.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train H2\n", + "dataset2TrainH2 = dfMQ8_H2.copy()\n", + "dataset2TrainH2.dropna(inplace=True)\n", + "X_trainH2 = dataset2TrainH2.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainH2 = dataset2TrainH2['H2'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainH2, y_trainH2)\n", + "#Predict\n", + "H2_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ8_H2 = H2_Predicted\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train LPG\n", + "dataset2TrainLPG = dfMQ8_LPG.copy()\n", + "dataset2TrainLPG.dropna(inplace=True)\n", + "X_trainLPG = dataset2TrainLPG.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainLPG = dataset2TrainLPG['LPG'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainLPG, y_trainLPG)\n", + "#Predict\n", + "LPG_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ8_LPG = LPG_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CH4\n", + "dataset2TrainCH4 = dfMQ8_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ8_CH4 = CH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ8_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ8_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train Alcohol\n", + "dataset2TrainAlcohol = dfMQ8_Alcohol.copy()\n", + "dataset2TrainAlcohol.dropna(inplace=True)\n", + "X_trainAlcohol = dataset2TrainAlcohol.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainAlcohol = dataset2TrainAlcohol['Alcohol'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainAlcohol, y_trainAlcohol)\n", + "#Predict\n", + "Alcohol_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ8_Alcohol = Alcohol_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ8_H2, x_MQ8, marker='o', linewidth=1, label='H2')\n", + "plt.plot(MQ8_LPG, x_MQ8, marker='o', linewidth=1, label='LPG')\n", + "plt.plot(MQ8_CH4, x_MQ8, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ8_CO, x_MQ8, marker='o', linewidth=1, label='CO')\n", + "plt.plot(MQ8_Alcohol, x_MQ8, marker='o', linewidth=1, label='Alcohol')\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-8 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ8.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ8.png')\n", + "plt.savefig('MQ8.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/MQ9.eps b/Internal_design_documents/Experiments/MQ9.eps new file mode 100644 index 0000000..cb0e350 --- /dev/null +++ b/Internal_design_documents/Experiments/MQ9.eps @@ -0,0 +1,2114 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: MQ9.eps +%%Creator: matplotlib version 3.0.3, http://matplotlib.org/ +%%CreationDate: Wed Jul 3 21:09:12 2019 +%%Orientation: portrait +%%BoundingBox: -18 198 630 594 +%%EndComments +%%BeginProlog +/mpldict 8 dict def +mpldict begin +/m { moveto } bind def +/l { lineto } bind def +/r { rlineto } bind def +/c { curveto } bind def +/cl { closepath } bind def +/box { +m +1 index 0 r +0 exch r +neg 0 r +cl +} bind def +/clipbox { +box +clip +newpath +} bind def +%!PS-Adobe-3.0 Resource-Font +%%Title: DejaVu Sans +%%Copyright: Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain +%%Creator: Converted from TrueType to type 3 by PPR +25 dict begin +/_d{bind def}bind def +/_m{moveto}_d +/_l{lineto}_d +/_cl{closepath eofill}_d +/_c{curveto}_d +/_sc{7 -1 roll{setcachedevice}{pop pop pop pop pop pop}ifelse}_d +/_e{exec}_d +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix[.001 0 0 .001 0 0]def +/FontBBox[-1021 -463 1793 1232]def +/FontType 3 def +/Encoding [ /space /hyphen /slash /zero /one /three /four /nine /C /G /H /L /M /O /P /Q /R /a /b /c /d /e /f /i /l /n /o /p /r /s /t ] def +/FontInfo 10 dict dup begin +/FamilyName (DejaVu Sans) def +/FullName (DejaVu Sans) def +/Notice (Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. DejaVu changes are in public domain ) def +/Weight (Book) def +/Version (Version 2.35) def +/ItalicAngle 0.0 def +/isFixedPitch false def +/UnderlinePosition -130 def +/UnderlineThickness 90 def +end readonly def +/CharStrings 32 dict dup begin +/.notdef 0 def +/space{318 0 0 0 0 0 _sc +}_d +/hyphen{361 0 49 234 312 314 _sc +49 314 _m +312 314 _l +312 234 _l +49 234 _l +49 314 _l +_cl}_d +/slash{337 0 0 -92 337 729 _sc +254 729 _m +337 729 _l +83 -92 _l +0 -92 _l +254 729 _l +_cl}_d +/zero{636 0 66 -13 570 742 _sc +318 664 _m +267 664 229 639 203 589 _c +177 539 165 464 165 364 _c +165 264 177 189 203 139 _c +229 89 267 64 318 64 _c +369 64 407 89 433 139 _c +458 189 471 264 471 364 _c +471 464 458 539 433 589 _c +407 639 369 664 318 664 _c +318 742 _m +399 742 461 709 505 645 _c +548 580 570 486 570 364 _c +570 241 548 147 505 83 _c +461 19 399 -13 318 -13 _c +236 -13 173 19 130 83 _c +87 147 66 241 66 364 _c +66 486 87 580 130 645 _c +173 709 236 742 318 742 _c +_cl}_d +/one{636 0 110 0 544 729 _sc +124 83 _m +285 83 _l +285 639 _l +110 604 _l +110 694 _l +284 729 _l +383 729 _l +383 83 _l +544 83 _l +544 0 _l +124 0 _l +124 83 _l +_cl}_d +/three{{636 0 76 -13 556 742 _sc +406 393 _m +453 383 490 362 516 330 _c +542 298 556 258 556 212 _c +556 140 531 84 482 45 _c +432 6 362 -13 271 -13 _c +240 -13 208 -10 176 -4 _c +144 1 110 10 76 22 _c +76 117 _l +103 101 133 89 166 81 _c +198 73 232 69 268 69 _c +330 69 377 81 409 105 _c +441 129 458 165 458 212 _c +458 254 443 288 413 312 _c +383 336 341 349 287 349 _c +}_e{202 349 _l +202 430 _l +291 430 _l +339 430 376 439 402 459 _c +428 478 441 506 441 543 _c +441 580 427 609 401 629 _c +374 649 336 659 287 659 _c +260 659 231 656 200 650 _c +169 644 135 635 98 623 _c +98 711 _l +135 721 170 729 203 734 _c +235 739 266 742 296 742 _c +370 742 429 725 473 691 _c +517 657 539 611 539 553 _c +539 513 527 479 504 451 _c +481 423 448 403 406 393 _c +_cl}_e}_d +/four{636 0 49 0 580 729 _sc +378 643 _m +129 254 _l +378 254 _l +378 643 _l +352 729 _m +476 729 _l +476 254 _l +580 254 _l +580 172 _l +476 172 _l +476 0 _l +378 0 _l +378 172 _l +49 172 _l +49 267 _l +352 729 _l +_cl}_d +/nine{{636 0 63 -13 566 742 _sc +110 15 _m +110 105 _l +134 93 159 84 185 78 _c +210 72 235 69 260 69 _c +324 69 374 90 408 134 _c +442 178 462 244 468 334 _c +448 306 424 284 396 269 _c +367 254 335 247 300 247 _c +226 247 168 269 126 313 _c +84 357 63 417 63 494 _c +63 568 85 628 129 674 _c +173 719 232 742 306 742 _c +390 742 455 709 499 645 _c +543 580 566 486 566 364 _c +}_e{566 248 538 157 484 89 _c +429 21 356 -13 264 -13 _c +239 -13 214 -10 189 -6 _c +163 -2 137 5 110 15 _c +306 324 _m +350 324 385 339 411 369 _c +437 399 450 441 450 494 _c +450 546 437 588 411 618 _c +385 648 350 664 306 664 _c +262 664 227 648 201 618 _c +175 588 162 546 162 494 _c +162 441 175 399 201 369 _c +227 339 262 324 306 324 _c +_cl}_e}_d +/C{{698 0 56 -13 644 742 _sc +644 673 _m +644 569 _l +610 599 575 622 537 638 _c +499 653 460 661 418 661 _c +334 661 270 635 226 584 _c +182 533 160 460 160 364 _c +160 268 182 194 226 143 _c +270 92 334 67 418 67 _c +460 67 499 74 537 90 _c +575 105 610 128 644 159 _c +644 56 _l +609 32 572 15 534 4 _c +496 -7 455 -13 412 -13 _c +302 -13 215 20 151 87 _c +}_e{87 154 56 246 56 364 _c +56 481 87 573 151 641 _c +215 708 302 742 412 742 _c +456 742 497 736 535 725 _c +573 713 610 696 644 673 _c +_cl}_e}_d +/G{{775 0 56 -13 693 742 _sc +595 104 _m +595 300 _l +434 300 _l +434 381 _l +693 381 _l +693 68 _l +655 40 613 20 567 7 _c +521 -6 472 -13 420 -13 _c +306 -13 216 20 152 86 _c +88 152 56 245 56 364 _c +56 482 88 575 152 642 _c +216 708 306 742 420 742 _c +467 742 512 736 555 724 _c +598 712 638 695 674 673 _c +674 568 _l +637 598 598 621 557 637 _c +516 653 473 661 428 661 _c +}_e{338 661 271 636 227 586 _c +182 536 160 462 160 364 _c +160 265 182 191 227 141 _c +271 91 338 67 428 67 _c +462 67 493 70 521 76 _c +549 82 573 91 595 104 _c +_cl}_e}_d +/H{752 0 98 0 654 729 _sc +98 729 _m +197 729 _l +197 430 _l +555 430 _l +555 729 _l +654 729 _l +654 0 _l +555 0 _l +555 347 _l +197 347 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/L{557 0 98 0 552 729 _sc +98 729 _m +197 729 _l +197 83 _l +552 83 _l +552 0 _l +98 0 _l +98 729 _l +_cl}_d +/M{863 0 98 0 765 729 _sc +98 729 _m +245 729 _l +431 233 _l +618 729 _l +765 729 _l +765 0 _l +669 0 _l +669 640 _l +481 140 _l +382 140 _l +194 640 _l +194 0 _l +98 0 _l +98 729 _l +_cl}_d +/O{787 0 56 -13 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +394 742 _m +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 248 700 157 639 89 _c +577 21 496 -13 394 -13 _c +291 -13 209 21 148 89 _c +86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +_cl}_d +/P{603 0 98 0 569 729 _sc +197 648 _m +197 374 _l +321 374 _l +367 374 402 385 427 409 _c +452 433 465 467 465 511 _c +465 555 452 588 427 612 _c +402 636 367 648 321 648 _c +197 648 _l +98 729 _m +321 729 _l +402 729 464 710 506 673 _c +548 636 569 582 569 511 _c +569 439 548 384 506 348 _c +464 311 402 293 321 293 _c +197 293 _l +197 0 _l +98 0 _l +98 729 _l +_cl}_d +/Q{{787 0 56 -128 731 742 _sc +394 662 _m +322 662 265 635 223 582 _c +181 528 160 456 160 364 _c +160 272 181 199 223 146 _c +265 92 322 66 394 66 _c +465 66 522 92 564 146 _c +606 199 627 272 627 364 _c +627 456 606 528 564 582 _c +522 635 465 662 394 662 _c +532 13 _m +662 -128 _l +543 -128 _l +435 -11 _l +424 -11 416 -12 410 -12 _c +404 -12 399 -13 394 -13 _c +291 -13 209 21 148 89 _c +}_e{86 157 56 248 56 364 _c +56 479 86 571 148 639 _c +209 707 291 742 394 742 _c +496 742 577 707 639 639 _c +700 571 731 479 731 364 _c +731 279 714 206 680 146 _c +646 86 596 41 532 13 _c +_cl}_e}_d +/R{{695 0 98 0 666 729 _sc +444 342 _m +465 334 486 319 506 296 _c +526 272 546 240 566 199 _c +666 0 _l +560 0 _l +467 187 _l +443 235 419 268 397 284 _c +374 300 343 308 304 308 _c +197 308 _l +197 0 _l +98 0 _l +98 729 _l +321 729 _l +404 729 466 711 507 677 _c +548 642 569 589 569 519 _c +569 473 558 434 537 404 _c +515 374 484 353 444 342 _c +197 648 _m +197 389 _l +321 389 _l +}_e{368 389 404 400 428 422 _c +452 444 465 476 465 519 _c +465 561 452 593 428 615 _c +404 637 368 648 321 648 _c +197 648 _l +_cl}_e}_d +/a{{613 0 60 -13 522 560 _sc +343 275 _m +270 275 220 266 192 250 _c +164 233 150 205 150 165 _c +150 133 160 107 181 89 _c +202 70 231 61 267 61 _c +317 61 357 78 387 114 _c +417 149 432 196 432 255 _c +432 275 _l +343 275 _l +522 312 _m +522 0 _l +432 0 _l +432 83 _l +411 49 385 25 355 10 _c +325 -5 287 -13 243 -13 _c +187 -13 142 2 109 33 _c +76 64 60 106 60 159 _c +}_e{60 220 80 266 122 298 _c +163 329 224 345 306 345 _c +432 345 _l +432 354 _l +432 395 418 427 391 450 _c +364 472 326 484 277 484 _c +245 484 215 480 185 472 _c +155 464 127 453 100 439 _c +100 522 _l +132 534 164 544 195 550 _c +226 556 256 560 286 560 _c +365 560 424 539 463 498 _c +502 457 522 395 522 312 _c +_cl}_e}_d +/b{{635 0 91 -13 580 760 _sc +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +181 464 _m +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +}_e{580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +181 0 _l +91 0 _l +91 760 _l +181 760 _l +181 464 _l +_cl}_e}_d +/c{{550 0 55 -13 488 560 _sc +488 526 _m +488 442 _l +462 456 437 466 411 473 _c +385 480 360 484 334 484 _c +276 484 230 465 198 428 _c +166 391 150 339 150 273 _c +150 206 166 154 198 117 _c +230 80 276 62 334 62 _c +360 62 385 65 411 72 _c +437 79 462 90 488 104 _c +488 21 _l +462 9 436 0 410 -5 _c +383 -10 354 -13 324 -13 _c +242 -13 176 12 128 64 _c +}_e{79 115 55 185 55 273 _c +55 362 79 432 128 483 _c +177 534 244 560 330 560 _c +358 560 385 557 411 551 _c +437 545 463 537 488 526 _c +_cl}_e}_d +/d{{635 0 55 -13 544 760 _sc +454 464 _m +454 760 _l +544 760 _l +544 0 _l +454 0 _l +454 82 _l +435 49 411 25 382 10 _c +353 -5 319 -13 279 -13 _c +213 -13 159 13 117 65 _c +75 117 55 187 55 273 _c +55 359 75 428 117 481 _c +159 533 213 560 279 560 _c +319 560 353 552 382 536 _c +411 520 435 496 454 464 _c +148 273 _m +148 207 161 155 188 117 _c +215 79 253 61 301 61 _c +}_e{348 61 385 79 413 117 _c +440 155 454 207 454 273 _c +454 339 440 390 413 428 _c +385 466 348 485 301 485 _c +253 485 215 466 188 428 _c +161 390 148 339 148 273 _c +_cl}_e}_d +/e{{615 0 55 -13 562 560 _sc +562 296 _m +562 252 _l +149 252 _l +153 190 171 142 205 110 _c +238 78 284 62 344 62 _c +378 62 412 66 444 74 _c +476 82 509 95 541 113 _c +541 28 _l +509 14 476 3 442 -3 _c +408 -9 373 -13 339 -13 _c +251 -13 182 12 131 62 _c +80 112 55 181 55 268 _c +55 357 79 428 127 481 _c +175 533 241 560 323 560 _c +397 560 455 536 498 489 _c +}_e{540 441 562 377 562 296 _c +472 322 _m +471 371 457 410 431 440 _c +404 469 368 484 324 484 _c +274 484 234 469 204 441 _c +174 413 156 373 152 322 _c +472 322 _l +_cl}_e}_d +/f{352 0 23 0 371 760 _sc +371 760 _m +371 685 _l +285 685 _l +253 685 230 678 218 665 _c +205 652 199 629 199 595 _c +199 547 _l +347 547 _l +347 477 _l +199 477 _l +199 0 _l +109 0 _l +109 477 _l +23 477 _l +23 547 _l +109 547 _l +109 585 _l +109 645 123 690 151 718 _c +179 746 224 760 286 760 _c +371 760 _l +_cl}_d +/i{278 0 94 0 184 760 _sc +94 547 _m +184 547 _l +184 0 _l +94 0 _l +94 547 _l +94 760 _m +184 760 _l +184 646 _l +94 646 _l +94 760 _l +_cl}_d +/l{278 0 94 0 184 760 _sc +94 760 _m +184 760 _l +184 0 _l +94 0 _l +94 760 _l +_cl}_d +/n{634 0 91 0 549 560 _sc +549 330 _m +549 0 _l +459 0 _l +459 327 _l +459 379 448 417 428 443 _c +408 469 378 482 338 482 _c +289 482 251 466 223 435 _c +195 404 181 362 181 309 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +202 494 227 519 257 535 _c +286 551 320 560 358 560 _c +420 560 468 540 500 501 _c +532 462 549 405 549 330 _c +_cl}_d +/o{612 0 55 -13 557 560 _sc +306 484 _m +258 484 220 465 192 427 _c +164 389 150 338 150 273 _c +150 207 163 156 191 118 _c +219 80 257 62 306 62 _c +354 62 392 80 420 118 _c +448 156 462 207 462 273 _c +462 337 448 389 420 427 _c +392 465 354 484 306 484 _c +306 560 _m +384 560 445 534 490 484 _c +534 433 557 363 557 273 _c +557 183 534 113 490 63 _c +445 12 384 -13 306 -13 _c +227 -13 165 12 121 63 _c +77 113 55 183 55 273 _c +55 363 77 433 121 484 _c +165 534 227 560 306 560 _c +_cl}_d +/p{{635 0 91 -207 580 560 _sc +181 82 _m +181 -207 _l +91 -207 _l +91 547 _l +181 547 _l +181 464 _l +199 496 223 520 252 536 _c +281 552 316 560 356 560 _c +422 560 476 533 518 481 _c +559 428 580 359 580 273 _c +580 187 559 117 518 65 _c +476 13 422 -13 356 -13 _c +316 -13 281 -5 252 10 _c +223 25 199 49 181 82 _c +487 273 _m +487 339 473 390 446 428 _c +418 466 381 485 334 485 _c +}_e{286 485 249 466 222 428 _c +194 390 181 339 181 273 _c +181 207 194 155 222 117 _c +249 79 286 61 334 61 _c +381 61 418 79 446 117 _c +473 155 487 207 487 273 _c +_cl}_e}_d +/r{411 0 91 0 411 560 _sc +411 463 _m +401 469 390 473 378 476 _c +366 478 353 480 339 480 _c +288 480 249 463 222 430 _c +194 397 181 350 181 288 _c +181 0 _l +91 0 _l +91 547 _l +181 547 _l +181 462 _l +199 495 224 520 254 536 _c +284 552 321 560 365 560 _c +371 560 378 559 386 559 _c +393 558 401 557 411 555 _c +411 463 _l +_cl}_d +/s{{521 0 54 -13 472 560 _sc +443 531 _m +443 446 _l +417 458 391 468 364 475 _c +336 481 308 485 279 485 _c +234 485 200 478 178 464 _c +156 450 145 430 145 403 _c +145 382 153 366 169 354 _c +185 342 217 330 265 320 _c +296 313 _l +360 299 405 279 432 255 _c +458 230 472 195 472 151 _c +472 100 452 60 412 31 _c +372 1 316 -13 246 -13 _c +216 -13 186 -10 154 -5 _c +}_e{122 0 89 8 54 20 _c +54 113 _l +87 95 120 82 152 74 _c +184 65 216 61 248 61 _c +290 61 323 68 346 82 _c +368 96 380 117 380 144 _c +380 168 371 187 355 200 _c +339 213 303 226 247 238 _c +216 245 _l +160 257 119 275 95 299 _c +70 323 58 356 58 399 _c +58 450 76 490 112 518 _c +148 546 200 560 268 560 _c +301 560 332 557 362 552 _c +391 547 418 540 443 531 _c +}_e{_cl}_e}_d +/t{392 0 27 0 368 702 _sc +183 702 _m +183 547 _l +368 547 _l +368 477 _l +183 477 _l +183 180 _l +183 135 189 106 201 94 _c +213 81 238 75 276 75 _c +368 75 _l +368 0 _l +276 0 _l +206 0 158 13 132 39 _c +106 65 93 112 93 180 _c +93 477 _l +27 477 _l +27 547 _l +93 547 _l +93 702 _l +183 702 _l +_cl}_d +end readonly def + +/BuildGlyph + {exch begin + CharStrings exch + 2 copy known not{pop /.notdef}if + true 3 1 roll get exec + end}_d + +/BuildChar { + 1 index /Encoding get exch get + 1 index /BuildGlyph get exec +}_d + +FontName currentdict end definefont pop +end +%%EndProlog +mpldict begin +-18 198 translate +648 396 0 0 clipbox +gsave +0 0 m +648 0 l +648 396 l +0 396 l +cl +1.000 setgray +fill +grestore +gsave +81 49.5 m +583.2 49.5 l +583.2 348.48 l +81 348.48 l +cl +1.000 setgray +fill +grestore +0.800 setlinewidth +1 setlinejoin +0 setlinecap +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -3.5 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +360.342 49.5 o +grestore +gsave +351.341908 33.578125 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/three glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +108.398344 49.5 m +108.398344 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +108.398 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +171.870394 49.5 m +171.870394 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +171.87 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +216.904531 49.5 m +216.904531 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +216.905 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +251.835721 49.5 m +251.835721 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +251.836 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +280.376581 49.5 m +280.376581 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +280.377 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +304.507535 49.5 m +304.507535 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +304.508 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +325.410718 49.5 m +325.410718 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +325.411 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +343.848632 49.5 m +343.848632 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +343.849 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +468.848095 49.5 m +468.848095 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +468.848 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +532.320145 49.5 m +532.320145 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +532.32 49.5 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +577.354282 49.5 m +577.354282 348.48 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +0 -2 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +577.354 49.5 o +grestore +/DejaVuSans findfont +10.000 scalefont +setfont +gsave +284.771875 19.906250 translate +0.000000 rotate +0.000000 0.000000 m /P glyphshow +6.030273 0.000000 m /P glyphshow +12.060547 0.000000 m /M glyphshow +20.688477 0.000000 m /space glyphshow +23.867188 0.000000 m /C glyphshow +30.849609 0.000000 m /o glyphshow +36.967773 0.000000 m /n glyphshow +43.305664 0.000000 m /c glyphshow +48.803711 0.000000 m /e glyphshow +54.956055 0.000000 m /n glyphshow +61.293945 0.000000 m /t glyphshow +65.214844 0.000000 m /r glyphshow +69.326172 0.000000 m /a glyphshow +75.454102 0.000000 m /t glyphshow +79.375000 0.000000 m /i glyphshow +82.153320 0.000000 m /o glyphshow +88.271484 0.000000 m /n glyphshow +grestore +0.800 setlinewidth +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 174.911 o +grestore +gsave +56.000000 170.449781 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.976562 moveto +/one glyphshow + +6.362305 0.976562 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 4.804688 moveto +/zero glyphshow + + +grestore +gsave +/o { +gsave +newpath +translate +0.8 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-3.5 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 334.89 o +grestore +gsave +56.000000 330.929063 translate +0.000000 rotate +/DejaVuSans findfont +10.0 scalefont +setfont +0.000000 0.064063 moveto +/one glyphshow + +6.362305 0.064063 moveto +/zero glyphshow + +/DejaVuSans findfont +7.0 scalefont +setfont +12.820312 3.892188 moveto +/one glyphshow + + +grestore +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 63.09 m +583.2 63.09 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 63.09 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 91.260953 m +583.2 91.260953 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 91.261 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 111.248562 m +583.2 111.248562 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 111.249 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 126.752157 m +583.2 126.752157 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 126.752 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 139.419515 m +583.2 139.419515 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 139.42 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 150.129615 m +583.2 150.129615 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 150.13 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 159.407125 m +583.2 159.407125 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 159.407 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 167.590468 m +583.2 167.590468 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 167.59 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 223.069281 m +583.2 223.069281 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 223.069 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 251.240234 m +583.2 251.240234 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 251.24 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 271.227843 m +583.2 271.227843 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 271.228 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 286.731438 m +583.2 286.731438 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 286.731 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 299.398797 m +583.2 299.398797 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 299.399 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 310.108896 m +583.2 310.108896 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 310.109 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 319.386406 m +583.2 319.386406 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 319.386 o +grestore +0.800 setlinewidth +[2.96 1.28] 0 setdash +0.827 setgray +gsave +502.2 299 81 49.5 clipbox +81 327.56975 m +583.2 327.56975 l +stroke +grestore +0.600 setlinewidth +[] 0 setdash +0.000 setgray +gsave +/o { +gsave +newpath +translate +0.6 setlinewidth +1 setlinejoin +0 setlinecap +0 0 m +-2 0 l + +gsave +0.000 setgray +fill +grestore +stroke +grestore +} bind def +81 327.57 o +grestore +gsave +49.921875 184.677500 translate +90.000000 rotate +0.000000 0.000000 m /R glyphshow +6.948242 0.000000 m /s glyphshow +12.158203 0.000000 m /slash glyphshow +15.527344 0.000000 m /R glyphshow +22.475586 0.000000 m /o glyphshow +grestore +1.000 setlinewidth +2 setlinecap +0.122 0.467 0.706 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +540.896354 63.09 m +531.904659 91.260953 l +522.36484 111.248562 l +512.205706 126.752157 l +501.341231 139.419515 l +489.666116 150.129615 l +477.049566 159.407125 l +463.326332 167.590468 l +448.283432 174.910719 l +-1 174.970552 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +540.896 63.09 o +531.905 91.261 o +522.365 111.249 o +512.206 126.752 o +501.341 139.42 o +489.666 150.13 o +477.05 159.407 o +463.326 167.59 o +448.283 174.911 o +-1 174.971 o +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +560.372727 63.09 m +555.312237 91.260953 l +550.082675 111.248562 l +544.672355 126.752157 l +539.06833 139.419515 l +533.256214 150.129615 l +527.219955 159.407125 l +520.94157 167.590468 l +514.400818 174.910719 l +427.314859 223.069281 l +213.874755 251.240234 l +-1 251.252119 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +560.373 63.09 o +555.312 91.261 o +550.083 111.249 o +544.672 126.752 o +539.068 139.42 o +533.256 150.13 o +527.22 159.407 o +520.942 167.59 o +514.401 174.911 o +427.315 223.069 o +213.875 251.24 o +-1 251.252 o +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +502.2 299 81 49.5 clipbox +401.822816 63.09 m +394.241476 91.260953 l +386.274201 111.248562 l +377.879577 126.752157 l +369.009152 139.419515 l +359.60573 150.129615 l +349.601141 159.407125 l +338.913237 167.590468 l +327.44179 174.910719 l +103.827273 223.069281 l +-1 223.077455 l +stroke +grestore +0 setlinecap +gsave +502.2 299 81 49.5 clipbox +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +401.823 63.09 o +394.241 91.261 o +386.274 111.249 o +377.88 126.752 o +369.009 139.42 o +359.606 150.13 o +349.601 159.407 o +338.913 167.59 o +327.442 174.911 o +103.827 223.069 o +-1 223.077 o +grestore +0.800 setlinewidth +0 setlinejoin +2 setlinecap +[] 0 setdash +0.000 setgray +gsave +81 49.5 m +81 348.48 l +stroke +grestore +gsave +583.2 49.5 m +583.2 348.48 l +stroke +grestore +gsave +81 49.5 m +583.2 49.5 l +stroke +grestore +gsave +81 348.48 m +583.2 348.48 l +stroke +grestore +1.000 setlinewidth +0 setlinecap +0.800 setgray +gsave +523.340625 296.464375 m +576.2 296.464375 l +577.533333 296.464375 578.2 297.131042 578.2 298.464375 c +578.2 341.48 l +578.2 342.813333 577.533333 343.48 576.2 343.48 c +523.340625 343.48 l +522.007292 343.48 521.340625 342.813333 521.340625 341.48 c +521.340625 298.464375 l +521.340625 297.131042 522.007292 296.464375 523.340625 296.464375 c +cl +gsave +1.000 setgray +fill +grestore +stroke +grestore +1 setlinejoin +2 setlinecap +[] 0 setdash +0.122 0.467 0.706 setrgbcolor +gsave +525.340625 335.38625 m +545.340625 335.38625 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.122 0.467 0.706 setrgbcolor +fill +grestore +stroke +grestore +} bind def +535.341 335.386 o +grestore +0.000 setgray +gsave +553.340625 331.886250 translate +0.000000 rotate +0.000000 0.000000 m /L glyphshow +5.571289 0.000000 m /P glyphshow +11.601562 0.000000 m /G glyphshow +grestore +2 setlinecap +1.000 0.498 0.055 setrgbcolor +gsave +525.340625 320.714375 m +545.340625 320.714375 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +1.000 0.498 0.055 setrgbcolor +fill +grestore +stroke +grestore +} bind def +535.341 320.714 o +grestore +0.000 setgray +gsave +553.340625 317.214375 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /H glyphshow +14.501953 0.000000 m /four glyphshow +grestore +2 setlinecap +0.173 0.627 0.173 setrgbcolor +gsave +525.340625 306.0425 m +545.340625 306.0425 l +stroke +grestore +0 setlinecap +gsave +/o { +gsave +newpath +translate +1.0 setlinewidth +1 setlinejoin +0 setlinecap +0 -3 m +0.795609 -3 1.55874 -2.683901 2.12132 -2.12132 c +2.683901 -1.55874 3 -0.795609 3 0 c +3 0.795609 2.683901 1.55874 2.12132 2.12132 c +1.55874 2.683901 0.795609 3 0 3 c +-0.795609 3 -1.55874 2.683901 -2.12132 2.12132 c +-2.683901 1.55874 -3 0.795609 -3 0 c +-3 -0.795609 -2.683901 -1.55874 -2.12132 -2.12132 c +-1.55874 -2.683901 -0.795609 -3 0 -3 c +cl + +gsave +0.173 0.627 0.173 setrgbcolor +fill +grestore +stroke +grestore +} bind def +535.341 306.043 o +grestore +0.000 setgray +gsave +553.340625 302.542500 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +6.982422 0.000000 m /O glyphshow +grestore +/DejaVuSans findfont +12.000 scalefont +setfont +gsave +234.562500 378.955000 translate +0.000000 rotate +0.000000 0.000000 m /C glyphshow +8.378906 0.000000 m /a glyphshow +15.732422 0.000000 m /l glyphshow +19.066406 0.000000 m /i glyphshow +22.400391 0.000000 m /b glyphshow +30.017578 0.000000 m /r glyphshow +34.951172 0.000000 m /a glyphshow +42.304688 0.000000 m /t glyphshow +47.009766 0.000000 m /i glyphshow +50.343750 0.000000 m /o glyphshow +57.685547 0.000000 m /n glyphshow +65.291016 0.000000 m /space glyphshow +69.105469 0.000000 m /p glyphshow +76.722656 0.000000 m /l glyphshow +80.056641 0.000000 m /o glyphshow +87.398438 0.000000 m /t glyphshow +92.103516 0.000000 m /space glyphshow +95.917969 0.000000 m /f glyphshow +100.142578 0.000000 m /o glyphshow +107.484375 0.000000 m /r glyphshow +112.417969 0.000000 m /space glyphshow +116.232422 0.000000 m /M glyphshow +126.585938 0.000000 m /Q glyphshow +136.031250 0.000000 m /hyphen glyphshow +140.361328 0.000000 m /nine glyphshow +147.996094 0.000000 m /space glyphshow +151.810547 0.000000 m /d glyphshow +159.427734 0.000000 m /a glyphshow +166.781250 0.000000 m /t glyphshow +171.486328 0.000000 m /a glyphshow +grestore + +end +showpage diff --git a/Internal_design_documents/Experiments/MQ9.png b/Internal_design_documents/Experiments/MQ9.png new file mode 100644 index 0000000..4e0b2e1 Binary files /dev/null and b/Internal_design_documents/Experiments/MQ9.png differ diff --git a/Internal_design_documents/Experiments/MQ9.svg b/Internal_design_documents/Experiments/MQ9.svg new file mode 100644 index 0000000..2c9f0df --- /dev/null +++ b/Internal_design_documents/Experiments/MQ9.svg @@ -0,0 +1,1318 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Internal_design_documents/Experiments/MQ9_Regression .ipynb b/Internal_design_documents/Experiments/MQ9_Regression .ipynb new file mode 100644 index 0000000..0eeca8b --- /dev/null +++ b/Internal_design_documents/Experiments/MQ9_Regression .ipynb @@ -0,0 +1,1632 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in c:\\programdata\\anaconda3\\lib\\site-packages (0.24.2)\n", + "Requirement already satisfied: pytz>=2011k in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.5.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (2.8.0)\n", + "Requirement already satisfied: numpy>=1.12.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from pandas) (1.16.2)\n", + "Requirement already satisfied: six>=1.5 in c:\\programdata\\anaconda3\\lib\\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)\n", + "Requirement already satisfied: xlrd in c:\\programdata\\anaconda3\\lib\\site-packages (1.2.0)\n", + "Requirement already satisfied: sklearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from sklearn) (0.21.2)\n", + "Requirement already satisfied: scipy>=0.17.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (0.13.2)\n", + "Requirement already satisfied: numpy>=1.11.0 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n", + "Requirement already satisfied: imblearn in c:\\programdata\\anaconda3\\lib\\site-packages (0.0)\n", + "Requirement already satisfied: imbalanced-learn in c:\\programdata\\anaconda3\\lib\\site-packages (from imblearn) (0.5.0)\n", + "Requirement already satisfied: joblib>=0.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.13.2)\n", + "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n", + "Requirement already satisfied: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n", + "Requirement already satisfied: scikit-learn>=0.21 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (0.21.2)\n" + ] + } + ], + "source": [ + "!pip install pandas\n", + "!pip install xlrd\n", + "!pip install sklearn\n", + "!pip install imblearn" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "import xlrd\n", + "book = xlrd.open_workbook(\"Datasheets info.xlsx\")\n", + "sheetMQ2 = book.sheet_by_name(\"MQ2 - Pololulu\")\n", + "sheetMQ3 = book.sheet_by_name(\"MQ3 - Sparkfun\")\n", + "sheetMQ4 = book.sheet_by_name(\"MQ4 - Sparkfun\")\n", + "sheetMQ5 = book.sheet_by_name(\"MQ5 - Sparkfun\")\n", + "sheetMQ6 = book.sheet_by_name(\"MQ6 - Sparkfun\")\n", + "sheetMQ7 = book.sheet_by_name(\"MQ7 - Sparkfun\")\n", + "sheetMQ8 = book.sheet_by_name(\"MQ8 - Sparkfun\")\n", + "sheetMQ9 = book.sheet_by_name(\"MQ9 - Haoyuelectronics\")\n", + "sheetMQ131 = book.sheet_by_name(\"MQ131- Sensorsportal\")\n", + "sheetMQ135 = book.sheet_by_name(\"MQ135 - HANWEI\")\n", + "sheetMQ303A = book.sheet_by_name(\"MQ303A - HANWEI\")\n", + "sheetMQ309A = book.sheet_by_name(\"MQ309A - HANWEI\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.1 \t \t \t \n", + "0.2 \t \t \t \n", + "0.3 \t \t \t \n", + "0.4 \t \t \t \n", + "0.5 \t \t \t \n", + "0.6 \t 3000.0 \t \t \n", + "0.7 \t \t \t 1000.0\n", + "0.8 \t \t 1000.0 \t \n", + "0.9 \t \t 800.0 \t 5000.0\n", + "1.0 \t 1000.0 \t \t \n", + "2.0 \t 200.0 \t 200.0 \t \n", + "3.0 \t \t \t 200.0\n", + "4.0 \t \t \t \n", + "5.0 \t \t \t \n", + "6.0 \t \t \t \n", + "7.0 \t \t \t \n", + "8.0 \t \t \t \n", + "9.0 \t \t \t \n", + "10.0 \t \t \t \n" + ] + } + ], + "source": [ + "for row_index in range(1,20): #reading first columns\n", + " RsR0, LPG, CO, CH4 = sheetMQ9.row_values(row_index, start_colx=0, end_colx=4)\n", + " print(RsR0, \"\t\", LPG, \"\t\", CO, \"\t\", CH4)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "x_MQ9 = sheetMQ9.col_values(0)[2:]\n", + "MQ9_LPG = sheetMQ9.col_values(1)[2:]\n", + "MQ9_CO = sheetMQ9.col_values(2)[2:]\n", + "MQ9_CH4 = sheetMQ9.col_values(3)[2:]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def zero_to_nan(values):\n", + " \"\"\"Replace every 0 with 'nan' and return a copy.\"\"\"\n", + " return [float('nan') if x==0 else x for x in values]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "MQ9_LPG =zero_to_nan(MQ9_LPG)\n", + "MQ9_CH4 =zero_to_nan(MQ9_CH4)\n", + "MQ9_CO =zero_to_nan(MQ9_CO)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "#from sklearn.cross_validation import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import datasets\n", + "from sklearn import linear_model\n", + "\n", + "dataLPG = {'RsRo': x_MQ9, 'LPG': MQ9_LPG}\n", + "dataCH4 = {'RsRo': x_MQ9, 'CH4': MQ9_CH4}\n", + "dataCO = {'RsRo': x_MQ9, 'CO': MQ9_CO}\n", + "\n", + "dfMQ9_LPG = pd.DataFrame(dataLPG)\n", + "dfMQ9_CH4 = pd.DataFrame(dataCH4)\n", + "dfMQ9_CO = pd.DataFrame(dataCO)\n", + "\n", + "dfMQ9_LPG['LPG'] = pd.to_numeric(dfMQ9_LPG['LPG'])\n", + "dfMQ9_CH4['CH4'] = pd.to_numeric(dfMQ9_CH4['CH4'])\n", + "dfMQ9_CO['CO'] = pd.to_numeric(dfMQ9_CO['CO'])\n", + "\n", + "dfMQ9_LPG['LPG'] = dfMQ9_LPG['LPG'].replace('',None, regex=True)\n", + "dfMQ9_CH4['CH4'] = dfMQ9_CH4['CH4'].replace('',None, regex=True)\n", + "dfMQ9_CO['CO'] = dfMQ9_CO['CO'].replace('',None, regex=True)\n", + "\n", + "#Global X_Predict variable\n", + "X_Predict = dfMQ9_LPG.RsRo.apply(lambda x: [x]).tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train LPG\n", + "dataset2TrainLPG = dfMQ9_LPG.copy()\n", + "dataset2TrainLPG.dropna(inplace=True)\n", + "X_trainLPG = dataset2TrainLPG.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainLPG = dataset2TrainLPG['LPG'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainLPG, y_trainLPG)\n", + "#Predict\n", + "LPG_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ9_LPG = LPG_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CH4\n", + "dataset2TrainCH4 = dfMQ9_CH4.copy()\n", + "dataset2TrainCH4.dropna(inplace=True)\n", + "X_trainCH4 = dataset2TrainCH4.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCH4 = dataset2TrainCH4['CH4'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCH4, y_trainCH4)\n", + "#Predict\n", + "CH4_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ9_CH4 = CH4_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "#Model and train CO\n", + "dataset2TrainCO = dfMQ9_CO.copy()\n", + "dataset2TrainCO.dropna(inplace=True)\n", + "X_trainCO = dataset2TrainCO.RsRo.apply(lambda x: [x]).tolist()\n", + "y_trainCO = dataset2TrainCO['CO'].tolist()\n", + "model = linear_model.Lasso(alpha=0.1)\n", + "model.fit(X_trainCO, y_trainCO)\n", + "#Predict\n", + "CO_Predicted = model.predict(X_Predict)\n", + "#save into MQ2\n", + "MQ9_CO = CO_Predicted" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\r\n", + "\r\n", + "\r\n", + "\r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + " \r\n", + "\r\n" + ], + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib.lines as mlines\n", + "import matplotlib.transforms as mtransforms\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "fig.set_size_inches(9, 5.5, forward=True)\n", + "fig.set_dpi(200)\n", + "\n", + "# only these two lines are calibration curves\n", + "plt.plot(MQ9_LPG, x_MQ9, marker='o', linewidth=1, label='LPG')\n", + "plt.plot(MQ9_CH4, x_MQ9, marker='o', linewidth=1, label='CH4')\n", + "plt.plot(MQ9_CO, x_MQ9, marker='o', linewidth=1, label='CO')\n", + "\n", + "\n", + "# reference line, legends, and axis labels\n", + "#line = mlines.Line2D([0, 1], [0, 1], color='black')\n", + "#transform = ax.transAxes\n", + "#line.set_transform(transform)\n", + "#ax.add_line(line)\n", + "plt.yscale('log')\n", + "plt.xscale('log')\n", + "plt.legend()\n", + "\n", + "plt.grid(b=True, which='minor', color='lightgrey', linestyle='--')\n", + "\n", + "fig.suptitle('Calibration plot for MQ-9 data')\n", + "ax.set_xlabel('PPM Concentration')\n", + "ax.set_ylabel('Rs/Ro')\n", + "\n", + "\n", + "#Save image\n", + "plt.savefig('MQ9.svg', format = 'svg', dpi = 1200)\n", + "plt.savefig('MQ9.png')\n", + "plt.savefig('MQ9.eps', format = 'eps', dpi = 1200)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Internal_design_documents/Experiments/demo1.svg b/Internal_design_documents/Experiments/demo1.svg new file mode 100644 index 0000000..5981c70 --- /dev/null +++ b/Internal_design_documents/Experiments/demo1.svg @@ -0,0 +1,1486 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Internal_design_documents/Resumen_Slope_And_BPoints.xlsx b/Internal_design_documents/Resumen_Slope_And_BPoints.xlsx new file mode 100644 index 0000000..f1a06f6 Binary files /dev/null and b/Internal_design_documents/Resumen_Slope_And_BPoints.xlsx differ diff --git a/WPDigitalizer/MQ131/CL2.csv b/WPDigitalizer/MQ131/CL2.csv new file mode 100644 index 0000000..610c88c --- /dev/null +++ b/WPDigitalizer/MQ131/CL2.csv @@ -0,0 +1,5 @@ +4.957713628975931; 5.970352865838375 +9.82303087255475; 3.890451449942809 +19.66936860744601; 2.365919697485761 +49.50200098710442; 0.9908319448927686 +99.17887133636847; 0.49659232145033677 diff --git a/WPDigitalizer/MQ131/MQ131.png b/WPDigitalizer/MQ131/MQ131.png new file mode 100644 index 0000000..3410951 Binary files /dev/null and b/WPDigitalizer/MQ131/MQ131.png differ diff --git a/WPDigitalizer/MQ131/MQ131_Analisis.xlsx b/WPDigitalizer/MQ131/MQ131_Analisis.xlsx new file mode 100644 index 0000000..0df77f8 Binary files /dev/null and b/WPDigitalizer/MQ131/MQ131_Analisis.xlsx differ diff --git a/WPDigitalizer/MQ131/NOx.csv b/WPDigitalizer/MQ131/NOx.csv new file mode 100644 index 0000000..de37d56 --- /dev/null +++ b/WPDigitalizer/MQ131/NOx.csv @@ -0,0 +1,5 @@ +5.004690736196025; 8.090958991783829 +9.81247228520288; 5.571857489319305 +19.63847609606165; 3.9994474976109777 +49.85956704514034; 2.8313919957993816 +98.7613064604988; 2.032357010936224 diff --git a/WPDigitalizer/MQ131/O3.csv b/WPDigitalizer/MQ131/O3.csv new file mode 100644 index 0000000..ffce073 --- /dev/null +++ b/WPDigitalizer/MQ131/O3.csv @@ -0,0 +1,5 @@ +5.015052099488824; 4.055085354483843 +9.839297042431014; 2.2387211385683425 +19.708460197689764; 1.2189895989248674 +50.120105449151986; 0.49659232145033727 +99.34721307419954; 0.2818382931264458 diff --git a/WPDigitalizer/MQ135/Acetona.csv b/WPDigitalizer/MQ135/Acetona.csv new file mode 100644 index 0000000..78522e8 --- /dev/null +++ b/WPDigitalizer/MQ135/Acetona.csv @@ -0,0 +1,3 @@ +10.038068731719024; 1.4367778871086752 +100.76282386271518; 0.7437057711666111 +199.67791490816478; 0.5858066785834567 diff --git a/WPDigitalizer/MQ135/Alcohol.csv b/WPDigitalizer/MQ135/Alcohol.csv new file mode 100644 index 0000000..667a770 --- /dev/null +++ b/WPDigitalizer/MQ135/Alcohol.csv @@ -0,0 +1,3 @@ +10; 1.8980643862295867 +100.76282386271518; 0.9276207214357883 +199.67791490816478; 0.7371610501169261 diff --git a/WPDigitalizer/MQ135/CO.csv b/WPDigitalizer/MQ135/CO.csv new file mode 100644 index 0000000..0f0a1fe --- /dev/null +++ b/WPDigitalizer/MQ135/CO.csv @@ -0,0 +1,3 @@ +9.92429510870452; 2.850325339883499 +100.76282386271518; 1.5488850711364055 +199.67791490816478; 1.3446177759671738 diff --git a/WPDigitalizer/MQ135/CO2.csv b/WPDigitalizer/MQ135/CO2.csv new file mode 100644 index 0000000..2e767bc --- /dev/null +++ b/WPDigitalizer/MQ135/CO2.csv @@ -0,0 +1,3 @@ +10; 2.3054935712377356 +100.76282386271518; 1.049816136090719 +198.16625542394166; 0.8052859018667691 diff --git a/WPDigitalizer/MQ135/MQ135.png b/WPDigitalizer/MQ135/MQ135.png new file mode 100644 index 0000000..12654c6 Binary files /dev/null and b/WPDigitalizer/MQ135/MQ135.png differ diff --git a/WPDigitalizer/MQ135/MQ135_Analisis.xlsx b/WPDigitalizer/MQ135/MQ135_Analisis.xlsx new file mode 100644 index 0000000..4b26767 Binary files /dev/null and b/WPDigitalizer/MQ135/MQ135_Analisis.xlsx differ diff --git a/WPDigitalizer/MQ135/NH4.csv b/WPDigitalizer/MQ135/NH4.csv new file mode 100644 index 0000000..1f2aaba --- /dev/null +++ b/WPDigitalizer/MQ135/NH4.csv @@ -0,0 +1,3 @@ +10; 2.563475521052897 +100.38068731719024; 1 +199.67791490816478; 0.7670732751979543 diff --git a/WPDigitalizer/MQ135/Tolueno.csv b/WPDigitalizer/MQ135/Tolueno.csv new file mode 100644 index 0000000..7a169db --- /dev/null +++ b/WPDigitalizer/MQ135/Tolueno.csv @@ -0,0 +1,3 @@ +10; 1.5420548019516276 +100.38068731719024; 0.8017347542813508 +199.67791490816478; 0.6427786162225773 diff --git a/WPDigitalizer/MQ2/Alcohol.csv b/WPDigitalizer/MQ2/Alcohol.csv new file mode 100644 index 0000000..1f5653c --- /dev/null +++ b/WPDigitalizer/MQ2/Alcohol.csv @@ -0,0 +1,9 @@ +202,97159045689085; 2,870821251841819 +493,62843297110385; 2,120486081991352 +789,3018264543583; 1,722949305824931 +1013,5564768245204; 1,628558370192401 +1483,4109724050659; 1,4241031945513674 +2002,568136043121; 1,2616407836292618 +3045,8553406742876; 1,09372808300933 +4983,9913111605565; 0,8886628824162796 +10116,086432495827; 0,6593474448589979 diff --git a/WPDigitalizer/MQ2/CH4.csv b/WPDigitalizer/MQ2/CH4.csv new file mode 100644 index 0000000..6460416 --- /dev/null +++ b/WPDigitalizer/MQ2/CH4.csv @@ -0,0 +1,9 @@ +200,6424043638923; 3,0628594206904824 +493,62843297110385; 2,262307524341795 +795,3985507023424; 1,9027463399615197 +1021,3853885815306; 1,760109364516406 +1466,3881949840988; 1,512822440016997 +2010,2873757128875; 1,3635579819828156 +3022,508881097584; 1,1618613226754184 +4945,78905312065; 0,9359079659557669 +10155,080609166793; 0,7034431020028873 diff --git a/WPDigitalizer/MQ2/CO.csv b/WPDigitalizer/MQ2/CO.csv new file mode 100644 index 0000000..4b41fba --- /dev/null +++ b/WPDigitalizer/MQ2/CO.csv @@ -0,0 +1,9 @@ +202,97159045689085; 5,230578600305607 +491,73296457790207; 4,06886745979215 +810,8471866516105; 3,4816976949280916 +994,2457296427418; 3,220835982615804 +1483,4109724050659; 2,8043001628397395 +2025,8152351174235; 2,505895099093425 +3045,8553406742876; 2,2293985477843727 +4983,9913111605565; 1,84294785992263 +10272,967317129345; 1,4525325413623644 diff --git a/WPDigitalizer/MQ2/H2.csv b/WPDigitalizer/MQ2/H2.csv new file mode 100644 index 0000000..9d84a4e --- /dev/null +++ b/WPDigitalizer/MQ2/H2.csv @@ -0,0 +1,9 @@ +199,87196386572526; 2,0769753765580705 +495,5312077697903; 1,3831422575910868 +792,3443246647935; 1,1093808898233806 +998,0782190045875; 1,004327136273875 +1477,714868970752; 0,8303118686874813 +2033,6240846866745; 0,7167722606428578 +2976,351441631319; 0,5951498799327694 +4907,879615117585; 0,46313409452053067 +10038,546701761785; 0,33483775607304667 diff --git a/WPDigitalizer/MQ2/LPG.csv b/WPDigitalizer/MQ2/LPG.csv new file mode 100644 index 0000000..bd66c93 --- /dev/null +++ b/WPDigitalizer/MQ2/LPG.csv @@ -0,0 +1,9 @@ +197,57834731787014; 1,5893603059497052 +497,4413171377462; 1,081492898685633 +798,4645497739094; 0,8636972212632283 +1005,7875736205846; 0,7785412443059092 +1455,1483398731953; 0,6691551077105506 +1964,4142809066307; 0,5776630257056471 +2964,922642745657; 0,4673698778126437 +4907,879615117585; 0,3636968635962981 +9961,601312513694; 0,2562263980512121 diff --git a/WPDigitalizer/MQ2/MQ2.png b/WPDigitalizer/MQ2/MQ2.png new file mode 100644 index 0000000..25a171b Binary files /dev/null and b/WPDigitalizer/MQ2/MQ2.png differ diff --git a/WPDigitalizer/MQ2/MQ2_Analisis.xlsx b/WPDigitalizer/MQ2/MQ2_Analisis.xlsx new file mode 100644 index 0000000..01714df Binary files /dev/null and b/WPDigitalizer/MQ2/MQ2_Analisis.xlsx differ diff --git a/WPDigitalizer/MQ2/Propane.csv b/WPDigitalizer/MQ2/Propane.csv new file mode 100644 index 0000000..841b136 --- /dev/null +++ b/WPDigitalizer/MQ2/Propane.csv @@ -0,0 +1,8 @@ +199,87196386572526; 1,7177387821105947 +505,1556673863905; 1,1146494552818709 +804,6320487186803; 0,9135362299047323 +1477,714868970752; 0,695649154812918 +1964,4142809066307; 0,6189637265894852 +2976,351441631319; 0,49862651200770775 +5003,202953826009; 0,3981937374085895 +10038,546701761785; 0,2769237448903758 diff --git a/WPDigitalizer/MQ3/Alcohol.csv b/WPDigitalizer/MQ3/Alcohol.csv new file mode 100644 index 0000000..1a87832 --- /dev/null +++ b/WPDigitalizer/MQ3/Alcohol.csv @@ -0,0 +1,10 @@ +0,10353670498698248; 2,3006052433419897 +0,21669508284625513; 1,5283067326587703 +0,4121870467079977; 0,9849655764983776 +1,0353670498698249; 0,5373573058775191 +1,62674977267572; 0,3969028437065575 +2,533807310942618; 0,2931603713568166 +4,086210681445435; 0,20691380811147922 +6,147226923260454; 0,16237767391887242 +8,047488733750896; 0,12937254012807994 +10,087268592871308; 0,11635618505359083 diff --git a/WPDigitalizer/MQ3/Benzine.csv b/WPDigitalizer/MQ3/Benzine.csv new file mode 100644 index 0000000..bcc17eb --- /dev/null +++ b/WPDigitalizer/MQ3/Benzine.csv @@ -0,0 +1,10 @@ +0,10264097167012301; 4,153565396068835 +0,21482037565589762; 3,2105463740271127 +0,40862106814454346; 2,597010372492914 +1,02640971670123; 1,7782794100389265 +1,640946189037232; 1,4826977604563574 +2,5118864315095824; 1,2551169959105486 +4,050859401456971; 1,030760801977862 +6,147226923260454; 0,941204967268068 +7,977867010935023; 0,8337822234717909 +9,913486399149756; 0,7729615566100769 diff --git a/WPDigitalizer/MQ3/CH4.csv b/WPDigitalizer/MQ3/CH4.csv new file mode 100644 index 0000000..a92d6ed --- /dev/null +++ b/WPDigitalizer/MQ3/CH4.csv @@ -0,0 +1,10 @@ +9,913486399149756; 39,09356382652744 +7,9088476107129795; 39,69028437065577 +6,147226923260454; 40,29611320200408 +4,086210681445435; 41,53565396068835 +2,5118864315095824; 42,16965034285831 +1,6552664955267127; 42,16965034285831 +1,0175298766472782; 44,13029616837808 +0,4121870467079977; 45,48777947003787 +0,21669508284625513; 49,066996389388365 +0,10175298766472783; 49,066996389388365 diff --git a/WPDigitalizer/MQ3/CO.csv b/WPDigitalizer/MQ3/CO.csv new file mode 100644 index 0000000..8e78ae5 --- /dev/null +++ b/WPDigitalizer/MQ3/CO.csv @@ -0,0 +1,7 @@ +0,10175298766472783; 50,57633654897071 +0,21482037565589762; 46,1821007306166 +0,4121870467079977; 42,16965034285831 +1,02640971670123; 34,63168991269758 +6,20087290762581; 20,38029782919976 +7,977867010935023; 18,05422902555477 +9,913486399149756; 15,99364192019675 diff --git a/WPDigitalizer/MQ3/Hexane.csv b/WPDigitalizer/MQ3/Hexane.csv new file mode 100644 index 0000000..2268966 --- /dev/null +++ b/WPDigitalizer/MQ3/Hexane.csv @@ -0,0 +1,7 @@ +0,10353670498698248; 52,1321052223192 +0,21482037565589762; 38,50581463177166 +0,4050859401456971; 31,14734638595688 +1,0175298766472782; 23,006052433419896 +6,147226923260454; 12,551169959105493 +7,977867010935023; 10,951501934480216 +10; 10,152639075520527 diff --git a/WPDigitalizer/MQ3/LPG.csv b/WPDigitalizer/MQ3/LPG.csv new file mode 100644 index 0000000..77b2895 --- /dev/null +++ b/WPDigitalizer/MQ3/LPG.csv @@ -0,0 +1,7 @@ +0,10444025524245701; 51,3483290743756 +0,21482037565589762; 42,813323987194025 +0,40862106814454346; 36,24186400012689 +1,0353670498698249; 29,76351441631324 +6,147226923260454; 15,753186734235184 +7,977867010935023; 13,74541620871335 +9,913486399149756; 13,134727062036905 diff --git a/WPDigitalizer/MQ3/MQ3_Analisis.xlsx b/WPDigitalizer/MQ3/MQ3_Analisis.xlsx new file mode 100644 index 0000000..a1263de Binary files /dev/null and b/WPDigitalizer/MQ3/MQ3_Analisis.xlsx differ diff --git a/WPDigitalizer/MQ3/MQ3_HANWEI.png b/WPDigitalizer/MQ3/MQ3_HANWEI.png new file mode 100644 index 0000000..bb67e76 Binary files /dev/null and b/WPDigitalizer/MQ3/MQ3_HANWEI.png differ diff --git a/WPDigitalizer/MQ303A/MQ303A.png b/WPDigitalizer/MQ303A/MQ303A.png new file mode 100644 index 0000000..7027b10 Binary files /dev/null and b/WPDigitalizer/MQ303A/MQ303A.png differ diff --git a/WPDigitalizer/MQ303A/MQ303_Analisis.xlsx b/WPDigitalizer/MQ303A/MQ303_Analisis.xlsx new file mode 100644 index 0000000..389b1df Binary files /dev/null and b/WPDigitalizer/MQ303A/MQ303_Analisis.xlsx differ diff --git a/WPDigitalizer/MQ303A/ethanol.csv b/WPDigitalizer/MQ303A/ethanol.csv new file mode 100644 index 0000000..c093642 --- /dev/null +++ b/WPDigitalizer/MQ303A/ethanol.csv @@ -0,0 +1,7 @@ +9.760536373079; 0.6367243878484852 +28.910302212991695; 0.4177521754427481 +97.13336203720006; 0.25629843390996093 +290.5078650510864; 0.168158017508225 +976.0536373079011; 0.10120519080325145 +2891.0302212991683; 0.06328706659432291 +9713.336203720031; 0.03700727788462973 diff --git a/WPDigitalizer/MQ303A/hydrogen.csv b/WPDigitalizer/MQ303A/hydrogen.csv new file mode 100644 index 0000000..056126d --- /dev/null +++ b/WPDigitalizer/MQ303A/hydrogen.csv @@ -0,0 +1,7 @@ +9.760536373079; 0.7353881994623019 +28.910302212991695; 0.4824850845722687 +99.03517507922587; 0.31357828056236803 +287.70497277226445; 0.21174709621606536 +957.310079418858; 0.1324287647386883 +2919.1953454784298; 0.08942846363527807 +9619.619515387938; 0.058119288604045784 diff --git a/WPDigitalizer/MQ303A/iso-butane.csv b/WPDigitalizer/MQ303A/iso-butane.csv new file mode 100644 index 0000000..cbe4dbc --- /dev/null +++ b/WPDigitalizer/MQ303A/iso-butane.csv @@ -0,0 +1,5 @@ +95.26807029019824; 0.39107646068827623 +284.9291234966511; 0.26663511749442803 +929.8674652605272; 0.17495585827318036 +2919.195345478436; 0.12044176890728615 +9526.8070290198; 0.08534073089952911 diff --git a/WPDigitalizer/MQ309A/CH4.csv b/WPDigitalizer/MQ309A/CH4.csv new file mode 100644 index 0000000..40963be --- /dev/null +++ b/WPDigitalizer/MQ309A/CH4.csv @@ -0,0 +1,4 @@ +297.80016207132866; 2.025316893307991 +988.5488639786258; 1.0003922437937416 +2969.1739759583893; 0.5169186278027208 +6980.605162361656; 0.3103411567039483 diff --git a/WPDigitalizer/MQ309A/CO.csv b/WPDigitalizer/MQ309A/CO.csv new file mode 100644 index 0000000..1c9f2de --- /dev/null +++ b/WPDigitalizer/MQ309A/CO.csv @@ -0,0 +1,3 @@ +997.4030681553679; 6.047100899623128 +2968.6271383071316; 4.749258614355932 +7053.591017881534; 3.7132284984226107 diff --git a/WPDigitalizer/MQ309A/H2.csv b/WPDigitalizer/MQ309A/H2.csv new file mode 100644 index 0000000..a04bf45 --- /dev/null +++ b/WPDigitalizer/MQ309A/H2.csv @@ -0,0 +1,4 @@ +299.38537711451056; 2.3285955073099673 +984.0606504885633; 1.2333424638659303 +2941.7319864433844; 0.7218593003713822 +6986.58266643243; 0.4600809389255104 diff --git a/WPDigitalizer/MQ309A/MQ309A.png b/WPDigitalizer/MQ309A/MQ309A.png new file mode 100644 index 0000000..aabf37a Binary files /dev/null and b/WPDigitalizer/MQ309A/MQ309A.png differ diff --git a/WPDigitalizer/MQ309A/MQ309_Analisis.xlsx b/WPDigitalizer/MQ309A/MQ309_Analisis.xlsx new file mode 100644 index 0000000..41458f3 Binary files /dev/null and b/WPDigitalizer/MQ309A/MQ309_Analisis.xlsx differ diff --git a/WPDigitalizer/MQ309A/alcohol.csv b/WPDigitalizer/MQ309A/alcohol.csv new file mode 100644 index 0000000..7f7f082 --- /dev/null +++ b/WPDigitalizer/MQ309A/alcohol.csv @@ -0,0 +1,3 @@ +992.1649186186961; 5.365424808947786 +2967.6945300369325; 4.110129936207673 +7050.993114231691; 3.1344326867968353 diff --git a/WPDigitalizer/MQ4/CH4.csv b/WPDigitalizer/MQ4/CH4.csv new file mode 100644 index 0000000..5994b39 --- /dev/null +++ b/WPDigitalizer/MQ4/CH4.csv @@ -0,0 +1,4 @@ +196.41411331843435; 1.785659140299506 +1000; 1.0167033267314904 +4906.401135721315; 0.5725240898096816 +10000; 0.434399871637449 diff --git a/WPDigitalizer/MQ4/CO.csv b/WPDigitalizer/MQ4/CO.csv new file mode 100644 index 0000000..24c9097 --- /dev/null +++ b/WPDigitalizer/MQ4/CO.csv @@ -0,0 +1,4 @@ +201.93931722345428; 4.3200781844473 +1004.6343704770624; 3.804834154219557 +4997.987673826894; 3.62037033446632 +10092.902183438433; 3.5412833006774624 diff --git a/WPDigitalizer/MQ4/H2.csv b/WPDigitalizer/MQ4/H2.csv new file mode 100644 index 0000000..7bd5863 --- /dev/null +++ b/WPDigitalizer/MQ4/H2.csv @@ -0,0 +1,4 @@ +200.08052545562066; 3.742324879029739 +1009.2902183438433; 2.839470820549322 +4997.987673826894; 2.107371038144029 +10092.902183438433; 1.8663075519737489 diff --git a/WPDigitalizer/MQ4/LPG.csv b/WPDigitalizer/MQ4/LPG.csv new file mode 100644 index 0000000..0d7166d --- /dev/null +++ b/WPDigitalizer/MQ4/LPG.csv @@ -0,0 +1,4 @@ +198.238843316975; 2.5993700190923614 +1000; 1.5298620732204247 +4997.987673826894; 0.9004019996720343 +10000; 0.7462797865710782 diff --git a/WPDigitalizer/MQ4/MQ4.png b/WPDigitalizer/MQ4/MQ4.png new file mode 100644 index 0000000..d211cfb Binary files /dev/null and b/WPDigitalizer/MQ4/MQ4.png differ diff --git a/WPDigitalizer/MQ4/MQ4_Analisis.xlsx b/WPDigitalizer/MQ4/MQ4_Analisis.xlsx new file mode 100644 index 0000000..0e1d11b Binary files /dev/null and b/WPDigitalizer/MQ4/MQ4_Analisis.xlsx differ diff --git a/WPDigitalizer/MQ4/alcohol.csv b/WPDigitalizer/MQ4/alcohol.csv new file mode 100644 index 0000000..f85134e --- /dev/null +++ b/WPDigitalizer/MQ4/alcohol.csv @@ -0,0 +1,4 @@ +200.08052545562066; 4.043101351842418 +1000; 3.62037033446632 +4997.987673826894; 3.2062339160297557 +10000; 3.0676835080273737 diff --git a/WPDigitalizer/MQ4/smoke.csv b/WPDigitalizer/MQ4/smoke.csv new file mode 100644 index 0000000..1a50052 --- /dev/null +++ b/WPDigitalizer/MQ4/smoke.csv @@ -0,0 +1,4 @@ +201.93931722345428; 3.998696708813267 +1000; 3.5806084689216804 +4906.401135721315; 2.8710025163391744 +9907.95295371942; 2.542586749554272 diff --git a/WPDigitalizer/MQ5/CH4.csv b/WPDigitalizer/MQ5/CH4.csv new file mode 100644 index 0000000..afadf10 --- /dev/null +++ b/WPDigitalizer/MQ5/CH4.csv @@ -0,0 +1,9 @@ +199.50510541210926; 0.9394382028230388 +496.95211667480095; 0.6692392369209975 +799.7415832109868; 0.5499333750837017 +1504.4171746488084; 0.44390171376737736 +2023.4684598794727; 0.3952748884733104 +2988.5680240937645; 0.3336228699096515 +5040.078049208363; 0.27414763022357547 +10011.805783294312; 0.2005975301100415 +1002.7568511322031; 0.5074886767657293 diff --git a/WPDigitalizer/MQ5/CO.csv b/WPDigitalizer/MQ5/CO.csv new file mode 100644 index 0000000..90efc6e --- /dev/null +++ b/WPDigitalizer/MQ5/CO.csv @@ -0,0 +1,9 @@ +199.9855214358912; 3.8828202580089815 +498.26937671429977; 3.1906265077256903 +795.8195622202916; 3.024267170309512 +1005.7038415947678; 2.8665818124639726 +1520.82264483807; 2.6690492596465254 +2014.1239376718024; 2.575447570454306 +3045.8449481244156; 2.44116367657533 +5019.155676126041; 2.355553775260732 +10052.9317520536; 2.2527509333384566 diff --git a/WPDigitalizer/MQ5/H2.csv b/WPDigitalizer/MQ5/H2.csv new file mode 100644 index 0000000..cffc65b --- /dev/null +++ b/WPDigitalizer/MQ5/H2.csv @@ -0,0 +1,9 @@ +201.27838342411644; 1.7390420266081872 +493.5883113591315; 1.2169460288151033 +800.6009631942848; 1.0363438534979406 +996.0747838965058; 0.9823088618165925 +1506.102124833289; 0.8592282097568055 +1979.120381371035; 0.8290956779033114 +3016.2263786115363; 0.7651048064273167 +4970.272947779147; 0.7317135294820835 +10110.577956905698; 0.6573996331028706 diff --git a/WPDigitalizer/MQ5/LPG.csv b/WPDigitalizer/MQ5/LPG.csv new file mode 100644 index 0000000..aa6d3e9 --- /dev/null +++ b/WPDigitalizer/MQ5/LPG.csv @@ -0,0 +1,9 @@ +199.40554113757054; 0.6997795396518534 +492.7900571856172; 0.4683199251295333 +793.0556060550289; 0.38828202580089843 +1010.0183410938197; 0.35831382566228703 +1491.6820305076094; 0.294436907782315 +1990.8004169615886; 0.2669049259646528 +3010.1187499399794; 0.23138813479241493 +4997.71532819448; 0.1884489831773179 +9928.405728688784; 0.1441832227953065 diff --git a/WPDigitalizer/MQ5/MQ5.png b/WPDigitalizer/MQ5/MQ5.png new file mode 100644 index 0000000..18f60ad Binary files /dev/null and b/WPDigitalizer/MQ5/MQ5.png differ diff --git a/WPDigitalizer/MQ5/MQ5_Analisis.xlsx b/WPDigitalizer/MQ5/MQ5_Analisis.xlsx new file mode 100644 index 0000000..902aee7 Binary files /dev/null and b/WPDigitalizer/MQ5/MQ5_Analisis.xlsx differ diff --git a/WPDigitalizer/MQ5/alcohol.csv b/WPDigitalizer/MQ5/alcohol.csv new file mode 100644 index 0000000..2c9c19f --- /dev/null +++ b/WPDigitalizer/MQ5/alcohol.csv @@ -0,0 +1,9 @@ +199.95224789043016; 3.5197484625947 +494.320557102411; 2.91820823764409 +789.4648671924948; 2.6690492596465254 +1005.4908825301579; 2.529884971601279 +1514.5552252760385; 2.334624583227059 +1997.9502969343455; 2.212897205283967 +3021.2036633504285; 2.0239582533031633 +5016.954385512384; 1.8184020925222013 +10045.48320022528; 1.4547578108480472 diff --git a/WPDigitalizer/MQ6/Alcohol.csv b/WPDigitalizer/MQ6/Alcohol.csv new file mode 100644 index 0000000..6a15dab --- /dev/null +++ b/WPDigitalizer/MQ6/Alcohol.csv @@ -0,0 +1,9 @@ +200.61709699314238; 7.974609058476425 +492.22943130813104; 6.94832848780189 +793.9951518737147; 6.359438963553435 +995.8146390713046; 6.113990876540328 +1540.3302460780208; 5.763466334193115 +1981.0866018373115; 5.486763480177575 +2988.201201712299; 5.12155344885937 +4942.982478819383; 4.641588833612772 +9916.467953887115; 4.248201698162607 diff --git a/WPDigitalizer/MQ6/CH4.csv b/WPDigitalizer/MQ6/CH4.csv new file mode 100644 index 0000000..6a1d90f --- /dev/null +++ b/WPDigitalizer/MQ6/CH4.csv @@ -0,0 +1,9 @@ +200.61709699314238; 2.5217928074196405 +500.55701475595885; 1.769551668079795 +793.9951518737147; 1.4823138652959922 +1004.2029517989399; 1.3566837790884247 +1553.3053232670727; 1.125335582600764 +1997.7744203375898; 1.029960365809989 +3013.37251893298; 0.8886238162743398 +4984.620029838153; 0.708642753483925 +9916.467953887115; 0.5379838403443684 diff --git a/WPDigitalizer/MQ6/CO.csv b/WPDigitalizer/MQ6/CO.csv new file mode 100644 index 0000000..0e1444b --- /dev/null +++ b/WPDigitalizer/MQ6/CO.csv @@ -0,0 +1,9 @@ +200.61709699314238; 8.886238162743389 +500.55701475595885; 8.29475224769689 +793.9951518737147; 7.974609058476425 +1004.2029517989399; 7.742636826811258 +1566.389696906344; 7.591749689098755 +1981.0866018373115; 7.517412401323064 +3013.37251893298; 7.298739496069015 +4942.982478819383; 6.94832848780189 +10000; 6.42232542222935 diff --git a/WPDigitalizer/MQ6/H2.csv b/WPDigitalizer/MQ6/H2.csv new file mode 100644 index 0000000..bbe2cc6 --- /dev/null +++ b/WPDigitalizer/MQ6/H2.csv @@ -0,0 +1,9 @@ +202.30700883221544; 5.70703132605716 +496.37575959208704; 4.206603936763945 +800.6834243461444; 3.665241237079623 +1004.2029517989399; 3.387774774440251 +1553.3053232670727; 2.951790088127165 +1997.7744203375898; 2.755312992946309 +2988.201201712299; 2.424462017082326 +4942.982478819383; 2.263084940708007 +9916.467953887115; 2.030917620904734 diff --git a/WPDigitalizer/MQ6/LPG.csv b/WPDigitalizer/MQ6/LPG.csv new file mode 100644 index 0000000..9e82c1a --- /dev/null +++ b/WPDigitalizer/MQ6/LPG.csv @@ -0,0 +1,9 @@ +200.61709699314238; 1.9913394573407317 +500.55701475595885; 1.3566837790884247 +793.9951518737147; 1.0926008611173774 +995.8146390713046; 1.009888680280811 +1566.389696906344; 0.8294752247696895 +1981.0866018373115; 0.7443803013251684 +2988.201201712299; 0.6359438963553441 +4942.982478819383; 0.5172198853456232 +10000; 0.3926603903768335 diff --git a/WPDigitalizer/MQ6/MQ6.png b/WPDigitalizer/MQ6/MQ6.png new file mode 100644 index 0000000..567bf01 Binary files /dev/null and b/WPDigitalizer/MQ6/MQ6.png differ diff --git a/WPDigitalizer/MQ6/MQ6_Analisis.xlsx b/WPDigitalizer/MQ6/MQ6_Analisis.xlsx new file mode 100644 index 0000000..23189ae Binary files /dev/null and b/WPDigitalizer/MQ6/MQ6_Analisis.xlsx differ diff --git a/WPDigitalizer/MQ7/Alcohol.csv b/WPDigitalizer/MQ7/Alcohol.csv new file mode 100644 index 0000000..cccc017 --- /dev/null +++ b/WPDigitalizer/MQ7/Alcohol.csv @@ -0,0 +1,5 @@ +49.628693072621026; 16.21349131306841 +97.88667171926593; 14.747699500722867 +395.73330070046325; 13.162596366729884 +1008.580518414832; 12.915496650148834 +4077.4590714368906; 11.97262280637705 diff --git a/WPDigitalizer/MQ7/CH4.csv b/WPDigitalizer/MQ7/CH4.csv new file mode 100644 index 0000000..e3edfec --- /dev/null +++ b/WPDigitalizer/MQ7/CH4.csv @@ -0,0 +1,5 @@ +49.628693072621026; 13.932624155766176 +99.14924805127936; 12.673035704539204 +400.8376064295103; 11.747862309301768 +1008.580518414832; 11.098581862287732 +4025.5363043001485; 9.010160148459464 diff --git a/WPDigitalizer/MQ7/CO.csv b/WPDigitalizer/MQ7/CO.csv new file mode 100644 index 0000000..f6bc9bf --- /dev/null +++ b/WPDigitalizer/MQ7/CO.csv @@ -0,0 +1,5 @@ +50.9172059513443; 1.6060583396852564 +97.88667171926593; 1 +395.73330070046325; 0.38040561047825117 +1008.580518414832; 0.21544346900318867 +4025.5363043001485; 0.09010160148459469 diff --git a/WPDigitalizer/MQ7/H2.csv b/WPDigitalizer/MQ7/H2.csv new file mode 100644 index 0000000..6808708 --- /dev/null +++ b/WPDigitalizer/MQ7/H2.csv @@ -0,0 +1,5 @@ +49.628693072621026; 1.2553517493174822 +99.14924805127936; 0.7816352110618203 +395.73330070046325; 0.28090513016247853 +995.7371543297933; 0.14199183590016082 +4025.5363043001485; 0.05200551275510892 diff --git a/WPDigitalizer/MQ7/LPG.csv b/WPDigitalizer/MQ7/LPG.csv new file mode 100644 index 0000000..7352fa1 --- /dev/null +++ b/WPDigitalizer/MQ7/LPG.csv @@ -0,0 +1,5 @@ +49.628693072621026; 8.675042376416162 +100.42810953188514; 7.742636826811269 +395.73330070046325; 6.405962059414787 +1008.580518414832; 5.7174403997402825 +4025.5363043001485; 4.913127387829672 diff --git a/WPDigitalizer/MQ7/MQ7.png b/WPDigitalizer/MQ7/MQ7.png new file mode 100644 index 0000000..3f37221 Binary files /dev/null and b/WPDigitalizer/MQ7/MQ7.png differ diff --git a/WPDigitalizer/MQ7/MQ7_Analisis.xlsx b/WPDigitalizer/MQ7/MQ7_Analisis.xlsx new file mode 100644 index 0000000..01f8666 Binary files /dev/null and b/WPDigitalizer/MQ7/MQ7_Analisis.xlsx differ diff --git a/WPDigitalizer/MQ8/CH4.csv b/WPDigitalizer/MQ8/CH4.csv new file mode 100644 index 0000000..14a774b --- /dev/null +++ b/WPDigitalizer/MQ8/CH4.csv @@ -0,0 +1,9 @@ +197.3675219171091; 53.973604887574176 +498.48146621339083; 45.12608382420112 +795.650655600664; 44.237271963968524 +983.2970203866512; 43.36596630981325 +1488.6279781063974; 40.8536723514471 +1974.2394063376971; 40.04901071359078 +2962.578403579938; 37.72887591167065 +4986.144593317828; 34.15681140620415 +9836.718135530395; 29.13150024559977 diff --git a/WPDigitalizer/MQ8/CO.csv b/WPDigitalizer/MQ8/CO.csv new file mode 100644 index 0000000..4dad511 --- /dev/null +++ b/WPDigitalizer/MQ8/CO.csv @@ -0,0 +1,9 @@ +197.3261584388979; 67.17595092308035 +498.32951751341614; 62.037828443483846 +795.4081228467958; 60.815919670756 +991.764510099561; 56.164260264617475 +1488.2025662751867; 55.058038398814624 +1973.712826632303; 52.9105305833542 +2961.7882088051997; 49.84529723034052 +4940.937073252349; 46.032753623854894 +9833.719675940582; 40.04901071359078 diff --git a/WPDigitalizer/MQ8/H2.csv b/WPDigitalizer/MQ8/H2.csv new file mode 100644 index 0000000..bc707d6 --- /dev/null +++ b/WPDigitalizer/MQ8/H2.csv @@ -0,0 +1,9 @@ +197.71381069747443; 8.656952025866781 +499.8320428170576; 2.676984079307525 +805.366809041948; 1.3885086707523655 +1004.4112564504042; 1.0099960014571165 +1494.738927891725; 0.5672567829206054 +2000.6339333375806; 0.38106013810259154 +3003.731420179191; 0.20980423715910143 +4970.208810248287; 0.09657866758385764 +9989.906290868468; 0.028700097315512492 diff --git a/WPDigitalizer/MQ8/LPG.csv b/WPDigitalizer/MQ8/LPG.csv new file mode 100644 index 0000000..f20e432 --- /dev/null +++ b/WPDigitalizer/MQ8/LPG.csv @@ -0,0 +1,9 @@ +199.19992029504726; 34.84308742951522 +498.77599867815434; 24.356174184509882 +803.2671839366373; 21.190144061945304 +1010.4194762418981; 19.962548428000286 +1489.8765544753824; 17.025564169829355 +1993.4420629232532; 16.361491616926376 +3018.016586613433; 14.812431326920972 +5079.255829538559; 13.95431181759239 +9931.639063039429; 12.886980990830155 diff --git a/WPDigitalizer/MQ8/MQ8.png b/WPDigitalizer/MQ8/MQ8.png new file mode 100644 index 0000000..0be880b Binary files /dev/null and b/WPDigitalizer/MQ8/MQ8.png differ diff --git a/WPDigitalizer/MQ8/MQ8_Analisis.xlsx b/WPDigitalizer/MQ8/MQ8_Analisis.xlsx new file mode 100644 index 0000000..00e5d55 Binary files /dev/null and b/WPDigitalizer/MQ8/MQ8_Analisis.xlsx differ diff --git a/WPDigitalizer/MQ8/alcohol.csv b/WPDigitalizer/MQ8/alcohol.csv new file mode 100644 index 0000000..931dd2e --- /dev/null +++ b/WPDigitalizer/MQ8/alcohol.csv @@ -0,0 +1,9 @@ +199.2682532709533; 24.356174184509882 +499.00414332610546; 15.11004155598238 +803.7571168359392; 11.211817654552407 +984.6281828568244; 10.56229029121401 +1490.9557131626193; 7.994803158635606 +1995.0380188336974; 7.0953189423792224 +2968.059118165054; 5.478490427237765 +4952.53065553922; 3.9850333974025767 +9947.73757696152; 2.3758003129622796 diff --git a/WPDigitalizer/MQ9/CH4.csv b/WPDigitalizer/MQ9/CH4.csv new file mode 100644 index 0000000..ab64cde --- /dev/null +++ b/WPDigitalizer/MQ9/CH4.csv @@ -0,0 +1,9 @@ +198.18095665651532; 3.0950110313917216 +494.9047587272332; 2.232487748360993 +801.1326060396068; 1.896157737361306 +1003.0352892016884; 1.7729578536323674 +1498.4971204129793; 1.5056036785633509 +1984.698008371376; 1.341527316523078 +2988.797592508444; 1.172764624342811 +4996.436678734592; 0.9400305030282127 +9886.576272933122; 0.7044429033651796 diff --git a/WPDigitalizer/MQ9/CO.csv b/WPDigitalizer/MQ9/CO.csv new file mode 100644 index 0000000..72b90a2 --- /dev/null +++ b/WPDigitalizer/MQ9/CO.csv @@ -0,0 +1,4 @@ +198.40130839598982; 1.6354726170863763 +491.5621461294025; 1.091904853128837 +789.4164119046734; 0.8922238673494899 +988.4495716345693; 0.7948981819701892 diff --git a/WPDigitalizer/MQ9/LPG.csv b/WPDigitalizer/MQ9/LPG.csv new file mode 100644 index 0000000..2eaf704 --- /dev/null +++ b/WPDigitalizer/MQ9/LPG.csv @@ -0,0 +1,9 @@ +199.9186657411309; 2.0624562443673726 +495.3215741243735; 1.376975657716971 +801.8613331283198; 1.125181584172617 +995.992385093345; 1.0121624621384555 +1500.0369692554982; 0.8349837529476686 +1986.8043782713942; 0.7297470791550732 +2992.3222733611447; 0.5962150126919882 +4962.523371765791; 0.46874016780974886 +9978.97565986749; 0.3379571368636107 diff --git a/WPDigitalizer/MQ9/MQ9.png b/WPDigitalizer/MQ9/MQ9.png new file mode 100644 index 0000000..57a4ddb Binary files /dev/null and b/WPDigitalizer/MQ9/MQ9.png differ diff --git a/WPDigitalizer/MQ9/MQ9_Analisis.xlsx b/WPDigitalizer/MQ9/MQ9_Analisis.xlsx new file mode 100644 index 0000000..3db2cb5 Binary files /dev/null and b/WPDigitalizer/MQ9/MQ9_Analisis.xlsx differ diff --git a/static/img/bg.jpg b/static/img/bg.jpg new file mode 100644 index 0000000..56076e3 Binary files /dev/null and b/static/img/bg.jpg differ