diff --git a/Experiments/.ipynb_checkpoints/MQ3_Regression-checkpoint.ipynb b/Experiments/.ipynb_checkpoints/MQ3_Regression-checkpoint.ipynb
new file mode 100644
index 0000000..0544be7
--- /dev/null
+++ b/Experiments/.ipynb_checkpoints/MQ3_Regression-checkpoint.ipynb
@@ -0,0 +1,2363 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "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: 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: 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.20.3)\n",
+ "Requirement already satisfied: scipy>=0.13.3 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n",
+ "Requirement already satisfied: numpy>=1.8.2 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n",
+ "Collecting imblearn\n",
+ " Using cached https://files.pythonhosted.org/packages/81/a7/4179e6ebfd654bd0eac0b9c06125b8b4c96a9d0a8ff9e9507eb2a26d2d7e/imblearn-0.0-py2.py3-none-any.whl\n",
+ "Collecting imbalanced-learn (from imblearn)\n",
+ " Using cached https://files.pythonhosted.org/packages/e6/62/08c14224a7e242df2cef7b312d2ef821c3931ec9b015ff93bb52ec8a10a3/imbalanced_learn-0.5.0-py3-none-any.whl\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: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n",
+ "Collecting scikit-learn>=0.21 (from imbalanced-learn->imblearn)\n",
+ " Using cached https://files.pythonhosted.org/packages/75/14/fde90de4fc6722303ddbc183ec253c288dae8c7e4eb5a069ac49f14c9a0f/scikit_learn-0.21.2-cp37-cp37m-win_amd64.whl\n",
+ "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n",
+ "Installing collected packages: scikit-learn, imbalanced-learn, imblearn\n",
+ " Found existing installation: scikit-learn 0.20.3\n",
+ " Uninstalling scikit-learn-0.20.3:\n",
+ " Successfully uninstalled scikit-learn-0.20.3\n",
+ "Successfully installed imbalanced-learn-0.5.0 imblearn-0.0 scikit-learn-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": 32,
+ "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": 33,
+ "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": 38,
+ "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": 39,
+ "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": 40,
+ "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": 41,
+ "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": 43,
+ "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": 67,
+ "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": 45,
+ "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": 46,
+ "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": 62,
+ "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": 64,
+ "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": 68,
+ "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(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('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/Experiments/MQ2.eps b/Experiments/MQ2.eps
index 1b9d002..8ec4bda 100644
--- a/Experiments/MQ2.eps
+++ b/Experiments/MQ2.eps
@@ -1,7 +1,7 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Title: MQ2.eps
%%Creator: matplotlib version 3.0.3, http://matplotlib.org/
-%%CreationDate: Mon Jul 1 20:57:09 2019
+%%CreationDate: Mon Jul 1 21:41:20 2019
%%Orientation: portrait
%%BoundingBox: -18 198 630 594
%%EndComments
@@ -42,7 +42,7 @@ newpath
/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
+/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
@@ -54,7 +54,7 @@ newpath
/UnderlinePosition -130 def
/UnderlineThickness 90 def
end readonly def
-/CharStrings 35 dict dup begin
+/CharStrings 38 dict dup begin
/.notdef 0 def
/space{318 0 0 0 0 0 _sc
}_d
@@ -195,6 +195,36 @@ _cl}_d
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
@@ -692,6 +722,34 @@ _cl}_d
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
@@ -760,25 +818,28 @@ grestore
stroke
grestore
} bind def
-94.7684 49.5 o
+121.567 49.5 o
grestore
gsave
-85.768414 33.578125 translate
+109.566941 34.578125 translate
0.000000 rotate
/DejaVuSans findfont
10.0 scalefont
setfont
-0.000000 0.976562 moveto
+0.000000 0.064063 moveto
/one glyphshow
-6.362305 0.976562 moveto
+6.362305 0.064063 moveto
/zero glyphshow
/DejaVuSans findfont
7.0 scalefont
setfont
-12.820312 4.804688 moveto
-/two glyphshow
+12.820312 3.892188 moveto
+/minus glyphshow
+
+18.685547 3.892188 moveto
+/one glyphshow
grestore
@@ -800,10 +861,10 @@ grestore
stroke
grestore
} bind def
-353.394 49.5 o
+305.474 49.5 o
grestore
gsave
-344.394252 33.578125 translate
+296.474439 33.578125 translate
0.000000 rotate
/DejaVuSans findfont
10.0 scalefont
@@ -818,7 +879,47 @@ setfont
7.0 scalefont
setfont
12.820312 4.804688 moveto
-/three glyphshow
+/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
@@ -826,8 +927,8 @@ grestore
0.827 setgray
gsave
502.2 299 81 49.5 clipbox
-82.934344 49.5 m
-82.934344 348.48 l
+80.767292 49.5 m
+80.767292 348.48 l
stroke
grestore
0.600 setlinewidth
@@ -851,15 +952,15 @@ grestore
stroke
grestore
} bind def
-82.9343 49.5 o
+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
-172.622549 49.5 m
-172.622549 348.48 l
+93.079309 49.5 m
+93.079309 348.48 l
stroke
grestore
0.600 setlinewidth
@@ -883,15 +984,15 @@ grestore
stroke
grestore
} bind def
-172.623 49.5 o
+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
-218.164298 49.5 m
-218.164298 348.48 l
+103.744463 49.5 m
+103.744463 348.48 l
stroke
grestore
0.600 setlinewidth
@@ -915,15 +1016,15 @@ grestore
stroke
grestore
} bind def
-218.164 49.5 o
+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
-250.476684 49.5 m
-250.476684 348.48 l
+113.151795 49.5 m
+113.151795 348.48 l
stroke
grestore
0.600 setlinewidth
@@ -947,15 +1048,15 @@ grestore
stroke
grestore
} bind def
-250.477 49.5 o
+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
-275.540117 49.5 m
-275.540117 348.48 l
+176.928614 49.5 m
+176.928614 348.48 l
stroke
grestore
0.600 setlinewidth
@@ -979,15 +1080,15 @@ grestore
stroke
grestore
} bind def
-275.54 49.5 o
+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
-296.018433 49.5 m
-296.018433 348.48 l
+209.313117 49.5 m
+209.313117 348.48 l
stroke
grestore
0.600 setlinewidth
@@ -1011,15 +1112,15 @@ grestore
stroke
grestore
} bind def
-296.018 49.5 o
+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
-313.332603 49.5 m
-313.332603 348.48 l
+232.290288 49.5 m
+232.290288 348.48 l
stroke
grestore
0.600 setlinewidth
@@ -1043,15 +1144,15 @@ grestore
stroke
grestore
} bind def
-313.333 49.5 o
+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
-328.330819 49.5 m
-328.330819 348.48 l
+250.112766 49.5 m
+250.112766 348.48 l
stroke
grestore
0.600 setlinewidth
@@ -1075,15 +1176,15 @@ grestore
stroke
grestore
} bind def
-328.331 49.5 o
+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
-341.560183 49.5 m
-341.560183 348.48 l
+264.674791 49.5 m
+264.674791 348.48 l
stroke
grestore
0.600 setlinewidth
@@ -1107,15 +1208,15 @@ grestore
stroke
grestore
} bind def
-341.56 49.5 o
+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
-431.248387 49.5 m
-431.248387 348.48 l
+276.986807 49.5 m
+276.986807 348.48 l
stroke
grestore
0.600 setlinewidth
@@ -1139,15 +1240,15 @@ grestore
stroke
grestore
} bind def
-431.248 49.5 o
+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
-476.790137 49.5 m
-476.790137 348.48 l
+287.651961 49.5 m
+287.651961 348.48 l
stroke
grestore
0.600 setlinewidth
@@ -1171,15 +1272,15 @@ grestore
stroke
grestore
} bind def
-476.79 49.5 o
+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
-509.102522 49.5 m
-509.102522 348.48 l
+297.059294 49.5 m
+297.059294 348.48 l
stroke
grestore
0.600 setlinewidth
@@ -1203,15 +1304,15 @@ grestore
stroke
grestore
} bind def
-509.103 49.5 o
+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
-534.165956 49.5 m
-534.165956 348.48 l
+360.836113 49.5 m
+360.836113 348.48 l
stroke
grestore
0.600 setlinewidth
@@ -1235,15 +1336,15 @@ grestore
stroke
grestore
} bind def
-534.166 49.5 o
+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
-554.644272 49.5 m
-554.644272 348.48 l
+393.220616 49.5 m
+393.220616 348.48 l
stroke
grestore
0.600 setlinewidth
@@ -1267,15 +1368,15 @@ grestore
stroke
grestore
} bind def
-554.644 49.5 o
+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
-571.958441 49.5 m
-571.958441 348.48 l
+416.197786 49.5 m
+416.197786 348.48 l
stroke
grestore
0.600 setlinewidth
@@ -1299,7 +1400,231 @@ grestore
stroke
grestore
} bind def
-571.958 49.5 o
+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
@@ -1344,53 +1669,10 @@ grestore
stroke
grestore
} bind def
-81 63.09 o
+81 133.48 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
+56.000000 129.018895 translate
0.000000 rotate
/DejaVuSans findfont
10.0 scalefont
@@ -1427,10 +1709,10 @@ grestore
stroke
grestore
} bind def
-81 334.89 o
+81 234.185 o
grestore
gsave
-56.000000 330.929063 translate
+56.000000 230.223979 translate
0.000000 rotate
/DejaVuSans findfont
10.0 scalefont
@@ -1448,13 +1730,53 @@ setfont
/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 49.919929 m
-583.2 49.919929 l
+81 63.09 m
+583.2 63.09 l
stroke
grestore
0.600 setlinewidth
@@ -1478,15 +1800,15 @@ grestore
stroke
grestore
} bind def
-81 49.9199 o
+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 56.871557 m
-583.2 56.871557 l
+81 80.823285 m
+583.2 80.823285 l
stroke
grestore
0.600 setlinewidth
@@ -1510,15 +1832,15 @@ grestore
stroke
grestore
} bind def
-81 56.8716 o
+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 103.999976 m
-583.2 103.999976 l
+81 93.405251 m
+583.2 93.405251 l
stroke
grestore
0.600 setlinewidth
@@ -1542,15 +1864,15 @@ grestore
stroke
grestore
} bind def
-81 104 o
+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 127.930779 m
-583.2 127.930779 l
+81 103.164582 m
+583.2 103.164582 l
stroke
grestore
0.600 setlinewidth
@@ -1574,15 +1896,15 @@ grestore
stroke
grestore
} bind def
-81 127.931 o
+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 144.909953 m
-583.2 144.909953 l
+81 111.138536 m
+583.2 111.138536 l
stroke
grestore
0.600 setlinewidth
@@ -1606,15 +1928,15 @@ grestore
stroke
grestore
} bind def
-81 144.91 o
+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 158.080024 m
-583.2 158.080024 l
+81 117.880418 m
+583.2 117.880418 l
stroke
grestore
0.600 setlinewidth
@@ -1638,15 +1960,15 @@ grestore
stroke
grestore
} bind def
-81 158.08 o
+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 168.840755 m
-583.2 168.840755 l
+81 123.720502 m
+583.2 123.720502 l
stroke
grestore
0.600 setlinewidth
@@ -1670,15 +1992,15 @@ grestore
stroke
grestore
} bind def
-81 168.841 o
+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 177.938824 m
-583.2 177.938824 l
+81 128.871821 m
+583.2 128.871821 l
stroke
grestore
0.600 setlinewidth
@@ -1702,15 +2024,15 @@ grestore
stroke
grestore
} bind def
-81 177.939 o
+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 185.819929 m
-583.2 185.819929 l
+81 163.795084 m
+583.2 163.795084 l
stroke
grestore
0.600 setlinewidth
@@ -1734,15 +2056,15 @@ grestore
stroke
grestore
} bind def
-81 185.82 o
+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 192.771557 m
-583.2 192.771557 l
+81 181.528369 m
+583.2 181.528369 l
stroke
grestore
0.600 setlinewidth
@@ -1766,15 +2088,15 @@ grestore
stroke
grestore
} bind def
-81 192.772 o
+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 239.899976 m
-583.2 239.899976 l
+81 194.110335 m
+583.2 194.110335 l
stroke
grestore
0.600 setlinewidth
@@ -1798,15 +2120,15 @@ grestore
stroke
grestore
} bind def
-81 239.9 o
+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 263.830779 m
-583.2 263.830779 l
+81 203.869665 m
+583.2 203.869665 l
stroke
grestore
0.600 setlinewidth
@@ -1830,15 +2152,15 @@ grestore
stroke
grestore
} bind def
-81 263.831 o
+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 280.809953 m
-583.2 280.809953 l
+81 211.843619 m
+583.2 211.843619 l
stroke
grestore
0.600 setlinewidth
@@ -1862,15 +2184,15 @@ grestore
stroke
grestore
} bind def
-81 280.81 o
+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 293.980024 m
-583.2 293.980024 l
+81 218.585502 m
+583.2 218.585502 l
stroke
grestore
0.600 setlinewidth
@@ -1894,15 +2216,15 @@ grestore
stroke
grestore
} bind def
-81 293.98 o
+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 304.740755 m
-583.2 304.740755 l
+81 224.425585 m
+583.2 224.425585 l
stroke
grestore
0.600 setlinewidth
@@ -1926,15 +2248,15 @@ grestore
stroke
grestore
} bind def
-81 304.741 o
+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 313.838824 m
-583.2 313.838824 l
+81 229.576904 m
+583.2 229.576904 l
stroke
grestore
0.600 setlinewidth
@@ -1958,15 +2280,15 @@ grestore
stroke
grestore
} bind def
-81 313.839 o
+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 321.719929 m
-583.2 321.719929 l
+81 264.500167 m
+583.2 264.500167 l
stroke
grestore
0.600 setlinewidth
@@ -1990,15 +2312,15 @@ grestore
stroke
grestore
} bind def
-81 321.72 o
+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 328.671557 m
-583.2 328.671557 l
+81 282.233452 m
+583.2 282.233452 l
stroke
grestore
0.600 setlinewidth
@@ -2022,10 +2344,202 @@ grestore
stroke
grestore
} bind def
-81 328.672 o
+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
-43.921875 184.677500 translate
+49.921875 184.677500 translate
90.000000 rotate
0.000000 0.000000 m /R glyphshow
6.948242 0.000000 m /s glyphshow
@@ -2038,18 +2552,16 @@ grestore
0.122 0.467 0.706 setrgbcolor
gsave
502.2 299 81 49.5 clipbox
-459.265999 63.09 m
-453.456413 103.999976 l
-447.329866 127.930779 l
-440.849764 144.909953 l
-433.972791 158.080024 l
-426.647142 168.840755 l
-418.810162 177.938824 l
-410.385074 185.819929 l
-401.276399 192.771557 l
-391.363336 198.99 l
-103.827273 239.899976 l
--1 239.909656 l
+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
@@ -2080,34 +2592,34 @@ grestore
stroke
grestore
} bind def
-459.266 63.09 o
-453.456 104 o
-447.33 127.931 o
-440.85 144.91 o
-433.973 158.08 o
-426.647 168.841 o
-418.81 177.939 o
-410.385 185.82 o
-401.276 192.772 o
-391.363 198.99 o
-103.827 239.9 o
--1 239.91 o
+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
-509.782402 63.09 m
-497.60002 103.999976 l
-483.93374 127.930779 l
-468.371266 144.909953 l
-450.300316 158.080024 l
-428.753867 168.840755 l
-402.068944 177.938824 l
-367.000947 185.819929 l
-315.736469 192.771557 l
-218.724498 198.99 l
--1 199.024671 l
+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
@@ -2138,34 +2650,47 @@ grestore
stroke
grestore
} bind def
-509.782 63.09 o
-497.6 104 o
-483.934 127.931 o
-468.371 144.91 o
-450.3 158.08 o
-428.754 168.841 o
-402.069 177.939 o
-367.001 185.82 o
-315.736 192.772 o
-218.724 198.99 o
--1 199.025 o
+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
-556.184451 103.999976 l
-551.83393 127.930779 l
-547.308084 144.909953 l
-542.592188 158.080024 l
-537.669578 168.840755 l
-532.521298 177.938824 l
-527.125659 185.819929 l
-521.457685 192.771557 l
-515.488418 198.99 l
-426.836603 239.899976 l
--1 239.939435 l
+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
@@ -2197,37 +2722,55 @@ 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.67 168.841 o
-532.521 177.939 o
-527.126 185.82 o
-521.458 192.772 o
-515.488 198.99 o
-426.837 239.9 o
--1 239.939 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
-438.11489 63.09 m
-435.982387 103.999976 l
-433.808611 127.930779 l
-431.591934 144.909953 l
-429.330628 158.080024 l
-427.022858 168.840755 l
-424.666675 177.938824 l
-422.260005 185.819929 l
-419.800636 192.771557 l
-417.286208 198.99 l
-388.455448 239.899976 l
-349.569007 263.830779 l
-289.598413 280.809953 l
-152.245275 293.980024 l
--1 293.986386 l
+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
@@ -2258,38 +2801,55 @@ grestore
stroke
grestore
} bind def
-438.115 63.09 o
-435.982 104 o
-433.809 127.931 o
-431.592 144.91 o
-429.331 158.08 o
-427.023 168.841 o
-424.667 177.939 o
-422.26 185.82 o
-419.801 192.772 o
-417.286 198.99 o
-388.455 239.9 o
-349.569 263.831 o
-289.598 280.81 o
-152.245 293.98 o
--1 293.986 o
+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
-558.732374 63.09 m
-554.472805 103.999976 l
-550.045309 127.930779 l
-545.4361 144.909953 l
-540.629621 158.080024 l
-535.608228 168.840755 l
-530.351799 177.938824 l
-524.837246 185.819929 l
-519.037903 192.771557 l
-512.922746 198.99 l
-420.828975 239.899976 l
--1 239.938882 l
+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
@@ -2320,34 +2880,55 @@ 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.63 158.08 o
-535.608 168.841 o
-530.352 177.939 o
-524.837 185.82 o
-519.038 192.772 o
-512.923 198.99 o
-420.829 239.9 o
--1 239.939 o
+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
-509.782402 63.09 m
-497.60002 103.999976 l
-483.93374 127.930779 l
-468.371266 144.909953 l
-450.300316 158.080024 l
-428.753867 168.840755 l
-402.068944 177.938824 l
-367.000947 185.819929 l
-315.736469 192.771557 l
-218.724498 198.99 l
--1 199.024671 l
+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
@@ -2378,17 +2959,28 @@ grestore
stroke
grestore
} bind def
-509.782 63.09 o
-497.6 104 o
-483.934 127.931 o
-468.371 144.91 o
-450.3 158.08 o
-428.754 168.841 o
-402.069 177.939 o
-367.001 185.82 o
-315.736 192.772 o
-218.724 198.99 o
--1 199.025 o
+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
@@ -2419,15 +3011,15 @@ grestore
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
+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
@@ -2440,8 +3032,8 @@ grestore
[] 0 setdash
0.122 0.467 0.706 setrgbcolor
gsave
-504.965625 335.38625 m
-524.965625 335.38625 l
+90 137.4375 m
+110 137.4375 l
stroke
grestore
0 setlinecap
@@ -2471,185 +3063,11 @@ grestore
stroke
grestore
} bind def
-514.966 335.386 o
+100 137.438 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
+118.000000 133.937500 translate
0.000000 rotate
0.000000 0.000000 m /A glyphshow
6.840820 0.000000 m /l glyphshow
@@ -2660,10 +3078,193 @@ gsave
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
-504.965625 262.026875 m
-524.965625 262.026875 l
+90 64.078125 m
+110 64.078125 l
stroke
grestore
0 setlinecap
@@ -2693,19 +3294,14 @@ grestore
stroke
grestore
} bind def
-514.966 262.027 o
+100 64.0781 o
grestore
0.000 setgray
gsave
-532.965625 258.526875 translate
+118.000000 60.578125 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
+0.000000 0.000000 m /C glyphshow
+6.982422 0.000000 m /O glyphshow
grestore
/DejaVuSans findfont
12.000 scalefont
@@ -2737,7 +3333,7 @@ gsave
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
+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
diff --git a/Experiments/MQ2.png b/Experiments/MQ2.png
index 0a2953c..9364547 100644
Binary files a/Experiments/MQ2.png and b/Experiments/MQ2.png differ
diff --git a/Experiments/MQ2.svg b/Experiments/MQ2.svg
index 213f98f..7c81ae4 100644
--- a/Experiments/MQ2.svg
+++ b/Experiments/MQ2.svg
@@ -32,14 +32,14 @@ z
+" id="m4d86b0b012" style="stroke:#000000;stroke-width:0.8;"/>
-
+
-
+
-
+" id="DejaVuSans-8722"/>
-
-
-
-
+
+
+
+
+
-
+
-
-
-
-
-
+
+
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
+
-
+
+
+
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+" id="m51146e80c2" style="stroke:#000000;stroke-width:0.8;"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
-
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
-
+
+" id="m000aafc67e" style="stroke:#000000;stroke-width:0.6;"/>
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -944,19 +1081,17 @@ z
-
-
+
+" id="m1da5986bb8" style="stroke:#1f77b4;"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+" id="m48317e4880" style="stroke:#ff7f0e;"/>
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+" id="m1869310e79" style="stroke:#2ca02c;"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+" id="m0b1caed695" style="stroke:#d62728;"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+" id="maaa103a47a" style="stroke:#9467bd;"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+" id="mf9bff1be55" style="stroke:#8c564b;"/>
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1220,192 +1435,29 @@ L 583.2 47.52
-
-
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -1458,60 +1510,256 @@ z
-
-
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
+" id="DejaVuSans-71"/>
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
-
+
@@ -1652,7 +1958,7 @@ z
-
+
diff --git a/Experiments/MQ3_Regression.ipynb b/Experiments/MQ3_Regression.ipynb
new file mode 100644
index 0000000..0544be7
--- /dev/null
+++ b/Experiments/MQ3_Regression.ipynb
@@ -0,0 +1,2363 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "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: 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: 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.20.3)\n",
+ "Requirement already satisfied: scipy>=0.13.3 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.2.1)\n",
+ "Requirement already satisfied: numpy>=1.8.2 in c:\\programdata\\anaconda3\\lib\\site-packages (from scikit-learn->sklearn) (1.16.2)\n",
+ "Collecting imblearn\n",
+ " Using cached https://files.pythonhosted.org/packages/81/a7/4179e6ebfd654bd0eac0b9c06125b8b4c96a9d0a8ff9e9507eb2a26d2d7e/imblearn-0.0-py2.py3-none-any.whl\n",
+ "Collecting imbalanced-learn (from imblearn)\n",
+ " Using cached https://files.pythonhosted.org/packages/e6/62/08c14224a7e242df2cef7b312d2ef821c3931ec9b015ff93bb52ec8a10a3/imbalanced_learn-0.5.0-py3-none-any.whl\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: numpy>=1.11 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.16.2)\n",
+ "Collecting scikit-learn>=0.21 (from imbalanced-learn->imblearn)\n",
+ " Using cached https://files.pythonhosted.org/packages/75/14/fde90de4fc6722303ddbc183ec253c288dae8c7e4eb5a069ac49f14c9a0f/scikit_learn-0.21.2-cp37-cp37m-win_amd64.whl\n",
+ "Requirement already satisfied: scipy>=0.17 in c:\\programdata\\anaconda3\\lib\\site-packages (from imbalanced-learn->imblearn) (1.2.1)\n",
+ "Installing collected packages: scikit-learn, imbalanced-learn, imblearn\n",
+ " Found existing installation: scikit-learn 0.20.3\n",
+ " Uninstalling scikit-learn-0.20.3:\n",
+ " Successfully uninstalled scikit-learn-0.20.3\n",
+ "Successfully installed imbalanced-learn-0.5.0 imblearn-0.0 scikit-learn-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": 32,
+ "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": 33,
+ "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": 38,
+ "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": 39,
+ "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": 40,
+ "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": 41,
+ "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": 43,
+ "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": 67,
+ "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": 45,
+ "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": 46,
+ "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": 62,
+ "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": 64,
+ "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": 68,
+ "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(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('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
+}