Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ashepherd/45e1bde53ecbc8ce9eb8ab3f3c9a05c2 to your computer and use it in GitHub Desktop.
Save ashepherd/45e1bde53ecbc8ce9eb8ab3f3c9a05c2 to your computer and use it in GitHub Desktop.
MBVL bacteria vs diatom abundance prototype
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# utilities to support loading files and converting formats\n",
"import pandas as pd\n",
"import requests\n",
"from scipy.io import loadmat\n",
"from tempfile import TemporaryFile\n",
"import datetime as dt\n",
"from contextlib import contextmanager\n",
"import re\n",
"\n",
"# download a URL to a temporary file\n",
"@contextmanager\n",
"def download(url):\n",
" with TemporaryFile() as f:\n",
" f.write(requests.get(url).content)\n",
" f.seek(0)\n",
" yield f\n",
"\n",
"# load a MATLAB file from a given URL\n",
"def loadmat_url(url):\n",
" with download(url) as f:\n",
" return loadmat(f, squeeze_me=True)\n",
"\n",
"# given a file ID or GDrive sharing link, generate a direct Google Drive link\n",
"def gdrive_link(file_id):\n",
" file_id = re.sub(r'.*=','',file_id)\n",
" return 'https://drive.google.com/uc?export=download&id=%s' % file_id\n",
"\n",
"# convert MATLAB datetum to datetime\n",
"def matlab2datetime(matlab_datenum):\n",
" day = dt.datetime.fromordinal(int(matlab_datenum))\n",
" dayfrac = dt.timedelta(days=matlab_datenum%1) - dt.timedelta(days = 366)\n",
" return day + dayfrac"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Part 1: Bacteria relative abundance"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>AFP_MVCO_Bv6--MVCO_254</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_257</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_258</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_259</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_260</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_261</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_262</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_263</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_265</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_266</th>\n",
" <th>...</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_313</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_314</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_315</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_316</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_317</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_318</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_319</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_320</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_321</th>\n",
" <th>AFP_MVCO_Bv6--MVCO_322</th>\n",
" </tr>\n",
" <tr>\n",
" <th>taxa</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Bacteria;Acidobacteria;Acidobacteriia;Acidobacteriales;Acidobacteriaceae;Acidobacterium</th>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000002</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bacteria;Acidobacteria;Acidobacteriia;Acidobacteriales;Acidobacteriaceae;Bryocella</th>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bacteria;Acidobacteria;Acidobacteriia;Acidobacteriales;Acidobacteriaceae;Granulicella</th>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bacteria;Acidobacteria;Acidobacteriia;Acidobacteriales;Acidobacteriaceae;Telmatobacter</th>\n",
" <td>0.0</td>\n",
" <td>0.000005</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bacteria;Acidobacteria;Acidobacteriia;Acidobacteriales;Acidobacteriaceae;Terriglobus</th>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000005</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000003</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 53 columns</p>\n",
"</div>"
],
"text/plain": [
" AFP_MVCO_Bv6--MVCO_254 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_257 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000000 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000000 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000000 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000005 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000000 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_258 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_259 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_260 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_261 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000000 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000000 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000000 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000000 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000005 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_262 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_263 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_265 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_266 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"\n",
" ... \\\n",
"taxa ... \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... ... \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... ... \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... ... \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... ... \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... ... \n",
"\n",
" AFP_MVCO_Bv6--MVCO_313 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_314 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_315 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_316 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000000 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000000 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000000 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000000 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000003 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_317 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_318 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_319 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_320 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_321 \\\n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.0 \n",
"\n",
" AFP_MVCO_Bv6--MVCO_322 \n",
"taxa \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000002 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000000 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000000 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000000 \n",
"Bacteria;Acidobacteria;Acidobacteriia;Acidobact... 0.000000 \n",
"\n",
"[5 rows x 53 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# URL for 'MBVL_VAMPS_output_norm_frequency.mtx'\n",
"bact_csv_url = 'https://drive.google.com/open?id=0B2pXDTrPhbz_enU0a0tNTUJ1X28'\n",
"\n",
"with download(gdrive_link(bact_csv_url)) as f:\n",
" bact_csv = pd.read_csv(f, sep='\\t')\n",
"\n",
"bact_csv.index = bact_csv.pop('taxa')\n",
"bact_csv.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"'Bacteria;Deferribacteres;Deferribacteres;Deferribacterales;family_NA;genus_NA'"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# determine most \"abundant\" taxon\n",
"top_taxon = bact_csv.sum(axis=1).sort_values().index[-1]\n",
"top_taxon"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Sample_name</th>\n",
" <th>MVCO_event_number</th>\n",
" <th>Temperature</th>\n",
" <th>Nitrate+nitrite</th>\n",
" <th>Ammonium</th>\n",
" <th>Phosphate</th>\n",
" <th>Silicate</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Sample_date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2010-08-27</th>\n",
" <td>AFP_MVCO_Bv6--MVCO_254</td>\n",
" <td>MVCO_254</td>\n",
" <td>20.128</td>\n",
" <td>0.286</td>\n",
" <td>0.000</td>\n",
" <td>0.175</td>\n",
" <td>8.107</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-10-19</th>\n",
" <td>AFP_MVCO_Bv6--MVCO_257</td>\n",
" <td>MVCO_257</td>\n",
" <td>14.939</td>\n",
" <td>0.000</td>\n",
" <td>1.272</td>\n",
" <td>0.116</td>\n",
" <td>5.632</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-10-24</th>\n",
" <td>AFP_MVCO_Bv6--MVCO_258</td>\n",
" <td>MVCO_258</td>\n",
" <td>14.001</td>\n",
" <td>0.523</td>\n",
" <td>1.669</td>\n",
" <td>0.066</td>\n",
" <td>2.677</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-11-02</th>\n",
" <td>AFP_MVCO_Bv6--MVCO_259</td>\n",
" <td>MVCO_259</td>\n",
" <td>13.321</td>\n",
" <td>0.077</td>\n",
" <td>2.103</td>\n",
" <td>0.075</td>\n",
" <td>3.953</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-11-16</th>\n",
" <td>AFP_MVCO_Bv6--MVCO_260</td>\n",
" <td>MVCO_260</td>\n",
" <td>10.899</td>\n",
" <td>0.078</td>\n",
" <td>0.868</td>\n",
" <td>0.075</td>\n",
" <td>5.959</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Sample_name MVCO_event_number Temperature \\\n",
"Sample_date \n",
"2010-08-27 AFP_MVCO_Bv6--MVCO_254 MVCO_254 20.128 \n",
"2010-10-19 AFP_MVCO_Bv6--MVCO_257 MVCO_257 14.939 \n",
"2010-10-24 AFP_MVCO_Bv6--MVCO_258 MVCO_258 14.001 \n",
"2010-11-02 AFP_MVCO_Bv6--MVCO_259 MVCO_259 13.321 \n",
"2010-11-16 AFP_MVCO_Bv6--MVCO_260 MVCO_260 10.899 \n",
"\n",
" Nitrate+nitrite Ammonium Phosphate Silicate \n",
"Sample_date \n",
"2010-08-27 0.286 0.000 0.175 8.107 \n",
"2010-10-19 0.000 1.272 0.116 5.632 \n",
"2010-10-24 0.523 1.669 0.066 2.677 \n",
"2010-11-02 0.077 2.103 0.075 3.953 \n",
"2010-11-16 0.078 0.868 0.075 5.959 "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# get the dates for each event number from metadata file called \"event_number_dates.txt\"\n",
"event_number_dates_url = 'https://drive.google.com/open?id=0BzoJnj-e6BWpOVZOSjlNY3J5WEE'\n",
"\n",
"with download(gdrive_link(event_number_dates_url)) as f:\n",
" end = pd.read_csv(f, sep='\\t', parse_dates=['Sample_date'])\n",
"\n",
"end.index = end.pop('Sample_date')\n",
"end.head()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"Sample_date\n",
"2010-08-27 0.089477\n",
"2010-10-19 0.241144\n",
"2010-10-24 0.165028\n",
"2010-11-02 0.188907\n",
"2010-11-16 0.197343\n",
"Name: Bacteria;Deferribacteres;Deferribacteres;Deferribacterales;family_NA;genus_NA, dtype: float64"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# get the time series for the top taxon\n",
"# here we depend on the matrices being the same length\n",
"bact_ts = bact_csv.ix[top_taxon]\n",
"bact_ts.index = end.index\n",
"bact_ts.head()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0xb0a6748>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nB4ensicClwFIAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0xafe4ba8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"\n",
"# plot relative abundance over time\n",
"bact_ts.plot()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Part two: diatom abundance"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Asterionellopsis</th>\n",
" <th>Ceratium</th>\n",
" <th>Chaetoceros</th>\n",
" <th>Corethron</th>\n",
" <th>Cylindrotheca</th>\n",
" <th>DactFragCerataul</th>\n",
" <th>Dactyliosolen</th>\n",
" <th>Dictyocha</th>\n",
" <th>Dinobryon</th>\n",
" <th>Ditylum</th>\n",
" <th>...</th>\n",
" <th>zooplankton</th>\n",
" <th>camera_spot</th>\n",
" <th>Eutintinnus</th>\n",
" <th>Favella</th>\n",
" <th>Helicostomella_subulata</th>\n",
" <th>Stenosemella_sp1</th>\n",
" <th>Stenosemella_sp2</th>\n",
" <th>Tintinnidium</th>\n",
" <th>Tintinnopsis</th>\n",
" <th>Balanion_sp</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2006-06-07</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>48886.569594</td>\n",
" <td>0.000000</td>\n",
" <td>36850.456311</td>\n",
" <td>8424.933243</td>\n",
" <td>22273.431363</td>\n",
" <td>12144.836565</td>\n",
" <td>5305.235580</td>\n",
" <td>27822.10648</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>364141.255908</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006-06-14</th>\n",
" <td>0.000000</td>\n",
" <td>40727.600880</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>311076.023384</td>\n",
" <td>0.000000</td>\n",
" <td>21700.079155</td>\n",
" <td>0.00000</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>9275.247774</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>19269.934755</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006-06-20</th>\n",
" <td>15334.076422</td>\n",
" <td>23529.849061</td>\n",
" <td>144168.056263</td>\n",
" <td>0.000000</td>\n",
" <td>18291.440669</td>\n",
" <td>92163.506159</td>\n",
" <td>148380.516265</td>\n",
" <td>0.000000</td>\n",
" <td>26702.680564</td>\n",
" <td>0.00000</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>360.028704</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>11261.123753</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>39499.538954</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006-06-21</th>\n",
" <td>1412.885129</td>\n",
" <td>18930.064370</td>\n",
" <td>87882.408820</td>\n",
" <td>0.000000</td>\n",
" <td>4681.497559</td>\n",
" <td>0.000000</td>\n",
" <td>75824.472661</td>\n",
" <td>0.000000</td>\n",
" <td>387.014745</td>\n",
" <td>0.00000</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>2116.811297</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2006-07-09</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>12096.070852</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>427997.066825</td>\n",
" <td>0.000000</td>\n",
" <td>19832.625208</td>\n",
" <td>0.00000</td>\n",
" <td>...</td>\n",
" <td>0.0</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>33219.860466</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>6706.624962</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 122 columns</p>\n",
"</div>"
],
"text/plain": [
" Asterionellopsis Ceratium Chaetoceros Corethron \\\n",
"2006-06-07 0.000000 0.000000 48886.569594 0.000000 \n",
"2006-06-14 0.000000 40727.600880 0.000000 0.000000 \n",
"2006-06-20 15334.076422 23529.849061 144168.056263 0.000000 \n",
"2006-06-21 1412.885129 18930.064370 87882.408820 0.000000 \n",
"2006-07-09 0.000000 0.000000 0.000000 12096.070852 \n",
"\n",
" Cylindrotheca DactFragCerataul Dactyliosolen Dictyocha \\\n",
"2006-06-07 36850.456311 8424.933243 22273.431363 12144.836565 \n",
"2006-06-14 0.000000 0.000000 311076.023384 0.000000 \n",
"2006-06-20 18291.440669 92163.506159 148380.516265 0.000000 \n",
"2006-06-21 4681.497559 0.000000 75824.472661 0.000000 \n",
"2006-07-09 0.000000 0.000000 427997.066825 0.000000 \n",
"\n",
" Dinobryon Ditylum ... zooplankton camera_spot \\\n",
"2006-06-07 5305.235580 27822.10648 ... 0.0 0.000000 \n",
"2006-06-14 21700.079155 0.00000 ... 0.0 0.000000 \n",
"2006-06-20 26702.680564 0.00000 ... 0.0 360.028704 \n",
"2006-06-21 387.014745 0.00000 ... 0.0 2116.811297 \n",
"2006-07-09 19832.625208 0.00000 ... 0.0 0.000000 \n",
"\n",
" Eutintinnus Favella Helicostomella_subulata Stenosemella_sp1 \\\n",
"2006-06-07 364141.255908 0.0 0.0 0.000000 \n",
"2006-06-14 0.000000 0.0 0.0 9275.247774 \n",
"2006-06-20 0.000000 0.0 0.0 11261.123753 \n",
"2006-06-21 0.000000 0.0 0.0 0.000000 \n",
"2006-07-09 0.000000 0.0 0.0 33219.860466 \n",
"\n",
" Stenosemella_sp2 Tintinnidium Tintinnopsis Balanion_sp \n",
"2006-06-07 0.0 0.0 0.000000 0.0 \n",
"2006-06-14 0.0 0.0 19269.934755 0.0 \n",
"2006-06-20 0.0 0.0 39499.538954 0.0 \n",
"2006-06-21 0.0 0.0 0.000000 0.0 \n",
"2006-07-09 0.0 0.0 6706.624962 0.0 \n",
"\n",
"[5 rows x 122 columns]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# ID for Google Drive staged \"count_biovol_manual_current_day\" as of 2016-09-28\n",
"# this is biovolume per class per day for manually-classified targets\n",
"file_url = 'https://drive.google.com/open?id=0BzoJnj-e6BWpWVA2S2ttdDdLY1k'\n",
"\n",
"# load it\n",
"mat = loadmat_url(gdrive_link(file_url))\n",
"\n",
"# convert MATLAB times to datetimes\n",
"ts = [matlab2datetime(m) for m in mat['matdate_bin']]\n",
"\n",
"# create a biovolume matrix with datetime index and classes as columns\n",
"cbv = pd.DataFrame(mat['classbiovol_bin'],columns=mat['class2use'],index=ts)\n",
"cbv.head()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# these are the 1-based indices of columns identifying diatom classes\n",
"# derived from https://github.com/hsosik/ifcb-analysis/blob/master/analyze_by_class/get_diatom_ind.m\n",
"DIATOM_IND = [1,3,4,5,6,7,10,11,12,13,14,15,16,17,18,19,20,21,25,36,37,42,44,45,47,48,49,50,51,53,54,55,56,57,58,59,61,62,63,64,66,69,91,92,108]\n",
"\n",
"# remove non-diatom classes from the matrix (in-place)\n",
"def remove_non_diatoms(cbv):\n",
" all_classes = mat['class2use']\n",
" diatom_classes = [all_classes[i-1] for i in DIATOM_IND]\n",
" non_diatom_classes = set(all_classes).difference(diatom_classes)\n",
" for c in non_diatom_classes:\n",
" del cbv[c]\n",
" return cbv\n",
"\n",
"# scale biovolume by observed volume (from ml_analyzed_mat_bin field in mat file)\n",
"def scale_by_volume(cbv):\n",
" return cbv / mat['ml_analyzed_mat_bin']\n",
"\n",
"# subset the matrix into an arbitrary time region (defaults to region of interest)\n",
"def time_slice(df, start='2010-01-01',end='2013-12-31'):\n",
" return df[start : end]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(Timestamp('2010-08-27 00:00:00'), Timestamp('2013-10-29 00:00:00'))"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# compute time region covered by bacteria series\n",
"start = bact_ts.index.min()\n",
"end = bact_ts.index.max()\n",
"start, end"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Asterionellopsis</th>\n",
" <th>Chaetoceros</th>\n",
" <th>Corethron</th>\n",
" <th>Cylindrotheca</th>\n",
" <th>DactFragCerataul</th>\n",
" <th>Dactyliosolen</th>\n",
" <th>Ditylum</th>\n",
" <th>Ephemera</th>\n",
" <th>Eucampia</th>\n",
" <th>Guinardia_delicatula</th>\n",
" <th>...</th>\n",
" <th>diatom_flagellate</th>\n",
" <th>Chaetoceros_didymus</th>\n",
" <th>Leptocylindrus_mediterraneus</th>\n",
" <th>Chaetoceros_didymus_flagellate</th>\n",
" <th>pennates_on_diatoms</th>\n",
" <th>Delphineis</th>\n",
" <th>Ditylum_parasite</th>\n",
" <th>Bacillaria</th>\n",
" <th>Bidulphia</th>\n",
" <th>pennate_morphotype1</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2010-08-27</th>\n",
" <td>94699.102066</td>\n",
" <td>83229.151213</td>\n",
" <td>0.000000</td>\n",
" <td>3864.538393</td>\n",
" <td>0.0</td>\n",
" <td>44499.244205</td>\n",
" <td>771.221746</td>\n",
" <td>650.597659</td>\n",
" <td>0.000000</td>\n",
" <td>4005.975631</td>\n",
" <td>...</td>\n",
" <td>1134.517790</td>\n",
" <td>2276.464409</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>20453.818159</td>\n",
" <td>0.0</td>\n",
" <td>0.00000</td>\n",
" <td>0.000000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-08-28</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>103.781898</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>28822.076737</td>\n",
" <td>4310.609644</td>\n",
" <td>1058.936621</td>\n",
" <td>37.852087</td>\n",
" <td>NaN</td>\n",
" <td>...</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>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-09-06</th>\n",
" <td>NaN</td>\n",
" <td>31192.068624</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>166.367338</td>\n",
" <td>920.990725</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>4069.642841</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>2010-09-12</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>1294.607502</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>7105.116985</td>\n",
" <td>11247.322358</td>\n",
" <td>689.856643</td>\n",
" <td>0.000000</td>\n",
" <td>NaN</td>\n",
" <td>...</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>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2010-09-16</th>\n",
" <td>0.000000</td>\n",
" <td>8543.067147</td>\n",
" <td>0.000000</td>\n",
" <td>384.740842</td>\n",
" <td>0.0</td>\n",
" <td>20276.236597</td>\n",
" <td>22694.340316</td>\n",
" <td>0.000000</td>\n",
" <td>2751.970168</td>\n",
" <td>12710.308563</td>\n",
" <td>...</td>\n",
" <td>1053.508959</td>\n",
" <td>204.746823</td>\n",
" <td>656.936936</td>\n",
" <td>739.722876</td>\n",
" <td>2742.584080</td>\n",
" <td>0.0</td>\n",
" <td>806.23285</td>\n",
" <td>1736.920411</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 45 columns</p>\n",
"</div>"
],
"text/plain": [
" Asterionellopsis Chaetoceros Corethron Cylindrotheca \\\n",
"2010-08-27 94699.102066 83229.151213 0.000000 3864.538393 \n",
"2010-08-28 NaN NaN 103.781898 NaN \n",
"2010-09-06 NaN 31192.068624 NaN NaN \n",
"2010-09-12 NaN NaN 1294.607502 NaN \n",
"2010-09-16 0.000000 8543.067147 0.000000 384.740842 \n",
"\n",
" DactFragCerataul Dactyliosolen Ditylum Ephemera \\\n",
"2010-08-27 0.0 44499.244205 771.221746 650.597659 \n",
"2010-08-28 NaN 28822.076737 4310.609644 1058.936621 \n",
"2010-09-06 NaN NaN NaN NaN \n",
"2010-09-12 NaN 7105.116985 11247.322358 689.856643 \n",
"2010-09-16 0.0 20276.236597 22694.340316 0.000000 \n",
"\n",
" Eucampia Guinardia_delicatula ... \\\n",
"2010-08-27 0.000000 4005.975631 ... \n",
"2010-08-28 37.852087 NaN ... \n",
"2010-09-06 NaN NaN ... \n",
"2010-09-12 0.000000 NaN ... \n",
"2010-09-16 2751.970168 12710.308563 ... \n",
"\n",
" diatom_flagellate Chaetoceros_didymus \\\n",
"2010-08-27 1134.517790 2276.464409 \n",
"2010-08-28 NaN NaN \n",
"2010-09-06 166.367338 920.990725 \n",
"2010-09-12 NaN NaN \n",
"2010-09-16 1053.508959 204.746823 \n",
"\n",
" Leptocylindrus_mediterraneus Chaetoceros_didymus_flagellate \\\n",
"2010-08-27 0.000000 0.000000 \n",
"2010-08-28 NaN NaN \n",
"2010-09-06 0.000000 0.000000 \n",
"2010-09-12 NaN NaN \n",
"2010-09-16 656.936936 739.722876 \n",
"\n",
" pennates_on_diatoms Delphineis Ditylum_parasite Bacillaria \\\n",
"2010-08-27 20453.818159 0.0 0.00000 0.000000 \n",
"2010-08-28 NaN NaN NaN NaN \n",
"2010-09-06 4069.642841 NaN NaN NaN \n",
"2010-09-12 NaN NaN NaN NaN \n",
"2010-09-16 2742.584080 0.0 806.23285 1736.920411 \n",
"\n",
" Bidulphia pennate_morphotype1 \n",
"2010-08-27 0.0 0.0 \n",
"2010-08-28 NaN NaN \n",
"2010-09-06 NaN NaN \n",
"2010-09-12 NaN NaN \n",
"2010-09-16 0.0 0.0 \n",
"\n",
"[5 rows x 45 columns]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# perform the operations defined above\n",
"ab = scale_by_volume(cbv)\n",
"remove_non_diatoms(ab)\n",
"ab = time_slice(ab, start, end)\n",
"ab.head()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"'Guinardia_delicatula'"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# sum concentrations of three Guinardia classes\n",
"G_CLASSES = ['Guinardia_delicatula', 'G_delicatula_parasite', 'G_delicatula_external_parasite']\n",
"\n",
"# when summing, propagate NaNs\n",
"g_ab = ab[G_CLASSES].sum(axis=1, skipna=False)\n",
"\n",
"summed_ab = ab\n",
"\n",
"# now remove the sublcasses and add the summed class\n",
"for gc in G_CLASSES:\n",
" summed_ab = summed_ab.drop(gc, 1)\n",
"summed_ab['Guinardia_delicatula'] = g_ab\n",
"\n",
"# compute the most abundant class based on sum of concentration\n",
"def most_abundant_class(df):\n",
" return df.sum(axis=0).sort_values().index[-1]\n",
"\n",
"top_class = most_abundant_class(summed_ab)\n",
"top_class"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"2010-08-27 4005.975631\n",
"2010-09-16 12710.308563\n",
"2010-09-28 15505.632146\n",
"2010-10-12 7875.186867\n",
"2010-10-22 273.025632\n",
"Name: Guinardia_delicatula, dtype: float64"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# get its concentration\n",
"diatom_ts = summed_ab[top_class]\n",
"\n",
"# now drop NaNs from the resulting time series\n",
"diatom_ts.dropna(inplace=True)\n",
"diatom_ts.head()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0xb288f98>"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nZDJsGPzXf9ko/9dfL05ep3C2bbOldzPn/IqjPQM8PJWJG40YmTIF+vWrvJeR4tOftrEf5aIlexpv\nv21eBpin0ZjReOklm1hStfh2qe98B264wdq2fH2N8vL447BggVXYoqTaMw4/vLTyPTyVjhuNmNi+\nHX7yk+bzMgAuugjmzClPWGTTJnv5HX20/W5pnsayZdaeAeZpNBaeuvFGOPPM0s/5pS/ZVDE331x6\nWU5u7rnH/nuPPpreGSSO9gzw8FQmbjRiYupUG6xXysSDpdKhgxmOO+6Iv+yXXrLxGW3a2O8uXWyu\nq0LWpUgChXoaixfby+b+++N5UVx+uZW1enX+vE7Tqa21JXm/+lW711FvI47QFLTc8FS5/ptuNGKg\nudsyoowZA7/9bfwz0EbbM8AmeuvYERYujPc85SLVcwps0sL33stuFCZOtJfPvvvG02W6WzebHfdX\nvyq9LKchDz1kIcDOneFb34IZM8zbiKs9A1pmeOr11617+X33xV+2G40YSIKXkeKII+CYY+JflCna\nnpHi05+2cBjYamg7d8Z7zjhZtqze0+jSxeLcmYuUTZliC2JdcUW85/72t22usUJGoTsNUYWf/tQW\nwJoxI33fPfdYGBBsMO03vmEVuLjaM6C+8pDL25g+3TydpHgjy5dbePWyy+zZi32BNlXdrT92ieVj\n+3bVPn1Un3mmrKdpEjNmqA4eHG+ZhxyiumRJetq0aarnnae6cqUqqD75ZHzn27lT9Z134ivvqKNU\nX3ml/vdPf6p66aW2XVenOm6c6XHhwvjOGeXss1Vvv708ZVeK1aub57w//KHqsceq3nGH6egb31Dd\nulV1xQrVzp1tO8W6dapdu6qOHat64YXxyVBVpbpjh21/8IHqbbepnnSS6oQJJl+rVqo/+lF85yuW\ntWvtWZ840X6/8opq9+6qDz/c9LLCu7PhOzVbYkv5AGcA/8BW/PvvHHmafreawG9/q3rqqWU9RZPZ\nudP+XC+8EE95779vf866uvT0FSvsD3r55fYkjR4dz/k2bFA96yzVjh1V168vvpz77lO94grVxYtV\n27e3F0qK1AtnyxbVq65SPe441ffeK132XDz9tGrfvqq7dpXvHOVk/nzV1q1Nx5s3V+68N9+seuSR\n9QZr7VqrqBx7rBmPlOGPMm6cqojqb34Tnxx77aV6992qw4bZczlihOrUqapduqhedJHqNdfYf+5X\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0xb1747f0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"\n",
"# plot the time series\n",
"diatom_ts.plot(legend=False)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0xb9795c0>]"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0xb1b8748>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# now plot both time series together\n",
"%matplotlib inline\n",
"from matplotlib import pyplot as plt\n",
"\n",
"fig, ax1 = plt.subplots()\n",
"\n",
"ax1.plot(bact_ts.index.date, bact_ts)\n",
"plt.xticks(rotation=45)\n",
"\n",
"ax2 = ax1.twinx()\n",
"ax2.plot(diatom_ts.index.date, diatom_ts, c='red')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [Root]",
"language": "python",
"name": "Python [Root]"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.12"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
@ashepherd
Copy link
Author

Plotting two time series datasets in Jupyter notebook

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment