Skip to content

Instantly share code, notes, and snippets.

@rnelsonchem
Last active March 15, 2020 23:25
Show Gist options
  • Save rnelsonchem/e3c17952b4b77a353769a18d11a1c858 to your computer and use it in GitHub Desktop.
Save rnelsonchem/e3c17952b4b77a353769a18d11a1c858 to your computer and use it in GitHub Desktop.
Some HPLC analysis tests
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load libraries\n",
"\n",
"This little code block loads up some cool data-related libraries that we'll need."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import glob\n",
"import os\n",
"import re\n",
"\n",
"import numpy as np # Numerical library\n",
"import matplotlib.pyplot as plt # Plotting library\n",
"import pandas as pd # Excel-on-crack library"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Just copy and paste the folder name from windows explorer\n",
"# Gotta throw an 'r' in front of this otherwise the '\\'s cause problems\n",
"folder = r'C:\\Users\\rnels\\Desktop\\junk\\HPLC\\rcn'\n",
"#folder = r'H:\\HPLC'\n",
"\n",
"# Search string, find aaaa####_### file names\n",
"srch = re.compile('\\d+-\\d+-(\\w+\\d+_\\d+)_')\n",
"# Search string to find wavelengths\n",
"srch2 = re.compile('Sig=(\\d+),')\n",
"\n",
"# HDF storage file\n",
"store = pd.HDFStore('junk.h5',)\n",
"\n",
"# Glob searches for patterns. We want it to be recursive (go through all folders)\n",
"# the '**' means that it will go through all folders. The '*.csv' is going to look\n",
"# for files that end in '.csv'\n",
"for file in glob.glob(folder + r'\\**\\*.csv', recursive=True):\n",
" fname = os.path.basename(file)\n",
" if 'blank' in fname or 'DAD' in fname:\n",
" continue\n",
"\n",
" if 'Integration' in fname:\n",
" base = '/int'\n",
" else:\n",
" base = '/sig'\n",
" \n",
" # Get the experiment file name from the larger file name\n",
" match = srch.search(fname)\n",
" expt = match.group(1)\n",
"\n",
" # Find the wavelength value from the first line of the file\n",
" with open(file, encoding='UTF16') as f:\n",
" firstline = f.readline() \n",
" match2 = srch2.search(firstline)\n",
" wl = match2.group(1)\n",
" \n",
" path = expt + base + wl\n",
" if path not in store:\n",
"# print('Adding:', path)\n",
" # Put the chromatogram into storage\n",
" df = pd.read_csv(file, header=1, encoding='UTF16')\n",
" # Remove start/end whitespace from column names\n",
" df.rename(columns=lambda x: x.strip(), inplace=True)\n",
" store[expt + base + wl] = df\n",
"# else:\n",
"# print('Skipping:', path)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['/rcn043_049/int225',\n",
" '/rcn043_049/int260',\n",
" '/rcn043_049/int315',\n",
" '/rcn043_049/sig225',\n",
" '/rcn043_049/sig260',\n",
" '/rcn043_049/sig315',\n",
" '/rcn043_048/int225',\n",
" '/rcn043_048/int260',\n",
" '/rcn043_048/int315',\n",
" '/rcn043_048/sig225']"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"store.keys()[:10]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Peak</th>\n",
" <th>Retention Time (min)</th>\n",
" <th>Area</th>\n",
" <th>Height (mAu)</th>\n",
" <th>Start</th>\n",
" <th>End</th>\n",
" <th>StartIntensity</th>\n",
" <th>EndIntensity</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>0.838605</td>\n",
" <td>472.705231</td>\n",
" <td>138.395508</td>\n",
" <td>0.7865</td>\n",
" <td>1.125647</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>3.544034</td>\n",
" <td>6.574726</td>\n",
" <td>2.138403</td>\n",
" <td>3.4665</td>\n",
" <td>3.693167</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Peak Retention Time (min) Area Height (mAu) Start End \\\n",
"0 1 0.838605 472.705231 138.395508 0.7865 1.125647 \n",
"1 2 3.544034 6.574726 2.138403 3.4665 3.693167 \n",
"\n",
" StartIntensity EndIntensity \n",
"0 0 0 \n",
"1 0 0 "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"store['/rcn043_049/int225']"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Time (min)</th>\n",
" <th>Absorbance (mAu)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.006500</td>\n",
" <td>-0.012875</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.013167</td>\n",
" <td>-0.015259</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.019833</td>\n",
" <td>-0.017166</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.026500</td>\n",
" <td>-0.018597</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.033167</td>\n",
" <td>-0.018597</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Time (min) Absorbance (mAu)\n",
"0 0.006500 -0.012875\n",
"1 0.013167 -0.015259\n",
"2 0.019833 -0.017166\n",
"3 0.026500 -0.018597\n",
"4 0.033167 -0.018597"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"store['/rcn043_049/sig225'].head()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>Peak</th>\n",
" <th>Retention Time (min)</th>\n",
" <th>Area</th>\n",
" <th>Height (mAu)</th>\n",
" <th>Start</th>\n",
" <th>End</th>\n",
" <th>StartIntensity</th>\n",
" <th>EndIntensity</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"8\" valign=\"top\">rcn043_003</th>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>0.839548</td>\n",
" <td>2498.264400</td>\n",
" <td>966.134460</td>\n",
" <td>0.753167</td>\n",
" <td>1.126500</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>0.909913</td>\n",
" <td>94.510925</td>\n",
" <td>37.569225</td>\n",
" <td>0.880216</td>\n",
" <td>0.987237</td>\n",
" <td>6.595140e-08</td>\n",
" <td>1.114412e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>1.019662</td>\n",
" <td>5.036799</td>\n",
" <td>1.345906</td>\n",
" <td>0.987237</td>\n",
" <td>1.058758</td>\n",
" <td>1.114412e+00</td>\n",
" <td>8.794246e-01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>1.607878</td>\n",
" <td>3452.138180</td>\n",
" <td>794.806213</td>\n",
" <td>1.253167</td>\n",
" <td>2.126500</td>\n",
" <td>0.000000e+00</td>\n",
" <td>2.775600e-17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>3.067947</td>\n",
" <td>9.060383</td>\n",
" <td>1.752934</td>\n",
" <td>2.946500</td>\n",
" <td>3.186500</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>6</td>\n",
" <td>3.548539</td>\n",
" <td>17.582562</td>\n",
" <td>5.791831</td>\n",
" <td>3.477659</td>\n",
" <td>3.653167</td>\n",
" <td>1.110200e-16</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>7</td>\n",
" <td>3.871927</td>\n",
" <td>7.447433</td>\n",
" <td>2.610272</td>\n",
" <td>3.806500</td>\n",
" <td>3.973167</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>8</td>\n",
" <td>5.258233</td>\n",
" <td>4529.746090</td>\n",
" <td>1443.983280</td>\n",
" <td>5.153167</td>\n",
" <td>5.759833</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"9\" valign=\"top\">rcn043_010</th>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>0.841235</td>\n",
" <td>3561.793950</td>\n",
" <td>1330.785640</td>\n",
" <td>0.750500</td>\n",
" <td>1.130500</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>0.911523</td>\n",
" <td>89.618683</td>\n",
" <td>34.821091</td>\n",
" <td>0.877167</td>\n",
" <td>0.985761</td>\n",
" <td>7.830910e-08</td>\n",
" <td>1.313612e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>1.022901</td>\n",
" <td>7.290863</td>\n",
" <td>1.938398</td>\n",
" <td>0.985761</td>\n",
" <td>1.064211</td>\n",
" <td>1.313612e+00</td>\n",
" <td>1.033777e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>1.614456</td>\n",
" <td>2383.949460</td>\n",
" <td>537.608154</td>\n",
" <td>1.470500</td>\n",
" <td>2.130500</td>\n",
" <td>5.551100e-17</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>3.054951</td>\n",
" <td>7.689857</td>\n",
" <td>1.565613</td>\n",
" <td>2.943833</td>\n",
" <td>3.197167</td>\n",
" <td>0.000000e+00</td>\n",
" <td>8.881800e-16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>6</td>\n",
" <td>3.548363</td>\n",
" <td>81.423920</td>\n",
" <td>26.744827</td>\n",
" <td>3.468055</td>\n",
" <td>3.697167</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>7</td>\n",
" <td>3.870082</td>\n",
" <td>30.541937</td>\n",
" <td>10.505766</td>\n",
" <td>3.798119</td>\n",
" <td>4.090500</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>8</td>\n",
" <td>5.259410</td>\n",
" <td>3126.512700</td>\n",
" <td>1039.697270</td>\n",
" <td>5.170500</td>\n",
" <td>5.725833</td>\n",
" <td>-2.220400e-16</td>\n",
" <td>-2.220400e-16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>9</td>\n",
" <td>5.374439</td>\n",
" <td>97.434418</td>\n",
" <td>33.051041</td>\n",
" <td>5.323907</td>\n",
" <td>5.725833</td>\n",
" <td>8.538130e-08</td>\n",
" <td>-2.220400e-16</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"9\" valign=\"top\">rcn043_017</th>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>0.841639</td>\n",
" <td>3896.077390</td>\n",
" <td>1459.060180</td>\n",
" <td>0.746500</td>\n",
" <td>1.131634</td>\n",
" <td>0.000000e+00</td>\n",
" <td>-4.163300e-17</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>0.911455</td>\n",
" <td>93.939072</td>\n",
" <td>38.840176</td>\n",
" <td>0.886500</td>\n",
" <td>0.984309</td>\n",
" <td>9.100080e-08</td>\n",
" <td>1.298034e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>1.021685</td>\n",
" <td>7.356510</td>\n",
" <td>1.976806</td>\n",
" <td>0.984309</td>\n",
" <td>1.063473</td>\n",
" <td>1.298034e+00</td>\n",
" <td>9.851247e-01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>1.608613</td>\n",
" <td>3516.047360</td>\n",
" <td>785.819153</td>\n",
" <td>1.466500</td>\n",
" <td>2.279833</td>\n",
" <td>5.551100e-17</td>\n",
" <td>1.110200e-16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>3.045632</td>\n",
" <td>9.670665</td>\n",
" <td>1.749664</td>\n",
" <td>2.943450</td>\n",
" <td>3.286500</td>\n",
" <td>2.144121e-01</td>\n",
" <td>-4.440900e-16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>6</td>\n",
" <td>3.545056</td>\n",
" <td>92.774864</td>\n",
" <td>30.545998</td>\n",
" <td>3.456500</td>\n",
" <td>3.699833</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>7</td>\n",
" <td>3.867600</td>\n",
" <td>35.071793</td>\n",
" <td>11.914321</td>\n",
" <td>3.797167</td>\n",
" <td>4.053167</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>8</td>\n",
" <td>5.253828</td>\n",
" <td>3493.416260</td>\n",
" <td>1152.882080</td>\n",
" <td>5.166500</td>\n",
" <td>5.739833</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>9</td>\n",
" <td>5.371576</td>\n",
" <td>258.306610</td>\n",
" <td>90.702225</td>\n",
" <td>5.313167</td>\n",
" <td>5.739833</td>\n",
" <td>9.822500e-08</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"9\" valign=\"top\">rcn043_024</th>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>0.843228</td>\n",
" <td>4036.928470</td>\n",
" <td>1526.993530</td>\n",
" <td>0.753667</td>\n",
" <td>1.133667</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>0.912637</td>\n",
" <td>111.756020</td>\n",
" <td>43.685467</td>\n",
" <td>0.880333</td>\n",
" <td>0.987415</td>\n",
" <td>8.577540e-08</td>\n",
" <td>1.226694e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>1.024690</td>\n",
" <td>7.028972</td>\n",
" <td>1.930106</td>\n",
" <td>0.987415</td>\n",
" <td>1.066820</td>\n",
" <td>1.226694e+00</td>\n",
" <td>8.618779e-01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>1.606392</td>\n",
" <td>5547.542970</td>\n",
" <td>1122.240970</td>\n",
" <td>1.460333</td>\n",
" <td>2.113667</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>3.057777</td>\n",
" <td>8.937263</td>\n",
" <td>1.732025</td>\n",
" <td>2.947000</td>\n",
" <td>3.267000</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>6</td>\n",
" <td>3.551639</td>\n",
" <td>94.895500</td>\n",
" <td>31.180302</td>\n",
" <td>3.467667</td>\n",
" <td>3.707000</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>7</td>\n",
" <td>3.874551</td>\n",
" <td>38.240623</td>\n",
" <td>12.621049</td>\n",
" <td>3.807000</td>\n",
" <td>4.273667</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>8</td>\n",
" <td>5.268134</td>\n",
" <td>3350.976070</td>\n",
" <td>1102.074710</td>\n",
" <td>5.160333</td>\n",
" <td>5.660333</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>9</td>\n",
" <td>5.386245</td>\n",
" <td>485.032776</td>\n",
" <td>172.723633</td>\n",
" <td>5.333667</td>\n",
" <td>5.660333</td>\n",
" <td>5.255940e-08</td>\n",
" <td>-1.139500e-12</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"9\" valign=\"top\">rcn043_031</th>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>0.843313</td>\n",
" <td>4217.785160</td>\n",
" <td>1587.027590</td>\n",
" <td>0.730333</td>\n",
" <td>1.135993</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>0.913424</td>\n",
" <td>112.067894</td>\n",
" <td>45.820145</td>\n",
" <td>0.887000</td>\n",
" <td>0.986539</td>\n",
" <td>4.632920e+00</td>\n",
" <td>1.205860e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>1.024832</td>\n",
" <td>7.360191</td>\n",
" <td>2.018148</td>\n",
" <td>0.986539</td>\n",
" <td>1.068016</td>\n",
" <td>1.205860e+00</td>\n",
" <td>8.546965e-01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>1.610515</td>\n",
" <td>5109.260250</td>\n",
" <td>1035.332030</td>\n",
" <td>1.417000</td>\n",
" <td>2.137000</td>\n",
" <td>5.551100e-17</td>\n",
" <td>1.110200e-16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>3.058650</td>\n",
" <td>9.517097</td>\n",
" <td>1.822580</td>\n",
" <td>2.950333</td>\n",
" <td>3.243667</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>6</td>\n",
" <td>3.554757</td>\n",
" <td>107.566261</td>\n",
" <td>35.392132</td>\n",
" <td>3.463667</td>\n",
" <td>3.790333</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>7</td>\n",
" <td>3.876316</td>\n",
" <td>37.699524</td>\n",
" <td>13.332481</td>\n",
" <td>3.799000</td>\n",
" <td>3.948512</td>\n",
" <td>0.000000e+00</td>\n",
" <td>5.224729e-02</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>8</td>\n",
" <td>5.268211</td>\n",
" <td>3345.373050</td>\n",
" <td>1102.978640</td>\n",
" <td>5.170333</td>\n",
" <td>5.339161</td>\n",
" <td>0.000000e+00</td>\n",
" <td>1.687770e+01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>9</td>\n",
" <td>5.387563</td>\n",
" <td>783.584961</td>\n",
" <td>276.738678</td>\n",
" <td>5.339161</td>\n",
" <td>5.718111</td>\n",
" <td>1.687770e+01</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Peak Retention Time (min) Area Height (mAu) Start \\\n",
"rcn043_003 0 1 0.839548 2498.264400 966.134460 0.753167 \n",
" 1 2 0.909913 94.510925 37.569225 0.880216 \n",
" 2 3 1.019662 5.036799 1.345906 0.987237 \n",
" 3 4 1.607878 3452.138180 794.806213 1.253167 \n",
" 4 5 3.067947 9.060383 1.752934 2.946500 \n",
" 5 6 3.548539 17.582562 5.791831 3.477659 \n",
" 6 7 3.871927 7.447433 2.610272 3.806500 \n",
" 7 8 5.258233 4529.746090 1443.983280 5.153167 \n",
"rcn043_010 0 1 0.841235 3561.793950 1330.785640 0.750500 \n",
" 1 2 0.911523 89.618683 34.821091 0.877167 \n",
" 2 3 1.022901 7.290863 1.938398 0.985761 \n",
" 3 4 1.614456 2383.949460 537.608154 1.470500 \n",
" 4 5 3.054951 7.689857 1.565613 2.943833 \n",
" 5 6 3.548363 81.423920 26.744827 3.468055 \n",
" 6 7 3.870082 30.541937 10.505766 3.798119 \n",
" 7 8 5.259410 3126.512700 1039.697270 5.170500 \n",
" 8 9 5.374439 97.434418 33.051041 5.323907 \n",
"rcn043_017 0 1 0.841639 3896.077390 1459.060180 0.746500 \n",
" 1 2 0.911455 93.939072 38.840176 0.886500 \n",
" 2 3 1.021685 7.356510 1.976806 0.984309 \n",
" 3 4 1.608613 3516.047360 785.819153 1.466500 \n",
" 4 5 3.045632 9.670665 1.749664 2.943450 \n",
" 5 6 3.545056 92.774864 30.545998 3.456500 \n",
" 6 7 3.867600 35.071793 11.914321 3.797167 \n",
" 7 8 5.253828 3493.416260 1152.882080 5.166500 \n",
" 8 9 5.371576 258.306610 90.702225 5.313167 \n",
"rcn043_024 0 1 0.843228 4036.928470 1526.993530 0.753667 \n",
" 1 2 0.912637 111.756020 43.685467 0.880333 \n",
" 2 3 1.024690 7.028972 1.930106 0.987415 \n",
" 3 4 1.606392 5547.542970 1122.240970 1.460333 \n",
" 4 5 3.057777 8.937263 1.732025 2.947000 \n",
" 5 6 3.551639 94.895500 31.180302 3.467667 \n",
" 6 7 3.874551 38.240623 12.621049 3.807000 \n",
" 7 8 5.268134 3350.976070 1102.074710 5.160333 \n",
" 8 9 5.386245 485.032776 172.723633 5.333667 \n",
"rcn043_031 0 1 0.843313 4217.785160 1587.027590 0.730333 \n",
" 1 2 0.913424 112.067894 45.820145 0.887000 \n",
" 2 3 1.024832 7.360191 2.018148 0.986539 \n",
" 3 4 1.610515 5109.260250 1035.332030 1.417000 \n",
" 4 5 3.058650 9.517097 1.822580 2.950333 \n",
" 5 6 3.554757 107.566261 35.392132 3.463667 \n",
" 6 7 3.876316 37.699524 13.332481 3.799000 \n",
" 7 8 5.268211 3345.373050 1102.978640 5.170333 \n",
" 8 9 5.387563 783.584961 276.738678 5.339161 \n",
"\n",
" End StartIntensity EndIntensity \n",
"rcn043_003 0 1.126500 0.000000e+00 0.000000e+00 \n",
" 1 0.987237 6.595140e-08 1.114412e+00 \n",
" 2 1.058758 1.114412e+00 8.794246e-01 \n",
" 3 2.126500 0.000000e+00 2.775600e-17 \n",
" 4 3.186500 0.000000e+00 0.000000e+00 \n",
" 5 3.653167 1.110200e-16 0.000000e+00 \n",
" 6 3.973167 0.000000e+00 0.000000e+00 \n",
" 7 5.759833 0.000000e+00 0.000000e+00 \n",
"rcn043_010 0 1.130500 0.000000e+00 0.000000e+00 \n",
" 1 0.985761 7.830910e-08 1.313612e+00 \n",
" 2 1.064211 1.313612e+00 1.033777e+00 \n",
" 3 2.130500 5.551100e-17 0.000000e+00 \n",
" 4 3.197167 0.000000e+00 8.881800e-16 \n",
" 5 3.697167 0.000000e+00 0.000000e+00 \n",
" 6 4.090500 0.000000e+00 0.000000e+00 \n",
" 7 5.725833 -2.220400e-16 -2.220400e-16 \n",
" 8 5.725833 8.538130e-08 -2.220400e-16 \n",
"rcn043_017 0 1.131634 0.000000e+00 -4.163300e-17 \n",
" 1 0.984309 9.100080e-08 1.298034e+00 \n",
" 2 1.063473 1.298034e+00 9.851247e-01 \n",
" 3 2.279833 5.551100e-17 1.110200e-16 \n",
" 4 3.286500 2.144121e-01 -4.440900e-16 \n",
" 5 3.699833 0.000000e+00 0.000000e+00 \n",
" 6 4.053167 0.000000e+00 0.000000e+00 \n",
" 7 5.739833 0.000000e+00 0.000000e+00 \n",
" 8 5.739833 9.822500e-08 0.000000e+00 \n",
"rcn043_024 0 1.133667 0.000000e+00 0.000000e+00 \n",
" 1 0.987415 8.577540e-08 1.226694e+00 \n",
" 2 1.066820 1.226694e+00 8.618779e-01 \n",
" 3 2.113667 0.000000e+00 0.000000e+00 \n",
" 4 3.267000 0.000000e+00 0.000000e+00 \n",
" 5 3.707000 0.000000e+00 0.000000e+00 \n",
" 6 4.273667 0.000000e+00 0.000000e+00 \n",
" 7 5.660333 0.000000e+00 0.000000e+00 \n",
" 8 5.660333 5.255940e-08 -1.139500e-12 \n",
"rcn043_031 0 1.135993 0.000000e+00 0.000000e+00 \n",
" 1 0.986539 4.632920e+00 1.205860e+00 \n",
" 2 1.068016 1.205860e+00 8.546965e-01 \n",
" 3 2.137000 5.551100e-17 1.110200e-16 \n",
" 4 3.243667 0.000000e+00 0.000000e+00 \n",
" 5 3.790333 0.000000e+00 0.000000e+00 \n",
" 6 3.948512 0.000000e+00 5.224729e-02 \n",
" 7 5.339161 0.000000e+00 1.687770e+01 \n",
" 8 5.718111 1.687770e+01 0.000000e+00 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"start = 3\n",
"skip = 7\n",
"expts = {f'rcn043_0{start + skip*i:02d}':store[f'rcn043_0{start + skip*i:02d}/int315'] for i in range(5)}\n",
"expts = pd.concat(expts, axis=0)\n",
"expts"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Peak</th>\n",
" <th>Retention Time (min)</th>\n",
" <th>Area</th>\n",
" <th>Height (mAu)</th>\n",
" <th>Start</th>\n",
" <th>End</th>\n",
" <th>StartIntensity</th>\n",
" <th>EndIntensity</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2.0</td>\n",
" <td>0.909913</td>\n",
" <td>94.510925</td>\n",
" <td>37.569225</td>\n",
" <td>0.880216</td>\n",
" <td>0.987237</td>\n",
" <td>6.595140e-08</td>\n",
" <td>1.114412</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Peak Retention Time (min) Area Height (mAu) Start End \\\n",
"0 NaN NaN NaN NaN NaN NaN \n",
"1 2.0 0.909913 94.510925 37.569225 0.880216 0.987237 \n",
"2 NaN NaN NaN NaN NaN NaN \n",
"3 NaN NaN NaN NaN NaN NaN \n",
"4 NaN NaN NaN NaN NaN NaN \n",
"5 NaN NaN NaN NaN NaN NaN \n",
"6 NaN NaN NaN NaN NaN NaN \n",
"7 NaN NaN NaN NaN NaN NaN \n",
"\n",
" StartIntensity EndIntensity \n",
"0 NaN NaN \n",
"1 6.595140e-08 1.114412 \n",
"2 NaN NaN \n",
"3 NaN NaN \n",
"4 NaN NaN \n",
"5 NaN NaN \n",
"6 NaN NaN \n",
"7 NaN NaN "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"expts.loc['rcn043_003'].where(expts.loc['rcn043_003'].Peak == 2)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"store.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Read multiple CSVs\n",
"These CSVs should be the ones exported from ChemStation using the SaveCSV.mac macro\n",
"\n",
"This will open a dialog which allows for selection of multiple files. Select those corresponding to the signal you'd like (e.g. ...SignalC.csv)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['C:\\\\Users\\\\rnels\\\\Desktop\\\\junk\\\\HPLC\\\\rcn\\\\rcn_cbr03 2020-02-27 11-24-42\\\\001-1-pret032_001.D\\\\001-1-pret032_001_IntegrationA.csv',\n",
" 'C:\\\\Users\\\\rnels\\\\Desktop\\\\junk\\\\HPLC\\\\rcn\\\\rcn_cbr03 2020-02-27 11-24-42\\\\001-1-pret032_001.D\\\\001-1-pret032_001_IntegrationB.csv',\n",
" 'C:\\\\Users\\\\rnels\\\\Desktop\\\\junk\\\\HPLC\\\\rcn\\\\rcn_cbr03 2020-02-27 11-24-42\\\\001-1-pret032_001.D\\\\001-1-pret032_001_IntegrationC.csv',\n",
" 'C:\\\\Users\\\\rnels\\\\Desktop\\\\junk\\\\HPLC\\\\rcn\\\\rcn_cbr03 2020-02-27 11-24-42\\\\001-1-pret032_001.D\\\\001-1-pret032_001_SignalA.csv',\n",
" 'C:\\\\Users\\\\rnels\\\\Desktop\\\\junk\\\\HPLC\\\\rcn\\\\rcn_cbr03 2020-02-27 11-24-42\\\\001-1-pret032_001.D\\\\001-1-pret032_001_SignalB.csv',\n",
" 'C:\\\\Users\\\\rnels\\\\Desktop\\\\junk\\\\HPLC\\\\rcn\\\\rcn_cbr03 2020-02-27 11-24-42\\\\001-1-pret032_001.D\\\\001-1-pret032_001_SignalC.csv',\n",
" 'C:\\\\Users\\\\rnels\\\\Desktop\\\\junk\\\\HPLC\\\\rcn\\\\rcn_cbr03 2020-02-27 11-24-42\\\\002-2-pret032_002.D\\\\002-2-pret032_002_IntegrationA.csv',\n",
" 'C:\\\\Users\\\\rnels\\\\Desktop\\\\junk\\\\HPLC\\\\rcn\\\\rcn_cbr03 2020-02-27 11-24-42\\\\002-2-pret032_002.D\\\\002-2-pret032_002_IntegrationB.csv',\n",
" 'C:\\\\Users\\\\rnels\\\\Desktop\\\\junk\\\\HPLC\\\\rcn\\\\rcn_cbr03 2020-02-27 11-24-42\\\\002-2-pret032_002.D\\\\002-2-pret032_002_IntegrationC.csv',\n",
" 'C:\\\\Users\\\\rnels\\\\Desktop\\\\junk\\\\HPLC\\\\rcn\\\\rcn_cbr03 2020-02-27 11-24-42\\\\002-2-pret032_002.D\\\\002-2-pret032_002_SignalA.csv']"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# I can see you want to have a dialog box, but this might work as well\n",
"import glob\n",
"\n",
"# Just copy and paste the folder name from windows explorer\n",
"# Gotta throw an 'r' in front of this otherwise the '\\'s cause problems\n",
"folder = r'C:\\Users\\rnels\\Desktop\\junk\\HPLC\\rcn'\n",
"\n",
"filename = []\n",
"# Glob searches for patterns. We want it to be recursive (go through all folders)\n",
"# the '**' means that it will go through all folders. The '*.csv' is going to look\n",
"# for files that end in '.csv'\n",
"for fullname in glob.glob(folder + r'\\**\\*.csv', recursive=True):\n",
" fname = os.path.basename(fullname)\n",
" if 'blank' not in fname and 'DAD' not in fname:\n",
" filename.append(fullname)\n",
"\n",
" \n",
"# I might suggest that you do the file processing in this same loop rather than \n",
"# adding extra loops for chromatograms and integrations separately\n",
"filename[:10]"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [],
"source": [
"import re\n",
"\n",
"# Search string, find only 'pret###_###' file names\n",
"srch = re.compile('\\d+-\\d+-(\\w+\\d+_\\d+)_')\n",
"# Search string to find wavelengths\n",
"srch2 = re.compile('Sig=(\\d+),')\n",
"\n",
"wls = []\n",
"chroms = []\n",
"expts = []\n",
"# Unlike Matlab, you can iterate many Python objects directly\n",
"# without creating an integer array\n",
"for file in filename:\n",
" if 'Integration' in file:\n",
" continue\n",
" \n",
" fname = os.path.basename(file)\n",
" match = srch.search(fname)\n",
" if match:\n",
" expts.append(match.group(1))\n",
"\n",
" # Find the wavelength values\n",
" with open(file, encoding='UTF16') as f:\n",
" firstline = f.readline() \n",
" match2 = srch2.search(firstline)\n",
" wls.append(match2.group(1))\n",
" \n",
" chrom = pd.read_csv(file, header=1, encoding='UTF16')\n",
" chroms.append(chrom)\n"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None,\n",
" None]"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"store = pd.HDFStore('junk.h5')\n",
"\n",
"[store.put(ex+'/wl'+wl, df) for ex, wl, df in zip(expts, wls, chroms)]"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Time (min)</th>\n",
" <th>Absorbance (mAu)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.001167</td>\n",
" <td>-0.034332</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.007833</td>\n",
" <td>-0.032425</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.014500</td>\n",
" <td>-0.030041</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.021167</td>\n",
" <td>-0.027180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.027833</td>\n",
" <td>-0.025272</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1196</th>\n",
" <td>7.974500</td>\n",
" <td>-1.200676</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1197</th>\n",
" <td>7.981167</td>\n",
" <td>-1.200676</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1198</th>\n",
" <td>7.987833</td>\n",
" <td>-1.200676</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1199</th>\n",
" <td>7.994500</td>\n",
" <td>-1.200676</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1200</th>\n",
" <td>8.001167</td>\n",
" <td>-1.200676</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1201 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" Time (min) Absorbance (mAu)\n",
"0 0.001167 -0.034332\n",
"1 0.007833 -0.032425\n",
"2 0.014500 -0.030041\n",
"3 0.021167 -0.027180\n",
"4 0.027833 -0.025272\n",
"... ... ...\n",
"1196 7.974500 -1.200676\n",
"1197 7.981167 -1.200676\n",
"1198 7.987833 -1.200676\n",
"1199 7.994500 -1.200676\n",
"1200 8.001167 -1.200676\n",
"\n",
"[1201 rows x 2 columns]"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"store['rcn043_021/wl315']"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"store.close()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead tr th {\n",
" text-align: left;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th colspan=\"2\" halign=\"left\">pret032_001 Sig=315</th>\n",
" <th colspan=\"2\" halign=\"left\">pret032_001 Sig=225</th>\n",
" <th colspan=\"2\" halign=\"left\">pret032_001 Sig=260</th>\n",
" <th colspan=\"2\" halign=\"left\">pret032_002 Sig=315</th>\n",
" <th colspan=\"2\" halign=\"left\">pret032_002 Sig=225</th>\n",
" <th>...</th>\n",
" <th colspan=\"2\" halign=\"left\">rcn043_020 Sig=225</th>\n",
" <th colspan=\"2\" halign=\"left\">rcn043_020 Sig=260</th>\n",
" <th colspan=\"2\" halign=\"left\">rcn043_021 Sig=315</th>\n",
" <th colspan=\"2\" halign=\"left\">rcn043_021 Sig=225</th>\n",
" <th colspan=\"2\" halign=\"left\">rcn043_021 Sig=260</th>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <th>Time (min)</th>\n",
" <th>Absorbance (mAu)</th>\n",
" <th>Time (min)</th>\n",
" <th>Absorbance (mAu)</th>\n",
" <th>Time (min)</th>\n",
" <th>Absorbance (mAu)</th>\n",
" <th>Time (min)</th>\n",
" <th>Absorbance (mAu)</th>\n",
" <th>Time (min)</th>\n",
" <th>Absorbance (mAu)</th>\n",
" <th>...</th>\n",
" <th>Time (min)</th>\n",
" <th>Absorbance (mAu)</th>\n",
" <th>Time (min)</th>\n",
" <th>Absorbance (mAu)</th>\n",
" <th>Time (min)</th>\n",
" <th>Absorbance (mAu)</th>\n",
" <th>Time (min)</th>\n",
" <th>Absorbance (mAu)</th>\n",
" <th>Time (min)</th>\n",
" <th>Absorbance (mAu)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.001500</td>\n",
" <td>-0.442505</td>\n",
" <td>0.001500</td>\n",
" <td>-0.945568</td>\n",
" <td>0.001500</td>\n",
" <td>-0.702381</td>\n",
" <td>0.001167</td>\n",
" <td>-0.502109</td>\n",
" <td>0.001167</td>\n",
" <td>-1.404285</td>\n",
" <td>...</td>\n",
" <td>0.003000</td>\n",
" <td>-0.065327</td>\n",
" <td>0.003000</td>\n",
" <td>-0.034332</td>\n",
" <td>0.001167</td>\n",
" <td>-0.034332</td>\n",
" <td>0.001167</td>\n",
" <td>-0.058651</td>\n",
" <td>0.001167</td>\n",
" <td>-0.035286</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.008167</td>\n",
" <td>-0.449181</td>\n",
" <td>0.008167</td>\n",
" <td>-0.953198</td>\n",
" <td>0.008167</td>\n",
" <td>-0.703812</td>\n",
" <td>0.007833</td>\n",
" <td>-0.508785</td>\n",
" <td>0.007833</td>\n",
" <td>-1.406193</td>\n",
" <td>...</td>\n",
" <td>0.009667</td>\n",
" <td>-0.066280</td>\n",
" <td>0.009667</td>\n",
" <td>-0.032425</td>\n",
" <td>0.007833</td>\n",
" <td>-0.032425</td>\n",
" <td>0.007833</td>\n",
" <td>-0.059605</td>\n",
" <td>0.007833</td>\n",
" <td>-0.036240</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.014833</td>\n",
" <td>-0.456333</td>\n",
" <td>0.014833</td>\n",
" <td>-0.960827</td>\n",
" <td>0.014833</td>\n",
" <td>-0.708580</td>\n",
" <td>0.014500</td>\n",
" <td>-0.512123</td>\n",
" <td>0.014500</td>\n",
" <td>-1.408577</td>\n",
" <td>...</td>\n",
" <td>0.016333</td>\n",
" <td>-0.068188</td>\n",
" <td>0.016333</td>\n",
" <td>-0.030518</td>\n",
" <td>0.014500</td>\n",
" <td>-0.030041</td>\n",
" <td>0.014500</td>\n",
" <td>-0.058651</td>\n",
" <td>0.014500</td>\n",
" <td>-0.035286</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.021500</td>\n",
" <td>-0.464439</td>\n",
" <td>0.021500</td>\n",
" <td>-0.967503</td>\n",
" <td>0.021500</td>\n",
" <td>-0.715733</td>\n",
" <td>0.021167</td>\n",
" <td>-0.513554</td>\n",
" <td>0.021167</td>\n",
" <td>-1.411915</td>\n",
" <td>...</td>\n",
" <td>0.023000</td>\n",
" <td>-0.069141</td>\n",
" <td>0.023000</td>\n",
" <td>-0.028610</td>\n",
" <td>0.021167</td>\n",
" <td>-0.027180</td>\n",
" <td>0.021167</td>\n",
" <td>-0.055790</td>\n",
" <td>0.021167</td>\n",
" <td>-0.032425</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.028167</td>\n",
" <td>-0.470638</td>\n",
" <td>0.028167</td>\n",
" <td>-0.971794</td>\n",
" <td>0.028167</td>\n",
" <td>-0.725269</td>\n",
" <td>0.027833</td>\n",
" <td>-0.513554</td>\n",
" <td>0.027833</td>\n",
" <td>-1.420021</td>\n",
" <td>...</td>\n",
" <td>0.029667</td>\n",
" <td>-0.070095</td>\n",
" <td>0.029667</td>\n",
" <td>-0.028133</td>\n",
" <td>0.027833</td>\n",
" <td>-0.025272</td>\n",
" <td>0.027833</td>\n",
" <td>-0.053883</td>\n",
" <td>0.027833</td>\n",
" <td>-0.029564</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1197</th>\n",
" <td>7.981500</td>\n",
" <td>-8.520126</td>\n",
" <td>7.981500</td>\n",
" <td>-4.655838</td>\n",
" <td>7.981500</td>\n",
" <td>-11.627197</td>\n",
" <td>7.981167</td>\n",
" <td>-6.131649</td>\n",
" <td>7.981167</td>\n",
" <td>-5.140305</td>\n",
" <td>...</td>\n",
" <td>7.983000</td>\n",
" <td>0.954151</td>\n",
" <td>7.983000</td>\n",
" <td>-1.537800</td>\n",
" <td>7.981167</td>\n",
" <td>-1.200676</td>\n",
" <td>7.981167</td>\n",
" <td>0.985146</td>\n",
" <td>7.981167</td>\n",
" <td>-1.468182</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1198</th>\n",
" <td>7.988167</td>\n",
" <td>-8.520126</td>\n",
" <td>7.988167</td>\n",
" <td>-4.655838</td>\n",
" <td>7.988167</td>\n",
" <td>-11.627197</td>\n",
" <td>7.987833</td>\n",
" <td>-6.131649</td>\n",
" <td>7.987833</td>\n",
" <td>-5.140305</td>\n",
" <td>...</td>\n",
" <td>7.989667</td>\n",
" <td>0.954151</td>\n",
" <td>7.989667</td>\n",
" <td>-1.537800</td>\n",
" <td>7.987833</td>\n",
" <td>-1.200676</td>\n",
" <td>7.987833</td>\n",
" <td>0.985146</td>\n",
" <td>7.987833</td>\n",
" <td>-1.468182</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1199</th>\n",
" <td>7.994833</td>\n",
" <td>-8.520126</td>\n",
" <td>7.994833</td>\n",
" <td>-4.655838</td>\n",
" <td>7.994833</td>\n",
" <td>-11.627197</td>\n",
" <td>7.994500</td>\n",
" <td>-6.131649</td>\n",
" <td>7.994500</td>\n",
" <td>-5.140305</td>\n",
" <td>...</td>\n",
" <td>7.996333</td>\n",
" <td>0.954151</td>\n",
" <td>7.996333</td>\n",
" <td>-1.537800</td>\n",
" <td>7.994500</td>\n",
" <td>-1.200676</td>\n",
" <td>7.994500</td>\n",
" <td>0.985146</td>\n",
" <td>7.994500</td>\n",
" <td>-1.468182</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1200</th>\n",
" <td>8.001500</td>\n",
" <td>-8.520126</td>\n",
" <td>8.001500</td>\n",
" <td>-4.655838</td>\n",
" <td>8.001500</td>\n",
" <td>-11.627197</td>\n",
" <td>8.001167</td>\n",
" <td>-6.131649</td>\n",
" <td>8.001167</td>\n",
" <td>-5.140305</td>\n",
" <td>...</td>\n",
" <td>8.003000</td>\n",
" <td>0.954151</td>\n",
" <td>8.003000</td>\n",
" <td>-1.537800</td>\n",
" <td>8.001167</td>\n",
" <td>-1.200676</td>\n",
" <td>8.001167</td>\n",
" <td>0.985146</td>\n",
" <td>8.001167</td>\n",
" <td>-1.468182</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1201</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>8.009667</td>\n",
" <td>0.954151</td>\n",
" <td>8.009667</td>\n",
" <td>-1.537800</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1202 rows × 162 columns</p>\n",
"</div>"
],
"text/plain": [
" pret032_001 Sig=315 pret032_001 Sig=225 \\\n",
" Time (min) Absorbance (mAu) Time (min) \n",
"0 0.001500 -0.442505 0.001500 \n",
"1 0.008167 -0.449181 0.008167 \n",
"2 0.014833 -0.456333 0.014833 \n",
"3 0.021500 -0.464439 0.021500 \n",
"4 0.028167 -0.470638 0.028167 \n",
"... ... ... ... \n",
"1197 7.981500 -8.520126 7.981500 \n",
"1198 7.988167 -8.520126 7.988167 \n",
"1199 7.994833 -8.520126 7.994833 \n",
"1200 8.001500 -8.520126 8.001500 \n",
"1201 NaN NaN NaN \n",
"\n",
" pret032_001 Sig=260 \\\n",
" Absorbance (mAu) Time (min) Absorbance (mAu) \n",
"0 -0.945568 0.001500 -0.702381 \n",
"1 -0.953198 0.008167 -0.703812 \n",
"2 -0.960827 0.014833 -0.708580 \n",
"3 -0.967503 0.021500 -0.715733 \n",
"4 -0.971794 0.028167 -0.725269 \n",
"... ... ... ... \n",
"1197 -4.655838 7.981500 -11.627197 \n",
"1198 -4.655838 7.988167 -11.627197 \n",
"1199 -4.655838 7.994833 -11.627197 \n",
"1200 -4.655838 8.001500 -11.627197 \n",
"1201 NaN NaN NaN \n",
"\n",
" pret032_002 Sig=315 pret032_002 Sig=225 \\\n",
" Time (min) Absorbance (mAu) Time (min) \n",
"0 0.001167 -0.502109 0.001167 \n",
"1 0.007833 -0.508785 0.007833 \n",
"2 0.014500 -0.512123 0.014500 \n",
"3 0.021167 -0.513554 0.021167 \n",
"4 0.027833 -0.513554 0.027833 \n",
"... ... ... ... \n",
"1197 7.981167 -6.131649 7.981167 \n",
"1198 7.987833 -6.131649 7.987833 \n",
"1199 7.994500 -6.131649 7.994500 \n",
"1200 8.001167 -6.131649 8.001167 \n",
"1201 NaN NaN NaN \n",
"\n",
" ... rcn043_020 Sig=225 \\\n",
" Absorbance (mAu) ... Time (min) Absorbance (mAu) \n",
"0 -1.404285 ... 0.003000 -0.065327 \n",
"1 -1.406193 ... 0.009667 -0.066280 \n",
"2 -1.408577 ... 0.016333 -0.068188 \n",
"3 -1.411915 ... 0.023000 -0.069141 \n",
"4 -1.420021 ... 0.029667 -0.070095 \n",
"... ... ... ... ... \n",
"1197 -5.140305 ... 7.983000 0.954151 \n",
"1198 -5.140305 ... 7.989667 0.954151 \n",
"1199 -5.140305 ... 7.996333 0.954151 \n",
"1200 -5.140305 ... 8.003000 0.954151 \n",
"1201 NaN ... 8.009667 0.954151 \n",
"\n",
" rcn043_020 Sig=260 rcn043_021 Sig=315 \\\n",
" Time (min) Absorbance (mAu) Time (min) \n",
"0 0.003000 -0.034332 0.001167 \n",
"1 0.009667 -0.032425 0.007833 \n",
"2 0.016333 -0.030518 0.014500 \n",
"3 0.023000 -0.028610 0.021167 \n",
"4 0.029667 -0.028133 0.027833 \n",
"... ... ... ... \n",
"1197 7.983000 -1.537800 7.981167 \n",
"1198 7.989667 -1.537800 7.987833 \n",
"1199 7.996333 -1.537800 7.994500 \n",
"1200 8.003000 -1.537800 8.001167 \n",
"1201 8.009667 -1.537800 NaN \n",
"\n",
" rcn043_021 Sig=225 \\\n",
" Absorbance (mAu) Time (min) Absorbance (mAu) \n",
"0 -0.034332 0.001167 -0.058651 \n",
"1 -0.032425 0.007833 -0.059605 \n",
"2 -0.030041 0.014500 -0.058651 \n",
"3 -0.027180 0.021167 -0.055790 \n",
"4 -0.025272 0.027833 -0.053883 \n",
"... ... ... ... \n",
"1197 -1.200676 7.981167 0.985146 \n",
"1198 -1.200676 7.987833 0.985146 \n",
"1199 -1.200676 7.994500 0.985146 \n",
"1200 -1.200676 8.001167 0.985146 \n",
"1201 NaN NaN NaN \n",
"\n",
" rcn043_021 Sig=260 \n",
" Time (min) Absorbance (mAu) \n",
"0 0.001167 -0.035286 \n",
"1 0.007833 -0.036240 \n",
"2 0.014500 -0.035286 \n",
"3 0.021167 -0.032425 \n",
"4 0.027833 -0.029564 \n",
"... ... ... \n",
"1197 7.981167 -1.468182 \n",
"1198 7.987833 -1.468182 \n",
"1199 7.994500 -1.468182 \n",
"1200 8.001167 -1.468182 \n",
"1201 NaN NaN \n",
"\n",
"[1202 rows x 162 columns]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Just for fun! Ha ha\n",
"# We'll need to think about how to break these up a bit.\n",
"pd.concat(chroms, axis=1, keys=[ex+' '+wl for ex, wl in zip(expts, wavelengths)])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Read Integration Table\n"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"scrolled": true
},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'nfiles' is not defined",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-41-4b5081eda7ae>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mintegrations\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[1;32mfor\u001b[0m \u001b[0mfile\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mnfiles\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[1;31m#form integration file name based on signal file name\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mtemp\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfilename\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mfile\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m12\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;34m\"_Integration\"\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mos\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbasename\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mfile\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;34m\".csv\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mNameError\u001b[0m: name 'nfiles' is not defined"
]
}
],
"source": [
"integrations = []\n",
"for file in range(0,nfiles):\n",
" #form integration file name based on signal file name\n",
" temp = filename[file][0:-12] + \"_Integration\" + os.path.basename(filename[file])[-5] + \".csv\"\n",
"\n",
" integrations.append(pd.read_csv(temp, header = 1, delimiter = ' , ', encoding = 'UTF-16', engine = 'python'))\n",
"\n",
" wavelength.append(temp[38:-21]) # need more elegant solution\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"VG-200\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Peak</th>\n",
" <th>Retention Time (min)</th>\n",
" <th>Area</th>\n",
" <th>Height (mAu)</th>\n",
" <th>Start</th>\n",
" <th>End</th>\n",
" <th>StartIntensity</th>\n",
" <th>EndIntensity</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>0.635612</td>\n",
" <td>10.514344</td>\n",
" <td>2.732795</td>\n",
" <td>0.593167</td>\n",
" <td>0.710914</td>\n",
" <td>-4.440900e-16</td>\n",
" <td>1.018098e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>0.761960</td>\n",
" <td>6.592570</td>\n",
" <td>1.165994</td>\n",
" <td>0.710914</td>\n",
" <td>0.883167</td>\n",
" <td>1.018098e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>3.026824</td>\n",
" <td>22.877693</td>\n",
" <td>7.648089</td>\n",
" <td>2.959833</td>\n",
" <td>3.139833</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>3.432152</td>\n",
" <td>8.180974</td>\n",
" <td>2.304726</td>\n",
" <td>3.373167</td>\n",
" <td>3.512864</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>4.649764</td>\n",
" <td>26.461872</td>\n",
" <td>9.298162</td>\n",
" <td>4.526500</td>\n",
" <td>4.711594</td>\n",
" <td>0.000000e+00</td>\n",
" <td>2.220400e-16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>6</td>\n",
" <td>4.983658</td>\n",
" <td>9.926987</td>\n",
" <td>3.539537</td>\n",
" <td>4.886500</td>\n",
" <td>5.053167</td>\n",
" <td>0.000000e+00</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>7</td>\n",
" <td>5.126154</td>\n",
" <td>173.597504</td>\n",
" <td>61.701931</td>\n",
" <td>5.053167</td>\n",
" <td>5.331861</td>\n",
" <td>0.000000e+00</td>\n",
" <td>1.273393e-01</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>8</td>\n",
" <td>5.398638</td>\n",
" <td>141.308151</td>\n",
" <td>49.051704</td>\n",
" <td>5.331861</td>\n",
" <td>5.493166</td>\n",
" <td>1.273393e-01</td>\n",
" <td>0.000000e+00</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Peak Retention Time (min) Area Height (mAu) Start End \\\n",
"0 1 0.635612 10.514344 2.732795 0.593167 0.710914 \n",
"1 2 0.761960 6.592570 1.165994 0.710914 0.883167 \n",
"2 3 3.026824 22.877693 7.648089 2.959833 3.139833 \n",
"3 4 3.432152 8.180974 2.304726 3.373167 3.512864 \n",
"4 5 4.649764 26.461872 9.298162 4.526500 4.711594 \n",
"5 6 4.983658 9.926987 3.539537 4.886500 5.053167 \n",
"6 7 5.126154 173.597504 61.701931 5.053167 5.331861 \n",
"7 8 5.398638 141.308151 49.051704 5.331861 5.493166 \n",
"\n",
" StartIntensity EndIntensity \n",
"0 -4.440900e-16 1.018098e+00 \n",
"1 1.018098e+00 0.000000e+00 \n",
"2 0.000000e+00 0.000000e+00 \n",
"3 0.000000e+00 0.000000e+00 \n",
"4 0.000000e+00 2.220400e-16 \n",
"5 0.000000e+00 0.000000e+00 \n",
"6 0.000000e+00 1.273393e-01 \n",
"7 1.273393e-01 0.000000e+00 "
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# View individual sample\n",
"n = 0\n",
"print(name[n])\n",
"integrations[n]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We now add area percent to the integration table"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [],
"source": [
"for n in range(0,len(integrations)):\n",
" aper = integrations[n]['Area']/integrations[n]['Area'].sum()\n",
" #print(aper)\n",
" integrations[n].insert(3,\"Area %\",aper,allow_duplicates = False)\n",
" integrations[n]\n"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(integrations)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plot individual chromatograms"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x144 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x144 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x144 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x144 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#ind = range(0,len(integrations))\n",
"ind = [3, 2, 1, 0]\n",
"for i in ind:\n",
" plt.figure(figsize=(10,2))\n",
"\n",
" plt.plot(chrom[i]['Time (min)'],chrom[i]['Absorbance (mAu)'])\n",
"\n",
"\n",
" plt.xlabel('Time (min)')\n",
" plt.ylabel('Intensity (mAU) @' + wavelength[0] + ' nm')\n",
" plt.title(name[i],fontsize=18)\n",
" \n",
" #label retention times\n",
" x = integrations[i].sort_values(['Area'], ascending=False)\n",
" #q = 0 #this sets how many peaks will be labeled with retention time \n",
" #rt = round(x['Retention Time (min)'].iloc[q],2)\n",
" # \n",
" #plt.annotate(rt, xy = (rt ,x['Height (mAu)'].iloc[q]), xytext = (rt-2 ,x['Height (mAu)'].iloc[q]/2),\n",
" # arrowprops=dict(facecolor='black', shrink=0.1))\n",
" \n",
"\n",
" plt.rcParams.update({\"axes.facecolor\" : \"white\", \n",
" \"axes.edgecolor\": \"black\"}) #set background to white and axes to black\n",
" plt.autoscale(enable=True, axis='x', tight=True) #autoscale the x axis\n",
" #plt.ylim(-5,50)\n",
" #plt.xlim(2.5,18)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plot chromatograms overlaid"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"ename": "IndexError",
"evalue": "list index out of range",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-51-af814f55c26f>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mind\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mchrom\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Time (min)'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mchrom\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'Absorbance (mAu)'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 7\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mxlabel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Time (min)'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mylabel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Intensity (mAU) @'\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mwavelength\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;34m' nm'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mIndexError\u001b[0m: list index out of range"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ind = range(2,5)\n",
"\n",
"ax = plt.figure(figsize=(10,4)) #Figure size in inches\n",
"\n",
"for i in ind:\n",
" plt.plot(chrom[i]['Time (min)'],chrom[i]['Absorbance (mAu)'], label=name[i])\n",
" plt.xlabel('Time (min)')\n",
" plt.ylabel('Intensity (mAU) @' + wavelength[0] + ' nm')\n",
" plt.rcParams.update({\"axes.facecolor\" : \"white\", \n",
" \"axes.edgecolor\": \"black\"}) #set background to white and axes to black\n",
" plt.autoscale(enable=True, axis='x', tight=True) #autoscale the x axis \n",
"\n",
" #label retention times\n",
" x = integrations[i].sort_values(['Area'], ascending=False)\n",
" rt = round(x['Retention Time (min)'].iloc[0],2)\n",
" plt.annotate(rt, (x['Retention Time (min)'].iloc[0],x['Height (mAu)'].iloc[0]))\n",
"\n",
"\n",
"_,high = plt.ylim()\n",
"plt.xlim() #Set x axis scale here if desired, otherwise, leave empty\n",
"plt.ylim()\n",
"plt.legend()\n",
"plt.show()\n",
"\n",
"\n",
"#def update(x=(0,100)): \n",
"# ax=plt.gca()\n",
"# return x\n",
"# \n",
"#widgets.interact(update, x = (0,100))\n"
]
},
{
"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.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment