diff --git a/Experiments/.ipynb_checkpoints/MQ135_Regression-checkpoint.ipynb b/Experiments/.ipynb_checkpoints/MQ135_Regression-checkpoint.ipynb
new file mode 100644
index 0000000..636d956
--- /dev/null
+++ b/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"
+ ],
+ "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/Experiments/MQ135.eps b/Experiments/MQ135.eps
new file mode 100644
index 0000000..0e61295
--- /dev/null
+++ b/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/Experiments/MQ135.png b/Experiments/MQ135.png
new file mode 100644
index 0000000..6cc8a01
Binary files /dev/null and b/Experiments/MQ135.png differ
diff --git a/Experiments/MQ135.svg b/Experiments/MQ135.svg
new file mode 100644
index 0000000..c5072ae
--- /dev/null
+++ b/Experiments/MQ135.svg
@@ -0,0 +1,1670 @@
+
+
+
+
diff --git a/Experiments/MQ135_Regression.ipynb b/Experiments/MQ135_Regression.ipynb
new file mode 100644
index 0000000..636d956
--- /dev/null
+++ b/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"
+ ],
+ "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
+}