{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Comparing Bismark alignments from two WGBS samples with and without crude trimming and how they relate to _P.generosa_ genome-wide CpG coverage" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Variables to be set by user\n", "\n", "Re: two \"work_dir\" variables -\n", "Both are needed, as one is needed by Bash and the other by Python (respectively)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "env: work_dir=/Users/strigg/Documents/GitHub/Shelly_Pgenerosa/analyses/WGBS_conditionedBroodstockHemolymph/20190503_coverage_analysis\n" ] } ], "source": [ "%env work_dir = /Users/strigg/Documents/GitHub/Shelly_Pgenerosa/analyses/WGBS_conditionedBroodstockHemolymph/20190503_coverage_analysis\n", "work_dir = \"/Users/strigg/Documents/GitHub/Shelly_Pgenerosa/analyses/WGBS_conditionedBroodstockHemolymph/20190503_coverage_analysis\"\n", "output_plot = \"20190503_Pgenr_cov_comparison.png\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Import necessary modules" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import pandas\n", "import os\n", "import numpy\n", "from IPython.display import display\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Make new working directory, download files and rename using wget ```--output-document``` argument" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/Users/strigg/Documents/GitHub/Shelly_Pgenerosa/analyses/WGBS_conditionedBroodstockHemolymph/20190503_coverage_analysis\n" ] } ], "source": [ "cd $work_dir" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Loop through coverage files to calculate percent sequencing coverage for each Bismark subset\n", "\n", "** had to unzip my files first (gunzip *CpG_report.txt.gz)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['/Volumes/web/metacarcinus/Pgenerosa/20190415_10K/Tank2-025-026_cytosine_CpG_cov_report.CpG_report.txt', '/Volumes/web/metacarcinus/Pgenerosa/20190415_10K/Tank2-025-026_trim_cytosine_CpG_cov_report.CpG_report.txt', '/Volumes/web/metacarcinus/Pgenerosa/20190415_10K/Tank3-15-16_cytosine_CpG_cov_report.CpG_report.txt', '/Volumes/web/metacarcinus/Pgenerosa/20190415_10K/Tank3-15-16_trim_cytosine_CpG_cov_report.CpG_report.txt']\n", "----------------------------------------------\n", "----------------------------------------------\n", "/Volumes/web/metacarcinus/Pgenerosa/20190415_10K/Tank2-025-026_cytosine_CpG_cov_report.CpG_report.txt\n" ] }, { "data": { "text/plain": [ "'Total coverage: 37135668'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'3x coverage: 24908042'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'5x coverage: 13436327'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'10x coverage: 2375356'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Mean coverage: 3.6'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'No coverage: 11040954'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Percent coverage: 77.1'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Percent 3x coverage: 51.7'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Percent 5x coverage: 27.9'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Percent 10x coverage: 4.9'" ] }, "metadata": {}, "output_type": "display_data" }, { "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", " \n", " \n", " \n", " \n", "
chromposstrandmethunmethC-contexttrinucleotidecoverage
0PGA_scaffold1__77_contigs__length_896438574+01CGCGC1
1PGA_scaffold1__77_contigs__length_896438575-00CGCGC0
2PGA_scaffold1__77_contigs__length_8964385718+01CGCGG1
3PGA_scaffold1__77_contigs__length_8964385719-00CGCGG0
4PGA_scaffold1__77_contigs__length_8964385754+01CGCGT1
\n", "
" ], "text/plain": [ " chrom pos strand meth unmeth \\\n", "0 PGA_scaffold1__77_contigs__length_89643857 4 + 0 1 \n", "1 PGA_scaffold1__77_contigs__length_89643857 5 - 0 0 \n", "2 PGA_scaffold1__77_contigs__length_89643857 18 + 0 1 \n", "3 PGA_scaffold1__77_contigs__length_89643857 19 - 0 0 \n", "4 PGA_scaffold1__77_contigs__length_89643857 54 + 0 1 \n", "\n", " C-context trinucleotide coverage \n", "0 CG CGC 1 \n", "1 CG CGC 0 \n", "2 CG CGG 1 \n", "3 CG CGG 0 \n", "4 CG CGT 1 " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "----------------------------------------------\n", "----------------------------------------------\n", "/Volumes/web/metacarcinus/Pgenerosa/20190415_10K/Tank2-025-026_trim_cytosine_CpG_cov_report.CpG_report.txt\n" ] }, { "data": { "text/plain": [ "'Total coverage: 34605633'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'3x coverage: 18676350'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'5x coverage: 7733102'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'10x coverage: 1082497'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Mean coverage: 2.6'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'No coverage: 13570989'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Percent coverage: 71.8'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Percent 3x coverage: 38.8'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Percent 5x coverage: 16.1'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Percent 10x coverage: 2.2'" ] }, "metadata": {}, "output_type": "display_data" }, { "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", " \n", " \n", " \n", " \n", "
chromposstrandmethunmethC-contexttrinucleotidecoverage
0PGA_scaffold1__77_contigs__length_896438574+00CGCGC0
1PGA_scaffold1__77_contigs__length_896438575-10CGCGC1
2PGA_scaffold1__77_contigs__length_8964385718+01CGCGG1
3PGA_scaffold1__77_contigs__length_8964385719-10CGCGG1
4PGA_scaffold1__77_contigs__length_8964385754+01CGCGT1
\n", "
" ], "text/plain": [ " chrom pos strand meth unmeth \\\n", "0 PGA_scaffold1__77_contigs__length_89643857 4 + 0 0 \n", "1 PGA_scaffold1__77_contigs__length_89643857 5 - 1 0 \n", "2 PGA_scaffold1__77_contigs__length_89643857 18 + 0 1 \n", "3 PGA_scaffold1__77_contigs__length_89643857 19 - 1 0 \n", "4 PGA_scaffold1__77_contigs__length_89643857 54 + 0 1 \n", "\n", " C-context trinucleotide coverage \n", "0 CG CGC 0 \n", "1 CG CGC 1 \n", "2 CG CGG 1 \n", "3 CG CGG 1 \n", "4 CG CGT 1 " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "----------------------------------------------\n", "----------------------------------------------\n", "/Volumes/web/metacarcinus/Pgenerosa/20190415_10K/Tank3-15-16_cytosine_CpG_cov_report.CpG_report.txt\n" ] }, { "data": { "text/plain": [ "'Total coverage: 35240668'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'3x coverage: 20301942'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'5x coverage: 9022441'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'10x coverage: 1266479'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Mean coverage: 2.8'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'No coverage: 12935954'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Percent coverage: 73.1'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Percent 3x coverage: 42.1'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Percent 5x coverage: 18.7'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Percent 10x coverage: 2.6'" ] }, "metadata": {}, "output_type": "display_data" }, { "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", " \n", " \n", " \n", " \n", "
chromposstrandmethunmethC-contexttrinucleotidecoverage
0PGA_scaffold1__77_contigs__length_896438574+00CGCGC0
1PGA_scaffold1__77_contigs__length_896438575-00CGCGC0
2PGA_scaffold1__77_contigs__length_8964385718+01CGCGG1
3PGA_scaffold1__77_contigs__length_8964385719-00CGCGG0
4PGA_scaffold1__77_contigs__length_8964385754+01CGCGT1
\n", "
" ], "text/plain": [ " chrom pos strand meth unmeth \\\n", "0 PGA_scaffold1__77_contigs__length_89643857 4 + 0 0 \n", "1 PGA_scaffold1__77_contigs__length_89643857 5 - 0 0 \n", "2 PGA_scaffold1__77_contigs__length_89643857 18 + 0 1 \n", "3 PGA_scaffold1__77_contigs__length_89643857 19 - 0 0 \n", "4 PGA_scaffold1__77_contigs__length_89643857 54 + 0 1 \n", "\n", " C-context trinucleotide coverage \n", "0 CG CGC 0 \n", "1 CG CGC 0 \n", "2 CG CGG 1 \n", "3 CG CGG 0 \n", "4 CG CGT 1 " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "----------------------------------------------\n", "----------------------------------------------\n", "/Volumes/web/metacarcinus/Pgenerosa/20190415_10K/Tank3-15-16_trim_cytosine_CpG_cov_report.CpG_report.txt\n" ] }, { "data": { "text/plain": [ "'Total coverage: 32124743'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'3x coverage: 14065848'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'5x coverage: 4647417'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'10x coverage: 559888'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Mean coverage: 2.0'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'No coverage: 16051879'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Percent coverage: 66.7'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Percent 3x coverage: 29.2'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Percent 5x coverage: 9.6'" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "'Percent 10x coverage: 1.2'" ] }, "metadata": {}, "output_type": "display_data" }, { "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", " \n", " \n", " \n", " \n", "
chromposstrandmethunmethC-contexttrinucleotidecoverage
0PGA_scaffold1__77_contigs__length_896438574+00CGCGC0
1PGA_scaffold1__77_contigs__length_896438575-00CGCGC0
2PGA_scaffold1__77_contigs__length_8964385718+01CGCGG1
3PGA_scaffold1__77_contigs__length_8964385719-00CGCGG0
4PGA_scaffold1__77_contigs__length_8964385754+01CGCGT1
\n", "
" ], "text/plain": [ " chrom pos strand meth unmeth \\\n", "0 PGA_scaffold1__77_contigs__length_89643857 4 + 0 0 \n", "1 PGA_scaffold1__77_contigs__length_89643857 5 - 0 0 \n", "2 PGA_scaffold1__77_contigs__length_89643857 18 + 0 1 \n", "3 PGA_scaffold1__77_contigs__length_89643857 19 - 0 0 \n", "4 PGA_scaffold1__77_contigs__length_89643857 54 + 0 1 \n", "\n", " C-context trinucleotide coverage \n", "0 CG CGC 0 \n", "1 CG CGC 0 \n", "2 CG CGG 1 \n", "3 CG CGG 0 \n", "4 CG CGT 1 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Variable declaration\n", "bismark_subset_list = []\n", "mean_seq_coverage = []\n", "percent_seq_coverage = []\n", "percent_3x_seq_coverage = []\n", "percent_5x_seq_coverage = []\n", "percent_10x_seq_coverage = []\n", "\n", "# Create list of coverage files in current directory\n", "\n", "cov_files = !find /Volumes/web/metacarcinus/Pgenerosa/20190415_10K/*.CpG_report.txt\n", "print(cov_files)\n", "\n", "# Loop through coverage files\n", "for file in cov_files:\n", " print(\"----------------------------------------------\")\n", " print(\"----------------------------------------------\")\n", " print (file)\n", " subset_name = file[:-4] # Remove file suffix (.txt)\n", " bismark_subset_list.append(subset_name)\n", " #\n", " #\n", " # Create dataframe and add column names (taken from Bismark documentation)\n", " dataframe = pandas.read_csv(\n", " file,\n", " sep='\\t',\n", " header=None,\n", " names=[\"chrom\", \"pos\", \"strand\", \"meth\", \"unmeth\", \"C-context\", \"trinucleotide\"])\n", " \n", " dataframe['coverage'] = dataframe['meth'] + dataframe['unmeth'] # Sum of methylated and unmethylated coverage for each position.\n", " \n", " total_CpG = len(dataframe) # Count of all CpGs in genome.\n", " \n", " \n", " coverage = sum(dataframe['coverage']>0) # Count of all CpG positions with sequence coverage\n", " coverage_3x = sum(dataframe['coverage']>=3)\n", " coverage_5x = sum(dataframe['coverage']>=5)\n", " coverage_10x = sum(dataframe['coverage']>=10)\n", " mean_coverage = round(dataframe[\"coverage\"].mean(), 1)\n", " \n", " display(\"Total coverage: \" + str(coverage))\n", " display(\"3x coverage: \" + str(coverage_3x))\n", " display(\"5x coverage: \" + str(coverage_5x))\n", " display(\"10x coverage: \" + str(coverage_10x))\n", " display(\"Mean coverage: \" + str(mean_coverage))\n", " \n", " no_coverage = sum(dataframe['coverage']==0) # Count of all CpG posiitions with no sequence coverage\n", " percent_coverage = round((coverage / total_CpG * 100.0), 1) # Rounds to 1 decimal\n", " percent_3x_coverage = round((coverage_3x / total_CpG * 100.0), 1) # Rounds to 1 decimal\n", " percent_5x_coverage = round((coverage_5x / total_CpG * 100.0), 1) # Rounds to 1 decimal\n", " percent_10x_coverage = round((coverage_10x / total_CpG * 100.0), 1) # Rounds to 1 decimal\n", " \n", " mean_seq_coverage.append(mean_coverage)\n", " percent_seq_coverage.append(percent_coverage)\n", " percent_3x_seq_coverage.append(percent_3x_coverage)\n", " percent_5x_seq_coverage.append(percent_5x_coverage)\n", " percent_10x_seq_coverage.append(percent_10x_coverage)\n", " \n", " display(\"No coverage: \" + str(no_coverage))\n", " display(\"Percent coverage: \" + str(percent_coverage))\n", " display(\"Percent 3x coverage: \" + str(percent_3x_coverage))\n", " display(\"Percent 5x coverage: \" + str(percent_5x_coverage))\n", " display(\"Percent 10x coverage: \" + str(percent_10x_coverage))\n", " display(dataframe.head())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create new dataframe" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "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", "
Bismark SampleMean CoveragePercent CoveragePercent 3x CoveragePercent 5x CoveragePercent 10x Coverage
0Tank2-025-0263.677.151.727.94.9
1Tank2-025-026_trim2.671.838.816.12.2
2Tank3-15-162.873.142.118.72.6
3Tank3-15-16_trim2.066.729.29.61.2
\n", "
" ], "text/plain": [ " Bismark Sample Mean Coverage Percent Coverage Percent 3x Coverage \\\n", "0 Tank2-025-026 3.6 77.1 51.7 \n", "1 Tank2-025-026_trim 2.6 71.8 38.8 \n", "2 Tank3-15-16 2.8 73.1 42.1 \n", "3 Tank3-15-16_trim 2.0 66.7 29.2 \n", "\n", " Percent 5x Coverage Percent 10x Coverage \n", "0 27.9 4.9 \n", "1 16.1 2.2 \n", "2 18.7 2.6 \n", "3 9.6 1.2 " ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "coverage_dataframe = pandas.DataFrame(\n", " {\n", " 'Bismark Sample': ['Tank2-025-026','Tank2-025-026_trim','Tank3-15-16','Tank3-15-16_trim'],\n", " 'Mean Coverage': mean_seq_coverage,\n", " 'Percent Coverage': percent_seq_coverage,\n", " 'Percent 3x Coverage': percent_3x_seq_coverage,\n", " 'Percent 5x Coverage': percent_5x_seq_coverage,\n", " 'Percent 10x Coverage': percent_10x_seq_coverage,\n", " \n", " })\n", "\n", "coverage_dataframe" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Create line plot overlayed on bar chart, showing percent sequencing coverage for each Bismark subset option" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Sort data\n", "coverage_dataframe = coverage_dataframe.sort_values(by=['Percent Coverage'])\n", "\n", "\n", "exclude = ['Mean Coverage']\n", "coverage_dataframe = coverage_dataframe.loc[:, coverage_dataframe.columns.difference(exclude)] # Don't plot Mean Coverage\n", "ax = coverage_dataframe.plot(x='Bismark Sample',marker='o') # Line plot with marker points.\n", "coverage_dataframe.plot(kind='bar', x='Bismark Sample', ax=ax) # Overlays bar chart using axes defined in line plot\n", "\n", "# Save figure to file.\n", "# \"bbox_inches\" argument needed to prevent x asis lables from getting cut off.\n", "plt.savefig(output_plot, bbox_inches = \"tight\")" ] }, { "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.6.8" } }, "nbformat": 4, "nbformat_minor": 2 }