From 0f1f9ff8808f83260db51259024d26d0d790f9bc Mon Sep 17 00:00:00 2001 From: Zichen Wang Date: Thu, 23 Jun 2016 12:05:39 -0400 Subject: [PATCH] Added environmental variables at the top of the notebook. --- Zika.ipynb | 473 +++++++++++++++++++---------------------------------- 1 file changed, 168 insertions(+), 305 deletions(-) diff --git a/Zika.ipynb b/Zika.ipynb index 4871025..cc7f3a8 100644 --- a/Zika.ipynb +++ b/Zika.ipynb @@ -48,10 +48,19 @@ }, "outputs": [], "source": [ + "import os\n", "import numpy as np\n", "import pandas as pd" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Below we assign some global variables that will be used across the rest of the notebook. \n", + "**Please change these variables accordingly if you intend to use this for other studies. **" + ] + }, { "cell_type": "code", "execution_count": 2, @@ -60,246 +69,218 @@ }, "outputs": [], "source": [ - "## Assign the four variables: gse, gpl, ctrl_ids and pert_ids with the appropriate accession IDs; \n", - "## gse is the study; gpl is the platform;\n", - "## ctrl_ids are the control samples; and pert_ids are the treatment samples.\n", - "## Make sure that there are at least two samples in each group.\n", - "gse = 'GSE78711'\n", - "gpl = 'GPL18573'\n", - "ctrl_ids = ['GSM2073121', 'GSM2073122', 'GSM2075585', 'GSM2075586']\n", - "pert_ids = ['GSM2073123', 'GSM2073124', 'GSM2075587', 'GSM2075588']" + "# The URL for the SRA study (project), usually in a SRPxxxxx folder including several SRRxxxxx folders (samples)\n", + "os.environ['FTP_URL'] = 'ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/'\n", + "# The working directory to store all the sequencing data, will be created if not exists\n", + "os.environ['WORKDIR'] = 'data/Zika/'\n", + "# The directory for the reference genome\n", + "os.environ['GENOMEDIR'] = 'genomes/Homo_sapiens/UCSC/hg19'" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "--2016-06-22 17:11:54-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/\n", + "--2016-06-23 11:53:28-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/\n", " => 'data/Zika/.listing'\n", - "Resolving ftp-trace.ncbi.nlm.nih.gov... 130.14.250.12, 2607:f220:41e:250::11\n", - "Connecting to ftp-trace.ncbi.nlm.nih.gov|130.14.250.12|:21... connected.\n", + "Resolving ftp-trace.ncbi.nlm.nih.gov... 130.14.250.13, 2607:f220:41e:250::7\n", + "Connecting to ftp-trace.ncbi.nlm.nih.gov|130.14.250.13|:21... connected.\n", "Logging in as anonymous ... Logged in!\n", "==> SYST ... done. ==> PWD ... done.\n", "==> TYPE I ... done. ==> CWD (1) /sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895 ... done.\n", "==> PASV ... done. ==> LIST ... done.\n", "\n", - ".listing [ <=> ] 600 --.-KB/s in 0.002s \n", + ".listing [ <=> ] 600 --.-KB/s in 0.003s \n", "\n", - "2016-06-22 17:11:54 (253 KB/s) - 'data/Zika/.listing' saved [600]\n", + "2016-06-23 11:53:28 (209 KB/s) - 'data/Zika/.listing' saved [600]\n", "\n", "Removed 'data/Zika/.listing'.\n", - "--2016-06-22 17:11:54-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191542/\n", + "--2016-06-23 11:53:28-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191542/\n", " => 'data/Zika/SRR3191542/.listing'\n", "==> CWD (1) /sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191542 ... done.\n", "==> PASV ... done. ==> LIST ... done.\n", "\n", "SRR3191542/.listing [ <=> ] 73 --.-KB/s in 0.001s \n", "\n", - "2016-06-22 17:11:54 (77.2 KB/s) - 'data/Zika/SRR3191542/.listing' saved [73]\n", + "2016-06-23 11:53:28 (84.3 KB/s) - 'data/Zika/SRR3191542/.listing' saved [73]\n", "\n", "Removed 'data/Zika/SRR3191542/.listing'.\n", - "--2016-06-22 17:11:54-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191542/SRR3191542.sra\n", + "--2016-06-23 11:53:28-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191542/SRR3191542.sra\n", " => 'data/Zika/SRR3191542/SRR3191542.sra'\n", "==> CWD not required.\n", "==> PASV ... done. ==> RETR SRR3191542.sra ... done.\n", "Length: 486949093 (464M)\n", "\n", - "SRR3191542/SRR31915 100%[===================>] 464.39M 105MB/s in 4.7s \n", + "SRR3191542/SRR31915 100%[===================>] 464.39M 84.8MB/s in 6.0s \n", "\n", - "2016-06-22 17:11:59 (99.1 MB/s) - 'data/Zika/SRR3191542/SRR3191542.sra' saved [486949093]\n", + "2016-06-23 11:53:34 (77.8 MB/s) - 'data/Zika/SRR3191542/SRR3191542.sra' saved [486949093]\n", "\n", - "--2016-06-22 17:11:59-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191543/\n", + "--2016-06-23 11:53:34-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191543/\n", " => 'data/Zika/SRR3191543/.listing'\n", "==> CWD (1) /sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191543 ... done.\n", "==> PASV ... done. ==> LIST ... done.\n", "\n", - "SRR3191543/.listing [ <=> ] 73 --.-KB/s in 0s \n", + "SRR3191543/.listing [ <=> ] 73 --.-KB/s in 0.001s \n", "\n", - "2016-06-22 17:11:59 (13.9 MB/s) - 'data/Zika/SRR3191543/.listing' saved [73]\n", + "2016-06-23 11:53:34 (63.3 KB/s) - 'data/Zika/SRR3191543/.listing' saved [73]\n", "\n", "Removed 'data/Zika/SRR3191543/.listing'.\n", - "--2016-06-22 17:11:59-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191543/SRR3191543.sra\n", + "--2016-06-23 11:53:34-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191543/SRR3191543.sra\n", " => 'data/Zika/SRR3191543/SRR3191543.sra'\n", "==> CWD not required.\n", "==> PASV ... done. ==> RETR SRR3191543.sra ... done.\n", "Length: 465054386 (444M)\n", "\n", - "SRR3191543/SRR31915 100%[===================>] 443.51M 75.4MB/s in 5.7s \n", + "SRR3191543/SRR31915 100%[===================>] 443.51M 93.4MB/s in 5.5s \n", "\n", - "2016-06-22 17:12:04 (78.4 MB/s) - 'data/Zika/SRR3191543/SRR3191543.sra' saved [465054386]\n", + "2016-06-23 11:53:40 (80.4 MB/s) - 'data/Zika/SRR3191543/SRR3191543.sra' saved [465054386]\n", "\n", - "--2016-06-22 17:12:04-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191544/\n", + "--2016-06-23 11:53:40-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191544/\n", " => 'data/Zika/SRR3191544/.listing'\n", "==> CWD (1) /sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191544 ... done.\n", "==> PASV ... done. ==> LIST ... done.\n", "\n", - "SRR3191544/.listing [ <=> ] 73 --.-KB/s in 0s \n", + "SRR3191544/.listing [ <=> ] 73 --.-KB/s in 0.003s \n", "\n", - "2016-06-22 17:12:04 (208 KB/s) - 'data/Zika/SRR3191544/.listing' saved [73]\n", + "2016-06-23 11:53:40 (25.4 KB/s) - 'data/Zika/SRR3191544/.listing' saved [73]\n", "\n", "Removed 'data/Zika/SRR3191544/.listing'.\n", - "--2016-06-22 17:12:04-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191544/SRR3191544.sra\n", + "--2016-06-23 11:53:40-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191544/SRR3191544.sra\n", " => 'data/Zika/SRR3191544/SRR3191544.sra'\n", "==> CWD not required.\n", "==> PASV ... done. ==> RETR SRR3191544.sra ... done.\n", "Length: 450651106 (430M)\n", "\n", - "SRR3191544/SRR31915 100%[===================>] 429.77M 109MB/s in 4.2s \n", + "SRR3191544/SRR31915 100%[===================>] 429.77M 101MB/s in 5.0s \n", "\n", - "2016-06-22 17:12:09 (102 MB/s) - 'data/Zika/SRR3191544/SRR3191544.sra' saved [450651106]\n", + "2016-06-23 11:53:45 (86.7 MB/s) - 'data/Zika/SRR3191544/SRR3191544.sra' saved [450651106]\n", "\n", - "--2016-06-22 17:12:09-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191545/\n", + "--2016-06-23 11:53:45-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191545/\n", " => 'data/Zika/SRR3191545/.listing'\n", "==> CWD (1) /sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191545 ... done.\n", "==> PASV ... done. ==> LIST ... done.\n", "\n", - "SRR3191545/.listing [ <=> ] 73 --.-KB/s in 0s \n", + "SRR3191545/.listing [ <=> ] 73 --.-KB/s in 0.002s \n", "\n", - "2016-06-22 17:12:09 (269 KB/s) - 'data/Zika/SRR3191545/.listing' saved [73]\n", + "2016-06-23 11:53:45 (39.2 KB/s) - 'data/Zika/SRR3191545/.listing' saved [73]\n", "\n", "Removed 'data/Zika/SRR3191545/.listing'.\n", - "--2016-06-22 17:12:09-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191545/SRR3191545.sra\n", + "--2016-06-23 11:53:45-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3191545/SRR3191545.sra\n", " => 'data/Zika/SRR3191545/SRR3191545.sra'\n", "==> CWD not required.\n", "==> PASV ... done. ==> RETR SRR3191545.sra ... done.\n", "Length: 467255848 (446M)\n", "\n", - "SRR3191545/SRR31915 100%[===================>] 445.61M 34.0MB/s in 9.2s \n", + "SRR3191545/SRR31915 100%[===================>] 445.61M 103MB/s in 4.9s \n", "\n", - "2016-06-22 17:12:18 (48.4 MB/s) - 'data/Zika/SRR3191545/SRR3191545.sra' saved [467255848]\n", + "2016-06-23 11:53:50 (91.8 MB/s) - 'data/Zika/SRR3191545/SRR3191545.sra' saved [467255848]\n", "\n", - "--2016-06-22 17:12:18-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194428/\n", + "--2016-06-23 11:53:50-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194428/\n", " => 'data/Zika/SRR3194428/.listing'\n", "==> CWD (1) /sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194428 ... done.\n", "==> PASV ... done. ==> LIST ... done.\n", "\n", - "SRR3194428/.listing [ <=> ] 74 --.-KB/s in 0.001s \n", + "SRR3194428/.listing [ <=> ] 74 --.-KB/s in 0.002s \n", "\n", - "2016-06-22 17:12:18 (59.0 KB/s) - 'data/Zika/SRR3194428/.listing' saved [74]\n", + "2016-06-23 11:53:50 (33.3 KB/s) - 'data/Zika/SRR3194428/.listing' saved [74]\n", "\n", "Removed 'data/Zika/SRR3194428/.listing'.\n", - "--2016-06-22 17:12:18-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194428/SRR3194428.sra\n", + "--2016-06-23 11:53:50-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194428/SRR3194428.sra\n", " => 'data/Zika/SRR3194428/SRR3194428.sra'\n", "==> CWD not required.\n", "==> PASV ... done. ==> RETR SRR3194428.sra ... done.\n", "Length: 2499769558 (2.3G)\n", "\n", - "SRR3194428/SRR31944 100%[===================>] 2.33G 31.3MB/s in 73s \n", + "SRR3194428/SRR31944 100%[===================>] 2.33G 89.4MB/s in 27s \n", "\n", - "2016-06-22 17:13:31 (32.8 MB/s) - 'data/Zika/SRR3194428/SRR3194428.sra' saved [2499769558]\n", + "2016-06-23 11:54:17 (88.0 MB/s) - 'data/Zika/SRR3194428/SRR3194428.sra' saved [2499769558]\n", "\n", - "--2016-06-22 17:13:31-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194429/\n", + "--2016-06-23 11:54:17-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194429/\n", " => 'data/Zika/SRR3194429/.listing'\n", "==> CWD (1) /sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194429 ... done.\n", "==> PASV ... done. ==> LIST ... done.\n", "\n", "SRR3194429/.listing [ <=> ] 74 --.-KB/s in 0.001s \n", "\n", - "2016-06-22 17:13:31 (56.6 KB/s) - 'data/Zika/SRR3194429/.listing' saved [74]\n", + "2016-06-23 11:54:17 (131 KB/s) - 'data/Zika/SRR3194429/.listing' saved [74]\n", "\n", "Removed 'data/Zika/SRR3194429/.listing'.\n", - "--2016-06-22 17:13:31-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194429/SRR3194429.sra\n", + "--2016-06-23 11:54:17-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194429/SRR3194429.sra\n", " => 'data/Zika/SRR3194429/SRR3194429.sra'\n", "==> CWD not required.\n", "==> PASV ... done. ==> RETR SRR3194429.sra ... done.\n", "Length: 3242990685 (3.0G)\n", "\n", - "SRR3194429/SRR31944 100%[===================>] 3.02G 40.6MB/s in 1m 42s \n", + "SRR3194429/SRR31944 100%[===================>] 3.02G 95.5MB/s in 35s \n", "\n", - "2016-06-22 17:15:13 (30.2 MB/s) - 'data/Zika/SRR3194429/SRR3194429.sra' saved [3242990685]\n", + "2016-06-23 11:54:52 (89.2 MB/s) - 'data/Zika/SRR3194429/SRR3194429.sra' saved [3242990685]\n", "\n", - "--2016-06-22 17:15:13-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194430/\n", + "--2016-06-23 11:54:52-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194430/\n", " => 'data/Zika/SRR3194430/.listing'\n", "==> CWD (1) /sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194430 ... done.\n", "==> PASV ... done. ==> LIST ... done.\n", "\n", - "SRR3194430/.listing [ <=> ] 74 --.-KB/s in 0s \n", + "SRR3194430/.listing [ <=> ] 74 --.-KB/s in 0.001s \n", "\n", - "2016-06-22 17:15:13 (158 KB/s) - 'data/Zika/SRR3194430/.listing' saved [74]\n", + "2016-06-23 11:54:52 (132 KB/s) - 'data/Zika/SRR3194430/.listing' saved [74]\n", "\n", "Removed 'data/Zika/SRR3194430/.listing'.\n", - "--2016-06-22 17:15:13-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194430/SRR3194430.sra\n", + "--2016-06-23 11:54:52-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194430/SRR3194430.sra\n", " => 'data/Zika/SRR3194430/SRR3194430.sra'\n", "==> CWD not required.\n", "==> PASV ... done. ==> RETR SRR3194430.sra ... done.\n", "Length: 2616536610 (2.4G)\n", "\n", - "SRR3194430/SRR31944 100%[===================>] 2.44G 74.7MB/s in 36s \n", + "SRR3194430/SRR31944 100%[===================>] 2.44G 81.9MB/s in 31s \n", "\n", - "2016-06-22 17:15:49 (69.9 MB/s) - 'data/Zika/SRR3194430/SRR3194430.sra' saved [2616536610]\n", + "2016-06-23 11:55:23 (81.0 MB/s) - 'data/Zika/SRR3194430/SRR3194430.sra' saved [2616536610]\n", "\n", - "--2016-06-22 17:15:49-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194431/\n", + "--2016-06-23 11:55:23-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194431/\n", " => 'data/Zika/SRR3194431/.listing'\n", "==> CWD (1) /sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194431 ... done.\n", "==> PASV ... done. ==> LIST ... done.\n", "\n", "SRR3194431/.listing [ <=> ] 74 --.-KB/s in 0.001s \n", "\n", - "2016-06-22 17:15:49 (53.5 KB/s) - 'data/Zika/SRR3194431/.listing' saved [74]\n", + "2016-06-23 11:55:23 (132 KB/s) - 'data/Zika/SRR3194431/.listing' saved [74]\n", "\n", "Removed 'data/Zika/SRR3194431/.listing'.\n", - "--2016-06-22 17:15:49-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194431/SRR3194431.sra\n", + "--2016-06-23 11:55:23-- ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/SRR3194431/SRR3194431.sra\n", " => 'data/Zika/SRR3194431/SRR3194431.sra'\n", "==> CWD not required.\n", "==> PASV ... done. ==> RETR SRR3194431.sra ... done.\n", "Length: 2287601650 (2.1G)\n", "\n", - "SRR3194431/SRR31944 100%[===================>] 2.13G 71.9MB/s in 31s \n", + "SRR3194431/SRR31944 100%[===================>] 2.13G 94.4MB/s in 24s \n", "\n", - "2016-06-22 17:16:20 (70.8 MB/s) - 'data/Zika/SRR3194431/SRR3194431.sra' saved [2287601650]\n", + "2016-06-23 11:55:47 (89.5 MB/s) - 'data/Zika/SRR3194431/SRR3194431.sra' saved [2287601650]\n", "\n", - "FINISHED --2016-06-22 17:16:20--\n", - "Total wall clock time: 4m 26s\n", - "Downloaded: 8 files, 12G in 4m 26s (44.9 MB/s)\n" + "FINISHED --2016-06-23 11:55:47--\n", + "Total wall clock time: 2m 20s\n", + "Downloaded: 8 files, 12G in 2m 18s (86.4 MB/s)\n" ] } ], "source": [ "# Download the SRA files\n", "# This bash script is commented out because we don't want to download the files every time.\n", - "!mkdir -p data/Zika/\n", - "!wget -r ftp://ftp-trace.ncbi.nlm.nih.gov/sra/sra-instant/reads/ByStudy/sra/SRP/SRP070/SRP070895/ \\\n", + "!mkdir -p $WORKDIR\n", + "!wget -r $FTP_URL \\\n", " --no-parent -nH --cut-dirs=8 \\\n", - " -P data/Zika/" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-rw-r--r-- 1 zichen staff 464M Feb 26 21:21 data/Zika/SRR3191542/SRR3191542.sra\r\n", - "-rw-r--r-- 1 zichen staff 444M Feb 26 21:22 data/Zika/SRR3191543/SRR3191543.sra\r\n", - "-rw-r--r-- 1 zichen staff 430M Feb 26 21:21 data/Zika/SRR3191544/SRR3191544.sra\r\n", - "-rw-r--r-- 1 zichen staff 446M Feb 26 21:21 data/Zika/SRR3191545/SRR3191545.sra\r\n", - "-rw-r--r-- 1 zichen staff 2.3G Feb 29 17:19 data/Zika/SRR3194428/SRR3194428.sra\r\n", - "-rw-r--r-- 1 zichen staff 3.0G Feb 29 17:20 data/Zika/SRR3194429/SRR3194429.sra\r\n", - "-rw-r--r-- 1 zichen staff 2.4G Feb 29 17:21 data/Zika/SRR3194430/SRR3194430.sra\r\n", - "-rw-r--r-- 1 zichen staff 2.1G Feb 29 17:09 data/Zika/SRR3194431/SRR3194431.sra\r\n" - ] - } - ], - "source": [ - "## Examine the downloaded SRA files\n", - "!ls -lh data/Zika/SRR*/*.sra" + " -P $WORKDIR" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -308,142 +289,20 @@ "name": "stdout", "output_type": "stream", "text": [ - "--2016-06-22 17:18:11-- ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE78nnn/GSE78711/suppl/GSE78711_Table.S2A.reads_R1.xlsx\n", - " => 'data/Zika/GSE78711_Table.S2A.reads_R1.xlsx.2'\n", - "Resolving ftp.ncbi.nlm.nih.gov... 130.14.250.10, 2607:f220:41e:250::12\n", - "Connecting to ftp.ncbi.nlm.nih.gov|130.14.250.10|:21... connected.\n", - "Logging in as anonymous ... Logged in!\n", - "==> SYST ... done. ==> PWD ... done.\n", - "==> TYPE I ... done. ==> CWD (1) /geo/series/GSE78nnn/GSE78711/suppl ... done.\n", - "==> SIZE GSE78711_Table.S2A.reads_R1.xlsx ... 14388\n", - "==> PASV ... done. ==> RETR GSE78711_Table.S2A.reads_R1.xlsx ... done.\n", - "Length: 14388 (14K) (unauthoritative)\n", - "\n", - "GSE78711_Table.S2A. 100%[===================>] 14.05K --.-KB/s in 0.05s \n", - "\n", - "2016-06-22 17:18:11 (271 KB/s) - 'data/Zika/GSE78711_Table.S2A.reads_R1.xlsx.2' saved [14388]\n", - "\n" + "-rw-r--r-- 1 zichen staff 464M Feb 26 21:21 data/Zika//SRR3191542/SRR3191542.sra\r\n", + "-rw-r--r-- 1 zichen staff 444M Feb 26 21:22 data/Zika//SRR3191543/SRR3191543.sra\r\n", + "-rw-r--r-- 1 zichen staff 430M Feb 26 21:21 data/Zika//SRR3191544/SRR3191544.sra\r\n", + "-rw-r--r-- 1 zichen staff 446M Feb 26 21:21 data/Zika//SRR3191545/SRR3191545.sra\r\n", + "-rw-r--r-- 1 zichen staff 2.3G Feb 29 17:19 data/Zika//SRR3194428/SRR3194428.sra\r\n", + "-rw-r--r-- 1 zichen staff 3.0G Feb 29 17:20 data/Zika//SRR3194429/SRR3194429.sra\r\n", + "-rw-r--r-- 1 zichen staff 2.4G Feb 29 17:21 data/Zika//SRR3194430/SRR3194430.sra\r\n", + "-rw-r--r-- 1 zichen staff 2.1G Feb 29 17:09 data/Zika//SRR3194431/SRR3194431.sra\r\n" ] } ], "source": [ - "## download the processed file, this file provides some metadata about the samples.\n", - "!wget ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE78nnn/GSE78711/suppl/GSE78711_Table.S2A.reads_R1.xlsx \\\n", - " -P data/Zika/" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
SampleSeq reads coverage (million)Mapped ratioSeq method
0Mock1-115.890.7% concordant pair alignment ratePair-end
1Mock2-114.888.8% concordant pair alignment ratePair-end
2ZIKV1-114.690.2% concordant pair alignment ratePair-end
3ZIKV2-115.289.9% concordant pair alignment ratePair-end
4Mock1-272.089.5% overall read mapping rateSingle-end
5Mock2-292.089.4% overall read mapping rateSingle-end
6ZIKV1-275.088.5% overall read mapping rateSingle-end
7ZIKV2-266.088.2% overall read mapping rateSingle-end
\n", - "
" - ], - "text/plain": [ - " Sample Seq reads coverage (million) \\\n", - "0 Mock1-1 15.8 \n", - "1 Mock2-1 14.8 \n", - "2 ZIKV1-1 14.6 \n", - "3 ZIKV2-1 15.2 \n", - "4 Mock1-2 72.0 \n", - "5 Mock2-2 92.0 \n", - "6 ZIKV1-2 75.0 \n", - "7 ZIKV2-2 66.0 \n", - "\n", - " Mapped ratio Seq method \n", - "0 90.7% concordant pair alignment rate Pair-end \n", - "1 88.8% concordant pair alignment rate Pair-end \n", - "2 90.2% concordant pair alignment rate Pair-end \n", - "3 89.9% concordant pair alignment rate Pair-end \n", - "4 89.5% overall read mapping rate Single-end \n", - "5 89.4% overall read mapping rate Single-end \n", - "6 88.5% overall read mapping rate Single-end \n", - "7 88.2% overall read mapping rate Single-end " - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = pd.read_excel('data/Zika/GSE78711_Table.S2A.reads_R1.xlsx')\n", - "df" + "## Examine the downloaded SRA files downloaded\n", + "!ls -lh $WORKDIR/SRR*/*.sra" ] }, { @@ -464,7 +323,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -841,7 +700,7 @@ } ], "source": [ - "!bash analyze_sra.sh -w data/Zika/ -g genomes/Homo_sapiens/UCSC/hg19 | tee analyze_sra.log" + "!bash analyze_sra.sh -w $WORKDIR -g $GENOMEDIR | tee analyze_sra.log" ] }, { @@ -853,7 +712,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -872,7 +731,7 @@ } ], "source": [ - "!Rscript normalize.R data/Zika/" + "!Rscript normalize.R $WORKDIR" ] }, { @@ -885,22 +744,22 @@ { "data": { "text/html": [ - "data/fastQC_output/./
\n", - "  SRR3191542_1_fastqc.html
\n", - "  SRR3191542_2_fastqc.html
\n", - "  SRR3191543_1_fastqc.html
\n", - "  SRR3191543_2_fastqc.html
\n", - "  SRR3191544_1_fastqc.html
\n", - "  SRR3191544_2_fastqc.html
\n", - "  SRR3191545_1_fastqc.html
\n", - "  SRR3191545_2_fastqc.html
\n", - "  SRR3194428_fastqc.html
\n", - "  SRR3194429_fastqc.html
\n", - "  SRR3194430_fastqc.html
\n", - "  SRR3194431_fastqc.html
" + "data/Zika/fastQC_output/
\n", + "  SRR3191542_1_fastqc.html
\n", + "  SRR3191542_2_fastqc.html
\n", + "  SRR3191543_1_fastqc.html
\n", + "  SRR3191543_2_fastqc.html
\n", + "  SRR3191544_1_fastqc.html
\n", + "  SRR3191544_2_fastqc.html
\n", + "  SRR3191545_1_fastqc.html
\n", + "  SRR3191545_2_fastqc.html
\n", + "  SRR3194428_fastqc.html
\n", + "  SRR3194429_fastqc.html
\n", + "  SRR3194430_fastqc.html
\n", + "  SRR3194431_fastqc.html
" ], "text/plain": [ - "data/fastQC_output/./\n", + "data/Zika/fastQC_output/\n", " SRR3191542_1_fastqc.html\n", " SRR3191542_2_fastqc.html\n", " SRR3191543_1_fastqc.html\n", @@ -923,21 +782,22 @@ "source": [ "## We can examine the QC reports from the FastQC program to evaluate the quality of the data\n", "from IPython.display import FileLinks\n", - "FileLinks('data/fastQC_output/.')" + "FileLinks(os.path.join(os.environ['WORKDIR'], 'fastQC_output'))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "==> data/featureCount_output/SRR3191542.count.txt.summary <==\r\n", + "==> data/Zika//featureCount_output/SRR3191542.count.txt.summary <==\r\n", "Status\t/home/maayanlab/Zika/star_output/SRR3191542Aligned.sortedByCoord.out.bam\r\n", "Assigned\t10859768\r\n", "Unassigned_Ambiguity\t277433\r\n", @@ -949,7 +809,7 @@ "Unassigned_Chimera\t0\r\n", "Unassigned_Secondary\t0\r\n", "\r\n", - "==> data/featureCount_output/SRR3191543.count.txt.summary <==\r\n", + "==> data/Zika//featureCount_output/SRR3191543.count.txt.summary <==\r\n", "Status\t/home/maayanlab/Zika/star_output/SRR3191543Aligned.sortedByCoord.out.bam\r\n", "Assigned\t10167142\r\n", "Unassigned_Ambiguity\t264366\r\n", @@ -961,7 +821,7 @@ "Unassigned_Chimera\t0\r\n", "Unassigned_Secondary\t0\r\n", "\r\n", - "==> data/featureCount_output/SRR3191544.count.txt.summary <==\r\n", + "==> data/Zika//featureCount_output/SRR3191544.count.txt.summary <==\r\n", "Status\t/home/maayanlab/Zika/star_output/SRR3191544Aligned.sortedByCoord.out.bam\r\n", "Assigned\t10024864\r\n", "Unassigned_Ambiguity\t243520\r\n", @@ -973,7 +833,7 @@ "Unassigned_Chimera\t0\r\n", "Unassigned_Secondary\t0\r\n", "\r\n", - "==> data/featureCount_output/SRR3191545.count.txt.summary <==\r\n", + "==> data/Zika//featureCount_output/SRR3191545.count.txt.summary <==\r\n", "Status\t/home/maayanlab/Zika/star_output/SRR3191545Aligned.sortedByCoord.out.bam\r\n", "Assigned\t10340131\r\n", "Unassigned_Ambiguity\t248114\r\n", @@ -985,7 +845,7 @@ "Unassigned_Chimera\t0\r\n", "Unassigned_Secondary\t0\r\n", "\r\n", - "==> data/featureCount_output/SRR3194428.count.txt.summary <==\r\n", + "==> data/Zika//featureCount_output/SRR3194428.count.txt.summary <==\r\n", "Status\t/home/maayanlab/Zika/star_output/SRR3194428Aligned.sortedByCoord.out.bam\r\n", "Assigned\t48156708\r\n", "Unassigned_Ambiguity\t1115286\r\n", @@ -997,7 +857,7 @@ "Unassigned_Chimera\t0\r\n", "Unassigned_Secondary\t0\r\n", "\r\n", - "==> data/featureCount_output/SRR3194429.count.txt.summary <==\r\n", + "==> data/Zika//featureCount_output/SRR3194429.count.txt.summary <==\r\n", "Status\t/home/maayanlab/Zika/star_output/SRR3194429Aligned.sortedByCoord.out.bam\r\n", "Assigned\t63286307\r\n", "Unassigned_Ambiguity\t1498833\r\n", @@ -1009,7 +869,7 @@ "Unassigned_Chimera\t0\r\n", "Unassigned_Secondary\t0\r\n", "\r\n", - "==> data/featureCount_output/SRR3194430.count.txt.summary <==\r\n", + "==> data/Zika//featureCount_output/SRR3194430.count.txt.summary <==\r\n", "Status\t/home/maayanlab/Zika/star_output/SRR3194430Aligned.sortedByCoord.out.bam\r\n", "Assigned\t49763125\r\n", "Unassigned_Ambiguity\t1096905\r\n", @@ -1021,7 +881,7 @@ "Unassigned_Chimera\t0\r\n", "Unassigned_Secondary\t0\r\n", "\r\n", - "==> data/featureCount_output/SRR3194431.count.txt.summary <==\r\n", + "==> data/Zika//featureCount_output/SRR3194431.count.txt.summary <==\r\n", "Status\t/home/maayanlab/Zika/star_output/SRR3194431Aligned.sortedByCoord.out.bam\r\n", "Assigned\t43391323\r\n", "Unassigned_Ambiguity\t952301\r\n", @@ -1038,7 +898,7 @@ "source": [ "## Check the alignment stats\n", "## This will output the first 10 lines of all summary files from the featureCounts folder\n", - "!head data/featureCount_output/*.summary " + "!head $WORKDIR/featureCount_output/*.summary " ] }, { @@ -1169,7 +1029,7 @@ ], "source": [ "## Load the expression matrix\n", - "expr_df = pd.read_csv('data/repCpmMatrix_featureCounts.csv')\n", + "expr_df = pd.read_csv(os.path.join(os.environ['WORKDIR'], 'repCpmMatrix_featureCounts.csv'))\n", "expr_df = expr_df.set_index(expr_df.columns[0])\n", "expr_df.head()" ] @@ -1541,7 +1401,7 @@ } ], "source": [ - "meta_df = pd.read_csv('data/SraRunTable.txt', sep='\\t').set_index('Run_s')\n", + "meta_df = pd.read_csv(os.path.join(os.environ['WORKDIR'], 'SraRunTable.txt'), sep='\\t').set_index('Run_s')\n", "print meta_df.shape\n", "# re-order the index to make it the same with expr_df\n", "meta_df = meta_df.ix[expr_df.columns]\n", @@ -1619,7 +1479,7 @@ "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAI6CAYAAADFf1nDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XeYXHXZ//H3ZtMLEAghlIQSNDSBUCQhiKE3FWk/BYSA\nymND4QE0UpRQFEGQB5AiCAZEEFCKIAakBKQ3SWiBkIACSeikt83u74/7LJmdzM7u7NQ9eb+ua6/s\nnHNm5s7Jbvaz3wqSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJFVcD+BFYLeMY+sD9wLzgJeBvbOeswsw\nGZgPPAgMLX+ZkiRJ7dcTuBVoBHZNjtUBzwN/AjYBxhJhZoPk/GBgLnBScv5GIiTVVapoSZKkfDYj\nwszztAw5uwILgD4Z1/4TOCv5/Ezg4YxzvYDZtGwJkiRJKdWl2gW0w87A/cDIrOMjgOeI1ptmj2Rc\nN4KWIWdhcn3260iSpBTqWu0C2uGKVo6vDczMOvYesF7y+SBgRtb5dzPOS5KkFOsMLTmt6Q0szjq2\nmBig3J7zkiQpxTpzyFnIioGlB8u7rxa1cV6SJKVYZ+iuas07wFZZxwaxvAvrHaJLK9PawAvZLzR0\n6NCmadOmlbxASZLUYdOAjYt5gc7ckvMksDXRLdVsJ+CJ5PMnksfNeifXP0GWadOm0dTU5EcRH6ef\nfnrVa+jsH95D72OtfHgPvYe18EEJ1rbrzCFnIvAfYDywObFOzueBq5Lz1wA7AKcQ09CvTq6/v8J1\nSpKkKujMIacR2B8YCDwDfAM4APhvcv4/wIHAEcDTwJrJ9ZIkaSXQ2cbkZIeyacDoPNdPSD5UZqNH\nj652CZ2e97A0vI/F8x4Wz3tYG9ziIDQl/X+SJKkG1NXVQZE5pTN3V0mSJLWqs3VXSZJUVauvvjof\nf/xxtctIhf79+/PRRx+V7fXtrgp2V0mS2qWurg5/ZpRGvntpd5UkSVIrDDmSJCmVDDmSJCmVDDmS\nJCmVDDmSJKkkNthgA66++upql/EpQ44kSSqJurq65llRNcF1ciRJqoK7732Ay/90K0sa6+jepYnv\nHX4g++65a7XLShVbciRJqrC7732Aky/+Iy+svQ+vrrs3L6y9Dydf/EfuvveBsrzfm2++SZcuXbjz\nzjvZYIMN6NevHyeddBIvvPAC2267LX379mX//fdnwYIFAIwfP57NNtuM3r17s9122/HQQw99+loL\nFizg2GOPZeDAgay++uqMGTOGefPmrfCezz77LP369ePSSy8ty9+pPWzJkSSpwi7/063M3uLgFsdm\nb3EwV9xwW1lbc84991zuuusuJk2axBFHHMFdd93F5ZdfTteuXfnyl7/MNddcQ9++fTn22GO54oor\nGDFiBNdccw377rsvU6ZMYfDgwXznO9/hueee47bbbqNfv34cffTRnHDCCVx55ZWfvs/06dPZb7/9\nGDt2LD/4wQ/K9vdpiyFHkqQKW9KYe9zK4mXlfd/TTjuNLbbYgi222ILjjjuOQw89lF122QWIndOn\nTJnC448/zg9/+EO+8Y1vAPDLX/6SiRMncskll3Dqqady0003MWHCBEaNGgXAFVdcwcMPP/zpe7z3\n3nvsvffeHHbYYZx22mnl/Qu1wZAjSVKFde+SeyuDHvXlfd+NNtro08979erF+uuv3+Lx4sWLeeWV\nV/jZz37W4nkjR47klVdeYerUqTQ0NLDtttt+em777bdn++23B6CpqYkzzjiDpUuXMmTIkPL+ZdrB\nMTmSJFXY9w4/kFVf/EuLY6u8eAvfPeyAsr5v164t2za6dFkxBvTq1WuFYw0NDTQ2NtK9e/e8r19X\nV8eee+7JZZddxumnn87MmTOLK7hIhhxJkips3z135ZwfHcGWsyYw7J0JbDlrAr/60ZE1Mbtqk002\n4Yknnmhx7IknnmDYsGFstNFG1NfX89xzz3167r777mPYsGGfbrS5//77c8wxxzBs2DBOPPHEitae\nze4qSZKqYN89d62JUNOsOaSceOKJjBkzhs0335wddtiBP/zhD7zwwguMHz+evn37cvTRR3Pcccdx\n1VVX0b17d37yk5+w++67t9hRvK6ujosvvphRo0ZxzDHHfDrup9IMOZIkrQTaWqSveSG/Aw88kJkz\nZ/Lzn/+cWbNmMXz4cO655x423XRTAC688EKOO+449t57b7p27cpBBx3E+eefv8J7jBgxgsMPP5xj\njz2WSZMmrdBVVgm1syxhdTU1p09JkvLJbLFQcfLdyyQwFZVTHJMjSZJSyZAjSZJSyZAjSZJSyZAj\nSZJSyZAjSZJSyZAjSZJSyZAjSZJSyZAjSZJSyZAjSZJSyZAjSVLKvfnmm3Tp0qXVj6OPPpojjjgC\ngHHjxvGFL3yhyhWXhntXSZKUckOGDGHWrFktjs2bN49dd92VLbbYgosvvrhKlZWXIUeSpCp4+J9/\n594bLqVr42IauvRgz8N+wM577FeW9+rSpQsDBw5sceykk05iwYIFXHPNNfTr168s71ttdldJklRh\nD//z79zz25M4e/1HGbfhM5y9/qPc89uTePiff6/I+998881cf/31/O53v2PgwIEcddRRn3ZXZVq8\neDG77LILo0ePZvHixQCce+65DB06lB49erDOOutw+umnV6TmjjDkSJJUYffecCm/GD6jxbFfDJ/B\nP2+8rOzvPWPGDL73ve8xZswYDjjgACB2/E52/f70McCRRx7J3LlzufPOO+nRowfXX389F1xwAb//\n/e+ZOnUqp59+OmeddRZPP/102evuCEOOJEkV1rVxcc7j9csWlfV9m5qaOProo1l11VW55JJLWhzP\nvu74449n0qRJTJgw4dPurPXWW4/x48ezyy67MGTIEL7zne8waNAgXn755bLW3VGOyZEkqcIauvTI\neXxZfc+yvu9vf/tb7r//fiZOnEjfvn1bve6ZZ57hscceY/jw4ay++uqfHh89ejRPPvkkJ598MlOm\nTOHf//43s2bNYtmyZWWtu6NsyZEkqcL2POwHnPrvdVocO+W5tdnj0O+X7T2nTJnC2LFjOemkk9hp\np53yXtunTx8efvhhpk+fzuWXX/7p8d///vfsvvvuLF68mIMOOoj777+f9dZbr2w1F8uWHEmSKqx5\nFtXPbryM+mWLWFbfk71/+P2yza5qaGjgiCOOYNiwYZx99tltXr/ZZpsxatQozjjjDE477TQOOeQQ\nBg4cyBVXXMFpp53G2LFjAfjkk0949913V+juqhWGHEmSqmDnPfYrW6jJdvbZZzN58mQmTJjABx98\nsML57O6m5tDy/e9/nyuvvJIf//jHXHvttQwYMID77ruPAw44gLlz53LKKadQV1fHokXlHUvUUYYc\nSZJS7qGHHqKhoYHddtst5/kxY8Z8GnQyZ1rV19dz0UUXseeee3LMMcdw0UUXcfTRR7P11lszePBg\nTjnlFNZdd12ef/75iv1dClHX9iUrhaZabWqTJNWWurq6mu2e6Wzy3cskaBWVU2zJUbs0LGvkodfe\nZ8YnC1l/jT7stPEAunQxI0uSapchR2168Z3ZjLnmKRY1LGPZsibq6+tYtWc3rv/2Dmy0ZutTECVJ\nqiZ/FQ92V7Vi/uIGRp5zP3MWNbQ4Xges2a8Hj/50V7rVuxKBpJWH3VWlU+7uKn86Ka+/TZpBQ+OK\nX4BNwPwlDTww5b3KFyVJUjsYcpTXS+/MZsGS3CtZLlyyjKnvzq1wRZIktY8hR3mt078XPbrm/jLp\n2a2egauUdwlySZI6ypCjvA7eJv9y3ft+bu0KVSJJUmGcXaW8Bq7Sk3MP2pKf3jqZZY1NLF3WRPeu\nXaivq+Oyw7ehbw+/hCStXPr37//pYnkqTv/+/cv6+v4rBWdXteGtjxZw41P/ZfoH8xm2Vj8O22EI\na9lVJUkqk1LMrjLkBEOOJEk1xCnkkiRJrTDkSJKkVDLkSJKkVDLkSJKkVDLkSJKkVDLkSJKkVDLk\nSJKkVDLkSJKkVDLkSJKkVHLjIUmSZjwPD50L/30CuveFbcfAiO9B9z7VrkxFcFuH4LYOkrSyev1+\nuOlwWLoISH4WdO0Jqw+Fb98H3XtXtbyVlds6SJJUjMZGuP37sHQhnwYcgIZF8NF0eO66qpWm4hly\nJEkrr1mTYcnc3OcaFsK/DTmdmSFHkrTyalgMdfWtn1+6sHK1qOQMOZKkldegLaCxIfe5Lt3gM3tU\nth6VlCFHkrTy6t4HRh0H3XIMLu7WE0b+sPI1qWScQi5JWrl9cSzU94BHLoCmJmhcCmtuAl+9HFYb\nXO3qVASnkAenkEvSyq5hCXz8JvToC6usU+1qVnqlmEJuyAmGHEmSaojr5EiSJLXCkCNJklLJkCNJ\nklLJkCNJklLJkCNJklLJkCNJklLJkCNJklLJkCNJklLJkCNJklLJkCNJklLJkCNJklLJkCNJklLJ\nkCNJklLJkCNJklLJkCNJklLJkCNJklLJkCNJklLJkCNJklLJkCNJklLJkCNJklLJkCNJklLJkCNJ\nklLJkCNJklLJkCNJklLJkCNJklLJkCNJklLJkCNJklLJkCNJklLJkCNJklLJkCNJklKpa7ULkCSp\nIt6bAq/eDU3L4DN7wtpbVbsilVldtQuoEU1NTU3VrkGSVA6NjXDH9+Gl26CxAZqaoGt32GgX+H/X\nQX23aleoHOrq6qDInGJ3lSQp3Z76Hbx8BzQsSkLOMli6EKY9CA+eU+3qVEaGHElSuj16ESxdsOLx\nhoXw9JXR0qNU6siYnNWB4cCaQH9gIfAWMAn4oHSlSZJUAvNmtX5u6SJYMhd6rlq5elQx7Q05qwHf\nBQ4FtiB3H1kTMBm4AbgSmF2KAiVJKkrvNWH+e7nPde0O3ftWth5VTFsDevoA44iA04dosXkWeIlo\n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\nUu7FACVJkjotQ44kSUolQ44kSUolQ44kSUqlttbJkSRp5TVzMrxwCyxdAEN3hc/uDV062yopKy9n\nVwVnV0mSlmtqgruOh8k3QcNiaGqE7n1hlXXhmxOg9+rVrjD1nF0lSVI5vPAXmHwzLF0YAQdgyTz4\n+A244wfVrU3tZsiRJCnboxdFF1W2ZUtg2v2w4KPK16SCGXIkSco2553Wz3XpDnNnVa4WdZghR5Kk\nbGts1Pq5xqWw6rqVq0UdZsiRJCnbF06Cbr1XPF7fAzbbH3quWvmaVDBDjiRJ2YbtA6OOh649oGtP\n6NI1Qs9628GXLqx2dWonp5AHp5BLklY0Zwa8cmcMQt5gZ1hv22pXtNIoxRRyQ04w5EiSVENcJ0eS\nJKkVhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRK\nhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJ\nkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRK\nhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJ\nkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKhhxJkpRKXatdgFQKSxoamfDS\nLB6d+gH9enblgG3WZfN1Vq12WZKkKqqrdgE1oqmpqanaNaiD3puziAMvf4yP5y9h/pJldKmD7l27\ncMi2gzlz/82pq/PLXJI6m+T/7qL+A7e7Sp3eD//8b2bOXsj8JcsAaGyCRUsb+cuzb3PPS7OqXJ0k\nqVoMOerUZs1exPP//YRljSueW7h0GVc+PL3yRUmSaoIhR53arDmL6N619S/jmbMXVbAaSVItMeSo\nUxvcvxdLGnI04ySGrtm3gtVIkmqJIUed2hp9e7DrJgNztub06lbP93cZWoWqJEm1wJCjTu+8g7fk\nc+uuSq9u9XSrr6NXt3q6d+3CiXt+lh2HDqh2eZKkKnFubXAKeSfX1NTEpLdn8/QbH9G7Rz17bT6I\nAX17VLssSVIHlWIKuSEnGHIkSaohrpMjSZLUCkOOJElKJUOOJElKJUOOJElKJUOOJElKJUOOJElK\n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\nQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1652,7 +1512,7 @@ "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAI6CAYAAADFf1nDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmYlXX9//HnmRmGTVQQFJRNlBAhAXMBRSVwDQs0y9xS\nadG+Wb80i9RMNM36mpa5fjNzK81ckgo0CEUBt0hQQVlExR1RlH2bmfP743MGzgwzZ+bM2W+ej+ua\nizn3fZ9z3tzMMK/5rCBJkiRJkiRJkiRJkiRJkiRJkiRJkiRJUt61BuYBo5KO9QKmAGuAV4Bj6z3n\n88BLwFrgCWCv3JcpSZLUfG2Ah4EaYGTiWAyYC/wZ2AcYTwgzvRPnewCrgQsT5+8jhKRYvoqWJElK\nZV9CmJlL3ZAzElgHtE+6dirw88TnVwBPJZ1rC6ykbkuQJEmKqLJCF9AMhwPTgGH1jg8FXiC03tSa\nmXTdUOqGnPWJ6+u/jiRJiqCKQhfQDLc2crwb8H69Yx8C3ROfdwXeq3d+WdJ5SZIUYaXQktOYdsDG\nesc2EgYoN+e8JEmKsFIOOevZNrC0Zmv31YYmzkuSpAgrhe6qxrwLDKp3rCtbu7DeJXRpJesGvFz/\nhfbaa6/4kiVLsl6gJElqsSXA3pm8QCm35DwHDCZ0S9UaDjyb+PzZxONa7RLXP0s9S5YsIR6P+5HB\nx2WXXVbwGkr9w3vofSyWD++h97AYPsjC2nalHHKmA0uBO4EBhHVyDgJuS5z/I3AwcDFhGvrtieun\n5blOSZJUAKUccmqAMcCuwGzgdOAE4K3E+aXAicAZwH+ALonrJUnSdqDUxuTUD2VLgBEprn8s8aEc\nGzFiRKFLKHnew+zwPmbOe5g572FxcIuDIJ7o/5MkSUUgFotBhjmllLurJEmSGlVq3VWSJKWtU6dO\nfPLJJ4UuQ/V07NiRFStW5Oz17a4K7K6SpAiLxWL4/3zxSfXvYneVJElSIww5kiQpkgw5kiQpkgw5\nkiQpkgw5kiQVobKyMsrKynjjjTe2OXfrrbdSVlbGpZdeCsCECRM47LDDtpxfvnw53/rWt+jWrRtt\n2rShf//+/OIXv6Cqqipv9RcDQ44kSUWqsrKSf/zjH9scf+SRR4jFYrUzkPjRj35U57rRo0ezYsUK\nJk2axKJFi7jqqqu48cYb+fGPf5y32ouBU8gDp5BLUoRlawr55CmPc8ufH2ZTTYzKsjjfOe1EvnD0\nyCxUuK2ysjJGjRpFPB7n3//+95bjq1atokePHvTt25fjjjuOn//853We9/LLLzNo0CA++ugjOnXq\ntOX4nXfeyXnnnceaNWtyUm9LOIVckqQiMHnK41z0u3t4udtxLNzjWF7udhwX/e4eJk95PGfvOWbM\nGGbMmMGqVau21jF5MocddhgdOnTY0pKT3F1Ve2zKlCl1Xuvkk09mzpw5Wx6vXLmSM888k5133plu\n3bpxzjnn1AlAM2bMYMiQIbRv354TTjiBCy64gLPPPjtnf9dcMORIktQMt/z5YVYOPKnOsZUDT+LW\ne/+Ws/fs378/vXv35tFHH91ybOLEiYwdO7bR5wwcOJBRo0Zx6qmnMnjwYMaPH8/UqVNp1aoVffv2\n3XLduHHjWLFiBTNnzmTSpEksXLiQs846C4Bly5YxevRojjzySObMmcOAAQO4+eabtwSoUmHIkSSp\nGTbVNPwDfmN1bt93zJgxW8bbbN68mSlTpjBmzJiUz5k0aRJXX301VVVVXHPNNRxzzDH06tWLqVOn\nArBkyRIeeeQR7r77bgYOHMj+++/PXXfdxcMPP8w777zD/fffT5cuXbjmmmv4zGc+w5VXXsl+++2X\n279oDhhyJElqhsqyhseOtC7P3XvGYjHGjBnDo48+SnV1NY8//jgDBw6kS5cuKccYVVZWMn78eObN\nm8fSpUu55ZZb6NChA2PHjmXZsmW8+uqrxONxevbsSYcOHejQoQMDBw4kFouxaNEiFixYsE2oGTZs\nWMltjWHIkSSpGb5z2onsNO/BOsd2nPcA5556Qk7fd9iwYVRUVDBz5kwmTpzICSeE92us6+ihhx7i\n1ltv3fK4R48enHPOOcyaNYuamhpmzZpFVVUVO+ywAy+++GKdj0WLFjF06FDat29PTU1NndetrKzM\n3V8yRww5kiQ1wxeOHsnV3z+D/T54jH7vPsZ+HzzGL7//9ZzNrqpVVlbG8ccfz8SJE/nnP/+5JeQ0\nZunSpVx++eWsW7euzvF27dpRXl5Oly5d6NevH2vWrKGqqoo+ffrQp08fYrEY559/PqtWrWLfffdl\nzpw5VFdv7YubM2eOY3IkSYqqLxw9kr/feQP/uucG/n7nDTkPOLXGjBnDH/7wBzp37kyvXr0AGu06\nOvvss2ndujVHHXUUU6dO5c0332T69Ol89atfZdCgQRx22GH079+fY489ljPOOIPnn3+eF198kdNP\nP53ly5fTtWtXTjnlFOLxON/73vdYuHAh1113HY8/nrtZZLliyJEkqcgdeeSRVFdX15lVldyqkrww\nYMeOHZk1axb77LMP48aNo1+/fpx22mn07t2byZMnb3nOPffcQ9++fTn66KMZMWIE3bt3Z+LEiQC0\nadOGyZMnM2fOHAYPHsz06dMZO3ZsyY3JKa12p9xxMUBJirBsLQa4PatdI+eOO+7I2mu6GKAkSSq4\nUgyJhhxJktSk5C6xUlFa1eaO3VWSFGF2VxUnu6skSZJawJAjSZIiyZAjSZIiyZAjSZIiyZAjSZIi\nyZAjSZIiyZAjSVIR6t27N8OGDdvm+PTp0ykrK9tml/B0PfHEE8yfP3/L4+XLl/Otb32Lbt260aZN\nG/r3788vfvELqqqqMnqfQjLkSJJUpJ577jluu+22nLz2qFGjWLZs2ZbHo0ePZsWKFUyaNIlFixZx\n1VVXceONN/LjH/84J++fDxWFLkCSpFLx1NRJTLn3JipqNlJV1pqjT/0uhx81OifvFYvF6NWrFxdd\ndBEnnngiu+yyS9bfo3YhvpdffpnZs2fz2GOP0alTJwB69uzJqlWrOO+887juuuuy/t75YEuOJEnN\n8NTUSfzrxgu5stcsJuw5myt7zeJfN17IU1Mn5ew9L7jgAjp06NBoa8rKlSs588wz2XnnnenWrRvn\nnHMOa9asAeBnP/sZu+yyCx9//DEAzzzzDK1ateLJJ5+kd+/eABx11FFcccUVlJWFODBlypQ6r3/y\nySczZ86cZr0fwIwZMxgyZAjt27fnhBNO4IILLtiysWchGHIkSWqGKffexFVD3qtz7Koh7zH1vptz\n9p7t27fn+uuv58477+Tpp5+ucy4ejzNu3DhWrFjBzJkzmTRpEgsXLuSss84C4Kc//Sm77rorF198\nMZs2beKb3/wm5557LkcccQSzZ88G4IEHHuDCCy9kwIABjBo1ilNPPZXBgwczfvx4pk6dSqtWrejb\nt++W90z1fsuWLWP06NEceeSRzJkzhwEDBnDzzTeX3H5XURSXJEVXNv6fv+zrI+Pxy3bc5uOyr4/M\nQoXb6t27d/z222+Px+Px+Be/+MX4oEGD4lVVVfEnnngiHovF4gsXLoyXlZXFV6xYseU5b775ZjwW\ni8XfeeedeDwej8+YMSNeUVER/9rXvhbv06dPfO3atVuujcVi8WnTpm15vHHjxvgvf/nL+IABA+Kx\nWCwei8Xiu+++e3zKlCnxeDwef+211xp9v7fffjt+/fXXx/v06VPn73DggQfGzz777Eb/jqn+XYCM\nNxuzJUeSpGaoKmvd4PHq8jY5f+8bbriBxYsX87vf/W7LscWLFxOPx+nZsycdOnSgQ4cODBw4kFgs\nxqJFiwAYPnw4Z555Jvfffz833XQT7dq1a/Q9KisrGT9+PPPmzWPp0qXccsstdOjQgbFjx7Js2TJe\nffXVlO+3YMEC9ttvvzqvOWzYsIJujOrAY0mSmuHoU7/LJTe+UafL6uIXunHs9/4n5+/dq1cvLrnk\nEiZMmMCtt94KwIYNG9hhhx2YO3dunWvj8TjdunUDoKamhnnz5lFRUcHjjz/Oscce2+DrP/TQQyxf\nvpxzzz0XgB49enDOOedw0kkn0b17d2bNmkVZWVnK93v00Ue3mdZeWVmZlb9/S9mSI0lSMxx+1GiO\nOe/XXPrWcCa8cQCXvjWcY793bc5mV9X3ox/9iN13352LL76YWCxGv379WLNmDVVVVfTp04c+ffoQ\ni8U4//zzWb16NQA33ngjS5cu5cEHH+S3v/1tnUHEyZYuXcrll1/OunXr6hxv164d5eXldOnSJeX7\nrVq1in333Zc5c+ZQXV295flz5sxxTE4RaKJnVJJUykrx//nkMTm1pk2bFo/FYvGysrJ4VVVV/Ljj\njosfdNBB8eeeey4+d+7c+CGHHBIfOnRoPB6Px9966634jjvuGL/77rvj8Xg8fvrpp8f333//eHV1\ndTwej8c7dOgQv/766+MrV66Mr1ixIt6rV6/4IYccEp8yZUr8jTfeiD/xxBPx448/Pn7IIYdsef9U\n77d+/fp49+7d49/5znfiCxYsiF977bXxWCzmmBxJktS0kSNHcsoppwBhHZ177rmHvn37cvTRRzNi\nxAi6d+/OxIkTAfjud7/L4MGDOeOMMwD49a9/zZIlS7aseXP++efzk5/8hMsvv5yOHTsya9Ys9tln\nH8aNG0e/fv047bTT6N27N5MnT97y/qner02bNkyePJk5c+YwePBgpk+fztixYws6Jsc2pCBeyH8E\nSVJuxWKxgv6w3V7VrpFzxx13NHg+1b9Lopsro5ziwGM1S1V1DU8uWs57n66n1y7tGb53Z8rKzMiS\npMbF4/GCjskx5KhJ895dyZl/fJ4NVdVUV8cpL4+xU5tW/OmbB9Onyw6FLk+SVKRisVhBQ46/igd2\nVzVi7cYqhl09jVUb6u5CGwO6dGjNrJ+MpFW5Q7skFTe7q4pTrrur/OmklP7+4ntU1Wz7BRgH1m6q\n4vEFH+a/KEmSmsGQo5Tmv7uSdZuqGzy3flM1i5etznNFkiQ1jyFHKe3esS2tKxr+MmnTqpxdd8z9\ncuaSJLWEIUcpnbR/95Tnv/DZbnmqRJKk9Di7SintumMbfvXl/fjJwy9RXRNnc3WcyooyymMxbj5t\nf3Zo7ZeQpOLXsWNHtxcoQh07dszp6/svHji7qglvr1jHfc+/xesfraXfbh049eCe7GZXlSQpR7Ix\nu8qQExhyJEkqIk4hlyRJaoQhR5IkRZIhR5IkRZIhR5IkRZIhR5IkRZIhR5IkRZIhR5IkRZIhR5Ik\nRZIhR5IkRZIbD0mStnvz3l3J9dMWM/vNFbRvXcHXDuzBuOF70q7SH5OlzG0dArd1kKTt1FOLlvPt\ne2azsaqG2h8FrSvK6N25PY/8z6G0rSwvbIHbKbd1kCQpAzU1cS584EU2bN4acAA2VtWw9OO13P+f\ntwpXnDJmyJEkbbdeeX8VazZWNXhuw+Ya/vKft/NckbLJkCNJ2m5trKqmPNZ4j8iGzdV5rEbZZsiR\nJG23+nfbkaqahsdktiqPMaLfrnmuSNlkyJEkbbfaVVZw7hF9aNtq28HFrSvK+dbhfQpQlbLFuXGS\npO3a90f1pVVFGTc/sYR4PE5VTZy9d92Ba786iD12blvo8pQBp5AHTiGXpO3cpqoa3lqxjh1aV9B1\npzaFLme7l40p5IacwJAjSVIRcZ0cSZKkRhhyJElSJBlyJElSJBlyJElSJBlyJElSJBlyJElSJBly\nJElSJBlyJElSJBlyJElSJBlyJElSJBlyJElSJBlyJElSJBlyJElSJBlyJElSJBlyJElSJBlyJElS\nJBlyJElSJBlyJElSJBlyJElSJBlyJElSJBlyJElSJBlyJElSJBlyJElSJBlyJElSJBlyJElSJBly\nJElSJBlyJElSJBlyJElSJBlyJElSJBlyJElSJFUUugBJkvJh8bLVTH11GTU1cUb025WBe+xU6JKU\nY7FCF1Ak4vF4vNA1SJJyoKYmzo8efJFJL71PVU2ceDxOZUU5w/fehZtP/xytyu3UKEaxWAwyzCn+\ny0qSIu3Op99k8ssfsKGqhqqaONVxWL+5mhmvfcRvpy4qdHnKIUOOJCnS/u+pJazfXL3N8Q2ba7jr\n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\nEnbtbsgiwho0kiRJRSlVyKkgLLDXkM1Aq+yXI0mSlB3pbH4pSZJUMgw5kiQpkppaJ2cw8PUGjg9K\n/NnQOYC7W1yRJElSFqSamlXTwteMU3fxwFLgFHJJkopIrrd1uKKFr2lakCRJBecGnYEtOZIkFZFc\nLwYoSZJUsgw5kiQpkgw5kiQpkgw5kiQpkppaJ0eSpO3X+y/Byw/A5nWw10j4zLFQVmqrpGy/nF0V\nOLtKkrRVPA7//AG8dD9UbYR4DVTuADvuAeMeg3adCl1h5Dm7SpKkXHj5QXjpr7B5fQg4AJvWwCdv\nwMTvFrY2NZshR5Kk+mZdH7qo6qveBEumwboV+a9JaTPkSJJU36p3Gz9XVgmrP8hfLWoxQ44kSfXt\n0qfxczWbYac98leLWsyQI0lSfYddCK3abXu8vDXsOwba7JT/mpQ2Q44kSfX1Ow4O/QFUtIaKNlBW\nEUJP9wPg+N8Uujo1k1PIA6eQS5K2teo9ePUfYRBy78Oh++cKXdF2IxtTyA05gSFHkqQi4jo5kiRJ\njTDkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLk\nSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKk\nSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLk\nSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKk\nSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSDLkSJKkSKoodAFSVlRtglf/Dq9P\nhzY7wX4nQ7f9Cl2VJKmAYoUuoEjE4/F4oWtQS63+AG4/CtZ9DJvWQqwMKlrD4NPgC7+GmF/mklRq\nYuH/7oz+A7e7SqXvwW/AyvdCwAGI18Dm9TD3Xnj1H4WtTZJUMIYclbZV78G7/4F41bbnNq+Dp2/I\nf02SpKJgyFFpW/U+lLdOcf6d/NUiSSoqhhyVto69oHpj4+c798tfLZKkomLIUWlr3xn6HtNwa06r\ndnDYBfmvSZJUFAw5Kn1jboLdh4RQU16Z+LM1jPwp7Hl4oauTJBWIc2sDp5CXungc3n0B3noaKtvD\n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\nAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1763,7 +1623,7 @@ { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ "" @@ -1963,7 +1823,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 25, "metadata": { "collapsed": false }, @@ -1977,12 +1837,13 @@ "sample_names = ['-'.join([x, d_layout_platform[y], z]) for x,y,z in\n", " zip(meta_df['infection_status_s'], meta_df['LibraryLayout_s'], expr_df_sub.columns)]\n", "expr_df_sub.columns = sample_names\n", - "expr_df_sub.to_csv('../expression_matrix_top800_genes.txt', sep='\\t')" + "expr_df_sub_file = os.path.join(os.environ['WORKDIR'], 'expression_matrix_top800_genes.txt')\n", + "expr_df_sub.to_csv(expr_df_sub_file, sep='\\t')" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 26, "metadata": { "collapsed": false }, @@ -1990,7 +1851,7 @@ { "data": { "text/html": [ - "http://amp.pharm.mssm.edu/clustergrammer/viz/5761aaedb9123d04dd85561d/expression_matrix_top800_genes.txt" + "http://amp.pharm.mssm.edu/clustergrammer/viz/576c07e896d52d44402e2cea/expression_matrix_top800_genes.txt" ], "text/plain": [ "" @@ -2005,7 +1866,7 @@ "import requests, json\n", "clustergrammer_url = 'http://amp.pharm.mssm.edu/clustergrammer/matrix_upload/'\n", "\n", - "r = requests.post(clustergrammer_url, files={'file': open('../expression_matrix_top800_genes.txt', 'rb')})\n", + "r = requests.post(clustergrammer_url, files={'file': open(expr_df_sub_file, 'rb')})\n", "link = r.text\n", "display_link(link)" ] @@ -2019,9 +1880,10 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 28, "metadata": { - "collapsed": false + "collapsed": false, + "scrolled": true }, "outputs": [ { @@ -2038,7 +1900,7 @@ " " ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -2062,7 +1924,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 29, "metadata": { "collapsed": false }, @@ -2121,7 +1983,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 30, "metadata": { "collapsed": false }, @@ -2155,7 +2017,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 31, "metadata": { "collapsed": false }, @@ -2170,7 +2032,7 @@ { "data": { "text/html": [ - "http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=7398" + "http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=7g3l" ], "text/plain": [ "" @@ -2189,7 +2051,7 @@ { "data": { "text/html": [ - "http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=7399" + "http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=7g3m" ], "text/plain": [ "" @@ -2208,7 +2070,7 @@ { "data": { "text/html": [ - "http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=739a" + "http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=7g3n" ], "text/plain": [ "" @@ -2227,7 +2089,7 @@ { "data": { "text/html": [ - "http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=739b" + "http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=7g3o" ], "text/plain": [ "" @@ -2246,7 +2108,7 @@ { "data": { "text/html": [ - "http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=739c" + "http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=7g3p" ], "text/plain": [ "" @@ -2265,7 +2127,7 @@ { "data": { "text/html": [ - "http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=739d" + "http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=7g3q" ], "text/plain": [ "" @@ -2285,19 +2147,20 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [], "source": [ "## Generate Enrichr links for up/down genes in an Excel file with the gene sets.\n", - "RNAseq.dict2xls_with_vals(d_platform_cd, ['gene', 'CD coef'], 'data/Enrichr_links_CD600.xls')" + "enrichr_result_file = os.path.join(os.environ['WORKDIR'], 'Enrichr_links_CD600.xls')\n", + "RNAseq.dict2xls_with_vals(d_platform_cd, ['gene', 'CD coef'], enrichr_result_file)" ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 33, "metadata": { "collapsed": false }, @@ -2312,13 +2175,13 @@ ], "source": [ "## Check the Enrichr results\n", - "enrichr_results = pd.read_excel('data/Enrichr_links_CD600.xls', sheetname=None)\n", + "enrichr_results = pd.read_excel(enrichr_result_file, sheetname=None)\n", "print enrichr_results.keys()" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 34, "metadata": { "collapsed": false }, @@ -2340,37 +2203,37 @@ " 0\n", " MiSeq-dn\n", " 193\n", - " http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=739e\n", + " http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=7g3r\n", " \n", " \n", " 1\n", " MiSeq-up\n", " 407\n", - " http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=739f\n", + " http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=7g3s\n", " \n", " \n", " 2\n", " NextSeq 500-dn\n", " 193\n", - " http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=739g\n", + " http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=7g3t\n", " \n", " \n", " 3\n", " NextSeq 500-up\n", " 407\n", - " http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=739h\n", + " http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=7g3u\n", " \n", " \n", " 4\n", " combined-dn\n", " 195\n", - " http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=739i\n", + " http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=7g3v\n", " \n", " \n", " 5\n", " combined-up\n", " 405\n", - " http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=739j\n", + " http://amp.pharm.mssm.edu/Enrichr/enrich?dataset=7g3w\n", " \n", " \n", "" @@ -2379,7 +2242,7 @@ "" ] }, - "execution_count": 30, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -2402,7 +2265,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 35, "metadata": { "collapsed": false }, @@ -2414,7 +2277,7 @@ "" ] }, - "execution_count": 31, + "execution_count": 35, "metadata": { "image/png": { "width": "600" @@ -2430,7 +2293,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 36, "metadata": { "collapsed": false }, @@ -2442,7 +2305,7 @@ "" ] }, - "execution_count": 32, + "execution_count": 36, "metadata": { "image/png": { "width": "600" @@ -2464,7 +2327,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 37, "metadata": { "collapsed": false }, @@ -2476,7 +2339,7 @@ "" ] }, - "execution_count": 33, + "execution_count": 37, "metadata": { "image/png": { "width": "600" @@ -2500,7 +2363,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 38, "metadata": { "collapsed": false }, @@ -2573,7 +2436,7 @@ "" ] }, - "execution_count": 34, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -2620,7 +2483,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 39, "metadata": { "collapsed": false }, @@ -2649,7 +2512,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 40, "metadata": { "collapsed": false }, @@ -2664,7 +2527,7 @@ { "data": { "text/html": [ - "http://amp.pharm.mssm.edu/L1000CDS2/#/result/5761ab0821e11f830172c6a7" + "http://amp.pharm.mssm.edu/L1000CDS2/#/result/576c085921e11f830172cfaf" ], "text/plain": [ "" @@ -2683,7 +2546,7 @@ { "data": { "text/html": [ - "http://amp.pharm.mssm.edu/L1000CDS2/#/result/5761ab0b21e11f830172c6a9" + "http://amp.pharm.mssm.edu/L1000CDS2/#/result/576c085c21e11f830172cfb1" ], "text/plain": [ "" @@ -2702,7 +2565,7 @@ { "data": { "text/html": [ - "http://amp.pharm.mssm.edu/L1000CDS2/#/result/5761ab1021e11f830172c6ab" + "http://amp.pharm.mssm.edu/L1000CDS2/#/result/576c086221e11f830172cfb3" ], "text/plain": [ "" @@ -2721,7 +2584,7 @@ { "data": { "text/html": [ - "http://amp.pharm.mssm.edu/L1000CDS2/#/result/5761ab1421e11f830172c6ad" + "http://amp.pharm.mssm.edu/L1000CDS2/#/result/576c086521e11f830172cfb5" ], "text/plain": [ "" @@ -2740,7 +2603,7 @@ { "data": { "text/html": [ - "http://amp.pharm.mssm.edu/L1000CDS2/#/result/5761ab1921e11f830172c6af" + "http://amp.pharm.mssm.edu/L1000CDS2/#/result/576c086a21e11f830172cfb7" ], "text/plain": [ "" @@ -2759,7 +2622,7 @@ { "data": { "text/html": [ - "http://amp.pharm.mssm.edu/L1000CDS2/#/result/5761ab1d21e11f830172c6b1" + "http://amp.pharm.mssm.edu/L1000CDS2/#/result/576c086d21e11f830172cfb9" ], "text/plain": [ ""