{
"cells": [
{
"cell_type": "markdown",
"id": "4797b931",
"metadata": {},
"source": [
"# Population analysis"
]
},
{
"cell_type": "markdown",
"id": "f9feb8bc",
"metadata": {},
"source": [
"# Loading packages"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "9298a271",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"scanpy==1.7.1 anndata==0.7.6 umap==0.5.1 numpy==1.20.1 scipy==1.6.1 pandas==1.2.3 scikit-learn==0.24.1 statsmodels==0.12.2 python-igraph==0.8.3 louvain==0.7.0 leidenalg==0.8.3\n"
]
}
],
"source": [
"import pandas as pd # Pandas for data analysis.\n",
"import numpy as np\n",
"import scipy.stats as ss\n",
"import matplotlib.pyplot as plt # For basic plotting.\n",
"import seaborn as sns # For pretty visualization in Seaborn. See https://seaborn.pydata.org/\n",
"from IPython.display import display # Pretty display of data frames.\n",
"\n",
"from sklearn import base\n",
"from sklearn.feature_selection import chi2, f_classif\n",
"\n",
"import scanpy as sc\n",
"sc.settings.verbosity = 1 # verbosity: errors (0), warnings (1), info (2), hints (3)\n",
"sc.logging.print_header()\n",
"sc.settings.set_figure_params(dpi=80, facecolor='white')\n",
"\n",
"# Put plots inline rather than in a pop-up.\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "c19a1f3a",
"metadata": {},
"outputs": [],
"source": [
"def hrule(repchar = '=', length=80):\n",
" '''\n",
" A quick function to print a horizontal line.\n",
" '''\n",
" if len(repchar) == 1:\n",
" print(repchar*length)"
]
},
{
"cell_type": "markdown",
"id": "5d42c8db",
"metadata": {},
"source": [
"# Loading data"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "f27d2f62",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[('exp1', 'Sample1'),\n",
" ('exp1', 'Sample2'),\n",
" ('exp1', 'Sample3'),\n",
" ('exp1', 'Sample4'),\n",
" ('exp1', 'Sample5'),\n",
" ('exp1', 'Sample6'),\n",
" ('exp2', 'Sample1'),\n",
" ('exp2', 'Sample2'),\n",
" ('exp2', 'Sample3'),\n",
" ('exp2', 'Sample4'),\n",
" ('exp2', 'Sample5'),\n",
" ('exp2', 'Sample6'),\n",
" ('exp3', 'Sample1'),\n",
" ('exp3', 'Sample2'),\n",
" ('exp3', 'Sample3'),\n",
" ('exp3', 'Sample4'),\n",
" ('exp3', 'Sample5'),\n",
" ('exp3', 'Sample6')]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"experiments = ['exp{}'.format(j) for j in [1,2,3]]\n",
"samples = ['Sample{}'.format(j) for j in [1,2,3,4,5,6]]\n",
"datasets = [(experiment, sample) for experiment in experiments for sample in samples]\n",
"datasets"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "1cc00a39",
"metadata": {},
"outputs": [],
"source": [
"JM = {}\n",
"for ds in datasets:\n",
" fn = 'Raw/JM_10X_'+ds[0]+'_'+ds[1]+'.loom'\n",
" JM[ds] = sc.read_loom(fn)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "9aad66f6",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" experiment | \n",
" well | \n",
" clone | \n",
" CD_type | \n",
"
\n",
" \n",
" CellID | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" exp1_AAACCTGAGCCCAATT-1 | \n",
" exp1 | \n",
" Sample1 | \n",
" non | \n",
" unknown | \n",
"
\n",
" \n",
" exp1_AAACCTGTCCGCATAA-1 | \n",
" exp1 | \n",
" Sample1 | \n",
" 18 | \n",
" CD4 | \n",
"
\n",
" \n",
" exp1_AAACGGGGTTACGGAG-1 | \n",
" exp1 | \n",
" Sample1 | \n",
" non | \n",
" unknown | \n",
"
\n",
" \n",
" exp1_AAACGGGTCGAATCCA-1 | \n",
" exp1 | \n",
" Sample1 | \n",
" 17 | \n",
" CD8 | \n",
"
\n",
" \n",
" exp1_AAACGGGTCTGTGCAA-1 | \n",
" exp1 | \n",
" Sample1 | \n",
" non | \n",
" unknown | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" exp3_TTTGCGCTCTGCTTGC-1 | \n",
" exp3 | \n",
" Sample6 | \n",
" non | \n",
" unknown | \n",
"
\n",
" \n",
" exp3_TTTGGTTTCCGCATCT-1 | \n",
" exp3 | \n",
" Sample6 | \n",
" 40 | \n",
" CD4 | \n",
"
\n",
" \n",
" exp3_TTTGTCAAGCGTGAGT-1 | \n",
" exp3 | \n",
" Sample6 | \n",
" 1 | \n",
" CD4 | \n",
"
\n",
" \n",
" exp3_TTTGTCAGTCAAAGAT-1 | \n",
" exp3 | \n",
" Sample6 | \n",
" non | \n",
" unknown | \n",
"
\n",
" \n",
" exp3_TTTGTCATCACAGGCC-1 | \n",
" exp3 | \n",
" Sample6 | \n",
" non | \n",
" unknown | \n",
"
\n",
" \n",
"
\n",
"
46913 rows × 4 columns
\n",
"
"
],
"text/plain": [
" experiment well clone CD_type\n",
"CellID \n",
"exp1_AAACCTGAGCCCAATT-1 exp1 Sample1 non unknown\n",
"exp1_AAACCTGTCCGCATAA-1 exp1 Sample1 18 CD4\n",
"exp1_AAACGGGGTTACGGAG-1 exp1 Sample1 non unknown\n",
"exp1_AAACGGGTCGAATCCA-1 exp1 Sample1 17 CD8\n",
"exp1_AAACGGGTCTGTGCAA-1 exp1 Sample1 non unknown\n",
"... ... ... ... ...\n",
"exp3_TTTGCGCTCTGCTTGC-1 exp3 Sample6 non unknown\n",
"exp3_TTTGGTTTCCGCATCT-1 exp3 Sample6 40 CD4\n",
"exp3_TTTGTCAAGCGTGAGT-1 exp3 Sample6 1 CD4\n",
"exp3_TTTGTCAGTCAAAGAT-1 exp3 Sample6 non unknown\n",
"exp3_TTTGTCATCACAGGCC-1 exp3 Sample6 non unknown\n",
"\n",
"[46913 rows x 4 columns]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"metacols =['experiment','well','clone','CD_type']\n",
"\n",
"meta_df = pd.concat([JM[ds].obs[metacols] for ds in datasets])\n",
"\n",
"meta_df\n",
" "
]
},
{
"cell_type": "markdown",
"id": "ddf8cecc",
"metadata": {},
"source": [
"# Create population dataframe\n",
"\n",
"Note -- when we go from experiment 1 to experiment 2, we randomly sample cells from each of the wells in experiment 1. The column exp1_abs contains the absolute numbers of cells in experiment 1. The column exp1_norm multiplies these numbers, to normalize each well to a total of 1000 cells."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "de0dd1b9",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" exp1_abs | \n",
" exp1_norm | \n",
" exp1_perc | \n",
" exp2_Sample1_perc | \n",
" exp2_Sample2_perc | \n",
" exp2_Sample3_perc | \n",
" exp2_Sample4_perc | \n",
" exp2_Sample5_perc | \n",
" exp2_Sample6_perc | \n",
" exp2_Sample1 | \n",
" exp2_Sample2 | \n",
" exp2_Sample3 | \n",
" exp2_Sample4 | \n",
" exp2_Sample5 | \n",
" exp2_Sample6 | \n",
"
\n",
" \n",
" \n",
" \n",
" non | \n",
" 3183 | \n",
" 1445.813375 | \n",
" 0.240969 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 18 | \n",
" 82 | \n",
" 44.711014 | \n",
" 0.007452 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 17 | \n",
" 269 | \n",
" 146.673937 | \n",
" 0.024446 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 15 | \n",
" 222 | \n",
" 121.046892 | \n",
" 0.020174 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 1 | \n",
" 477 | \n",
" 260.087241 | \n",
" 0.043348 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" exp1_abs exp1_norm exp1_perc exp2_Sample1_perc exp2_Sample2_perc \\\n",
"non 3183 1445.813375 0.240969 0 0 \n",
"18 82 44.711014 0.007452 0 0 \n",
"17 269 146.673937 0.024446 0 0 \n",
"15 222 121.046892 0.020174 0 0 \n",
"1 477 260.087241 0.043348 0 0 \n",
"\n",
" exp2_Sample3_perc exp2_Sample4_perc exp2_Sample5_perc \\\n",
"non 0 0 0 \n",
"18 0 0 0 \n",
"17 0 0 0 \n",
"15 0 0 0 \n",
"1 0 0 0 \n",
"\n",
" exp2_Sample6_perc exp2_Sample1 exp2_Sample2 exp2_Sample3 \\\n",
"non 0 0 0 0 \n",
"18 0 0 0 0 \n",
"17 0 0 0 0 \n",
"15 0 0 0 0 \n",
"1 0 0 0 0 \n",
"\n",
" exp2_Sample4 exp2_Sample5 exp2_Sample6 \n",
"non 0 0 0 \n",
"18 0 0 0 \n",
"17 0 0 0 \n",
"15 0 0 0 \n",
"1 0 0 0 "
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pop_df = pd.DataFrame(0,index=meta_df.clone.unique(), \n",
" columns=['exp1_abs','exp1_norm','exp1_perc'] + \n",
" ['exp2_Sample{}_perc'.format(j) for j in [1,2,3,4,5,6]] + \n",
" ['exp2_Sample{}'.format(j) for j in [1,2,3,4,5,6]])\n",
"\n",
"# First timepoint\n",
"mf = meta_df[meta_df['experiment'] == 'exp1']\n",
"well_scaler = 1000 / mf.well.value_counts() # Normalize all wells to have 1000 cells.\n",
"mf_vc = mf.value_counts(['clone','well'])\n",
"for clone,well in mf_vc.index:\n",
" pop_df.loc[clone, 'exp1_abs'] += mf_vc[(clone,well)] \n",
" pop_df.loc[clone, 'exp1_norm'] += mf_vc[(clone,well)] * well_scaler[well]\n",
"\n",
"pop_df['exp1_perc'] = pop_df['exp1_norm'] / pop_df['exp1_norm'].sum()\n",
"pop_df.head() # Complete at timepoint 1."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "e6cc8271",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" exp1_abs | \n",
" exp1_norm | \n",
" exp1_perc | \n",
" exp2_Sample1_perc | \n",
" exp2_Sample2_perc | \n",
" exp2_Sample3_perc | \n",
" exp2_Sample4_perc | \n",
" exp2_Sample5_perc | \n",
" exp2_Sample6_perc | \n",
" exp2_Sample1 | \n",
" exp2_Sample2 | \n",
" exp2_Sample3 | \n",
" exp2_Sample4 | \n",
" exp2_Sample5 | \n",
" exp2_Sample6 | \n",
"
\n",
" \n",
" \n",
" \n",
" non | \n",
" 3183 | \n",
" 1445.813375 | \n",
" 0.240969 | \n",
" 0.520221 | \n",
" 0.328447 | \n",
" 0.280118 | \n",
" 0.399672 | \n",
" 0.387714 | \n",
" 0.370185 | \n",
" 283 | \n",
" 605 | \n",
" 379 | \n",
" 731 | \n",
" 1155 | \n",
" 961 | \n",
"
\n",
" \n",
" 18 | \n",
" 82 | \n",
" 44.711014 | \n",
" 0.007452 | \n",
" 0.014706 | \n",
" 0.009229 | \n",
" 0.006652 | \n",
" 0.028431 | \n",
" 0.008728 | \n",
" 0.016564 | \n",
" 8 | \n",
" 17 | \n",
" 9 | \n",
" 52 | \n",
" 26 | \n",
" 43 | \n",
"
\n",
" \n",
" 17 | \n",
" 269 | \n",
" 146.673937 | \n",
" 0.024446 | \n",
" 0.012868 | \n",
" 0.017915 | \n",
" 0.000000 | \n",
" 0.019136 | \n",
" 0.037932 | \n",
" 0.013867 | \n",
" 7 | \n",
" 33 | \n",
" 0 | \n",
" 35 | \n",
" 113 | \n",
" 36 | \n",
"
\n",
" \n",
" 15 | \n",
" 222 | \n",
" 121.046892 | \n",
" 0.020174 | \n",
" 0.038603 | \n",
" 0.037459 | \n",
" 0.009608 | \n",
" 0.010388 | \n",
" 0.002014 | \n",
" 0.006549 | \n",
" 21 | \n",
" 69 | \n",
" 13 | \n",
" 19 | \n",
" 6 | \n",
" 17 | \n",
"
\n",
" \n",
" 1 | \n",
" 477 | \n",
" 260.087241 | \n",
" 0.043348 | \n",
" 0.023897 | \n",
" 0.072747 | \n",
" 0.113821 | \n",
" 0.064516 | \n",
" 0.101376 | \n",
" 0.033513 | \n",
" 13 | \n",
" 134 | \n",
" 154 | \n",
" 118 | \n",
" 302 | \n",
" 87 | \n",
"
\n",
" \n",
" 13 | \n",
" 57 | \n",
" 31.079607 | \n",
" 0.005180 | \n",
" 0.001838 | \n",
" 0.003257 | \n",
" 0.025129 | \n",
" 0.007108 | \n",
" 0.024841 | \n",
" 0.023498 | \n",
" 1 | \n",
" 6 | \n",
" 34 | \n",
" 13 | \n",
" 74 | \n",
" 61 | \n",
"
\n",
" \n",
" 46 | \n",
" 2 | \n",
" 1.090513 | \n",
" 0.000182 | \n",
" 0.000000 | \n",
" 0.006515 | \n",
" 0.000000 | \n",
" 0.000547 | \n",
" 0.000000 | \n",
" 0.000385 | \n",
" 0 | \n",
" 12 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" 2 | \n",
" 1180 | \n",
" 522.817900 | \n",
" 0.087136 | \n",
" 0.025735 | \n",
" 0.021173 | \n",
" 0.023651 | \n",
" 0.075451 | \n",
" 0.031219 | \n",
" 0.053544 | \n",
" 14 | \n",
" 39 | \n",
" 32 | \n",
" 138 | \n",
" 93 | \n",
" 139 | \n",
"
\n",
" \n",
" 19 | \n",
" 309 | \n",
" 136.907399 | \n",
" 0.022818 | \n",
" 0.001838 | \n",
" 0.004343 | \n",
" 0.002217 | \n",
" 0.011482 | \n",
" 0.017456 | \n",
" 0.017334 | \n",
" 1 | \n",
" 8 | \n",
" 3 | \n",
" 21 | \n",
" 52 | \n",
" 45 | \n",
"
\n",
" \n",
" 23 | \n",
" 263 | \n",
" 116.526362 | \n",
" 0.019421 | \n",
" 0.007353 | \n",
" 0.021716 | \n",
" 0.000000 | \n",
" 0.004921 | \n",
" 0.008056 | \n",
" 0.004237 | \n",
" 4 | \n",
" 40 | \n",
" 0 | \n",
" 9 | \n",
" 24 | \n",
" 11 | \n",
"
\n",
" \n",
" 9 | \n",
" 100 | \n",
" 44.306602 | \n",
" 0.007384 | \n",
" 0.001838 | \n",
" 0.009772 | \n",
" 0.007391 | \n",
" 0.033352 | \n",
" 0.028533 | \n",
" 0.020031 | \n",
" 1 | \n",
" 18 | \n",
" 10 | \n",
" 61 | \n",
" 85 | \n",
" 52 | \n",
"
\n",
" \n",
" 33 | \n",
" 7 | \n",
" 3.101462 | \n",
" 0.000517 | \n",
" 0.000000 | \n",
" 0.000543 | \n",
" 0.000739 | \n",
" 0.001640 | \n",
" 0.001007 | \n",
" 0.005008 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 3 | \n",
" 3 | \n",
" 13 | \n",
"
\n",
" \n",
" 39 | \n",
" 1 | \n",
" 0.443066 | \n",
" 0.000074 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000547 | \n",
" 0.000336 | \n",
" 0.000000 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" 36 | \n",
" 36 | \n",
" 15.221987 | \n",
" 0.002537 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.002734 | \n",
" 0.011078 | \n",
" 0.001926 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 5 | \n",
" 33 | \n",
" 5 | \n",
"
\n",
" \n",
" 24 | \n",
" 174 | \n",
" 73.572939 | \n",
" 0.012262 | \n",
" 0.016544 | \n",
" 0.008143 | \n",
" 0.001478 | \n",
" 0.007108 | \n",
" 0.008728 | \n",
" 0.001156 | \n",
" 9 | \n",
" 15 | \n",
" 2 | \n",
" 13 | \n",
" 26 | \n",
" 3 | \n",
"
\n",
" \n",
" 29 | \n",
" 145 | \n",
" 61.310782 | \n",
" 0.010218 | \n",
" 0.007353 | \n",
" 0.004886 | \n",
" 0.000000 | \n",
" 0.004374 | \n",
" 0.001007 | \n",
" 0.000385 | \n",
" 4 | \n",
" 9 | \n",
" 0 | \n",
" 8 | \n",
" 3 | \n",
" 1 | \n",
"
\n",
" \n",
" 12 | \n",
" 357 | \n",
" 150.951374 | \n",
" 0.025159 | \n",
" 0.003676 | \n",
" 0.009772 | \n",
" 0.037694 | \n",
" 0.032258 | \n",
" 0.021819 | \n",
" 0.032743 | \n",
" 2 | \n",
" 18 | \n",
" 51 | \n",
" 59 | \n",
" 65 | \n",
" 85 | \n",
"
\n",
" \n",
" 3 | \n",
" 988 | \n",
" 417.758985 | \n",
" 0.069626 | \n",
" 0.011029 | \n",
" 0.011944 | \n",
" 0.054693 | \n",
" 0.031711 | \n",
" 0.055388 | \n",
" 0.075116 | \n",
" 6 | \n",
" 22 | \n",
" 74 | \n",
" 58 | \n",
" 165 | \n",
" 195 | \n",
"
\n",
" \n",
" 45 | \n",
" 10 | \n",
" 4.228330 | \n",
" 0.000705 | \n",
" 0.000000 | \n",
" 0.000543 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.001678 | \n",
" 0.000385 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 5 | \n",
" 1 | \n",
"
\n",
" \n",
" 7 | \n",
" 542 | \n",
" 217.321572 | \n",
" 0.036220 | \n",
" 0.014706 | \n",
" 0.005972 | \n",
" 0.014782 | \n",
" 0.027884 | \n",
" 0.027190 | \n",
" 0.053929 | \n",
" 8 | \n",
" 11 | \n",
" 20 | \n",
" 51 | \n",
" 81 | \n",
" 140 | \n",
"
\n",
" \n",
" 10 | \n",
" 241 | \n",
" 96.631917 | \n",
" 0.016105 | \n",
" 0.000000 | \n",
" 0.017915 | \n",
" 0.003695 | \n",
" 0.019136 | \n",
" 0.025176 | \n",
" 0.012712 | \n",
" 0 | \n",
" 33 | \n",
" 5 | \n",
" 35 | \n",
" 75 | \n",
" 33 | \n",
"
\n",
" \n",
" 11 | \n",
" 482 | \n",
" 193.263833 | \n",
" 0.032211 | \n",
" 0.005515 | \n",
" 0.024973 | \n",
" 0.011086 | \n",
" 0.028431 | \n",
" 0.020141 | \n",
" 0.023498 | \n",
" 3 | \n",
" 46 | \n",
" 15 | \n",
" 52 | \n",
" 60 | \n",
" 61 | \n",
"
\n",
" \n",
" 14 | \n",
" 536 | \n",
" 214.915798 | \n",
" 0.035819 | \n",
" 0.000000 | \n",
" 0.024973 | \n",
" 0.001478 | \n",
" 0.016402 | \n",
" 0.022826 | \n",
" 0.005778 | \n",
" 0 | \n",
" 46 | \n",
" 2 | \n",
" 30 | \n",
" 68 | \n",
" 15 | \n",
"
\n",
" \n",
" 8 | \n",
" 75 | \n",
" 30.072173 | \n",
" 0.005012 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.002217 | \n",
" 0.010388 | \n",
" 0.020477 | \n",
" 0.026579 | \n",
" 0 | \n",
" 0 | \n",
" 3 | \n",
" 19 | \n",
" 61 | \n",
" 69 | \n",
"
\n",
" \n",
" 28 | \n",
" 127 | \n",
" 50.922213 | \n",
" 0.008487 | \n",
" 0.007353 | \n",
" 0.010315 | \n",
" 0.000739 | \n",
" 0.004921 | \n",
" 0.002685 | \n",
" 0.008475 | \n",
" 4 | \n",
" 19 | \n",
" 1 | \n",
" 9 | \n",
" 8 | \n",
" 22 | \n",
"
\n",
" \n",
" 5 | \n",
" 1527 | \n",
" 688.768606 | \n",
" 0.114795 | \n",
" 0.033088 | \n",
" 0.034745 | \n",
" 0.006652 | \n",
" 0.025150 | \n",
" 0.024841 | \n",
" 0.014638 | \n",
" 18 | \n",
" 64 | \n",
" 9 | \n",
" 46 | \n",
" 74 | \n",
" 38 | \n",
"
\n",
" \n",
" 31 | \n",
" 55 | \n",
" 24.808300 | \n",
" 0.004135 | \n",
" 0.000000 | \n",
" 0.001629 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.001678 | \n",
" 0.000385 | \n",
" 0 | \n",
" 3 | \n",
" 0 | \n",
" 0 | \n",
" 5 | \n",
" 1 | \n",
"
\n",
" \n",
" 16 | \n",
" 269 | \n",
" 121.335138 | \n",
" 0.020223 | \n",
" 0.011029 | \n",
" 0.009772 | \n",
" 0.000000 | \n",
" 0.048114 | \n",
" 0.027526 | \n",
" 0.014253 | \n",
" 6 | \n",
" 18 | \n",
" 0 | \n",
" 88 | \n",
" 82 | \n",
" 37 | \n",
"
\n",
" \n",
" 44 | \n",
" 5 | \n",
" 2.255300 | \n",
" 0.000376 | \n",
" 0.001838 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.001093 | \n",
" 0.000671 | \n",
" 0.000770 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 2 | \n",
" 2 | \n",
" 2 | \n",
"
\n",
" \n",
" 6 | \n",
" 11 | \n",
" 4.961660 | \n",
" 0.000827 | \n",
" 0.161765 | \n",
" 0.229642 | \n",
" 0.351811 | \n",
" 0.056862 | \n",
" 0.043639 | \n",
" 0.138675 | \n",
" 88 | \n",
" 423 | \n",
" 476 | \n",
" 104 | \n",
" 130 | \n",
" 360 | \n",
"
\n",
" \n",
" 21 | \n",
" 520 | \n",
" 223.559759 | \n",
" 0.037260 | \n",
" 0.018382 | \n",
" 0.021173 | \n",
" 0.005913 | \n",
" 0.006561 | \n",
" 0.008392 | \n",
" 0.002696 | \n",
" 10 | \n",
" 39 | \n",
" 8 | \n",
" 12 | \n",
" 25 | \n",
" 7 | \n",
"
\n",
" \n",
" 26 | \n",
" 220 | \n",
" 94.582975 | \n",
" 0.015764 | \n",
" 0.003676 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.001640 | \n",
" 0.002685 | \n",
" 0.001541 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" 3 | \n",
" 8 | \n",
" 4 | \n",
"
\n",
" \n",
" 4 | \n",
" 908 | \n",
" 390.369733 | \n",
" 0.065062 | \n",
" 0.055147 | \n",
" 0.048317 | \n",
" 0.038433 | \n",
" 0.015856 | \n",
" 0.020477 | \n",
" 0.019646 | \n",
" 30 | \n",
" 89 | \n",
" 52 | \n",
" 29 | \n",
" 61 | \n",
" 51 | \n",
"
\n",
" \n",
" 40 | \n",
" 39 | \n",
" 16.766982 | \n",
" 0.002794 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.001007 | \n",
" 0.000000 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 3 | \n",
" 0 | \n",
"
\n",
" \n",
" 41 | \n",
" 74 | \n",
" 31.814273 | \n",
" 0.005302 | \n",
" 0.000000 | \n",
" 0.002172 | \n",
" 0.000000 | \n",
" 0.002187 | \n",
" 0.001678 | \n",
" 0.000000 | \n",
" 0 | \n",
" 4 | \n",
" 0 | \n",
" 4 | \n",
" 5 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" exp1_abs exp1_norm exp1_perc exp2_Sample1_perc exp2_Sample2_perc \\\n",
"non 3183 1445.813375 0.240969 0.520221 0.328447 \n",
"18 82 44.711014 0.007452 0.014706 0.009229 \n",
"17 269 146.673937 0.024446 0.012868 0.017915 \n",
"15 222 121.046892 0.020174 0.038603 0.037459 \n",
"1 477 260.087241 0.043348 0.023897 0.072747 \n",
"13 57 31.079607 0.005180 0.001838 0.003257 \n",
"46 2 1.090513 0.000182 0.000000 0.006515 \n",
"2 1180 522.817900 0.087136 0.025735 0.021173 \n",
"19 309 136.907399 0.022818 0.001838 0.004343 \n",
"23 263 116.526362 0.019421 0.007353 0.021716 \n",
"9 100 44.306602 0.007384 0.001838 0.009772 \n",
"33 7 3.101462 0.000517 0.000000 0.000543 \n",
"39 1 0.443066 0.000074 0.000000 0.000000 \n",
"36 36 15.221987 0.002537 0.000000 0.000000 \n",
"24 174 73.572939 0.012262 0.016544 0.008143 \n",
"29 145 61.310782 0.010218 0.007353 0.004886 \n",
"12 357 150.951374 0.025159 0.003676 0.009772 \n",
"3 988 417.758985 0.069626 0.011029 0.011944 \n",
"45 10 4.228330 0.000705 0.000000 0.000543 \n",
"7 542 217.321572 0.036220 0.014706 0.005972 \n",
"10 241 96.631917 0.016105 0.000000 0.017915 \n",
"11 482 193.263833 0.032211 0.005515 0.024973 \n",
"14 536 214.915798 0.035819 0.000000 0.024973 \n",
"8 75 30.072173 0.005012 0.000000 0.000000 \n",
"28 127 50.922213 0.008487 0.007353 0.010315 \n",
"5 1527 688.768606 0.114795 0.033088 0.034745 \n",
"31 55 24.808300 0.004135 0.000000 0.001629 \n",
"16 269 121.335138 0.020223 0.011029 0.009772 \n",
"44 5 2.255300 0.000376 0.001838 0.000000 \n",
"6 11 4.961660 0.000827 0.161765 0.229642 \n",
"21 520 223.559759 0.037260 0.018382 0.021173 \n",
"26 220 94.582975 0.015764 0.003676 0.000000 \n",
"4 908 390.369733 0.065062 0.055147 0.048317 \n",
"40 39 16.766982 0.002794 0.000000 0.000000 \n",
"41 74 31.814273 0.005302 0.000000 0.002172 \n",
"\n",
" exp2_Sample3_perc exp2_Sample4_perc exp2_Sample5_perc \\\n",
"non 0.280118 0.399672 0.387714 \n",
"18 0.006652 0.028431 0.008728 \n",
"17 0.000000 0.019136 0.037932 \n",
"15 0.009608 0.010388 0.002014 \n",
"1 0.113821 0.064516 0.101376 \n",
"13 0.025129 0.007108 0.024841 \n",
"46 0.000000 0.000547 0.000000 \n",
"2 0.023651 0.075451 0.031219 \n",
"19 0.002217 0.011482 0.017456 \n",
"23 0.000000 0.004921 0.008056 \n",
"9 0.007391 0.033352 0.028533 \n",
"33 0.000739 0.001640 0.001007 \n",
"39 0.000000 0.000547 0.000336 \n",
"36 0.000000 0.002734 0.011078 \n",
"24 0.001478 0.007108 0.008728 \n",
"29 0.000000 0.004374 0.001007 \n",
"12 0.037694 0.032258 0.021819 \n",
"3 0.054693 0.031711 0.055388 \n",
"45 0.000000 0.000000 0.001678 \n",
"7 0.014782 0.027884 0.027190 \n",
"10 0.003695 0.019136 0.025176 \n",
"11 0.011086 0.028431 0.020141 \n",
"14 0.001478 0.016402 0.022826 \n",
"8 0.002217 0.010388 0.020477 \n",
"28 0.000739 0.004921 0.002685 \n",
"5 0.006652 0.025150 0.024841 \n",
"31 0.000000 0.000000 0.001678 \n",
"16 0.000000 0.048114 0.027526 \n",
"44 0.000000 0.001093 0.000671 \n",
"6 0.351811 0.056862 0.043639 \n",
"21 0.005913 0.006561 0.008392 \n",
"26 0.000000 0.001640 0.002685 \n",
"4 0.038433 0.015856 0.020477 \n",
"40 0.000000 0.000000 0.001007 \n",
"41 0.000000 0.002187 0.001678 \n",
"\n",
" exp2_Sample6_perc exp2_Sample1 exp2_Sample2 exp2_Sample3 \\\n",
"non 0.370185 283 605 379 \n",
"18 0.016564 8 17 9 \n",
"17 0.013867 7 33 0 \n",
"15 0.006549 21 69 13 \n",
"1 0.033513 13 134 154 \n",
"13 0.023498 1 6 34 \n",
"46 0.000385 0 12 0 \n",
"2 0.053544 14 39 32 \n",
"19 0.017334 1 8 3 \n",
"23 0.004237 4 40 0 \n",
"9 0.020031 1 18 10 \n",
"33 0.005008 0 1 1 \n",
"39 0.000000 0 0 0 \n",
"36 0.001926 0 0 0 \n",
"24 0.001156 9 15 2 \n",
"29 0.000385 4 9 0 \n",
"12 0.032743 2 18 51 \n",
"3 0.075116 6 22 74 \n",
"45 0.000385 0 1 0 \n",
"7 0.053929 8 11 20 \n",
"10 0.012712 0 33 5 \n",
"11 0.023498 3 46 15 \n",
"14 0.005778 0 46 2 \n",
"8 0.026579 0 0 3 \n",
"28 0.008475 4 19 1 \n",
"5 0.014638 18 64 9 \n",
"31 0.000385 0 3 0 \n",
"16 0.014253 6 18 0 \n",
"44 0.000770 1 0 0 \n",
"6 0.138675 88 423 476 \n",
"21 0.002696 10 39 8 \n",
"26 0.001541 2 0 0 \n",
"4 0.019646 30 89 52 \n",
"40 0.000000 0 0 0 \n",
"41 0.000000 0 4 0 \n",
"\n",
" exp2_Sample4 exp2_Sample5 exp2_Sample6 \n",
"non 731 1155 961 \n",
"18 52 26 43 \n",
"17 35 113 36 \n",
"15 19 6 17 \n",
"1 118 302 87 \n",
"13 13 74 61 \n",
"46 1 0 1 \n",
"2 138 93 139 \n",
"19 21 52 45 \n",
"23 9 24 11 \n",
"9 61 85 52 \n",
"33 3 3 13 \n",
"39 1 1 0 \n",
"36 5 33 5 \n",
"24 13 26 3 \n",
"29 8 3 1 \n",
"12 59 65 85 \n",
"3 58 165 195 \n",
"45 0 5 1 \n",
"7 51 81 140 \n",
"10 35 75 33 \n",
"11 52 60 61 \n",
"14 30 68 15 \n",
"8 19 61 69 \n",
"28 9 8 22 \n",
"5 46 74 38 \n",
"31 0 5 1 \n",
"16 88 82 37 \n",
"44 2 2 2 \n",
"6 104 130 360 \n",
"21 12 25 7 \n",
"26 3 8 4 \n",
"4 29 61 51 \n",
"40 0 3 0 \n",
"41 4 5 0 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mf = meta_df[meta_df['experiment'] == 'exp2']\n",
"mf_vc = mf.value_counts(['clone','well'])\n",
"mf_vc\n",
"for clone,well in mf_vc.index:\n",
" pop_df.loc[clone, 'exp2_'+well] = mf_vc[(clone,well)]\n",
" pop_df['exp2_'+well+'_perc'] = pop_df['exp2_'+well] / pop_df['exp2_'+well].sum()\n",
"\n",
"pop_df"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "70ba0d49",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" exp1_abs | \n",
" exp1_norm | \n",
" exp1_perc | \n",
" exp2_Sample1_perc | \n",
" exp2_Sample2_perc | \n",
" exp2_Sample3_perc | \n",
" exp2_Sample4_perc | \n",
" exp2_Sample5_perc | \n",
" exp2_Sample6_perc | \n",
" exp2_Sample1 | \n",
" ... | \n",
" exp3_Sample4 | \n",
" exp3_Sample4_perc | \n",
" exp3_Sample2 | \n",
" exp3_Sample2_perc | \n",
" exp3_Sample3 | \n",
" exp3_Sample3_perc | \n",
" exp3_Sample5 | \n",
" exp3_Sample5_perc | \n",
" exp3_Sample6 | \n",
" exp3_Sample6_perc | \n",
"
\n",
" \n",
" \n",
" \n",
" non | \n",
" 3183 | \n",
" 1445.813375 | \n",
" 0.240969 | \n",
" 0.520221 | \n",
" 0.328447 | \n",
" 0.280118 | \n",
" 0.399672 | \n",
" 0.387714 | \n",
" 0.370185 | \n",
" 283 | \n",
" ... | \n",
" 2023.0 | \n",
" 0.371261 | \n",
" 1593.0 | \n",
" 0.411841 | \n",
" 1144.0 | \n",
" 0.368319 | \n",
" 582.0 | \n",
" 0.330870 | \n",
" 417.0 | \n",
" 0.396011 | \n",
"
\n",
" \n",
" 18 | \n",
" 82 | \n",
" 44.711014 | \n",
" 0.007452 | \n",
" 0.014706 | \n",
" 0.009229 | \n",
" 0.006652 | \n",
" 0.028431 | \n",
" 0.008728 | \n",
" 0.016564 | \n",
" 8 | \n",
" ... | \n",
" 41.0 | \n",
" 0.007524 | \n",
" 8.0 | \n",
" 0.002068 | \n",
" 17.0 | \n",
" 0.005473 | \n",
" 23.0 | \n",
" 0.013076 | \n",
" 13.0 | \n",
" 0.012346 | \n",
"
\n",
" \n",
" 17 | \n",
" 269 | \n",
" 146.673937 | \n",
" 0.024446 | \n",
" 0.012868 | \n",
" 0.017915 | \n",
" 0.000000 | \n",
" 0.019136 | \n",
" 0.037932 | \n",
" 0.013867 | \n",
" 7 | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 15 | \n",
" 222 | \n",
" 121.046892 | \n",
" 0.020174 | \n",
" 0.038603 | \n",
" 0.037459 | \n",
" 0.009608 | \n",
" 0.010388 | \n",
" 0.002014 | \n",
" 0.006549 | \n",
" 21 | \n",
" ... | \n",
" 62.0 | \n",
" 0.011378 | \n",
" 10.0 | \n",
" 0.002585 | \n",
" 77.0 | \n",
" 0.024791 | \n",
" 53.0 | \n",
" 0.030131 | \n",
" 22.0 | \n",
" 0.020893 | \n",
"
\n",
" \n",
" 1 | \n",
" 477 | \n",
" 260.087241 | \n",
" 0.043348 | \n",
" 0.023897 | \n",
" 0.072747 | \n",
" 0.113821 | \n",
" 0.064516 | \n",
" 0.101376 | \n",
" 0.033513 | \n",
" 13 | \n",
" ... | \n",
" 1062.0 | \n",
" 0.194898 | \n",
" 708.0 | \n",
" 0.183040 | \n",
" 516.0 | \n",
" 0.166130 | \n",
" 219.0 | \n",
" 0.124503 | \n",
" 117.0 | \n",
" 0.111111 | \n",
"
\n",
" \n",
" 13 | \n",
" 57 | \n",
" 31.079607 | \n",
" 0.005180 | \n",
" 0.001838 | \n",
" 0.003257 | \n",
" 0.025129 | \n",
" 0.007108 | \n",
" 0.024841 | \n",
" 0.023498 | \n",
" 1 | \n",
" ... | \n",
" 200.0 | \n",
" 0.036704 | \n",
" 142.0 | \n",
" 0.036711 | \n",
" 62.0 | \n",
" 0.019961 | \n",
" 45.0 | \n",
" 0.025583 | \n",
" 19.0 | \n",
" 0.018044 | \n",
"
\n",
" \n",
" 46 | \n",
" 2 | \n",
" 1.090513 | \n",
" 0.000182 | \n",
" 0.000000 | \n",
" 0.006515 | \n",
" 0.000000 | \n",
" 0.000547 | \n",
" 0.000000 | \n",
" 0.000385 | \n",
" 0 | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 2 | \n",
" 1180 | \n",
" 522.817900 | \n",
" 0.087136 | \n",
" 0.025735 | \n",
" 0.021173 | \n",
" 0.023651 | \n",
" 0.075451 | \n",
" 0.031219 | \n",
" 0.053544 | \n",
" 14 | \n",
" ... | \n",
" 599.0 | \n",
" 0.109928 | \n",
" 124.0 | \n",
" 0.032058 | \n",
" 298.0 | \n",
" 0.095943 | \n",
" 193.0 | \n",
" 0.109721 | \n",
" 121.0 | \n",
" 0.114910 | \n",
"
\n",
" \n",
" 19 | \n",
" 309 | \n",
" 136.907399 | \n",
" 0.022818 | \n",
" 0.001838 | \n",
" 0.004343 | \n",
" 0.002217 | \n",
" 0.011482 | \n",
" 0.017456 | \n",
" 0.017334 | \n",
" 1 | \n",
" ... | \n",
" 95.0 | \n",
" 0.017434 | \n",
" 47.0 | \n",
" 0.012151 | \n",
" 52.0 | \n",
" 0.016742 | \n",
" 42.0 | \n",
" 0.023877 | \n",
" 15.0 | \n",
" 0.014245 | \n",
"
\n",
" \n",
" 23 | \n",
" 263 | \n",
" 116.526362 | \n",
" 0.019421 | \n",
" 0.007353 | \n",
" 0.021716 | \n",
" 0.000000 | \n",
" 0.004921 | \n",
" 0.008056 | \n",
" 0.004237 | \n",
" 4 | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 9 | \n",
" 100 | \n",
" 44.306602 | \n",
" 0.007384 | \n",
" 0.001838 | \n",
" 0.009772 | \n",
" 0.007391 | \n",
" 0.033352 | \n",
" 0.028533 | \n",
" 0.020031 | \n",
" 1 | \n",
" ... | \n",
" 132.0 | \n",
" 0.024225 | \n",
" 78.0 | \n",
" 0.020165 | \n",
" 150.0 | \n",
" 0.048294 | \n",
" 153.0 | \n",
" 0.086981 | \n",
" 68.0 | \n",
" 0.064577 | \n",
"
\n",
" \n",
" 33 | \n",
" 7 | \n",
" 3.101462 | \n",
" 0.000517 | \n",
" 0.000000 | \n",
" 0.000543 | \n",
" 0.000739 | \n",
" 0.001640 | \n",
" 0.001007 | \n",
" 0.005008 | \n",
" 0 | \n",
" ... | \n",
" 90.0 | \n",
" 0.016517 | \n",
" 1.0 | \n",
" 0.000259 | \n",
" NaN | \n",
" NaN | \n",
" 4.0 | \n",
" 0.002274 | \n",
" 1.0 | \n",
" 0.000950 | \n",
"
\n",
" \n",
" 39 | \n",
" 1 | \n",
" 0.443066 | \n",
" 0.000074 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000547 | \n",
" 0.000336 | \n",
" 0.000000 | \n",
" 0 | \n",
" ... | \n",
" 6.0 | \n",
" 0.001101 | \n",
" 4.0 | \n",
" 0.001034 | \n",
" 13.0 | \n",
" 0.004185 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 36 | \n",
" 36 | \n",
" 15.221987 | \n",
" 0.002537 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.002734 | \n",
" 0.011078 | \n",
" 0.001926 | \n",
" 0 | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 24 | \n",
" 174 | \n",
" 73.572939 | \n",
" 0.012262 | \n",
" 0.016544 | \n",
" 0.008143 | \n",
" 0.001478 | \n",
" 0.007108 | \n",
" 0.008728 | \n",
" 0.001156 | \n",
" 9 | \n",
" ... | \n",
" 15.0 | \n",
" 0.002753 | \n",
" 10.0 | \n",
" 0.002585 | \n",
" 14.0 | \n",
" 0.004507 | \n",
" 14.0 | \n",
" 0.007959 | \n",
" 14.0 | \n",
" 0.013295 | \n",
"
\n",
" \n",
" 29 | \n",
" 145 | \n",
" 61.310782 | \n",
" 0.010218 | \n",
" 0.007353 | \n",
" 0.004886 | \n",
" 0.000000 | \n",
" 0.004374 | \n",
" 0.001007 | \n",
" 0.000385 | \n",
" 4 | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 12 | \n",
" 357 | \n",
" 150.951374 | \n",
" 0.025159 | \n",
" 0.003676 | \n",
" 0.009772 | \n",
" 0.037694 | \n",
" 0.032258 | \n",
" 0.021819 | \n",
" 0.032743 | \n",
" 2 | \n",
" ... | \n",
" 88.0 | \n",
" 0.016150 | \n",
" 63.0 | \n",
" 0.016287 | \n",
" 57.0 | \n",
" 0.018352 | \n",
" 48.0 | \n",
" 0.027288 | \n",
" 36.0 | \n",
" 0.034188 | \n",
"
\n",
" \n",
" 3 | \n",
" 988 | \n",
" 417.758985 | \n",
" 0.069626 | \n",
" 0.011029 | \n",
" 0.011944 | \n",
" 0.054693 | \n",
" 0.031711 | \n",
" 0.055388 | \n",
" 0.075116 | \n",
" 6 | \n",
" ... | \n",
" 203.0 | \n",
" 0.037255 | \n",
" 293.0 | \n",
" 0.075750 | \n",
" 164.0 | \n",
" 0.052801 | \n",
" 38.0 | \n",
" 0.021603 | \n",
" 15.0 | \n",
" 0.014245 | \n",
"
\n",
" \n",
" 45 | \n",
" 10 | \n",
" 4.228330 | \n",
" 0.000705 | \n",
" 0.000000 | \n",
" 0.000543 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.001678 | \n",
" 0.000385 | \n",
" 0 | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 7 | \n",
" 542 | \n",
" 217.321572 | \n",
" 0.036220 | \n",
" 0.014706 | \n",
" 0.005972 | \n",
" 0.014782 | \n",
" 0.027884 | \n",
" 0.027190 | \n",
" 0.053929 | \n",
" 8 | \n",
" ... | \n",
" 123.0 | \n",
" 0.022573 | \n",
" 105.0 | \n",
" 0.027146 | \n",
" 119.0 | \n",
" 0.038313 | \n",
" 74.0 | \n",
" 0.042069 | \n",
" 50.0 | \n",
" 0.047483 | \n",
"
\n",
" \n",
" 10 | \n",
" 241 | \n",
" 96.631917 | \n",
" 0.016105 | \n",
" 0.000000 | \n",
" 0.017915 | \n",
" 0.003695 | \n",
" 0.019136 | \n",
" 0.025176 | \n",
" 0.012712 | \n",
" 0 | \n",
" ... | \n",
" 101.0 | \n",
" 0.018536 | \n",
" 11.0 | \n",
" 0.002844 | \n",
" 64.0 | \n",
" 0.020605 | \n",
" 17.0 | \n",
" 0.009665 | \n",
" 23.0 | \n",
" 0.021842 | \n",
"
\n",
" \n",
" 11 | \n",
" 482 | \n",
" 193.263833 | \n",
" 0.032211 | \n",
" 0.005515 | \n",
" 0.024973 | \n",
" 0.011086 | \n",
" 0.028431 | \n",
" 0.020141 | \n",
" 0.023498 | \n",
" 3 | \n",
" ... | \n",
" 64.0 | \n",
" 0.011745 | \n",
" 72.0 | \n",
" 0.018614 | \n",
" 36.0 | \n",
" 0.011590 | \n",
" 18.0 | \n",
" 0.010233 | \n",
" 7.0 | \n",
" 0.006648 | \n",
"
\n",
" \n",
" 14 | \n",
" 536 | \n",
" 214.915798 | \n",
" 0.035819 | \n",
" 0.000000 | \n",
" 0.024973 | \n",
" 0.001478 | \n",
" 0.016402 | \n",
" 0.022826 | \n",
" 0.005778 | \n",
" 0 | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 8 | \n",
" 75 | \n",
" 30.072173 | \n",
" 0.005012 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.002217 | \n",
" 0.010388 | \n",
" 0.020477 | \n",
" 0.026579 | \n",
" 0 | \n",
" ... | \n",
" 239.0 | \n",
" 0.043861 | \n",
" 337.0 | \n",
" 0.087125 | \n",
" 135.0 | \n",
" 0.043464 | \n",
" 99.0 | \n",
" 0.056282 | \n",
" 63.0 | \n",
" 0.059829 | \n",
"
\n",
" \n",
" 28 | \n",
" 127 | \n",
" 50.922213 | \n",
" 0.008487 | \n",
" 0.007353 | \n",
" 0.010315 | \n",
" 0.000739 | \n",
" 0.004921 | \n",
" 0.002685 | \n",
" 0.008475 | \n",
" 4 | \n",
" ... | \n",
" 4.0 | \n",
" 0.000734 | \n",
" 3.0 | \n",
" 0.000776 | \n",
" 31.0 | \n",
" 0.009981 | \n",
" 3.0 | \n",
" 0.001706 | \n",
" 17.0 | \n",
" 0.016144 | \n",
"
\n",
" \n",
" 5 | \n",
" 1527 | \n",
" 688.768606 | \n",
" 0.114795 | \n",
" 0.033088 | \n",
" 0.034745 | \n",
" 0.006652 | \n",
" 0.025150 | \n",
" 0.024841 | \n",
" 0.014638 | \n",
" 18 | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 31 | \n",
" 55 | \n",
" 24.808300 | \n",
" 0.004135 | \n",
" 0.000000 | \n",
" 0.001629 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.001678 | \n",
" 0.000385 | \n",
" 0 | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 16 | \n",
" 269 | \n",
" 121.335138 | \n",
" 0.020223 | \n",
" 0.011029 | \n",
" 0.009772 | \n",
" 0.000000 | \n",
" 0.048114 | \n",
" 0.027526 | \n",
" 0.014253 | \n",
" 6 | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 44 | \n",
" 5 | \n",
" 2.255300 | \n",
" 0.000376 | \n",
" 0.001838 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.001093 | \n",
" 0.000671 | \n",
" 0.000770 | \n",
" 1 | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 6 | \n",
" 11 | \n",
" 4.961660 | \n",
" 0.000827 | \n",
" 0.161765 | \n",
" 0.229642 | \n",
" 0.351811 | \n",
" 0.056862 | \n",
" 0.043639 | \n",
" 0.138675 | \n",
" 88 | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 21 | \n",
" 520 | \n",
" 223.559759 | \n",
" 0.037260 | \n",
" 0.018382 | \n",
" 0.021173 | \n",
" 0.005913 | \n",
" 0.006561 | \n",
" 0.008392 | \n",
" 0.002696 | \n",
" 10 | \n",
" ... | \n",
" 106.0 | \n",
" 0.019453 | \n",
" 6.0 | \n",
" 0.001551 | \n",
" 24.0 | \n",
" 0.007727 | \n",
" 45.0 | \n",
" 0.025583 | \n",
" 2.0 | \n",
" 0.001899 | \n",
"
\n",
" \n",
" 26 | \n",
" 220 | \n",
" 94.582975 | \n",
" 0.015764 | \n",
" 0.003676 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.001640 | \n",
" 0.002685 | \n",
" 0.001541 | \n",
" 2 | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 4 | \n",
" 908 | \n",
" 390.369733 | \n",
" 0.065062 | \n",
" 0.055147 | \n",
" 0.048317 | \n",
" 0.038433 | \n",
" 0.015856 | \n",
" 0.020477 | \n",
" 0.019646 | \n",
" 30 | \n",
" ... | \n",
" 196.0 | \n",
" 0.035970 | \n",
" 239.0 | \n",
" 0.061789 | \n",
" 133.0 | \n",
" 0.042820 | \n",
" 88.0 | \n",
" 0.050028 | \n",
" 31.0 | \n",
" 0.029440 | \n",
"
\n",
" \n",
" 40 | \n",
" 39 | \n",
" 16.766982 | \n",
" 0.002794 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.000000 | \n",
" 0.001007 | \n",
" 0.000000 | \n",
" 0 | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" 14.0 | \n",
" 0.003619 | \n",
" NaN | \n",
" NaN | \n",
" 1.0 | \n",
" 0.000569 | \n",
" 2.0 | \n",
" 0.001899 | \n",
"
\n",
" \n",
" 41 | \n",
" 74 | \n",
" 31.814273 | \n",
" 0.005302 | \n",
" 0.000000 | \n",
" 0.002172 | \n",
" 0.000000 | \n",
" 0.002187 | \n",
" 0.001678 | \n",
" 0.000000 | \n",
" 0 | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
35 rows × 27 columns
\n",
"
"
],
"text/plain": [
" exp1_abs exp1_norm exp1_perc exp2_Sample1_perc exp2_Sample2_perc \\\n",
"non 3183 1445.813375 0.240969 0.520221 0.328447 \n",
"18 82 44.711014 0.007452 0.014706 0.009229 \n",
"17 269 146.673937 0.024446 0.012868 0.017915 \n",
"15 222 121.046892 0.020174 0.038603 0.037459 \n",
"1 477 260.087241 0.043348 0.023897 0.072747 \n",
"13 57 31.079607 0.005180 0.001838 0.003257 \n",
"46 2 1.090513 0.000182 0.000000 0.006515 \n",
"2 1180 522.817900 0.087136 0.025735 0.021173 \n",
"19 309 136.907399 0.022818 0.001838 0.004343 \n",
"23 263 116.526362 0.019421 0.007353 0.021716 \n",
"9 100 44.306602 0.007384 0.001838 0.009772 \n",
"33 7 3.101462 0.000517 0.000000 0.000543 \n",
"39 1 0.443066 0.000074 0.000000 0.000000 \n",
"36 36 15.221987 0.002537 0.000000 0.000000 \n",
"24 174 73.572939 0.012262 0.016544 0.008143 \n",
"29 145 61.310782 0.010218 0.007353 0.004886 \n",
"12 357 150.951374 0.025159 0.003676 0.009772 \n",
"3 988 417.758985 0.069626 0.011029 0.011944 \n",
"45 10 4.228330 0.000705 0.000000 0.000543 \n",
"7 542 217.321572 0.036220 0.014706 0.005972 \n",
"10 241 96.631917 0.016105 0.000000 0.017915 \n",
"11 482 193.263833 0.032211 0.005515 0.024973 \n",
"14 536 214.915798 0.035819 0.000000 0.024973 \n",
"8 75 30.072173 0.005012 0.000000 0.000000 \n",
"28 127 50.922213 0.008487 0.007353 0.010315 \n",
"5 1527 688.768606 0.114795 0.033088 0.034745 \n",
"31 55 24.808300 0.004135 0.000000 0.001629 \n",
"16 269 121.335138 0.020223 0.011029 0.009772 \n",
"44 5 2.255300 0.000376 0.001838 0.000000 \n",
"6 11 4.961660 0.000827 0.161765 0.229642 \n",
"21 520 223.559759 0.037260 0.018382 0.021173 \n",
"26 220 94.582975 0.015764 0.003676 0.000000 \n",
"4 908 390.369733 0.065062 0.055147 0.048317 \n",
"40 39 16.766982 0.002794 0.000000 0.000000 \n",
"41 74 31.814273 0.005302 0.000000 0.002172 \n",
"\n",
" exp2_Sample3_perc exp2_Sample4_perc exp2_Sample5_perc \\\n",
"non 0.280118 0.399672 0.387714 \n",
"18 0.006652 0.028431 0.008728 \n",
"17 0.000000 0.019136 0.037932 \n",
"15 0.009608 0.010388 0.002014 \n",
"1 0.113821 0.064516 0.101376 \n",
"13 0.025129 0.007108 0.024841 \n",
"46 0.000000 0.000547 0.000000 \n",
"2 0.023651 0.075451 0.031219 \n",
"19 0.002217 0.011482 0.017456 \n",
"23 0.000000 0.004921 0.008056 \n",
"9 0.007391 0.033352 0.028533 \n",
"33 0.000739 0.001640 0.001007 \n",
"39 0.000000 0.000547 0.000336 \n",
"36 0.000000 0.002734 0.011078 \n",
"24 0.001478 0.007108 0.008728 \n",
"29 0.000000 0.004374 0.001007 \n",
"12 0.037694 0.032258 0.021819 \n",
"3 0.054693 0.031711 0.055388 \n",
"45 0.000000 0.000000 0.001678 \n",
"7 0.014782 0.027884 0.027190 \n",
"10 0.003695 0.019136 0.025176 \n",
"11 0.011086 0.028431 0.020141 \n",
"14 0.001478 0.016402 0.022826 \n",
"8 0.002217 0.010388 0.020477 \n",
"28 0.000739 0.004921 0.002685 \n",
"5 0.006652 0.025150 0.024841 \n",
"31 0.000000 0.000000 0.001678 \n",
"16 0.000000 0.048114 0.027526 \n",
"44 0.000000 0.001093 0.000671 \n",
"6 0.351811 0.056862 0.043639 \n",
"21 0.005913 0.006561 0.008392 \n",
"26 0.000000 0.001640 0.002685 \n",
"4 0.038433 0.015856 0.020477 \n",
"40 0.000000 0.000000 0.001007 \n",
"41 0.000000 0.002187 0.001678 \n",
"\n",
" exp2_Sample6_perc exp2_Sample1 ... exp3_Sample4 exp3_Sample4_perc \\\n",
"non 0.370185 283 ... 2023.0 0.371261 \n",
"18 0.016564 8 ... 41.0 0.007524 \n",
"17 0.013867 7 ... NaN NaN \n",
"15 0.006549 21 ... 62.0 0.011378 \n",
"1 0.033513 13 ... 1062.0 0.194898 \n",
"13 0.023498 1 ... 200.0 0.036704 \n",
"46 0.000385 0 ... NaN NaN \n",
"2 0.053544 14 ... 599.0 0.109928 \n",
"19 0.017334 1 ... 95.0 0.017434 \n",
"23 0.004237 4 ... NaN NaN \n",
"9 0.020031 1 ... 132.0 0.024225 \n",
"33 0.005008 0 ... 90.0 0.016517 \n",
"39 0.000000 0 ... 6.0 0.001101 \n",
"36 0.001926 0 ... NaN NaN \n",
"24 0.001156 9 ... 15.0 0.002753 \n",
"29 0.000385 4 ... NaN NaN \n",
"12 0.032743 2 ... 88.0 0.016150 \n",
"3 0.075116 6 ... 203.0 0.037255 \n",
"45 0.000385 0 ... NaN NaN \n",
"7 0.053929 8 ... 123.0 0.022573 \n",
"10 0.012712 0 ... 101.0 0.018536 \n",
"11 0.023498 3 ... 64.0 0.011745 \n",
"14 0.005778 0 ... NaN NaN \n",
"8 0.026579 0 ... 239.0 0.043861 \n",
"28 0.008475 4 ... 4.0 0.000734 \n",
"5 0.014638 18 ... NaN NaN \n",
"31 0.000385 0 ... NaN NaN \n",
"16 0.014253 6 ... NaN NaN \n",
"44 0.000770 1 ... NaN NaN \n",
"6 0.138675 88 ... NaN NaN \n",
"21 0.002696 10 ... 106.0 0.019453 \n",
"26 0.001541 2 ... NaN NaN \n",
"4 0.019646 30 ... 196.0 0.035970 \n",
"40 0.000000 0 ... NaN NaN \n",
"41 0.000000 0 ... NaN NaN \n",
"\n",
" exp3_Sample2 exp3_Sample2_perc exp3_Sample3 exp3_Sample3_perc \\\n",
"non 1593.0 0.411841 1144.0 0.368319 \n",
"18 8.0 0.002068 17.0 0.005473 \n",
"17 NaN NaN NaN NaN \n",
"15 10.0 0.002585 77.0 0.024791 \n",
"1 708.0 0.183040 516.0 0.166130 \n",
"13 142.0 0.036711 62.0 0.019961 \n",
"46 NaN NaN NaN NaN \n",
"2 124.0 0.032058 298.0 0.095943 \n",
"19 47.0 0.012151 52.0 0.016742 \n",
"23 NaN NaN NaN NaN \n",
"9 78.0 0.020165 150.0 0.048294 \n",
"33 1.0 0.000259 NaN NaN \n",
"39 4.0 0.001034 13.0 0.004185 \n",
"36 NaN NaN NaN NaN \n",
"24 10.0 0.002585 14.0 0.004507 \n",
"29 NaN NaN NaN NaN \n",
"12 63.0 0.016287 57.0 0.018352 \n",
"3 293.0 0.075750 164.0 0.052801 \n",
"45 NaN NaN NaN NaN \n",
"7 105.0 0.027146 119.0 0.038313 \n",
"10 11.0 0.002844 64.0 0.020605 \n",
"11 72.0 0.018614 36.0 0.011590 \n",
"14 NaN NaN NaN NaN \n",
"8 337.0 0.087125 135.0 0.043464 \n",
"28 3.0 0.000776 31.0 0.009981 \n",
"5 NaN NaN NaN NaN \n",
"31 NaN NaN NaN NaN \n",
"16 NaN NaN NaN NaN \n",
"44 NaN NaN NaN NaN \n",
"6 NaN NaN NaN NaN \n",
"21 6.0 0.001551 24.0 0.007727 \n",
"26 NaN NaN NaN NaN \n",
"4 239.0 0.061789 133.0 0.042820 \n",
"40 14.0 0.003619 NaN NaN \n",
"41 NaN NaN NaN NaN \n",
"\n",
" exp3_Sample5 exp3_Sample5_perc exp3_Sample6 exp3_Sample6_perc \n",
"non 582.0 0.330870 417.0 0.396011 \n",
"18 23.0 0.013076 13.0 0.012346 \n",
"17 NaN NaN NaN NaN \n",
"15 53.0 0.030131 22.0 0.020893 \n",
"1 219.0 0.124503 117.0 0.111111 \n",
"13 45.0 0.025583 19.0 0.018044 \n",
"46 NaN NaN NaN NaN \n",
"2 193.0 0.109721 121.0 0.114910 \n",
"19 42.0 0.023877 15.0 0.014245 \n",
"23 NaN NaN NaN NaN \n",
"9 153.0 0.086981 68.0 0.064577 \n",
"33 4.0 0.002274 1.0 0.000950 \n",
"39 NaN NaN NaN NaN \n",
"36 NaN NaN NaN NaN \n",
"24 14.0 0.007959 14.0 0.013295 \n",
"29 NaN NaN NaN NaN \n",
"12 48.0 0.027288 36.0 0.034188 \n",
"3 38.0 0.021603 15.0 0.014245 \n",
"45 NaN NaN NaN NaN \n",
"7 74.0 0.042069 50.0 0.047483 \n",
"10 17.0 0.009665 23.0 0.021842 \n",
"11 18.0 0.010233 7.0 0.006648 \n",
"14 NaN NaN NaN NaN \n",
"8 99.0 0.056282 63.0 0.059829 \n",
"28 3.0 0.001706 17.0 0.016144 \n",
"5 NaN NaN NaN NaN \n",
"31 NaN NaN NaN NaN \n",
"16 NaN NaN NaN NaN \n",
"44 NaN NaN NaN NaN \n",
"6 NaN NaN NaN NaN \n",
"21 45.0 0.025583 2.0 0.001899 \n",
"26 NaN NaN NaN NaN \n",
"4 88.0 0.050028 31.0 0.029440 \n",
"40 1.0 0.000569 2.0 0.001899 \n",
"41 NaN NaN NaN NaN \n",
"\n",
"[35 rows x 27 columns]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mf = meta_df[meta_df['experiment'] == 'exp3']\n",
"mf_vc = mf.value_counts(['clone','well'])\n",
"mf_vc\n",
"for clone,well in mf_vc.index:\n",
" pop_df.loc[clone, 'exp3_'+well] = mf_vc[(clone,well)]\n",
" pop_df['exp3_'+well+'_perc'] = pop_df['exp3_'+well] / pop_df['exp3_'+well].sum()\n",
"\n",
"pop_df"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "c870a93a",
"metadata": {},
"outputs": [],
"source": [
"pop_df.to_csv('population_changes.csv')"
]
},
{
"cell_type": "markdown",
"id": "5e216f18",
"metadata": {},
"source": [
"# Analyzing population changes from one experiment to the next."
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "b30ef0f8",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" exp2_Sample1 | \n",
" exp2_Sample2 | \n",
" exp2_Sample3 | \n",
" exp2_Sample4 | \n",
" exp2_Sample5 | \n",
" exp2_Sample6 | \n",
" exp3_Sample1 | \n",
" exp3_Sample2 | \n",
" exp3_Sample3 | \n",
" exp3_Sample4 | \n",
" exp3_Sample5 | \n",
" exp3_Sample6 | \n",
"
\n",
" \n",
" \n",
" \n",
" 18 | \n",
" 7.306887 | \n",
" 4.585647 | \n",
" 3.305111 | \n",
" 14.126382 | \n",
" 4.336548 | \n",
" 8.230099 | \n",
" 2.187293 | \n",
" 1.027649 | \n",
" 2.719498 | \n",
" 3.738594 | \n",
" 6.496857 | \n",
" 6.134177 | \n",
"
\n",
" \n",
" 17 | \n",
" 0.876617 | \n",
" 1.220492 | \n",
" 0.0 | \n",
" 1.303662 | \n",
" 2.584155 | \n",
" 0.944732 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 15 | \n",
" 3.421532 | \n",
" 3.320165 | \n",
" 0.85162 | \n",
" 0.920746 | \n",
" 0.178518 | \n",
" 0.580423 | \n",
" 0.692256 | \n",
" 0.229147 | \n",
" 2.1973 | \n",
" 1.008498 | \n",
" 2.670608 | \n",
" 1.851802 | \n",
"
\n",
" \n",
" 1 | \n",
" 0.784317 | \n",
" 2.387605 | \n",
" 3.735685 | \n",
" 2.117462 | \n",
" 3.327237 | \n",
" 1.099922 | \n",
" 2.964206 | \n",
" 6.007504 | \n",
" 5.452499 | \n",
" 6.396686 | \n",
" 4.086256 | \n",
" 3.64674 | \n",
"
\n",
" \n",
" 13 | \n",
" 1.838235 | \n",
" 3.257329 | \n",
" 25.129342 | \n",
" 7.107709 | \n",
" 24.840551 | \n",
" 23.497689 | \n",
" 26.838966 | \n",
" 36.711479 | \n",
" 19.961365 | \n",
" 36.703982 | \n",
" 25.582717 | \n",
" 18.043685 | \n",
"
\n",
" \n",
" 46 | \n",
" 0.0 | \n",
" 6.514658 | \n",
" 0.0 | \n",
" 0.546747 | \n",
" 0.0 | \n",
" 0.385208 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 2 | \n",
" 0.371367 | \n",
" 0.305526 | \n",
" 0.341292 | \n",
" 1.088778 | \n",
" 0.450491 | \n",
" 0.772652 | \n",
" 0.565571 | \n",
" 0.462604 | \n",
" 1.384486 | \n",
" 1.586295 | \n",
" 1.583308 | \n",
" 1.658177 | \n",
"
\n",
" \n",
" 19 | \n",
" 0.137449 | \n",
" 0.324745 | \n",
" 0.165793 | \n",
" 0.858514 | \n",
" 1.305192 | \n",
" 1.296133 | \n",
" 1.051189 | \n",
" 0.908559 | \n",
" 1.251825 | \n",
" 1.303612 | \n",
" 1.785357 | \n",
" 1.065135 | \n",
"
\n",
" \n",
" 23 | \n",
" 0.687628 | \n",
" 2.030779 | \n",
" 0.0 | \n",
" 0.460173 | \n",
" 0.753413 | \n",
" 0.39626 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 9 | \n",
" 0.933269 | \n",
" 4.961219 | \n",
" 3.752388 | \n",
" 16.932522 | \n",
" 14.486182 | \n",
" 10.169607 | \n",
" 17.01459 | \n",
" 10.237965 | \n",
" 24.51858 | \n",
" 12.298797 | \n",
" 44.160207 | \n",
" 32.78582 | \n",
"
\n",
" \n",
" 33 | \n",
" 0.0 | \n",
" 0.542888 | \n",
" 0.739098 | \n",
" 1.640241 | \n",
" 1.007049 | \n",
" 5.007704 | \n",
" 0.28401 | \n",
" 0.258532 | \n",
" NaN | \n",
" 16.516792 | \n",
" 2.274019 | \n",
" 0.949668 | \n",
"
\n",
" \n",
" 39 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.546747 | \n",
" 0.335683 | \n",
" 0.0 | \n",
" 3.550128 | \n",
" 1.034126 | \n",
" 4.185448 | \n",
" 1.101119 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 36 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 2.733734 | \n",
" 11.077543 | \n",
" 1.92604 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 24 | \n",
" 3.120498 | \n",
" 1.535967 | \n",
" 0.278813 | \n",
" 1.340633 | \n",
" 1.646202 | \n",
" 0.21797 | \n",
" 0.642829 | \n",
" 0.487634 | \n",
" 0.850172 | \n",
" 0.519224 | \n",
" 1.501214 | \n",
" 2.507725 | \n",
"
\n",
" \n",
" 29 | \n",
" 1.905921 | \n",
" 1.266475 | \n",
" 0.0 | \n",
" 1.133757 | \n",
" 0.261033 | \n",
" 0.099848 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 12 | \n",
" 0.241018 | \n",
" 0.640622 | \n",
" 2.471107 | \n",
" 2.114743 | \n",
" 1.430415 | \n",
" 2.146513 | \n",
" 1.089204 | \n",
" 1.067759 | \n",
" 1.203075 | \n",
" 1.05873 | \n",
" 1.788935 | \n",
" 2.241266 | \n",
"
\n",
" \n",
" 3 | \n",
" 0.206044 | \n",
" 0.223121 | \n",
" 1.021742 | \n",
" 0.592409 | \n",
" 1.034715 | \n",
" 1.403256 | \n",
" 0.586278 | \n",
" 1.415104 | \n",
" 0.986392 | \n",
" 0.695963 | \n",
" 0.403576 | \n",
" 0.266115 | \n",
"
\n",
" \n",
" 45 | \n",
" 0.0 | \n",
" 0.542888 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.678416 | \n",
" 0.385208 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 7 | \n",
" 0.602611 | \n",
" 0.244709 | \n",
" 0.605729 | \n",
" 1.142622 | \n",
" 1.114193 | \n",
" 2.209884 | \n",
" 0.907767 | \n",
" 1.112369 | \n",
" 1.569971 | \n",
" 0.924984 | \n",
" 1.723899 | \n",
" 1.945753 | \n",
"
\n",
" \n",
" 10 | \n",
" 0.0 | \n",
" 2.199836 | \n",
" 0.453773 | \n",
" 2.349743 | \n",
" 3.091412 | \n",
" 1.560901 | \n",
" 1.394954 | \n",
" 0.349198 | \n",
" 2.53014 | \n",
" 2.275992 | \n",
" 1.186722 | \n",
" 2.682042 | \n",
"
\n",
" \n",
" 11 | \n",
" 0.262055 | \n",
" 1.186694 | \n",
" 0.526822 | \n",
" 1.351015 | \n",
" 0.957086 | \n",
" 1.116595 | \n",
" 0.377887 | \n",
" 0.884538 | \n",
" 0.550772 | \n",
" 0.558128 | \n",
" 0.48627 | \n",
" 0.315893 | \n",
"
\n",
" \n",
" 14 | \n",
" 0.0 | \n",
" 1.037691 | \n",
" 0.061423 | \n",
" 0.681565 | \n",
" 0.948502 | \n",
" 0.240097 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 8 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 2.217295 | \n",
" 10.38819 | \n",
" 20.47667 | \n",
" 26.579353 | \n",
" 41.607498 | \n",
" 87.125129 | \n",
" 43.464263 | \n",
" 43.861259 | \n",
" 56.281978 | \n",
" 59.82906 | \n",
"
\n",
" \n",
" 28 | \n",
" 2.73821 | \n",
" 3.841224 | \n",
" 0.275238 | \n",
" 1.83246 | \n",
" 1.000058 | \n",
" 3.155903 | \n",
" 1.850877 | \n",
" 0.288829 | \n",
" 3.716772 | \n",
" 0.273369 | \n",
" 0.635128 | \n",
" 6.0121 | \n",
"
\n",
" \n",
" 5 | \n",
" 0.349645 | \n",
" 0.367151 | \n",
" 0.070291 | \n",
" 0.265765 | \n",
" 0.262492 | \n",
" 0.15468 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 31 | \n",
" 0.0 | \n",
" 1.628664 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.678416 | \n",
" 0.385208 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 16 | \n",
" 0.974327 | \n",
" 0.863247 | \n",
" 0.0 | \n",
" 4.250316 | \n",
" 2.431619 | \n",
" 1.259068 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 44 | \n",
" 1.838235 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.093494 | \n",
" 0.671366 | \n",
" 0.770416 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 6 | \n",
" 161.764706 | \n",
" 229.641694 | \n",
" 351.810791 | \n",
" 56.861673 | \n",
" 43.638805 | \n",
" 138.674884 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 21 | \n",
" 0.727111 | \n",
" 0.83748 | \n",
" 0.233879 | \n",
" 0.259518 | \n",
" 0.331947 | \n",
" 0.106658 | \n",
" 0.162893 | \n",
" 0.061357 | \n",
" 0.305639 | \n",
" 0.769464 | \n",
" 1.01192 | \n",
" 0.075128 | \n",
"
\n",
" \n",
" 26 | \n",
" 0.466206 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.207996 | \n",
" 0.340539 | \n",
" 0.19539 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 4 | \n",
" 1.114913 | \n",
" 0.97683 | \n",
" 0.777006 | \n",
" 0.320555 | \n",
" 0.413979 | \n",
" 0.397177 | \n",
" 1.099567 | \n",
" 1.249195 | \n",
" 0.865703 | \n",
" 0.727207 | \n",
" 1.01143 | \n",
" 0.595185 | \n",
"
\n",
" \n",
" 40 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.007049 | \n",
" 0.0 | \n",
" 0.710026 | \n",
" 3.619442 | \n",
" NaN | \n",
" NaN | \n",
" 0.568505 | \n",
" 1.899335 | \n",
"
\n",
" \n",
" 41 | \n",
" 0.0 | \n",
" 2.171553 | \n",
" 0.0 | \n",
" 2.186987 | \n",
" 1.678416 | \n",
" 0.0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" exp2_Sample1 exp2_Sample2 exp2_Sample3 exp2_Sample4 exp2_Sample5 \\\n",
"18 7.306887 4.585647 3.305111 14.126382 4.336548 \n",
"17 0.876617 1.220492 0.0 1.303662 2.584155 \n",
"15 3.421532 3.320165 0.85162 0.920746 0.178518 \n",
"1 0.784317 2.387605 3.735685 2.117462 3.327237 \n",
"13 1.838235 3.257329 25.129342 7.107709 24.840551 \n",
"46 0.0 6.514658 0.0 0.546747 0.0 \n",
"2 0.371367 0.305526 0.341292 1.088778 0.450491 \n",
"19 0.137449 0.324745 0.165793 0.858514 1.305192 \n",
"23 0.687628 2.030779 0.0 0.460173 0.753413 \n",
"9 0.933269 4.961219 3.752388 16.932522 14.486182 \n",
"33 0.0 0.542888 0.739098 1.640241 1.007049 \n",
"39 0.0 0.0 0.0 0.546747 0.335683 \n",
"36 0.0 0.0 0.0 2.733734 11.077543 \n",
"24 3.120498 1.535967 0.278813 1.340633 1.646202 \n",
"29 1.905921 1.266475 0.0 1.133757 0.261033 \n",
"12 0.241018 0.640622 2.471107 2.114743 1.430415 \n",
"3 0.206044 0.223121 1.021742 0.592409 1.034715 \n",
"45 0.0 0.542888 0.0 0.0 1.678416 \n",
"7 0.602611 0.244709 0.605729 1.142622 1.114193 \n",
"10 0.0 2.199836 0.453773 2.349743 3.091412 \n",
"11 0.262055 1.186694 0.526822 1.351015 0.957086 \n",
"14 0.0 1.037691 0.061423 0.681565 0.948502 \n",
"8 0.0 0.0 2.217295 10.38819 20.47667 \n",
"28 2.73821 3.841224 0.275238 1.83246 1.000058 \n",
"5 0.349645 0.367151 0.070291 0.265765 0.262492 \n",
"31 0.0 1.628664 0.0 0.0 1.678416 \n",
"16 0.974327 0.863247 0.0 4.250316 2.431619 \n",
"44 1.838235 0.0 0.0 1.093494 0.671366 \n",
"6 161.764706 229.641694 351.810791 56.861673 43.638805 \n",
"21 0.727111 0.83748 0.233879 0.259518 0.331947 \n",
"26 0.466206 0.0 0.0 0.207996 0.340539 \n",
"4 1.114913 0.97683 0.777006 0.320555 0.413979 \n",
"40 0.0 0.0 0.0 0.0 1.007049 \n",
"41 0.0 2.171553 0.0 2.186987 1.678416 \n",
"\n",
" exp2_Sample6 exp3_Sample1 exp3_Sample2 exp3_Sample3 exp3_Sample4 \\\n",
"18 8.230099 2.187293 1.027649 2.719498 3.738594 \n",
"17 0.944732 NaN NaN NaN NaN \n",
"15 0.580423 0.692256 0.229147 2.1973 1.008498 \n",
"1 1.099922 2.964206 6.007504 5.452499 6.396686 \n",
"13 23.497689 26.838966 36.711479 19.961365 36.703982 \n",
"46 0.385208 NaN NaN NaN NaN \n",
"2 0.772652 0.565571 0.462604 1.384486 1.586295 \n",
"19 1.296133 1.051189 0.908559 1.251825 1.303612 \n",
"23 0.39626 NaN NaN NaN NaN \n",
"9 10.169607 17.01459 10.237965 24.51858 12.298797 \n",
"33 5.007704 0.28401 0.258532 NaN 16.516792 \n",
"39 0.0 3.550128 1.034126 4.185448 1.101119 \n",
"36 1.92604 NaN NaN NaN NaN \n",
"24 0.21797 0.642829 0.487634 0.850172 0.519224 \n",
"29 0.099848 NaN NaN NaN NaN \n",
"12 2.146513 1.089204 1.067759 1.203075 1.05873 \n",
"3 1.403256 0.586278 1.415104 0.986392 0.695963 \n",
"45 0.385208 NaN NaN NaN NaN \n",
"7 2.209884 0.907767 1.112369 1.569971 0.924984 \n",
"10 1.560901 1.394954 0.349198 2.53014 2.275992 \n",
"11 1.116595 0.377887 0.884538 0.550772 0.558128 \n",
"14 0.240097 NaN NaN NaN NaN \n",
"8 26.579353 41.607498 87.125129 43.464263 43.861259 \n",
"28 3.155903 1.850877 0.288829 3.716772 0.273369 \n",
"5 0.15468 NaN NaN NaN NaN \n",
"31 0.385208 NaN NaN NaN NaN \n",
"16 1.259068 NaN NaN NaN NaN \n",
"44 0.770416 NaN NaN NaN NaN \n",
"6 138.674884 NaN NaN NaN NaN \n",
"21 0.106658 0.162893 0.061357 0.305639 0.769464 \n",
"26 0.19539 NaN NaN NaN NaN \n",
"4 0.397177 1.099567 1.249195 0.865703 0.727207 \n",
"40 0.0 0.710026 3.619442 NaN NaN \n",
"41 0.0 NaN NaN NaN NaN \n",
"\n",
" exp3_Sample5 exp3_Sample6 \n",
"18 6.496857 6.134177 \n",
"17 NaN NaN \n",
"15 2.670608 1.851802 \n",
"1 4.086256 3.64674 \n",
"13 25.582717 18.043685 \n",
"46 NaN NaN \n",
"2 1.583308 1.658177 \n",
"19 1.785357 1.065135 \n",
"23 NaN NaN \n",
"9 44.160207 32.78582 \n",
"33 2.274019 0.949668 \n",
"39 NaN NaN \n",
"36 NaN NaN \n",
"24 1.501214 2.507725 \n",
"29 NaN NaN \n",
"12 1.788935 2.241266 \n",
"3 0.403576 0.266115 \n",
"45 NaN NaN \n",
"7 1.723899 1.945753 \n",
"10 1.186722 2.682042 \n",
"11 0.48627 0.315893 \n",
"14 NaN NaN \n",
"8 56.281978 59.82906 \n",
"28 0.635128 6.0121 \n",
"5 NaN NaN \n",
"31 NaN NaN \n",
"16 NaN NaN \n",
"44 NaN NaN \n",
"6 NaN NaN \n",
"21 1.01192 0.075128 \n",
"26 NaN NaN \n",
"4 1.01143 0.595185 \n",
"40 0.568505 1.899335 \n",
"41 NaN NaN "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"afters = [experiment + '_' + sample for experiment in ['exp2','exp3'] for sample in samples]\n",
"\n",
"clones = [clone for clone in pop_df.index if clone != 'non']\n",
"\n",
"growth_max_df = pd.DataFrame(index = clones, columns = afters)\n",
"growth_min_df = pd.DataFrame(index = clones, columns = afters)\n",
"\n",
"for clone in clones:\n",
" c_perc = pop_df.loc[clone, 'exp1_perc']\n",
" std = np.sqrt(1000*c_perc*(1-c_perc))\n",
" N_low = (1000*c_perc) - 2*std # Low-end estimate from sampling\n",
" N_low = max(N_low, 1)\n",
" N_high = (1000*c_perc) + 2*std # High-end estimate from sampling.\n",
" for after in afters:\n",
" c_perc = pop_df.loc[clone, after+'_'+'perc']\n",
" growth_min_df.loc[clone,after] = 1000*c_perc / N_high # Low estimate of growth rate\n",
" growth_max_df.loc[clone,after] = 1000*c_perc / N_low # High estimate of growth rate\n",
" \n",
"growth_max_df"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "863a7bc4",
"metadata": {},
"outputs": [],
"source": [
"clones = pop_df['exp1_norm'][clones].sort_values(ascending=False).index # Sort by initial clone size."
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "e8c418b2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"exp2_Sample1 0.349645\n",
"exp2_Sample2 0.367151\n",
"exp2_Sample3 0.070291\n",
"exp2_Sample4 0.265765\n",
"exp2_Sample5 0.262492\n",
"exp2_Sample6 0.15468\n",
"Name: 5, dtype: object"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"growth_max_df.loc['5'].dropna(inplace=False)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "02486e9f",
"metadata": {},
"outputs": [],
"source": [
"clone = '5'"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "d772ec80",
"metadata": {},
"outputs": [],
"source": [
"def gr_plot(clone):\n",
" sns.set_style('white')\n",
" mins = growth_min_df.loc[clone].dropna(inplace=False)\n",
" maxs = growth_max_df.loc[clone].dropna(inplace=False)\n",
" fig,ax = plt.subplots(1,1,figsize=(len(mins)*0.4,2))\n",
" bot = int(np.floor(np.log10(0.001+mins.min())))\n",
" top = int(np.ceil(np.log10(0.001+maxs.max())))\n",
" yrange = [10**j for j in range(bot,top+1)]\n",
" plt.yscale('symlog', linthresh=10**(bot-1))\n",
" for j,after in enumerate(mins.index):\n",
" if maxs[after] == 0:\n",
" ax.plot([j,j], [0,0.0001], label=after, lw=5)\n",
" else:\n",
" ax.plot([j,j], [mins[after], maxs[after]], label=after, lw=5)\n",
" ax.axhline(1.0, color='lightgray')\n",
" ax.set_yticks([0]+yrange)\n",
" ax.set_yticklabels([0]+yrange)\n",
" ax.set_xticks(range(len(mins.index)))\n",
" ax.set_xticklabels(mins.index, rotation=90)\n",
" ax.set_title('Clone {}, {:1.2%} of Population'.format(clone, pop_df.loc[clone, 'exp1_perc']))\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "90cc30ee",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"