{
"cells": [
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import pylab\n",
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## load mapping summary CSVs and gather CSV"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"#sample_id='SRR606249'\n",
"sample_id = 'p8808mo9'\n",
"#sample_id = 'p8808mo11'\n",
"\n",
"# load mapping CSVs\n",
"all_df = pd.read_csv(f'outputs/minimap/depth/{sample_id}.summary.csv')\n",
"left_df = pd.read_csv(f'outputs/leftover/depth/{sample_id}.summary.csv')\n",
"\n",
"# load gather CSV\n",
"gather_df = pd.read_csv(f'outputs/{sample_id}.gather.csv')\n",
"\n",
"# names!\n",
"names_df = pd.read_csv(f'{sample_id}.acc.urls.csv')\n",
"\n",
"# connect gather_df to all_df and left_df using 'genome_id'\n",
"def fix_name(x):\n",
" return \"_\".join(x.split('_')[:2]).split('.')[0]\n",
"\n",
"gather_df['genome_id'] = gather_df['name'].apply(fix_name)\n",
"names_df['genome_id'] = names_df['acc'].apply(fix_name)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"# CTB bug FIXME\n",
"# this ensures that only rows that share genome_id are in all the dataframes\n",
"in_gather = set(gather_df.genome_id)\n",
"in_left = set(left_df.genome_id)\n",
"\n",
"in_both = in_left.intersection(in_gather)\n",
"\n",
"all_df = all_df[all_df.genome_id.isin(in_both)]\n",
"left_df = left_df[left_df.genome_id.isin(in_both)]\n",
"gather_df = gather_df[gather_df.genome_id.isin(in_both)]\n",
"names_df = names_df[names_df.genome_id.isin(in_both)]\n",
"\n",
"# reassign index now that we've maybe dropped rows\n",
"all_df.index = range(len(all_df))\n",
"left_df.index = range(len(left_df))\n",
"gather_df.index = range(len(gather_df))\n",
"names_df.index = range(len(names_df))\n",
"\n",
"assert len(all_df) == len(gather_df)\n",
"assert len(left_df) == len(gather_df)\n",
"assert len(names_df) == len(gather_df)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" acc | \n",
" genome_url | \n",
" assembly_report_url | \n",
" ncbi_tax_name | \n",
" genome_id | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" GCA_013301655.1 | \n",
" https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/0... | \n",
" https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/0... | \n",
" Blautia wexlerae | \n",
" GCA_013301655 | \n",
"
\n",
" \n",
" 1 | \n",
" GCA_013301105.1 | \n",
" https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/0... | \n",
" https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/0... | \n",
" Fusicatenibacter saccharivorans | \n",
" GCA_013301105 | \n",
"
\n",
" \n",
" 2 | \n",
" GCA_005845175.1 | \n",
" https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/0... | \n",
" https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/0... | \n",
" Blautia obeum | \n",
" GCA_005845175 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" acc genome_url \\\n",
"0 GCA_013301655.1 https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/0... \n",
"1 GCA_013301105.1 https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/0... \n",
"2 GCA_005845175.1 https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/0... \n",
"\n",
" assembly_report_url \\\n",
"0 https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/0... \n",
"1 https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/0... \n",
"2 https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/0... \n",
"\n",
" ncbi_tax_name genome_id \n",
"0 Blautia wexlerae GCA_013301655 \n",
"1 Fusicatenibacter saccharivorans GCA_013301105 \n",
"2 Blautia obeum GCA_005845175 "
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# re-sort left_df and all_df to match gather_df order, using matching genome_id column\n",
"all_df.set_index(\"genome_id\")\n",
"all_df.reindex(index=gather_df[\"genome_id\"])\n",
"all_df.reset_index()\n",
"\n",
"left_df.set_index(\"genome_id\")\n",
"left_df.reindex(index=gather_df[\"genome_id\"])\n",
"left_df.reset_index()\n",
"\n",
"left_df[\"mapped_bp\"] = (1 - left_df[\"percent missed\"]/100) * left_df[\"genome bp\"]\n",
"\n",
"names_df.set_index(\"genome_id\")\n",
"names_df.reindex(index=gather_df[\"genome_id\"])\n",
"names_df.reset_index()\n",
"\n",
"names_df[:3]"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Unnamed: 0 | \n",
" genome bp | \n",
" missed | \n",
" percent missed | \n",
" coverage | \n",
" genome_id | \n",
" sample_id | \n",
" mapped_bp | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" GCA_013302085 | \n",
" 4418806 | \n",
" 3758034 | \n",
" 85.046368 | \n",
" 0.682209 | \n",
" GCA_013302085 | \n",
" p8808mo9 | \n",
" 660772.0 | \n",
"
\n",
" \n",
" 1 | \n",
" GCA_013301105 | \n",
" 3895530 | \n",
" 552288 | \n",
" 14.177480 | \n",
" 8.278217 | \n",
" GCA_013301105 | \n",
" p8808mo9 | \n",
" 3343242.0 | \n",
"
\n",
" \n",
" 2 | \n",
" GCA_005845175 | \n",
" 3661653 | \n",
" 652327 | \n",
" 17.815096 | \n",
" 14.457032 | \n",
" GCA_005845175 | \n",
" p8808mo9 | \n",
" 3009326.0 | \n",
"
\n",
" \n",
" 3 | \n",
" GCA_001405435 | \n",
" 7426760 | \n",
" 4253627 | \n",
" 57.274330 | \n",
" 2.079477 | \n",
" GCA_001405435 | \n",
" p8808mo9 | \n",
" 3173133.0 | \n",
"
\n",
" \n",
" 4 | \n",
" GCA_900537995 | \n",
" 4493348 | \n",
" 1449454 | \n",
" 32.257773 | \n",
" 2.608285 | \n",
" GCA_900537995 | \n",
" p8808mo9 | \n",
" 3043894.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Unnamed: 0 genome bp missed percent missed coverage \\\n",
"0 GCA_013302085 4418806 3758034 85.046368 0.682209 \n",
"1 GCA_013301105 3895530 552288 14.177480 8.278217 \n",
"2 GCA_005845175 3661653 652327 17.815096 14.457032 \n",
"3 GCA_001405435 7426760 4253627 57.274330 2.079477 \n",
"4 GCA_900537995 4493348 1449454 32.257773 2.608285 \n",
"\n",
" genome_id sample_id mapped_bp \n",
"0 GCA_013302085 p8808mo9 660772.0 \n",
"1 GCA_013301105 p8808mo9 3343242.0 \n",
"2 GCA_005845175 p8808mo9 3009326.0 \n",
"3 GCA_001405435 p8808mo9 3173133.0 \n",
"4 GCA_900537995 p8808mo9 3043894.0 "
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"left_df[:5]"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" intersect_bp | \n",
" f_orig_query | \n",
" f_match | \n",
" f_unique_to_query | \n",
" f_unique_weighted | \n",
" average_abund | \n",
" median_abund | \n",
" std_abund | \n",
" name | \n",
" filename | \n",
" md5 | \n",
" f_match_orig | \n",
" unique_intersect_bp | \n",
" gather_result_rank | \n",
" remaining_bp | \n",
" genome_id | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 2950000 | \n",
" 0.026635 | \n",
" 0.660990 | \n",
" 0.026635 | \n",
" 0.050551 | \n",
" 6.126102 | \n",
" 4.0 | \n",
" 15.356742 | \n",
" GCA_013301655.1_ASM1330165v1_genomic.fna.gz | \n",
" all-gather-genomes.sbt.zip | \n",
" 65bf24f31c7e62d1f0186eaceba3b128 | \n",
" 0.660990 | \n",
" 2950000 | \n",
" 0 | \n",
" 107807000 | \n",
" GCA_013301655 | \n",
"
\n",
" \n",
" 1 | \n",
" 2781000 | \n",
" 0.025109 | \n",
" 0.700701 | \n",
" 0.024351 | \n",
" 0.049505 | \n",
" 6.562106 | \n",
" 5.0 | \n",
" 5.922433 | \n",
" GCA_013301105.1_ASM1330110v1_genomic.fna.gz | \n",
" all-gather-genomes.sbt.zip | \n",
" 1c4af8c8f8f62405239e7c3a05612dde | \n",
" 0.722525 | \n",
" 2697000 | \n",
" 1 | \n",
" 105110000 | \n",
" GCA_013301105 | \n",
"
\n",
" \n",
" 2 | \n",
" 2619000 | \n",
" 0.023646 | \n",
" 0.668122 | \n",
" 0.022102 | \n",
" 0.085877 | \n",
" 12.541258 | \n",
" 12.0 | \n",
" 8.324207 | \n",
" GCA_005845175.1_ASM584517v1_genomic.fna.gz | \n",
" all-gather-genomes.sbt.zip | \n",
" 5405438db1e4039410646235963d7518 | \n",
" 0.714793 | \n",
" 2448000 | \n",
" 2 | \n",
" 102662000 | \n",
" GCA_005845175 | \n",
"
\n",
" \n",
" 3 | \n",
" 2274000 | \n",
" 0.020531 | \n",
" 0.308123 | \n",
" 0.020378 | \n",
" 0.022464 | \n",
" 3.558263 | \n",
" 3.0 | \n",
" 2.828317 | \n",
" GCA_001405435.1_14207_7_29_genomic.fna.gz | \n",
" all-gather-genomes.sbt.zip | \n",
" 150b0499eae7a65c367b6798805814be | \n",
" 0.310444 | \n",
" 2257000 | \n",
" 3 | \n",
" 100405000 | \n",
" GCA_001405435 | \n",
"
\n",
" \n",
" 4 | \n",
" 2247000 | \n",
" 0.020288 | \n",
" 0.505693 | \n",
" 0.019249 | \n",
" 0.018092 | \n",
" 3.033771 | \n",
" 2.0 | \n",
" 2.857593 | \n",
" GCA_900537995.1_Roseburia_intestinalis_strain_... | \n",
" all-gather-genomes.sbt.zip | \n",
" e869cf0b15c41500b90acfad5f73aa6d | \n",
" 0.532970 | \n",
" 2132000 | \n",
" 4 | \n",
" 98273000 | \n",
" GCA_900537995 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" intersect_bp f_orig_query f_match f_unique_to_query f_unique_weighted \\\n",
"0 2950000 0.026635 0.660990 0.026635 0.050551 \n",
"1 2781000 0.025109 0.700701 0.024351 0.049505 \n",
"2 2619000 0.023646 0.668122 0.022102 0.085877 \n",
"3 2274000 0.020531 0.308123 0.020378 0.022464 \n",
"4 2247000 0.020288 0.505693 0.019249 0.018092 \n",
"\n",
" average_abund median_abund std_abund \\\n",
"0 6.126102 4.0 15.356742 \n",
"1 6.562106 5.0 5.922433 \n",
"2 12.541258 12.0 8.324207 \n",
"3 3.558263 3.0 2.828317 \n",
"4 3.033771 2.0 2.857593 \n",
"\n",
" name \\\n",
"0 GCA_013301655.1_ASM1330165v1_genomic.fna.gz \n",
"1 GCA_013301105.1_ASM1330110v1_genomic.fna.gz \n",
"2 GCA_005845175.1_ASM584517v1_genomic.fna.gz \n",
"3 GCA_001405435.1_14207_7_29_genomic.fna.gz \n",
"4 GCA_900537995.1_Roseburia_intestinalis_strain_... \n",
"\n",
" filename md5 f_match_orig \\\n",
"0 all-gather-genomes.sbt.zip 65bf24f31c7e62d1f0186eaceba3b128 0.660990 \n",
"1 all-gather-genomes.sbt.zip 1c4af8c8f8f62405239e7c3a05612dde 0.722525 \n",
"2 all-gather-genomes.sbt.zip 5405438db1e4039410646235963d7518 0.714793 \n",
"3 all-gather-genomes.sbt.zip 150b0499eae7a65c367b6798805814be 0.310444 \n",
"4 all-gather-genomes.sbt.zip e869cf0b15c41500b90acfad5f73aa6d 0.532970 \n",
"\n",
" unique_intersect_bp gather_result_rank remaining_bp genome_id \n",
"0 2950000 0 107807000 GCA_013301655 \n",
"1 2697000 1 105110000 GCA_013301105 \n",
"2 2448000 2 102662000 GCA_005845175 \n",
"3 2257000 3 100405000 GCA_001405435 \n",
"4 2132000 4 98273000 GCA_900537995 "
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gather_df[:5]"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"# subsample? take top 60...\n",
"\n",
"NUM=60\n",
"\n",
"left_df = left_df[:NUM]\n",
"all_df = all_df[:NUM]\n",
"gather_df = gather_df[:NUM]\n",
"names_df = names_df[:NUM]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## fig 1: examining leftover reads, in order of gather"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"