diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..052c273
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+.idea/*
+05_coeqtl_mapping/launch_sbatch_files.sh
diff --git a/01_association_metrics/.ipynb_checkpoints/GRNBoost2-checkpoint.ipynb b/01_association_metrics/.ipynb_checkpoints/GRNBoost2-checkpoint.ipynb
new file mode 100644
index 0000000..b1b9528
--- /dev/null
+++ b/01_association_metrics/.ipynb_checkpoints/GRNBoost2-checkpoint.ipynb
@@ -0,0 +1,349 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import matplotlib as mpl\n",
+ "mpl.rcParams['pdf.fonttype'] = 42\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "from pathlib import Path\n",
+ "import seaborn as sns\n",
+ "%matplotlib inline\n",
+ "%run dataset.ipynb\n",
+ "\n",
+ "def select_gene_nonzeroratio(df, ratio):\n",
+ " nonzerocounts = np.count_nonzero(df.values, axis=0) / df.shape[0]\n",
+ " selected_genes = df.columns[nonzerocounts > ratio]\n",
+ " return selected_genes"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "datasetname = 'onemillionv2'\n",
+ "dataset = DATASET(datasetname)\n",
+ "dataset.load_dataset()\n",
+ "data_sc = dataset.data_sc"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "395\n"
+ ]
+ }
+ ],
+ "source": [
+ "monocyte_ut = data_sc[(data_sc.obs['time']=='UT') & (data_sc.obs['cell_type_lowerres']=='monocyte')]\n",
+ "monocyte_ut_df = pd.DataFrame(data=monocyte_ut.X.toarray(),\n",
+ " index=monocyte_ut.obs.index,\n",
+ " columns=monocyte_ut.var.index)\n",
+ "mono_genes = select_gene_nonzeroratio(df=monocyte_ut_df, ratio=0.50)\n",
+ "print(len(mono_genes))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(11482, 379) (194, 379)\n"
+ ]
+ }
+ ],
+ "source": [
+ "bp_df = pd.read_csv('mono_gene_nor_combat_20151109.ProbesWithZeroVarianceRemoved.ProbesCentered.SamplesZTransformed.1PCAsOverSamplesRemoved.txt.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t', index_col=0)\n",
+ "name_mapping_dic = pd.read_csv('features_v3_reformated_names.tsv',\n",
+ " sep ='\\t',\n",
+ " names=['geneid', 'genename']).set_index(['geneid'])['genename'].T.to_dict()\n",
+ "\n",
+ "bp_df['geneid'] = [item.split('.')[0] for item in bp_df.index]\n",
+ "bp_df['genename'] = [name_mapping_dic.get(geneid) for geneid in bp_df['geneid']]\n",
+ "bp_df = bp_df.dropna(subset=['genename'])\n",
+ "bp_df = bp_df.drop('geneid', axis=1)\n",
+ "bp_df = bp_df.set_index('genename')\n",
+ "print(bp_df.shape)\n",
+ "\n",
+ "bp_trans_df = bp_df.T\n",
+ "common_genes = list(set(mono_genes) & set(bp_trans_df.columns))\n",
+ "selected_mono_df = monocyte_ut_df[common_genes]\n",
+ "selected_bp_df = bp_trans_df[common_genes]\n",
+ "print(selected_mono_df.shape, selected_bp_df.shape)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "selected_mono_df.T.to_csv('sc_Expression.csv', sep=',')\n",
+ "selected_bp_df.T.to_csv('bp_Expression.csv', sep=',')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# create this fake pseudo time ordering because it's required to run the Beeline tool, but not used by GRNBoost2\n",
+ "fake_timepoint_bp = pd.DataFrame(index=selected_bp_df.index)\n",
+ "fake_timepoint_bp['time'] = np.arange(selected_bp_df.shape[0])\n",
+ "fake_timepoint_bp.to_csv('bp_timepoint.fake.csv',\n",
+ " sep=',')\n",
+ "fake_timepoint_sc = pd.DataFrame(index=selected_mono_df.index)\n",
+ "fake_timepoint_sc['time'] = np.arange(selected_mono_df.shape[0])\n",
+ "fake_timepoint_sc.to_csv('sc_timepoint.fake.csv',\n",
+ " sep=',')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# perform GRNBoost2 with BEELINE, see the yaml files in the same directory\n",
+ "# python BLRunner.py --config config-files/config_bp_mono.yaml\n",
+ "# python BLRunner.py --config config-files/config_sc_mono.yaml"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Gene1_sc | \n",
+ " Gene2_sc | \n",
+ " EdgeWeight_sc | \n",
+ " Gene1_bp | \n",
+ " Gene2_bp | \n",
+ " EdgeWeight_bp | \n",
+ "
\n",
+ " \n",
+ " sorted_genepairs | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " CCL3;CCL4 | \n",
+ " CCL3 | \n",
+ " CCL4 | \n",
+ " 554.503642 | \n",
+ " CCL3 | \n",
+ " CCL4 | \n",
+ " 55.157748 | \n",
+ "
\n",
+ " \n",
+ " CCL4;CCL3 | \n",
+ " CCL4 | \n",
+ " CCL3 | \n",
+ " 480.484753 | \n",
+ " CCL4 | \n",
+ " CCL3 | \n",
+ " 77.414467 | \n",
+ "
\n",
+ " \n",
+ " S100A9;S100A8 | \n",
+ " S100A9 | \n",
+ " S100A8 | \n",
+ " 341.726427 | \n",
+ " S100A9 | \n",
+ " S100A8 | \n",
+ " 104.542395 | \n",
+ "
\n",
+ " \n",
+ " S100A8;S100A9 | \n",
+ " S100A8 | \n",
+ " S100A9 | \n",
+ " 284.321568 | \n",
+ " S100A8 | \n",
+ " S100A9 | \n",
+ " 65.915233 | \n",
+ "
\n",
+ " \n",
+ " S100A9;LYZ | \n",
+ " S100A9 | \n",
+ " LYZ | \n",
+ " 221.872616 | \n",
+ " S100A9 | \n",
+ " LYZ | \n",
+ " 0.149064 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Gene1_sc Gene2_sc EdgeWeight_sc Gene1_bp Gene2_bp \\\n",
+ "sorted_genepairs \n",
+ "CCL3;CCL4 CCL3 CCL4 554.503642 CCL3 CCL4 \n",
+ "CCL4;CCL3 CCL4 CCL3 480.484753 CCL4 CCL3 \n",
+ "S100A9;S100A8 S100A9 S100A8 341.726427 S100A9 S100A8 \n",
+ "S100A8;S100A9 S100A8 S100A9 284.321568 S100A8 S100A9 \n",
+ "S100A9;LYZ S100A9 LYZ 221.872616 S100A9 LYZ \n",
+ "\n",
+ " EdgeWeight_bp \n",
+ "sorted_genepairs \n",
+ "CCL3;CCL4 55.157748 \n",
+ "CCL4;CCL3 77.414467 \n",
+ "S100A9;S100A8 104.542395 \n",
+ "S100A8;S100A9 65.915233 \n",
+ "S100A9;LYZ 0.149064 "
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sc_edges = pd.read_csv('sc_edges.csv', sep='\\t')\n",
+ "sc_edges['sorted_genepairs'] = [';'.join(item) for item in sc_edges[['Gene1', 'Gene2']].values]\n",
+ "bp_edges = pd.read_csv('bp_edges.csv', sep='\\t')\n",
+ "bp_edges['sorted_genepairs'] = [';'.join(item) for item in bp_edges[['Gene1', 'Gene2']].values]\n",
+ "\n",
+ "sc_edges = sc_edges.set_index('sorted_genepairs')\n",
+ "bp_edges = bp_edges.set_index('sorted_genepairs')\n",
+ "concated_edges = pd.concat([sc_edges.add_suffix('_sc'), bp_edges.add_suffix('_bp')], axis=1)\n",
+ "\n",
+ "concated_edges.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "SpearmanrResult(correlation=0.16937964029402044, pvalue=0.0)"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "concated_edges = concated_edges.dropna()\n",
+ "spearmanr(concated_edges['EdgeWeight_sc'], concated_edges['EdgeWeight_bp'])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 1.0, 'Spearman r = 0.17')"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "coef, p = spearmanr(concated_edges['EdgeWeight_sc'], concated_edges['EdgeWeight_bp'])\n",
+ "plt.figure(figsize=(5, 5))\n",
+ "plt.scatter(concated_edges['EdgeWeight_sc'], concated_edges['EdgeWeight_bp'], s=1, alpha=0.5)\n",
+ "plt.xlabel('Edge weight from scRNAseq')\n",
+ "plt.ylabel('Edge weight from BLUEPRINT')\n",
+ "plt.title(f'Spearman r = {coef:.2f}')\n",
+ "# plt.savefig('grnboost2_sc_bp_comparison.png')"
+ ]
+ },
+ {
+ "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.7.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/01_association_metrics/.ipynb_checkpoints/compare_cell_classification-checkpoint.ipynb b/01_association_metrics/.ipynb_checkpoints/compare_cell_classification-checkpoint.ipynb
new file mode 100644
index 0000000..75b0224
--- /dev/null
+++ b/01_association_metrics/.ipynb_checkpoints/compare_cell_classification-checkpoint.ipynb
@@ -0,0 +1,1164 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "from scipy import stats\n",
+ "import pandas as pd\n",
+ "import matplotlib as mpl\n",
+ "mpl.rcParams['pdf.fonttype'] = 42\n",
+ "import numpy as np\n",
+ "%matplotlib inline"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%run dataset.ipynb"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "onemillionv2 = DATASET('onemillionv2')\n",
+ "onemillionv2.load_dataset()\n",
+ "\n",
+ "onemillionv3 = DATASET('onemillionv3')\n",
+ "onemillionv3.load_dataset()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "data_sc = onemillionv2.data_sc[onemillionv2.data_sc.obs['time']=='UT']\n",
+ "data_obs = data_sc.obs"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " orig.ident | \n",
+ " nCount_RNA | \n",
+ " nFeature_RNA | \n",
+ " batch | \n",
+ " lane | \n",
+ " chem | \n",
+ " exp.id | \n",
+ " timepoint | \n",
+ " percent.mt | \n",
+ " nCount_SCT | \n",
+ " nFeature_SCT | \n",
+ " cell_type | \n",
+ " cell_type_lowerres | \n",
+ " assignment | \n",
+ " bare_barcode_lane | \n",
+ " time | \n",
+ "
\n",
+ " \n",
+ " index | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " AAACCTGAGAGTACAT_180925_lane1 | \n",
+ " 1M_cells | \n",
+ " 5190.0 | \n",
+ " 1518 | \n",
+ " 180925_lane1 | \n",
+ " 180925_lane1 | \n",
+ " V2 | \n",
+ " 2 | \n",
+ " UT | \n",
+ " 1.560694 | \n",
+ " 3297.0 | \n",
+ " 1438 | \n",
+ " mono 2 | \n",
+ " monocyte | \n",
+ " LLDeep_1370 | \n",
+ " AAACCTGAGAGTACAT_180925_lane1 | \n",
+ " UT | \n",
+ "
\n",
+ " \n",
+ " AAACCTGAGTGTCTCA_180925_lane1 | \n",
+ " 1M_cells | \n",
+ " 5597.0 | \n",
+ " 1652 | \n",
+ " 180925_lane1 | \n",
+ " 180925_lane1 | \n",
+ " V2 | \n",
+ " 12 | \n",
+ " UT | \n",
+ " 3.394676 | \n",
+ " 3353.0 | \n",
+ " 1507 | \n",
+ " th1 CD4T | \n",
+ " CD4T | \n",
+ " LLDeep_0434 | \n",
+ " AAACCTGAGTGTCTCA_180925_lane1 | \n",
+ " UT | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCAGTCGATT_180925_lane1 | \n",
+ " 1M_cells | \n",
+ " 3039.0 | \n",
+ " 849 | \n",
+ " 180925_lane1 | \n",
+ " 180925_lane1 | \n",
+ " V2 | \n",
+ " 11 | \n",
+ " UT | \n",
+ " 3.685423 | \n",
+ " 2786.0 | \n",
+ " 849 | \n",
+ " naive CD8T | \n",
+ " CD8T | \n",
+ " LLDeep_1319 | \n",
+ " AAACCTGCAGTCGATT_180925_lane1 | \n",
+ " UT | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCATTCGACA_180925_lane1 | \n",
+ " 1M_cells | \n",
+ " 3876.0 | \n",
+ " 1048 | \n",
+ " 180925_lane1 | \n",
+ " 180925_lane1 | \n",
+ " V2 | \n",
+ " 2 | \n",
+ " UT | \n",
+ " 3.766770 | \n",
+ " 2996.0 | \n",
+ " 1047 | \n",
+ " mono 1 | \n",
+ " monocyte | \n",
+ " LLDeep_1370 | \n",
+ " AAACCTGCATTCGACA_180925_lane1 | \n",
+ " UT | \n",
+ "
\n",
+ " \n",
+ " AAACCTGGTAATAGCA_180925_lane1 | \n",
+ " 1M_cells | \n",
+ " 4272.0 | \n",
+ " 1141 | \n",
+ " 180925_lane1 | \n",
+ " 180925_lane1 | \n",
+ " V2 | \n",
+ " 12 | \n",
+ " UT | \n",
+ " 4.564607 | \n",
+ " 3076.0 | \n",
+ " 1131 | \n",
+ " mono 1 | \n",
+ " monocyte | \n",
+ " LLDeep_0434 | \n",
+ " AAACCTGGTAATAGCA_180925_lane1 | \n",
+ " UT | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " orig.ident nCount_RNA nFeature_RNA \\\n",
+ "index \n",
+ "AAACCTGAGAGTACAT_180925_lane1 1M_cells 5190.0 1518 \n",
+ "AAACCTGAGTGTCTCA_180925_lane1 1M_cells 5597.0 1652 \n",
+ "AAACCTGCAGTCGATT_180925_lane1 1M_cells 3039.0 849 \n",
+ "AAACCTGCATTCGACA_180925_lane1 1M_cells 3876.0 1048 \n",
+ "AAACCTGGTAATAGCA_180925_lane1 1M_cells 4272.0 1141 \n",
+ "\n",
+ " batch lane chem exp.id \\\n",
+ "index \n",
+ "AAACCTGAGAGTACAT_180925_lane1 180925_lane1 180925_lane1 V2 2 \n",
+ "AAACCTGAGTGTCTCA_180925_lane1 180925_lane1 180925_lane1 V2 12 \n",
+ "AAACCTGCAGTCGATT_180925_lane1 180925_lane1 180925_lane1 V2 11 \n",
+ "AAACCTGCATTCGACA_180925_lane1 180925_lane1 180925_lane1 V2 2 \n",
+ "AAACCTGGTAATAGCA_180925_lane1 180925_lane1 180925_lane1 V2 12 \n",
+ "\n",
+ " timepoint percent.mt nCount_SCT nFeature_SCT \\\n",
+ "index \n",
+ "AAACCTGAGAGTACAT_180925_lane1 UT 1.560694 3297.0 1438 \n",
+ "AAACCTGAGTGTCTCA_180925_lane1 UT 3.394676 3353.0 1507 \n",
+ "AAACCTGCAGTCGATT_180925_lane1 UT 3.685423 2786.0 849 \n",
+ "AAACCTGCATTCGACA_180925_lane1 UT 3.766770 2996.0 1047 \n",
+ "AAACCTGGTAATAGCA_180925_lane1 UT 4.564607 3076.0 1131 \n",
+ "\n",
+ " cell_type cell_type_lowerres assignment \\\n",
+ "index \n",
+ "AAACCTGAGAGTACAT_180925_lane1 mono 2 monocyte LLDeep_1370 \n",
+ "AAACCTGAGTGTCTCA_180925_lane1 th1 CD4T CD4T LLDeep_0434 \n",
+ "AAACCTGCAGTCGATT_180925_lane1 naive CD8T CD8T LLDeep_1319 \n",
+ "AAACCTGCATTCGACA_180925_lane1 mono 1 monocyte LLDeep_1370 \n",
+ "AAACCTGGTAATAGCA_180925_lane1 mono 1 monocyte LLDeep_0434 \n",
+ "\n",
+ " bare_barcode_lane time \n",
+ "index \n",
+ "AAACCTGAGAGTACAT_180925_lane1 AAACCTGAGAGTACAT_180925_lane1 UT \n",
+ "AAACCTGAGTGTCTCA_180925_lane1 AAACCTGAGTGTCTCA_180925_lane1 UT \n",
+ "AAACCTGCAGTCGATT_180925_lane1 AAACCTGCAGTCGATT_180925_lane1 UT \n",
+ "AAACCTGCATTCGACA_180925_lane1 AAACCTGCATTCGACA_180925_lane1 UT \n",
+ "AAACCTGGTAATAGCA_180925_lane1 AAACCTGGTAATAGCA_180925_lane1 UT "
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data_obs.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "celltypes = ['CD4T', 'CD8T', 'monocyte', 'NK', 'DC', 'B']\n",
+ "plot_df = data_obs['cell_type_lowerres'].value_counts(normalize=True).loc[celltypes]\n",
+ "plt.bar(x=plot_df.index, height=plot_df.values)\n",
+ "plt.ylim([0, 0.40])\n",
+ "plt.savefig('cell_abundance_oelenv2.pdf')\n",
+ "plt.savefig('cell_abundance_oelenv2.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " predicted.celltype.l1 | \n",
+ " predicted.celltype.l1.score | \n",
+ " predicted.celltype.l2 | \n",
+ " predicted.celltype.l2.score | \n",
+ "
\n",
+ " \n",
+ " barcode | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " AAACCTGAGAAACCAT_180920_lane1 | \n",
+ " CD8 T | \n",
+ " 0.755924 | \n",
+ " CD8 TEM | \n",
+ " 0.755924 | \n",
+ "
\n",
+ " \n",
+ " AAACCTGAGTAGCCGA_180920_lane1 | \n",
+ " Mono | \n",
+ " 1.000000 | \n",
+ " CD16 Mono | \n",
+ " 1.000000 | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCAATCTACG_180920_lane1 | \n",
+ " NK | \n",
+ " 1.000000 | \n",
+ " NK | \n",
+ " 1.000000 | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCACATCCAA_180920_lane1 | \n",
+ " other | \n",
+ " 0.546320 | \n",
+ " ILC | \n",
+ " 0.546320 | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCAGCTCGAC_180920_lane1 | \n",
+ " NK | \n",
+ " 0.733094 | \n",
+ " NK | \n",
+ " 0.733094 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " predicted.celltype.l1 \\\n",
+ "barcode \n",
+ "AAACCTGAGAAACCAT_180920_lane1 CD8 T \n",
+ "AAACCTGAGTAGCCGA_180920_lane1 Mono \n",
+ "AAACCTGCAATCTACG_180920_lane1 NK \n",
+ "AAACCTGCACATCCAA_180920_lane1 other \n",
+ "AAACCTGCAGCTCGAC_180920_lane1 NK \n",
+ "\n",
+ " predicted.celltype.l1.score \\\n",
+ "barcode \n",
+ "AAACCTGAGAAACCAT_180920_lane1 0.755924 \n",
+ "AAACCTGAGTAGCCGA_180920_lane1 1.000000 \n",
+ "AAACCTGCAATCTACG_180920_lane1 1.000000 \n",
+ "AAACCTGCACATCCAA_180920_lane1 0.546320 \n",
+ "AAACCTGCAGCTCGAC_180920_lane1 0.733094 \n",
+ "\n",
+ " predicted.celltype.l2 \\\n",
+ "barcode \n",
+ "AAACCTGAGAAACCAT_180920_lane1 CD8 TEM \n",
+ "AAACCTGAGTAGCCGA_180920_lane1 CD16 Mono \n",
+ "AAACCTGCAATCTACG_180920_lane1 NK \n",
+ "AAACCTGCACATCCAA_180920_lane1 ILC \n",
+ "AAACCTGCAGCTCGAC_180920_lane1 NK \n",
+ "\n",
+ " predicted.celltype.l2.score \n",
+ "barcode \n",
+ "AAACCTGAGAAACCAT_180920_lane1 0.755924 \n",
+ "AAACCTGAGTAGCCGA_180920_lane1 1.000000 \n",
+ "AAACCTGCAATCTACG_180920_lane1 1.000000 \n",
+ "AAACCTGCACATCCAA_180920_lane1 0.546320 \n",
+ "AAACCTGCAGCTCGAC_180920_lane1 0.733094 "
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "azimuith_df = pd.read_csv(\n",
+ " '1M_v2_20201029_azimuth.tsv',\n",
+ " sep='\\t', index_col=0\n",
+ ")\n",
+ "azimuith_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['monocyte', 'CD4T', 'CD8T', 'NK', 'megakaryocyte', 'B', 'DC', 'plasma B', 'unknown', 'hemapoietic stem']\n",
+ "Categories (10, object): ['B', 'hemapoietic stem', 'megakaryocyte', 'NK', ..., 'CD4T', 'CD8T', 'monocyte', 'DC']"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data_obs['cell_type_lowerres'].unique()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array(['CD8 T', 'Mono', 'NK', 'other', 'CD4 T', 'DC', 'B', 'other T'],\n",
+ " dtype=object)"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "azimuith_df['predicted.celltype.l1'].unique()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " predicted.celltype.l1 | \n",
+ " predicted.celltype.l1.score | \n",
+ " predicted.celltype.l2 | \n",
+ " predicted.celltype.l2.score | \n",
+ " cell_type_mapped | \n",
+ "
\n",
+ " \n",
+ " barcode | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " AAACCTGAGAAACCAT_180920_lane1 | \n",
+ " CD8 T | \n",
+ " 0.755924 | \n",
+ " CD8 TEM | \n",
+ " 0.755924 | \n",
+ " CD8T | \n",
+ "
\n",
+ " \n",
+ " AAACCTGAGTAGCCGA_180920_lane1 | \n",
+ " Mono | \n",
+ " 1.000000 | \n",
+ " CD16 Mono | \n",
+ " 1.000000 | \n",
+ " monocyte | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCAATCTACG_180920_lane1 | \n",
+ " NK | \n",
+ " 1.000000 | \n",
+ " NK | \n",
+ " 1.000000 | \n",
+ " NK | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCACATCCAA_180920_lane1 | \n",
+ " other | \n",
+ " 0.546320 | \n",
+ " ILC | \n",
+ " 0.546320 | \n",
+ " None | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCAGCTCGAC_180920_lane1 | \n",
+ " NK | \n",
+ " 0.733094 | \n",
+ " NK | \n",
+ " 0.733094 | \n",
+ " NK | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " predicted.celltype.l1 \\\n",
+ "barcode \n",
+ "AAACCTGAGAAACCAT_180920_lane1 CD8 T \n",
+ "AAACCTGAGTAGCCGA_180920_lane1 Mono \n",
+ "AAACCTGCAATCTACG_180920_lane1 NK \n",
+ "AAACCTGCACATCCAA_180920_lane1 other \n",
+ "AAACCTGCAGCTCGAC_180920_lane1 NK \n",
+ "\n",
+ " predicted.celltype.l1.score \\\n",
+ "barcode \n",
+ "AAACCTGAGAAACCAT_180920_lane1 0.755924 \n",
+ "AAACCTGAGTAGCCGA_180920_lane1 1.000000 \n",
+ "AAACCTGCAATCTACG_180920_lane1 1.000000 \n",
+ "AAACCTGCACATCCAA_180920_lane1 0.546320 \n",
+ "AAACCTGCAGCTCGAC_180920_lane1 0.733094 \n",
+ "\n",
+ " predicted.celltype.l2 \\\n",
+ "barcode \n",
+ "AAACCTGAGAAACCAT_180920_lane1 CD8 TEM \n",
+ "AAACCTGAGTAGCCGA_180920_lane1 CD16 Mono \n",
+ "AAACCTGCAATCTACG_180920_lane1 NK \n",
+ "AAACCTGCACATCCAA_180920_lane1 ILC \n",
+ "AAACCTGCAGCTCGAC_180920_lane1 NK \n",
+ "\n",
+ " predicted.celltype.l2.score cell_type_mapped \n",
+ "barcode \n",
+ "AAACCTGAGAAACCAT_180920_lane1 0.755924 CD8T \n",
+ "AAACCTGAGTAGCCGA_180920_lane1 1.000000 monocyte \n",
+ "AAACCTGCAATCTACG_180920_lane1 1.000000 NK \n",
+ "AAACCTGCACATCCAA_180920_lane1 0.546320 None \n",
+ "AAACCTGCAGCTCGAC_180920_lane1 0.733094 NK "
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "mapping_names = {'CD8 T': 'CD8T', \n",
+ " 'CD4 T': 'CD4T',\n",
+ " 'Mono': 'monocyte',\n",
+ " 'NK': 'NK',\n",
+ " 'B': 'B',\n",
+ " 'DC': 'DC'}\n",
+ "azimuith_df['cell_type_mapped'] = [mapping_names.get(name) for name in \n",
+ " azimuith_df['predicted.celltype.l1']]\n",
+ "azimuith_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " cell_type_lowerres | \n",
+ " cell_type_mapped | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " AAACCTGAGAGTACAT_180925_lane1 | \n",
+ " monocyte | \n",
+ " monocyte | \n",
+ "
\n",
+ " \n",
+ " AAACCTGAGTGTCTCA_180925_lane1 | \n",
+ " CD4T | \n",
+ " CD4T | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCAGTCGATT_180925_lane1 | \n",
+ " CD8T | \n",
+ " CD8T | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCATTCGACA_180925_lane1 | \n",
+ " monocyte | \n",
+ " monocyte | \n",
+ "
\n",
+ " \n",
+ " AAACCTGGTAATAGCA_180925_lane1 | \n",
+ " monocyte | \n",
+ " monocyte | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " cell_type_lowerres cell_type_mapped\n",
+ "AAACCTGAGAGTACAT_180925_lane1 monocyte monocyte\n",
+ "AAACCTGAGTGTCTCA_180925_lane1 CD4T CD4T\n",
+ "AAACCTGCAGTCGATT_180925_lane1 CD8T CD8T\n",
+ "AAACCTGCATTCGACA_180925_lane1 monocyte monocyte\n",
+ "AAACCTGGTAATAGCA_180925_lane1 monocyte monocyte"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "merged_classification_df = pd.concat([data_obs[['cell_type_lowerres']],\n",
+ " azimuith_df[['cell_type_mapped']]],\n",
+ " axis=1).dropna()\n",
+ "merged_classification_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "celltypes = ['CD4T', 'CD8T', 'monocyte', 'DC', 'NK', 'B']\n",
+ "accuracy_df = pd.DataFrame(\n",
+ " data=np.zeros((6, 6)),\n",
+ " index=celltypes,\n",
+ " columns=celltypes\n",
+ ")\n",
+ "for celltype_onemillionv2 in celltypes:\n",
+ " for celltype_azimuth in celltypes:\n",
+ " common_classification_num = merged_classification_df[\n",
+ " (merged_classification_df['cell_type_lowerres']==celltype_onemillionv2) & \n",
+ " (merged_classification_df['cell_type_mapped']==celltype_azimuth)\n",
+ " ].shape[0]\n",
+ " onemillion_classification_num = merged_classification_df[\n",
+ " (merged_classification_df['cell_type_lowerres']==celltype_onemillionv2)\n",
+ " ].shape[0]\n",
+ " azimuth_classification_num = merged_classification_df[\n",
+ " (merged_classification_df['cell_type_mapped']==celltype_azimuth)\n",
+ " ].shape[0]\n",
+ " accuracy_df[celltype_onemillionv2].loc[celltype_azimuth] = common_classification_num/onemillion_classification_num"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.figure(figsize=(6, 5))\n",
+ "sns.heatmap(accuracy_df, vmin=0, vmax=1,\n",
+ " cmap=\"YlGnBu\", \n",
+ " annot=True, annot_kws={\"size\": 10},\n",
+ " fmt='.2f')\n",
+ "plt.xlabel('Cell type in Oelen v2')\n",
+ "plt.ylabel('Cell type by Azimuth Algorithm')\n",
+ "plt.savefig('marker_gene_azimuth_classification.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " predicted.celltype.l1 | \n",
+ " predicted.celltype.l1.score | \n",
+ " predicted.celltype.l2 | \n",
+ " predicted.celltype.l2.score | \n",
+ "
\n",
+ " \n",
+ " barcode | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " AAACCCAAGATACCAA_190109_lane1 | \n",
+ " CD8 T | \n",
+ " 0.981818 | \n",
+ " CD8 Naive | \n",
+ " 0.955707 | \n",
+ "
\n",
+ " \n",
+ " AAACCCAAGTCCCTAA_190109_lane1 | \n",
+ " CD4 T | \n",
+ " 0.379819 | \n",
+ " CD4 CTL | \n",
+ " 0.327444 | \n",
+ "
\n",
+ " \n",
+ " AAACCCACAAGAGTGC_190109_lane1 | \n",
+ " CD4 T | \n",
+ " 0.740111 | \n",
+ " CD4 Naive | \n",
+ " 0.723822 | \n",
+ "
\n",
+ " \n",
+ " AAACCCACAATCCAGT_190109_lane1 | \n",
+ " CD4 T | \n",
+ " 0.916869 | \n",
+ " CD4 TCM | \n",
+ " 0.468549 | \n",
+ "
\n",
+ " \n",
+ " AAACCCACACTATCCC_190109_lane1 | \n",
+ " Mono | \n",
+ " 1.000000 | \n",
+ " CD14 Mono | \n",
+ " 1.000000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " predicted.celltype.l1 \\\n",
+ "barcode \n",
+ "AAACCCAAGATACCAA_190109_lane1 CD8 T \n",
+ "AAACCCAAGTCCCTAA_190109_lane1 CD4 T \n",
+ "AAACCCACAAGAGTGC_190109_lane1 CD4 T \n",
+ "AAACCCACAATCCAGT_190109_lane1 CD4 T \n",
+ "AAACCCACACTATCCC_190109_lane1 Mono \n",
+ "\n",
+ " predicted.celltype.l1.score \\\n",
+ "barcode \n",
+ "AAACCCAAGATACCAA_190109_lane1 0.981818 \n",
+ "AAACCCAAGTCCCTAA_190109_lane1 0.379819 \n",
+ "AAACCCACAAGAGTGC_190109_lane1 0.740111 \n",
+ "AAACCCACAATCCAGT_190109_lane1 0.916869 \n",
+ "AAACCCACACTATCCC_190109_lane1 1.000000 \n",
+ "\n",
+ " predicted.celltype.l2 \\\n",
+ "barcode \n",
+ "AAACCCAAGATACCAA_190109_lane1 CD8 Naive \n",
+ "AAACCCAAGTCCCTAA_190109_lane1 CD4 CTL \n",
+ "AAACCCACAAGAGTGC_190109_lane1 CD4 Naive \n",
+ "AAACCCACAATCCAGT_190109_lane1 CD4 TCM \n",
+ "AAACCCACACTATCCC_190109_lane1 CD14 Mono \n",
+ "\n",
+ " predicted.celltype.l2.score \n",
+ "barcode \n",
+ "AAACCCAAGATACCAA_190109_lane1 0.955707 \n",
+ "AAACCCAAGTCCCTAA_190109_lane1 0.327444 \n",
+ "AAACCCACAAGAGTGC_190109_lane1 0.723822 \n",
+ "AAACCCACAATCCAGT_190109_lane1 0.468549 \n",
+ "AAACCCACACTATCCC_190109_lane1 1.000000 "
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "azimuith_df_v3 = pd.read_csv(\n",
+ " '1M_v3_20201106_azimuth.tsv',\n",
+ " sep='\\t', index_col=0\n",
+ ")\n",
+ "azimuith_df_v3.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "mapping_names = {'CD8 T': 'CD8T', \n",
+ " 'CD4 T': 'CD4T',\n",
+ " 'Mono': 'monocyte',\n",
+ " 'NK': 'NK',\n",
+ " 'B': 'B',\n",
+ " 'DC': 'DC'}\n",
+ "azimuith_df_v3['cell_type_mapped'] = [mapping_names.get(name) for name in \n",
+ " azimuith_df_v3['predicted.celltype.l1']]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "data_scv3 = onemillionv3.data_sc[onemillionv3.data_sc.obs['time']=='UT']\n",
+ "data_obsv3 = data_scv3.obs"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " cell_type_lowerres | \n",
+ " cell_type_mapped | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " AAACCCAAGATACCAA_190109_lane1 | \n",
+ " CD4T | \n",
+ " CD8T | \n",
+ "
\n",
+ " \n",
+ " AAACCCACAAGAGTGC_190109_lane1 | \n",
+ " CD4T | \n",
+ " CD4T | \n",
+ "
\n",
+ " \n",
+ " AAACCCACAATCCAGT_190109_lane1 | \n",
+ " CD4T | \n",
+ " CD4T | \n",
+ "
\n",
+ " \n",
+ " AAACCCACAGGTACGA_190109_lane1 | \n",
+ " CD4T | \n",
+ " CD4T | \n",
+ "
\n",
+ " \n",
+ " AAACCCAGTCTACGTA_190109_lane1 | \n",
+ " CD4T | \n",
+ " CD4T | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " cell_type_lowerres cell_type_mapped\n",
+ "AAACCCAAGATACCAA_190109_lane1 CD4T CD8T\n",
+ "AAACCCACAAGAGTGC_190109_lane1 CD4T CD4T\n",
+ "AAACCCACAATCCAGT_190109_lane1 CD4T CD4T\n",
+ "AAACCCACAGGTACGA_190109_lane1 CD4T CD4T\n",
+ "AAACCCAGTCTACGTA_190109_lane1 CD4T CD4T"
+ ]
+ },
+ "execution_count": 28,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "merged_classification_df_v3 = pd.concat([data_obsv3[['cell_type_lowerres']],\n",
+ " azimuith_df_v3[['cell_type_mapped']]],\n",
+ " axis=1).dropna()\n",
+ "merged_classification_df_v3.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "celltypes = ['CD4T', 'CD8T', 'monocyte', 'DC', 'NK', 'B']\n",
+ "accuracy_df_v3 = pd.DataFrame(\n",
+ " data=np.zeros((6, 6)),\n",
+ " index=celltypes,\n",
+ " columns=celltypes\n",
+ ")\n",
+ "for celltype_onemillionv2 in celltypes:\n",
+ " for celltype_azimuth in celltypes:\n",
+ " common_classification_num = merged_classification_df_v3[\n",
+ " (merged_classification_df_v3['cell_type_lowerres']==celltype_onemillionv2) & \n",
+ " (merged_classification_df_v3['cell_type_mapped']==celltype_azimuth)\n",
+ " ].shape[0]\n",
+ " onemillion_classification_num = merged_classification_df_v3[\n",
+ " (merged_classification_df_v3['cell_type_lowerres']==celltype_onemillionv2)\n",
+ " ].shape[0]\n",
+ " azimuth_classification_num = merged_classification_df_v3[\n",
+ " (merged_classification_df_v3['cell_type_mapped']==celltype_azimuth)\n",
+ " ].shape[0]\n",
+ " accuracy_df_v3[celltype_onemillionv2].loc[celltype_azimuth] = common_classification_num/onemillion_classification_num"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " CD4T | \n",
+ " CD8T | \n",
+ " monocyte | \n",
+ " DC | \n",
+ " NK | \n",
+ " B | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " CD4T | \n",
+ " 0.952222 | \n",
+ " 0.157213 | \n",
+ " 0.003671 | \n",
+ " 0.001845 | \n",
+ " 0.016403 | \n",
+ " 0.001099 | \n",
+ "
\n",
+ " \n",
+ " CD8T | \n",
+ " 0.046923 | \n",
+ " 0.787428 | \n",
+ " 0.001606 | \n",
+ " 0.000000 | \n",
+ " 0.014666 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " monocyte | \n",
+ " 0.000513 | \n",
+ " 0.000409 | \n",
+ " 0.993346 | \n",
+ " 0.177122 | \n",
+ " 0.000386 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " DC | \n",
+ " 0.000085 | \n",
+ " 0.000000 | \n",
+ " 0.000574 | \n",
+ " 0.821033 | \n",
+ " 0.000193 | \n",
+ " 0.001099 | \n",
+ "
\n",
+ " \n",
+ " NK | \n",
+ " 0.000256 | \n",
+ " 0.054950 | \n",
+ " 0.000688 | \n",
+ " 0.000000 | \n",
+ " 0.968352 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " B | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.000115 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.997802 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " CD4T CD8T monocyte DC NK B\n",
+ "CD4T 0.952222 0.157213 0.003671 0.001845 0.016403 0.001099\n",
+ "CD8T 0.046923 0.787428 0.001606 0.000000 0.014666 0.000000\n",
+ "monocyte 0.000513 0.000409 0.993346 0.177122 0.000386 0.000000\n",
+ "DC 0.000085 0.000000 0.000574 0.821033 0.000193 0.001099\n",
+ "NK 0.000256 0.054950 0.000688 0.000000 0.968352 0.000000\n",
+ "B 0.000000 0.000000 0.000115 0.000000 0.000000 0.997802"
+ ]
+ },
+ "execution_count": 32,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "accuracy_df_v3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.figure(figsize=(6, 5))\n",
+ "sns.heatmap(accuracy_df_v3, vmin=0, vmax=1,\n",
+ " cmap=\"YlGnBu\", \n",
+ " annot=True, annot_kws={\"size\": 10},\n",
+ " fmt='.2f')\n",
+ "plt.xlabel('Cell type in Oelen v3')\n",
+ "plt.ylabel('Cell type by Azimuth Algorithm')\n",
+ "plt.savefig('marker_gene_azimuth_classification_oelenv3.pdf')"
+ ]
+ },
+ {
+ "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.7.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/01_association_metrics/GRNBoost2.ipynb b/01_association_metrics/GRNBoost2.ipynb
new file mode 100644
index 0000000..b1b9528
--- /dev/null
+++ b/01_association_metrics/GRNBoost2.ipynb
@@ -0,0 +1,349 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import matplotlib as mpl\n",
+ "mpl.rcParams['pdf.fonttype'] = 42\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "import numpy as np\n",
+ "from pathlib import Path\n",
+ "import seaborn as sns\n",
+ "%matplotlib inline\n",
+ "%run dataset.ipynb\n",
+ "\n",
+ "def select_gene_nonzeroratio(df, ratio):\n",
+ " nonzerocounts = np.count_nonzero(df.values, axis=0) / df.shape[0]\n",
+ " selected_genes = df.columns[nonzerocounts > ratio]\n",
+ " return selected_genes"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "datasetname = 'onemillionv2'\n",
+ "dataset = DATASET(datasetname)\n",
+ "dataset.load_dataset()\n",
+ "data_sc = dataset.data_sc"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "395\n"
+ ]
+ }
+ ],
+ "source": [
+ "monocyte_ut = data_sc[(data_sc.obs['time']=='UT') & (data_sc.obs['cell_type_lowerres']=='monocyte')]\n",
+ "monocyte_ut_df = pd.DataFrame(data=monocyte_ut.X.toarray(),\n",
+ " index=monocyte_ut.obs.index,\n",
+ " columns=monocyte_ut.var.index)\n",
+ "mono_genes = select_gene_nonzeroratio(df=monocyte_ut_df, ratio=0.50)\n",
+ "print(len(mono_genes))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(11482, 379) (194, 379)\n"
+ ]
+ }
+ ],
+ "source": [
+ "bp_df = pd.read_csv('mono_gene_nor_combat_20151109.ProbesWithZeroVarianceRemoved.ProbesCentered.SamplesZTransformed.1PCAsOverSamplesRemoved.txt.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t', index_col=0)\n",
+ "name_mapping_dic = pd.read_csv('features_v3_reformated_names.tsv',\n",
+ " sep ='\\t',\n",
+ " names=['geneid', 'genename']).set_index(['geneid'])['genename'].T.to_dict()\n",
+ "\n",
+ "bp_df['geneid'] = [item.split('.')[0] for item in bp_df.index]\n",
+ "bp_df['genename'] = [name_mapping_dic.get(geneid) for geneid in bp_df['geneid']]\n",
+ "bp_df = bp_df.dropna(subset=['genename'])\n",
+ "bp_df = bp_df.drop('geneid', axis=1)\n",
+ "bp_df = bp_df.set_index('genename')\n",
+ "print(bp_df.shape)\n",
+ "\n",
+ "bp_trans_df = bp_df.T\n",
+ "common_genes = list(set(mono_genes) & set(bp_trans_df.columns))\n",
+ "selected_mono_df = monocyte_ut_df[common_genes]\n",
+ "selected_bp_df = bp_trans_df[common_genes]\n",
+ "print(selected_mono_df.shape, selected_bp_df.shape)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "selected_mono_df.T.to_csv('sc_Expression.csv', sep=',')\n",
+ "selected_bp_df.T.to_csv('bp_Expression.csv', sep=',')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# create this fake pseudo time ordering because it's required to run the Beeline tool, but not used by GRNBoost2\n",
+ "fake_timepoint_bp = pd.DataFrame(index=selected_bp_df.index)\n",
+ "fake_timepoint_bp['time'] = np.arange(selected_bp_df.shape[0])\n",
+ "fake_timepoint_bp.to_csv('bp_timepoint.fake.csv',\n",
+ " sep=',')\n",
+ "fake_timepoint_sc = pd.DataFrame(index=selected_mono_df.index)\n",
+ "fake_timepoint_sc['time'] = np.arange(selected_mono_df.shape[0])\n",
+ "fake_timepoint_sc.to_csv('sc_timepoint.fake.csv',\n",
+ " sep=',')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# perform GRNBoost2 with BEELINE, see the yaml files in the same directory\n",
+ "# python BLRunner.py --config config-files/config_bp_mono.yaml\n",
+ "# python BLRunner.py --config config-files/config_sc_mono.yaml"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Gene1_sc | \n",
+ " Gene2_sc | \n",
+ " EdgeWeight_sc | \n",
+ " Gene1_bp | \n",
+ " Gene2_bp | \n",
+ " EdgeWeight_bp | \n",
+ "
\n",
+ " \n",
+ " sorted_genepairs | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " CCL3;CCL4 | \n",
+ " CCL3 | \n",
+ " CCL4 | \n",
+ " 554.503642 | \n",
+ " CCL3 | \n",
+ " CCL4 | \n",
+ " 55.157748 | \n",
+ "
\n",
+ " \n",
+ " CCL4;CCL3 | \n",
+ " CCL4 | \n",
+ " CCL3 | \n",
+ " 480.484753 | \n",
+ " CCL4 | \n",
+ " CCL3 | \n",
+ " 77.414467 | \n",
+ "
\n",
+ " \n",
+ " S100A9;S100A8 | \n",
+ " S100A9 | \n",
+ " S100A8 | \n",
+ " 341.726427 | \n",
+ " S100A9 | \n",
+ " S100A8 | \n",
+ " 104.542395 | \n",
+ "
\n",
+ " \n",
+ " S100A8;S100A9 | \n",
+ " S100A8 | \n",
+ " S100A9 | \n",
+ " 284.321568 | \n",
+ " S100A8 | \n",
+ " S100A9 | \n",
+ " 65.915233 | \n",
+ "
\n",
+ " \n",
+ " S100A9;LYZ | \n",
+ " S100A9 | \n",
+ " LYZ | \n",
+ " 221.872616 | \n",
+ " S100A9 | \n",
+ " LYZ | \n",
+ " 0.149064 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Gene1_sc Gene2_sc EdgeWeight_sc Gene1_bp Gene2_bp \\\n",
+ "sorted_genepairs \n",
+ "CCL3;CCL4 CCL3 CCL4 554.503642 CCL3 CCL4 \n",
+ "CCL4;CCL3 CCL4 CCL3 480.484753 CCL4 CCL3 \n",
+ "S100A9;S100A8 S100A9 S100A8 341.726427 S100A9 S100A8 \n",
+ "S100A8;S100A9 S100A8 S100A9 284.321568 S100A8 S100A9 \n",
+ "S100A9;LYZ S100A9 LYZ 221.872616 S100A9 LYZ \n",
+ "\n",
+ " EdgeWeight_bp \n",
+ "sorted_genepairs \n",
+ "CCL3;CCL4 55.157748 \n",
+ "CCL4;CCL3 77.414467 \n",
+ "S100A9;S100A8 104.542395 \n",
+ "S100A8;S100A9 65.915233 \n",
+ "S100A9;LYZ 0.149064 "
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sc_edges = pd.read_csv('sc_edges.csv', sep='\\t')\n",
+ "sc_edges['sorted_genepairs'] = [';'.join(item) for item in sc_edges[['Gene1', 'Gene2']].values]\n",
+ "bp_edges = pd.read_csv('bp_edges.csv', sep='\\t')\n",
+ "bp_edges['sorted_genepairs'] = [';'.join(item) for item in bp_edges[['Gene1', 'Gene2']].values]\n",
+ "\n",
+ "sc_edges = sc_edges.set_index('sorted_genepairs')\n",
+ "bp_edges = bp_edges.set_index('sorted_genepairs')\n",
+ "concated_edges = pd.concat([sc_edges.add_suffix('_sc'), bp_edges.add_suffix('_bp')], axis=1)\n",
+ "\n",
+ "concated_edges.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "SpearmanrResult(correlation=0.16937964029402044, pvalue=0.0)"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "concated_edges = concated_edges.dropna()\n",
+ "spearmanr(concated_edges['EdgeWeight_sc'], concated_edges['EdgeWeight_bp'])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 1.0, 'Spearman r = 0.17')"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "coef, p = spearmanr(concated_edges['EdgeWeight_sc'], concated_edges['EdgeWeight_bp'])\n",
+ "plt.figure(figsize=(5, 5))\n",
+ "plt.scatter(concated_edges['EdgeWeight_sc'], concated_edges['EdgeWeight_bp'], s=1, alpha=0.5)\n",
+ "plt.xlabel('Edge weight from scRNAseq')\n",
+ "plt.ylabel('Edge weight from BLUEPRINT')\n",
+ "plt.title(f'Spearman r = {coef:.2f}')\n",
+ "# plt.savefig('grnboost2_sc_bp_comparison.png')"
+ ]
+ },
+ {
+ "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.7.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/01_association_metrics/README.md b/01_association_metrics/README.md
new file mode 100644
index 0000000..cf61992
--- /dev/null
+++ b/01_association_metrics/README.md
@@ -0,0 +1,31 @@
+# 01_association_metrics
+
+
+In *setting_files_for_grnboost2* there are setting files for running GRNBoost2 on scRNAseq and BIOS data
+
+*GRNBoost2.ipynb*: Prepare the input files for BEELINE, and examine the GRNBoost2 results for scRNAseq and for BIOS data
+
+*rho_comparison_lowlyexpressed.R*: explores the differences between Spearman correlation and Rho propensity specially for very lowly expressed genes
+
+*scorpius_and_slingshot_clean.R*: calculates the pseudotime ordering for Oelen v2 classical monocytes, using SCORPIUS and Slingshot algorithms
+
+*scvelo_analysis_dm.py*: runs RNA velocity analysis on Oelen v3 dataset classical monocytes after creating loom files using [velocyto](http://velocyto.org/velocyto.py/tutorial/cli.html) to get both spliced and unspliced gene count matrices
+
+*compare_cell_classification.ipynb*: compares the aximuth cell type classification with the marker gene cell type classification in Oelen v2 and v3 dataset for untreated cells
+
+Metacell calculation and evaluation files are all in the directory *metacell*:
+
+*metacell_per_sample_original_algorithm.R*: calculates metacells based on original algorithm (implemented in the metacell R package)
+
+*metacells_from_leiden.R*: calculates metacells based on grouping from leiden clustering
+
+*create_genesets.R*: split all genes expressed in Oelen v3 dataset, Monocytes, into different expression bins for treshold-dependent evaluation with BLUEPRINT
+
+*metacell_general_correlation_tp.R*: calculates correlation from metacells (original or leiden) for different expression tresholds from *create_genesets.R* for comparison with BLUEPRINT
+
+*single_cell_correlation_tp.R*: calculates correlation from single cell dataset for different expression tresholds from *create_genesets.R* for comparison with BLUEPRINT
+
+*eval_blueprint_genesets.R*: compares correlation from BLUEPRINT with correlation from metacells/single cell for different expression tresholds, using correlation vlaues from *metacell_general_correlation_tp.R* and *single_cell_correlation_tp.R*
+
+*plot_overview_metacell.R*: visualize outputs from metacell evaluation in one plot
+
diff --git a/01_association_metrics/compare_cell_classification.ipynb b/01_association_metrics/compare_cell_classification.ipynb
new file mode 100644
index 0000000..75b0224
--- /dev/null
+++ b/01_association_metrics/compare_cell_classification.ipynb
@@ -0,0 +1,1164 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "from scipy import stats\n",
+ "import pandas as pd\n",
+ "import matplotlib as mpl\n",
+ "mpl.rcParams['pdf.fonttype'] = 42\n",
+ "import numpy as np\n",
+ "%matplotlib inline"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%run dataset.ipynb"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "onemillionv2 = DATASET('onemillionv2')\n",
+ "onemillionv2.load_dataset()\n",
+ "\n",
+ "onemillionv3 = DATASET('onemillionv3')\n",
+ "onemillionv3.load_dataset()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "data_sc = onemillionv2.data_sc[onemillionv2.data_sc.obs['time']=='UT']\n",
+ "data_obs = data_sc.obs"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " orig.ident | \n",
+ " nCount_RNA | \n",
+ " nFeature_RNA | \n",
+ " batch | \n",
+ " lane | \n",
+ " chem | \n",
+ " exp.id | \n",
+ " timepoint | \n",
+ " percent.mt | \n",
+ " nCount_SCT | \n",
+ " nFeature_SCT | \n",
+ " cell_type | \n",
+ " cell_type_lowerres | \n",
+ " assignment | \n",
+ " bare_barcode_lane | \n",
+ " time | \n",
+ "
\n",
+ " \n",
+ " index | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " AAACCTGAGAGTACAT_180925_lane1 | \n",
+ " 1M_cells | \n",
+ " 5190.0 | \n",
+ " 1518 | \n",
+ " 180925_lane1 | \n",
+ " 180925_lane1 | \n",
+ " V2 | \n",
+ " 2 | \n",
+ " UT | \n",
+ " 1.560694 | \n",
+ " 3297.0 | \n",
+ " 1438 | \n",
+ " mono 2 | \n",
+ " monocyte | \n",
+ " LLDeep_1370 | \n",
+ " AAACCTGAGAGTACAT_180925_lane1 | \n",
+ " UT | \n",
+ "
\n",
+ " \n",
+ " AAACCTGAGTGTCTCA_180925_lane1 | \n",
+ " 1M_cells | \n",
+ " 5597.0 | \n",
+ " 1652 | \n",
+ " 180925_lane1 | \n",
+ " 180925_lane1 | \n",
+ " V2 | \n",
+ " 12 | \n",
+ " UT | \n",
+ " 3.394676 | \n",
+ " 3353.0 | \n",
+ " 1507 | \n",
+ " th1 CD4T | \n",
+ " CD4T | \n",
+ " LLDeep_0434 | \n",
+ " AAACCTGAGTGTCTCA_180925_lane1 | \n",
+ " UT | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCAGTCGATT_180925_lane1 | \n",
+ " 1M_cells | \n",
+ " 3039.0 | \n",
+ " 849 | \n",
+ " 180925_lane1 | \n",
+ " 180925_lane1 | \n",
+ " V2 | \n",
+ " 11 | \n",
+ " UT | \n",
+ " 3.685423 | \n",
+ " 2786.0 | \n",
+ " 849 | \n",
+ " naive CD8T | \n",
+ " CD8T | \n",
+ " LLDeep_1319 | \n",
+ " AAACCTGCAGTCGATT_180925_lane1 | \n",
+ " UT | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCATTCGACA_180925_lane1 | \n",
+ " 1M_cells | \n",
+ " 3876.0 | \n",
+ " 1048 | \n",
+ " 180925_lane1 | \n",
+ " 180925_lane1 | \n",
+ " V2 | \n",
+ " 2 | \n",
+ " UT | \n",
+ " 3.766770 | \n",
+ " 2996.0 | \n",
+ " 1047 | \n",
+ " mono 1 | \n",
+ " monocyte | \n",
+ " LLDeep_1370 | \n",
+ " AAACCTGCATTCGACA_180925_lane1 | \n",
+ " UT | \n",
+ "
\n",
+ " \n",
+ " AAACCTGGTAATAGCA_180925_lane1 | \n",
+ " 1M_cells | \n",
+ " 4272.0 | \n",
+ " 1141 | \n",
+ " 180925_lane1 | \n",
+ " 180925_lane1 | \n",
+ " V2 | \n",
+ " 12 | \n",
+ " UT | \n",
+ " 4.564607 | \n",
+ " 3076.0 | \n",
+ " 1131 | \n",
+ " mono 1 | \n",
+ " monocyte | \n",
+ " LLDeep_0434 | \n",
+ " AAACCTGGTAATAGCA_180925_lane1 | \n",
+ " UT | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " orig.ident nCount_RNA nFeature_RNA \\\n",
+ "index \n",
+ "AAACCTGAGAGTACAT_180925_lane1 1M_cells 5190.0 1518 \n",
+ "AAACCTGAGTGTCTCA_180925_lane1 1M_cells 5597.0 1652 \n",
+ "AAACCTGCAGTCGATT_180925_lane1 1M_cells 3039.0 849 \n",
+ "AAACCTGCATTCGACA_180925_lane1 1M_cells 3876.0 1048 \n",
+ "AAACCTGGTAATAGCA_180925_lane1 1M_cells 4272.0 1141 \n",
+ "\n",
+ " batch lane chem exp.id \\\n",
+ "index \n",
+ "AAACCTGAGAGTACAT_180925_lane1 180925_lane1 180925_lane1 V2 2 \n",
+ "AAACCTGAGTGTCTCA_180925_lane1 180925_lane1 180925_lane1 V2 12 \n",
+ "AAACCTGCAGTCGATT_180925_lane1 180925_lane1 180925_lane1 V2 11 \n",
+ "AAACCTGCATTCGACA_180925_lane1 180925_lane1 180925_lane1 V2 2 \n",
+ "AAACCTGGTAATAGCA_180925_lane1 180925_lane1 180925_lane1 V2 12 \n",
+ "\n",
+ " timepoint percent.mt nCount_SCT nFeature_SCT \\\n",
+ "index \n",
+ "AAACCTGAGAGTACAT_180925_lane1 UT 1.560694 3297.0 1438 \n",
+ "AAACCTGAGTGTCTCA_180925_lane1 UT 3.394676 3353.0 1507 \n",
+ "AAACCTGCAGTCGATT_180925_lane1 UT 3.685423 2786.0 849 \n",
+ "AAACCTGCATTCGACA_180925_lane1 UT 3.766770 2996.0 1047 \n",
+ "AAACCTGGTAATAGCA_180925_lane1 UT 4.564607 3076.0 1131 \n",
+ "\n",
+ " cell_type cell_type_lowerres assignment \\\n",
+ "index \n",
+ "AAACCTGAGAGTACAT_180925_lane1 mono 2 monocyte LLDeep_1370 \n",
+ "AAACCTGAGTGTCTCA_180925_lane1 th1 CD4T CD4T LLDeep_0434 \n",
+ "AAACCTGCAGTCGATT_180925_lane1 naive CD8T CD8T LLDeep_1319 \n",
+ "AAACCTGCATTCGACA_180925_lane1 mono 1 monocyte LLDeep_1370 \n",
+ "AAACCTGGTAATAGCA_180925_lane1 mono 1 monocyte LLDeep_0434 \n",
+ "\n",
+ " bare_barcode_lane time \n",
+ "index \n",
+ "AAACCTGAGAGTACAT_180925_lane1 AAACCTGAGAGTACAT_180925_lane1 UT \n",
+ "AAACCTGAGTGTCTCA_180925_lane1 AAACCTGAGTGTCTCA_180925_lane1 UT \n",
+ "AAACCTGCAGTCGATT_180925_lane1 AAACCTGCAGTCGATT_180925_lane1 UT \n",
+ "AAACCTGCATTCGACA_180925_lane1 AAACCTGCATTCGACA_180925_lane1 UT \n",
+ "AAACCTGGTAATAGCA_180925_lane1 AAACCTGGTAATAGCA_180925_lane1 UT "
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data_obs.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "celltypes = ['CD4T', 'CD8T', 'monocyte', 'NK', 'DC', 'B']\n",
+ "plot_df = data_obs['cell_type_lowerres'].value_counts(normalize=True).loc[celltypes]\n",
+ "plt.bar(x=plot_df.index, height=plot_df.values)\n",
+ "plt.ylim([0, 0.40])\n",
+ "plt.savefig('cell_abundance_oelenv2.pdf')\n",
+ "plt.savefig('cell_abundance_oelenv2.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " predicted.celltype.l1 | \n",
+ " predicted.celltype.l1.score | \n",
+ " predicted.celltype.l2 | \n",
+ " predicted.celltype.l2.score | \n",
+ "
\n",
+ " \n",
+ " barcode | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " AAACCTGAGAAACCAT_180920_lane1 | \n",
+ " CD8 T | \n",
+ " 0.755924 | \n",
+ " CD8 TEM | \n",
+ " 0.755924 | \n",
+ "
\n",
+ " \n",
+ " AAACCTGAGTAGCCGA_180920_lane1 | \n",
+ " Mono | \n",
+ " 1.000000 | \n",
+ " CD16 Mono | \n",
+ " 1.000000 | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCAATCTACG_180920_lane1 | \n",
+ " NK | \n",
+ " 1.000000 | \n",
+ " NK | \n",
+ " 1.000000 | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCACATCCAA_180920_lane1 | \n",
+ " other | \n",
+ " 0.546320 | \n",
+ " ILC | \n",
+ " 0.546320 | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCAGCTCGAC_180920_lane1 | \n",
+ " NK | \n",
+ " 0.733094 | \n",
+ " NK | \n",
+ " 0.733094 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " predicted.celltype.l1 \\\n",
+ "barcode \n",
+ "AAACCTGAGAAACCAT_180920_lane1 CD8 T \n",
+ "AAACCTGAGTAGCCGA_180920_lane1 Mono \n",
+ "AAACCTGCAATCTACG_180920_lane1 NK \n",
+ "AAACCTGCACATCCAA_180920_lane1 other \n",
+ "AAACCTGCAGCTCGAC_180920_lane1 NK \n",
+ "\n",
+ " predicted.celltype.l1.score \\\n",
+ "barcode \n",
+ "AAACCTGAGAAACCAT_180920_lane1 0.755924 \n",
+ "AAACCTGAGTAGCCGA_180920_lane1 1.000000 \n",
+ "AAACCTGCAATCTACG_180920_lane1 1.000000 \n",
+ "AAACCTGCACATCCAA_180920_lane1 0.546320 \n",
+ "AAACCTGCAGCTCGAC_180920_lane1 0.733094 \n",
+ "\n",
+ " predicted.celltype.l2 \\\n",
+ "barcode \n",
+ "AAACCTGAGAAACCAT_180920_lane1 CD8 TEM \n",
+ "AAACCTGAGTAGCCGA_180920_lane1 CD16 Mono \n",
+ "AAACCTGCAATCTACG_180920_lane1 NK \n",
+ "AAACCTGCACATCCAA_180920_lane1 ILC \n",
+ "AAACCTGCAGCTCGAC_180920_lane1 NK \n",
+ "\n",
+ " predicted.celltype.l2.score \n",
+ "barcode \n",
+ "AAACCTGAGAAACCAT_180920_lane1 0.755924 \n",
+ "AAACCTGAGTAGCCGA_180920_lane1 1.000000 \n",
+ "AAACCTGCAATCTACG_180920_lane1 1.000000 \n",
+ "AAACCTGCACATCCAA_180920_lane1 0.546320 \n",
+ "AAACCTGCAGCTCGAC_180920_lane1 0.733094 "
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "azimuith_df = pd.read_csv(\n",
+ " '1M_v2_20201029_azimuth.tsv',\n",
+ " sep='\\t', index_col=0\n",
+ ")\n",
+ "azimuith_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['monocyte', 'CD4T', 'CD8T', 'NK', 'megakaryocyte', 'B', 'DC', 'plasma B', 'unknown', 'hemapoietic stem']\n",
+ "Categories (10, object): ['B', 'hemapoietic stem', 'megakaryocyte', 'NK', ..., 'CD4T', 'CD8T', 'monocyte', 'DC']"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data_obs['cell_type_lowerres'].unique()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array(['CD8 T', 'Mono', 'NK', 'other', 'CD4 T', 'DC', 'B', 'other T'],\n",
+ " dtype=object)"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "azimuith_df['predicted.celltype.l1'].unique()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " predicted.celltype.l1 | \n",
+ " predicted.celltype.l1.score | \n",
+ " predicted.celltype.l2 | \n",
+ " predicted.celltype.l2.score | \n",
+ " cell_type_mapped | \n",
+ "
\n",
+ " \n",
+ " barcode | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " AAACCTGAGAAACCAT_180920_lane1 | \n",
+ " CD8 T | \n",
+ " 0.755924 | \n",
+ " CD8 TEM | \n",
+ " 0.755924 | \n",
+ " CD8T | \n",
+ "
\n",
+ " \n",
+ " AAACCTGAGTAGCCGA_180920_lane1 | \n",
+ " Mono | \n",
+ " 1.000000 | \n",
+ " CD16 Mono | \n",
+ " 1.000000 | \n",
+ " monocyte | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCAATCTACG_180920_lane1 | \n",
+ " NK | \n",
+ " 1.000000 | \n",
+ " NK | \n",
+ " 1.000000 | \n",
+ " NK | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCACATCCAA_180920_lane1 | \n",
+ " other | \n",
+ " 0.546320 | \n",
+ " ILC | \n",
+ " 0.546320 | \n",
+ " None | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCAGCTCGAC_180920_lane1 | \n",
+ " NK | \n",
+ " 0.733094 | \n",
+ " NK | \n",
+ " 0.733094 | \n",
+ " NK | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " predicted.celltype.l1 \\\n",
+ "barcode \n",
+ "AAACCTGAGAAACCAT_180920_lane1 CD8 T \n",
+ "AAACCTGAGTAGCCGA_180920_lane1 Mono \n",
+ "AAACCTGCAATCTACG_180920_lane1 NK \n",
+ "AAACCTGCACATCCAA_180920_lane1 other \n",
+ "AAACCTGCAGCTCGAC_180920_lane1 NK \n",
+ "\n",
+ " predicted.celltype.l1.score \\\n",
+ "barcode \n",
+ "AAACCTGAGAAACCAT_180920_lane1 0.755924 \n",
+ "AAACCTGAGTAGCCGA_180920_lane1 1.000000 \n",
+ "AAACCTGCAATCTACG_180920_lane1 1.000000 \n",
+ "AAACCTGCACATCCAA_180920_lane1 0.546320 \n",
+ "AAACCTGCAGCTCGAC_180920_lane1 0.733094 \n",
+ "\n",
+ " predicted.celltype.l2 \\\n",
+ "barcode \n",
+ "AAACCTGAGAAACCAT_180920_lane1 CD8 TEM \n",
+ "AAACCTGAGTAGCCGA_180920_lane1 CD16 Mono \n",
+ "AAACCTGCAATCTACG_180920_lane1 NK \n",
+ "AAACCTGCACATCCAA_180920_lane1 ILC \n",
+ "AAACCTGCAGCTCGAC_180920_lane1 NK \n",
+ "\n",
+ " predicted.celltype.l2.score cell_type_mapped \n",
+ "barcode \n",
+ "AAACCTGAGAAACCAT_180920_lane1 0.755924 CD8T \n",
+ "AAACCTGAGTAGCCGA_180920_lane1 1.000000 monocyte \n",
+ "AAACCTGCAATCTACG_180920_lane1 1.000000 NK \n",
+ "AAACCTGCACATCCAA_180920_lane1 0.546320 None \n",
+ "AAACCTGCAGCTCGAC_180920_lane1 0.733094 NK "
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "mapping_names = {'CD8 T': 'CD8T', \n",
+ " 'CD4 T': 'CD4T',\n",
+ " 'Mono': 'monocyte',\n",
+ " 'NK': 'NK',\n",
+ " 'B': 'B',\n",
+ " 'DC': 'DC'}\n",
+ "azimuith_df['cell_type_mapped'] = [mapping_names.get(name) for name in \n",
+ " azimuith_df['predicted.celltype.l1']]\n",
+ "azimuith_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " cell_type_lowerres | \n",
+ " cell_type_mapped | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " AAACCTGAGAGTACAT_180925_lane1 | \n",
+ " monocyte | \n",
+ " monocyte | \n",
+ "
\n",
+ " \n",
+ " AAACCTGAGTGTCTCA_180925_lane1 | \n",
+ " CD4T | \n",
+ " CD4T | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCAGTCGATT_180925_lane1 | \n",
+ " CD8T | \n",
+ " CD8T | \n",
+ "
\n",
+ " \n",
+ " AAACCTGCATTCGACA_180925_lane1 | \n",
+ " monocyte | \n",
+ " monocyte | \n",
+ "
\n",
+ " \n",
+ " AAACCTGGTAATAGCA_180925_lane1 | \n",
+ " monocyte | \n",
+ " monocyte | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " cell_type_lowerres cell_type_mapped\n",
+ "AAACCTGAGAGTACAT_180925_lane1 monocyte monocyte\n",
+ "AAACCTGAGTGTCTCA_180925_lane1 CD4T CD4T\n",
+ "AAACCTGCAGTCGATT_180925_lane1 CD8T CD8T\n",
+ "AAACCTGCATTCGACA_180925_lane1 monocyte monocyte\n",
+ "AAACCTGGTAATAGCA_180925_lane1 monocyte monocyte"
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "merged_classification_df = pd.concat([data_obs[['cell_type_lowerres']],\n",
+ " azimuith_df[['cell_type_mapped']]],\n",
+ " axis=1).dropna()\n",
+ "merged_classification_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "celltypes = ['CD4T', 'CD8T', 'monocyte', 'DC', 'NK', 'B']\n",
+ "accuracy_df = pd.DataFrame(\n",
+ " data=np.zeros((6, 6)),\n",
+ " index=celltypes,\n",
+ " columns=celltypes\n",
+ ")\n",
+ "for celltype_onemillionv2 in celltypes:\n",
+ " for celltype_azimuth in celltypes:\n",
+ " common_classification_num = merged_classification_df[\n",
+ " (merged_classification_df['cell_type_lowerres']==celltype_onemillionv2) & \n",
+ " (merged_classification_df['cell_type_mapped']==celltype_azimuth)\n",
+ " ].shape[0]\n",
+ " onemillion_classification_num = merged_classification_df[\n",
+ " (merged_classification_df['cell_type_lowerres']==celltype_onemillionv2)\n",
+ " ].shape[0]\n",
+ " azimuth_classification_num = merged_classification_df[\n",
+ " (merged_classification_df['cell_type_mapped']==celltype_azimuth)\n",
+ " ].shape[0]\n",
+ " accuracy_df[celltype_onemillionv2].loc[celltype_azimuth] = common_classification_num/onemillion_classification_num"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.figure(figsize=(6, 5))\n",
+ "sns.heatmap(accuracy_df, vmin=0, vmax=1,\n",
+ " cmap=\"YlGnBu\", \n",
+ " annot=True, annot_kws={\"size\": 10},\n",
+ " fmt='.2f')\n",
+ "plt.xlabel('Cell type in Oelen v2')\n",
+ "plt.ylabel('Cell type by Azimuth Algorithm')\n",
+ "plt.savefig('marker_gene_azimuth_classification.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " predicted.celltype.l1 | \n",
+ " predicted.celltype.l1.score | \n",
+ " predicted.celltype.l2 | \n",
+ " predicted.celltype.l2.score | \n",
+ "
\n",
+ " \n",
+ " barcode | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " AAACCCAAGATACCAA_190109_lane1 | \n",
+ " CD8 T | \n",
+ " 0.981818 | \n",
+ " CD8 Naive | \n",
+ " 0.955707 | \n",
+ "
\n",
+ " \n",
+ " AAACCCAAGTCCCTAA_190109_lane1 | \n",
+ " CD4 T | \n",
+ " 0.379819 | \n",
+ " CD4 CTL | \n",
+ " 0.327444 | \n",
+ "
\n",
+ " \n",
+ " AAACCCACAAGAGTGC_190109_lane1 | \n",
+ " CD4 T | \n",
+ " 0.740111 | \n",
+ " CD4 Naive | \n",
+ " 0.723822 | \n",
+ "
\n",
+ " \n",
+ " AAACCCACAATCCAGT_190109_lane1 | \n",
+ " CD4 T | \n",
+ " 0.916869 | \n",
+ " CD4 TCM | \n",
+ " 0.468549 | \n",
+ "
\n",
+ " \n",
+ " AAACCCACACTATCCC_190109_lane1 | \n",
+ " Mono | \n",
+ " 1.000000 | \n",
+ " CD14 Mono | \n",
+ " 1.000000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " predicted.celltype.l1 \\\n",
+ "barcode \n",
+ "AAACCCAAGATACCAA_190109_lane1 CD8 T \n",
+ "AAACCCAAGTCCCTAA_190109_lane1 CD4 T \n",
+ "AAACCCACAAGAGTGC_190109_lane1 CD4 T \n",
+ "AAACCCACAATCCAGT_190109_lane1 CD4 T \n",
+ "AAACCCACACTATCCC_190109_lane1 Mono \n",
+ "\n",
+ " predicted.celltype.l1.score \\\n",
+ "barcode \n",
+ "AAACCCAAGATACCAA_190109_lane1 0.981818 \n",
+ "AAACCCAAGTCCCTAA_190109_lane1 0.379819 \n",
+ "AAACCCACAAGAGTGC_190109_lane1 0.740111 \n",
+ "AAACCCACAATCCAGT_190109_lane1 0.916869 \n",
+ "AAACCCACACTATCCC_190109_lane1 1.000000 \n",
+ "\n",
+ " predicted.celltype.l2 \\\n",
+ "barcode \n",
+ "AAACCCAAGATACCAA_190109_lane1 CD8 Naive \n",
+ "AAACCCAAGTCCCTAA_190109_lane1 CD4 CTL \n",
+ "AAACCCACAAGAGTGC_190109_lane1 CD4 Naive \n",
+ "AAACCCACAATCCAGT_190109_lane1 CD4 TCM \n",
+ "AAACCCACACTATCCC_190109_lane1 CD14 Mono \n",
+ "\n",
+ " predicted.celltype.l2.score \n",
+ "barcode \n",
+ "AAACCCAAGATACCAA_190109_lane1 0.955707 \n",
+ "AAACCCAAGTCCCTAA_190109_lane1 0.327444 \n",
+ "AAACCCACAAGAGTGC_190109_lane1 0.723822 \n",
+ "AAACCCACAATCCAGT_190109_lane1 0.468549 \n",
+ "AAACCCACACTATCCC_190109_lane1 1.000000 "
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "azimuith_df_v3 = pd.read_csv(\n",
+ " '1M_v3_20201106_azimuth.tsv',\n",
+ " sep='\\t', index_col=0\n",
+ ")\n",
+ "azimuith_df_v3.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "mapping_names = {'CD8 T': 'CD8T', \n",
+ " 'CD4 T': 'CD4T',\n",
+ " 'Mono': 'monocyte',\n",
+ " 'NK': 'NK',\n",
+ " 'B': 'B',\n",
+ " 'DC': 'DC'}\n",
+ "azimuith_df_v3['cell_type_mapped'] = [mapping_names.get(name) for name in \n",
+ " azimuith_df_v3['predicted.celltype.l1']]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "data_scv3 = onemillionv3.data_sc[onemillionv3.data_sc.obs['time']=='UT']\n",
+ "data_obsv3 = data_scv3.obs"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " cell_type_lowerres | \n",
+ " cell_type_mapped | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " AAACCCAAGATACCAA_190109_lane1 | \n",
+ " CD4T | \n",
+ " CD8T | \n",
+ "
\n",
+ " \n",
+ " AAACCCACAAGAGTGC_190109_lane1 | \n",
+ " CD4T | \n",
+ " CD4T | \n",
+ "
\n",
+ " \n",
+ " AAACCCACAATCCAGT_190109_lane1 | \n",
+ " CD4T | \n",
+ " CD4T | \n",
+ "
\n",
+ " \n",
+ " AAACCCACAGGTACGA_190109_lane1 | \n",
+ " CD4T | \n",
+ " CD4T | \n",
+ "
\n",
+ " \n",
+ " AAACCCAGTCTACGTA_190109_lane1 | \n",
+ " CD4T | \n",
+ " CD4T | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " cell_type_lowerres cell_type_mapped\n",
+ "AAACCCAAGATACCAA_190109_lane1 CD4T CD8T\n",
+ "AAACCCACAAGAGTGC_190109_lane1 CD4T CD4T\n",
+ "AAACCCACAATCCAGT_190109_lane1 CD4T CD4T\n",
+ "AAACCCACAGGTACGA_190109_lane1 CD4T CD4T\n",
+ "AAACCCAGTCTACGTA_190109_lane1 CD4T CD4T"
+ ]
+ },
+ "execution_count": 28,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "merged_classification_df_v3 = pd.concat([data_obsv3[['cell_type_lowerres']],\n",
+ " azimuith_df_v3[['cell_type_mapped']]],\n",
+ " axis=1).dropna()\n",
+ "merged_classification_df_v3.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "celltypes = ['CD4T', 'CD8T', 'monocyte', 'DC', 'NK', 'B']\n",
+ "accuracy_df_v3 = pd.DataFrame(\n",
+ " data=np.zeros((6, 6)),\n",
+ " index=celltypes,\n",
+ " columns=celltypes\n",
+ ")\n",
+ "for celltype_onemillionv2 in celltypes:\n",
+ " for celltype_azimuth in celltypes:\n",
+ " common_classification_num = merged_classification_df_v3[\n",
+ " (merged_classification_df_v3['cell_type_lowerres']==celltype_onemillionv2) & \n",
+ " (merged_classification_df_v3['cell_type_mapped']==celltype_azimuth)\n",
+ " ].shape[0]\n",
+ " onemillion_classification_num = merged_classification_df_v3[\n",
+ " (merged_classification_df_v3['cell_type_lowerres']==celltype_onemillionv2)\n",
+ " ].shape[0]\n",
+ " azimuth_classification_num = merged_classification_df_v3[\n",
+ " (merged_classification_df_v3['cell_type_mapped']==celltype_azimuth)\n",
+ " ].shape[0]\n",
+ " accuracy_df_v3[celltype_onemillionv2].loc[celltype_azimuth] = common_classification_num/onemillion_classification_num"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " CD4T | \n",
+ " CD8T | \n",
+ " monocyte | \n",
+ " DC | \n",
+ " NK | \n",
+ " B | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " CD4T | \n",
+ " 0.952222 | \n",
+ " 0.157213 | \n",
+ " 0.003671 | \n",
+ " 0.001845 | \n",
+ " 0.016403 | \n",
+ " 0.001099 | \n",
+ "
\n",
+ " \n",
+ " CD8T | \n",
+ " 0.046923 | \n",
+ " 0.787428 | \n",
+ " 0.001606 | \n",
+ " 0.000000 | \n",
+ " 0.014666 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " monocyte | \n",
+ " 0.000513 | \n",
+ " 0.000409 | \n",
+ " 0.993346 | \n",
+ " 0.177122 | \n",
+ " 0.000386 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " DC | \n",
+ " 0.000085 | \n",
+ " 0.000000 | \n",
+ " 0.000574 | \n",
+ " 0.821033 | \n",
+ " 0.000193 | \n",
+ " 0.001099 | \n",
+ "
\n",
+ " \n",
+ " NK | \n",
+ " 0.000256 | \n",
+ " 0.054950 | \n",
+ " 0.000688 | \n",
+ " 0.000000 | \n",
+ " 0.968352 | \n",
+ " 0.000000 | \n",
+ "
\n",
+ " \n",
+ " B | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.000115 | \n",
+ " 0.000000 | \n",
+ " 0.000000 | \n",
+ " 0.997802 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " CD4T CD8T monocyte DC NK B\n",
+ "CD4T 0.952222 0.157213 0.003671 0.001845 0.016403 0.001099\n",
+ "CD8T 0.046923 0.787428 0.001606 0.000000 0.014666 0.000000\n",
+ "monocyte 0.000513 0.000409 0.993346 0.177122 0.000386 0.000000\n",
+ "DC 0.000085 0.000000 0.000574 0.821033 0.000193 0.001099\n",
+ "NK 0.000256 0.054950 0.000688 0.000000 0.968352 0.000000\n",
+ "B 0.000000 0.000000 0.000115 0.000000 0.000000 0.997802"
+ ]
+ },
+ "execution_count": 32,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "accuracy_df_v3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "plt.figure(figsize=(6, 5))\n",
+ "sns.heatmap(accuracy_df_v3, vmin=0, vmax=1,\n",
+ " cmap=\"YlGnBu\", \n",
+ " annot=True, annot_kws={\"size\": 10},\n",
+ " fmt='.2f')\n",
+ "plt.xlabel('Cell type in Oelen v3')\n",
+ "plt.ylabel('Cell type by Azimuth Algorithm')\n",
+ "plt.savefig('marker_gene_azimuth_classification_oelenv3.pdf')"
+ ]
+ },
+ {
+ "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.7.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/01_association_metrics/metacell/create_genesets.R b/01_association_metrics/metacell/create_genesets.R
new file mode 100644
index 0000000..d0fe688
--- /dev/null
+++ b/01_association_metrics/metacell/create_genesets.R
@@ -0,0 +1,39 @@
+# ------------------------------------------------------------------------------
+# Gene selections for metacell evaluation: generate files for different
+# gene subsets (expressed in x% until (x+20)% of the cells with x between 20-80)
+# for Oelen v3 dataset, Monocytes
+# This allows threshold dependent evaluation for BLUEPRINT comparison.
+# See details downstream scripts metacell_general_correlation_tp.R,
+# single_cell_correlation_tp.R, eval_blueprint_genesets.R
+# ------------------------------------------------------------------------------
+
+library(Seurat)
+
+#Load complete seurat object
+seurat<-readRDS("seurat_objects/1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.rds")
+DefaultAssay(seurat)<-"RNA"
+
+#Filter for monocytes
+seurat<-seurat[,seurat$cell_type_lowerres=="monocyte"]
+
+#Selected cutoffs
+cutoffs<-c(1,0.8,0.6,0.4,0.2)
+
+#Split into lists dependent on expression cutoff
+exprGenes.singleCell<-rowSums(as.matrix(seurat@assays$RNA@counts)>0)/ncol(seurat)
+
+print(paste("Number of genes expressed in at least 50% of cells:",
+ sum(exprGenes.singleCell>=0.5)))
+
+for(i in 1:(length(cutoffs)-1)){
+ gene.subset<-rownames(seurat)[exprGenes.singleCell<=cutoffs[i] &
+ exprGenes.singleCell>cutoffs[i+1]]
+ print(paste("Number of genes with expression cutoff",
+ cutoffs[i+1],":",length(gene.subset)))
+
+ write.table(gene.subset,
+ file=paste0("metacell_general/eval_allmethods/gene_lists/",
+ "mono_expr_genes_cut_",cutoffs[i+1],".txt"),
+ row.names = FALSE,col.names = FALSE,quote=FALSE)
+}
+
diff --git a/01_association_metrics/metacell/eval_blueprint_genesets.R b/01_association_metrics/metacell/eval_blueprint_genesets.R
new file mode 100644
index 0000000..2320fb4
--- /dev/null
+++ b/01_association_metrics/metacell/eval_blueprint_genesets.R
@@ -0,0 +1,127 @@
+# ------------------------------------------------------------------------------
+# Compare correlation from BLUEPRINT with correlation from metacells/single cell
+# for different expression tresholds
+# Here: shown for leiden metacells, calculation done the same way for original
+# metacells and single cell
+# ------------------------------------------------------------------------------
+
+library(reticulate) # to read the single cell data (numpy)
+library(data.table)
+library(ggplot2) # only required if plotting=TRUE
+
+np <- import("numpy")
+
+#Iterate over the list of different gene sets
+corr_files<-c("metacell_general/leiden_metacells/correlation_r_leiden_SCT_cutoff08.tsv",
+ "metacell_general/leiden_metacells/correlation_r_leiden_SCT_cutoff06.tsv",
+ "metacell_general/leiden_metacells/correlation_r_leiden_SCT_cutoff04.tsv",
+ "metacell_general/leiden_metacells/correlation_r_leiden_SCT_cutoff02.tsv")
+
+res_file<-"metacell_general/eval_allmethods/sc_leiden_SCT_eval.tsv"
+
+plotting<-TRUE
+
+#Write column headers
+write.table(data.frame("Condition","Num_pairs","Corr_corr","Test","File"),
+ file=res_file,quote=FALSE,sep="\t",
+ row.names=FALSE, col.names = FALSE)
+
+#Load the large blueprint data set
+path<-"blueprint/allGenePairs_BlueprintScMonocytes_GeneGeneCorrelationComparison.pairwiseSpearman."
+corr.blue.vals <- np$load(paste0(path,"npy"))
+corr.blue.vals<-corr.blue.vals[,1]
+
+corr.blue<-fread(paste0(path,"genePairs.txt"),header=FALSE)
+
+#Split into gene1 and gene2
+corr.blue$gene1<-sapply(corr.blue$V1,function(s) strsplit(s,"/")[[1]][1])
+corr.blue$gene2<-sapply(corr.blue$V1,function(s) strsplit(s,"/")[[1]][2])
+corr.blue$V1<-NULL
+corr.blue$corr.blue<-corr.blue.vals
+rm(corr.blue.vals)
+
+for(cfile in corr_files){
+
+ print(paste("Processing:",cfile))
+
+ #Load corr.mc.r
+ corr.mc.r<-read.table(cfile)
+
+ #Filter Blueprint matrix
+ corr.genes<-unique(c(corr.mc.r$Gene1,corr.mc.r$Gene2))
+ corr.blue.subset<-corr.blue[gene1 %in% corr.genes &
+ gene2 %in% corr.genes]
+
+ #Order correctly so that gene1 smaller than gene2
+ corr.blue.subset$swap<-ifelse(corr.blue.subset$gene1 < corr.blue.subset$gene2,
+ corr.blue.subset$gene1,corr.blue.subset$gene2)
+ corr.blue.subset$gene2<-ifelse(corr.blue.subset$gene1 < corr.blue.subset$gene2,
+ corr.blue.subset$gene2,corr.blue.subset$gene1)
+ corr.blue.subset$gene1<-corr.blue.subset$swap
+ corr.blue.subset$swap<-NULL
+ colnames(corr.blue.subset)<-c("Gene1","Gene2","Correlation.blue")
+
+ #Merge everything
+ corr.mc.r<-merge(corr.mc.r,corr.blue.subset,by=c("Gene1","Gene2"))
+ corr.mc.r<-reshape2::melt(corr.mc.r,id.vars=c("Gene1","Gene2","Correlation.blue"))
+ colnames(corr.mc.r)[4:5]<-c("Condition","Correlation")
+
+ #Correlation for all genes
+ corr.corr<-sapply(unique(corr.mc.r$Condition), function(tp)
+ cor(corr.mc.r$Correlation.blue[corr.mc.r$Condition==tp],
+ corr.mc.r$Correlation[corr.mc.r$Condition==tp],
+ method="pearson",use = "pairwise.complete.obs"))
+
+ res<-data.frame(condition=unique(corr.mc.r$Condition),
+ num.pairs=as.vector(table(corr.mc.r$Condition)),
+ corr.corr,
+ test="allGenes",
+ file=cfile)
+
+ write.table(res, file=res_file,quote=FALSE,sep="\t",
+ append=TRUE,row.names=FALSE, col.names = FALSE)
+
+ corr.mc.r<-corr.mc.r[! is.na(corr.mc.r$Correlation.blue),]
+ if(plotting){
+ corr.mc.r$class<-ifelse(corr.mc.r$Correlation.blue>0,
+ "positive","negative")
+
+ g<-ggplot(corr.mc.r,aes(x=Correlation.blue,y=Correlation,color=class))+
+ geom_point()+facet_wrap(~Condition,ncol=3)+
+ xlab("Correlation Blueprint")+ylab("Correlation MC")
+ ggsave(g,file=paste0("metacell_general/eval_allmethods/plots/",
+ "comp_corr_blue_",strsplit(cfile,"/")[[1]][2],".png"))
+ }
+
+ #Correlation for genes with positive correlation
+ corr.mc.r.pos<-corr.mc.r[corr.mc.r$Correlation.blue>0,]
+ corr.corr<-sapply(unique(corr.mc.r.pos$Condition), function(tp)
+ cor(corr.mc.r.pos$Correlation.blue[corr.mc.r.pos$Condition==tp],
+ corr.mc.r.pos$Correlation[corr.mc.r.pos$Condition==tp],
+ method="pearson",use = "pairwise.complete.obs"))
+
+ res<-data.frame(condition=unique(corr.mc.r.pos$Condition),
+ num.pairs=as.vector(table(corr.mc.r.pos$Condition)),
+ corr.corr,
+ test="posGenes",
+ file=cfile)
+
+ write.table(res, file=res_file,quote=FALSE,sep="\t",
+ append=TRUE,row.names=FALSE, col.names = FALSE)
+
+ #Correlation for genes with negative correlation
+ corr.mc.r.neg<-corr.mc.r[corr.mc.r$Correlation.blue<0,]
+ corr.corr<-sapply(unique(corr.mc.r.neg$Condition), function(tp)
+ cor(corr.mc.r.neg$Correlation.blue[corr.mc.r.neg$Condition==tp],
+ corr.mc.r.neg$Correlation[corr.mc.r.neg$Condition==tp],
+ method="pearson",use = "pairwise.complete.obs"))
+
+ res<-data.frame(condition=unique(corr.mc.r.neg$Condition),
+ num.pairs=as.vector(table(corr.mc.r.neg$Condition)),
+ corr.corr,
+ test="negGenes",
+ file=cfile)
+
+ write.table(res, file=res_file,quote=FALSE,sep="\t",
+ append=TRUE,row.names=FALSE, col.names = FALSE)
+}
diff --git a/01_association_metrics/metacell/metacell_general_correlation_tp.R b/01_association_metrics/metacell/metacell_general_correlation_tp.R
new file mode 100644
index 0000000..028644e
--- /dev/null
+++ b/01_association_metrics/metacell/metacell_general_correlation_tp.R
@@ -0,0 +1,188 @@
+# ------------------------------------------------------------------------------
+# Calculate correlation per timepoint (and sample if stated) from the
+# metacells (original or leiden) for different
+# gene sets (split dependent on gene expression cutoff) for comparison with
+# metacells (see corresponding files create_genesets.R,
+# metacell_general_correlation_tp.R and eval_blueprint_genesets.R)
+# Input: Seurat object, file with selected genes
+# Output: files with correlation values (r-values and p-values)
+# ------------------------------------------------------------------------------
+
+library(Hmisc)
+library(optparse)
+
+#Parse arguments
+option_list = list(
+ make_option(c("-g","--selectedGenes"),
+ default="../../benchmark/celltypes/gene_expressed_over_hald_cells.txt",
+ help="path to list with selected genes"),
+ make_option(c("-m","--method"),
+ default="metacell",
+ help="method for metacell grouping (leiden[_SCT] or metacell)"),
+ make_option(c("-s","--perSample"),action="store_true",
+ default=FALSE,
+ help="Shall the evaluation be done for each sample separatly"),
+ make_option(c("-o","--outputFile"),
+ default="timepoint_monocytes",
+ help="Suffix of the output files")
+)
+
+opt_parser = OptionParser(option_list=option_list)
+opt = parse_args(opt_parser)
+
+pathSelectedGenes<-opt$selectedGenes
+type<-opt$method
+perSample<-opt$perSample
+outputSuffix<-opt$outputFile
+
+print(paste("Evaluating",type,"for gene set:"))
+print(pathSelectedGenes)
+
+print(paste("Evaluating each sample individually:", perSample))
+
+#For leiden clustering
+if(type=="leiden") {
+ setwd("leiden_metacells/")
+ pseudobulkFile<-"metacell_leiden.RDS"
+ annotationFile<-"annotations_mc_leiden_tp.tsv"
+
+ #Read pseudobulk data frame
+ metacell.allsamples<-readRDS(pseudobulkFile)
+
+ #For leiden clustering based on SCT counts
+} else if(type=="leiden_SCT") {
+ setwd("leiden_metacells/")
+ pseudobulkFile<-"metacell_leiden_SCT.RDS"
+ annotationFile<-"annotations_mc_leiden_SCT_tp.tsv"
+
+ #Read pseudobulk data frame
+ metacell.allsamples<-readRDS(pseudobulkFile)
+
+} else if(type=="metacell"){
+ setwd("metacell_general/metacell")
+
+ metacellDir<-"metacells_K20_minCells10"
+ setwd(metacellDir)
+
+ pseudobulkFile<-"pseudobulk_metacell.RDS"
+ annotationFile<-"annotations_metacell.tsv"
+
+ metacell.allsamples<-readRDS(pseudobulkFile)
+} else {
+ stop("Metacell method type not known!")
+}
+
+##########################
+
+#Read annotation data frame
+annotations.allsamples<-read.table(annotationFile)
+colnames(annotations.allsamples)[2]<-"timepoint"
+
+#Select which genes shall be chosen for correlation (same as for single cell)
+selected.genes<-read.table(pathSelectedGenes,
+ header=FALSE)
+metacell.allsamples<-metacell.allsamples[selected.genes$V1,]
+
+#Result data frame (correlation and pvalues)
+corr.df<-NULL
+pval.df<-NULL
+
+correlationRes<-function(meta_counts,colName){
+
+ #Be carefull: rcorr does not work with less than 5 samples
+ corr.mc<-rcorr(t(meta_counts), type="spearman")
+
+ #Create a pairwise data frame for the correlation
+ corr.pairs.mc<-as.data.frame(as.table(corr.mc$r),
+ stringsAsFactors = FALSE)
+ corr.pairs.mc<-corr.pairs.mc[corr.pairs.mc$Var14){
+
+ print(paste("Calculate correlation for timepoint",timepoint))
+
+ meta_counts<-metacell.allsamples[,mc.ids.timepoint]
+ tmp<-correlationRes(meta_counts,colName = paste0(timepoint,"-",sample))
+ corr.pairs.mc<-tmp[[1]]
+ corr.pairs.pval<-tmp[[2]]
+
+ #Concatinate the sample - timepoint pairs
+ if(is.null(corr.df)){
+ corr.df<-corr.pairs.mc
+ pval.df<-corr.pairs.pval
+ } else {
+ corr.df<-merge(corr.df,corr.pairs.mc,by=c("Gene1","Gene2"),
+ all=TRUE)
+ pval.df<-merge(pval.df,corr.pairs.pval,by=c("Gene1","Gene2"),
+ all=TRUE)
+ }
+
+ } else {
+ print(paste("Skip timepoint",timepoint,"(too less metacells)"))
+ }
+ }
+ }
+
+} else {
+
+ annot.sample<-annotations.allsamples
+ for(timepoint in unique(annot.sample$timepoint)){
+
+ #Run the analysis only if at least 5 meta-cells exists
+ #Probably increase the threshold again to more later ...
+ mc.ids.timepoint<-annot.sample$metacell[annot.sample$timepoint==timepoint]
+ if(length(mc.ids.timepoint)>4){
+
+ print(paste("Calculate correlation for timepoint",timepoint))
+
+ meta_counts<-metacell.allsamples[,mc.ids.timepoint]
+ tmp<-correlationRes(meta_counts,colName = timepoint)
+ corr.pairs.mc<-tmp[[1]]
+ corr.pairs.pval<-tmp[[2]]
+
+ #Concatinate the sample - timepoint pairs
+ if(is.null(corr.df)){
+ corr.df<-corr.pairs.mc
+ pval.df<-corr.pairs.pval
+ } else {
+ corr.df<-merge(corr.df,corr.pairs.mc,by=c("Gene1","Gene2"),
+ all=TRUE)
+ pval.df<-merge(pval.df,corr.pairs.pval,by=c("Gene1","Gene2"),
+ all=TRUE)
+ }
+
+ } else {
+ print(paste("Skip timepoint",timepoint,"(too less metacells)"))
+ }
+ }
+}
+
+write.table(corr.df,
+ file=paste0("correlation_r_",outputSuffix,".tsv"),
+ sep="\t",quote=FALSE)
+write.table(pval.df,
+ file=paste0("correlation_pval_",outputSuffix,".tsv"),
+ sep="\t",quote=FALSE)
\ No newline at end of file
diff --git a/01_association_metrics/metacell/metacell_per_sample_original_algorithm.R b/01_association_metrics/metacell/metacell_per_sample_original_algorithm.R
new file mode 100644
index 0000000..e3d1b52
--- /dev/null
+++ b/01_association_metrics/metacell/metacell_per_sample_original_algorithm.R
@@ -0,0 +1,274 @@
+# ------------------------------------------------------------------------------
+# Metacell algorithm (original) run for each sample separately
+# with Oelen v3 dataset (Monocytes)
+# Take all 200 variable genes
+# (but removing for each sample the ones with too low coverage)
+#
+# Remarks:
+# * metacells uses a "data base", the processed files are not loaded
+# directly in the workspace
+# * in the function mcell_mc_from_coclust_balanced the parameters
+# K and min_mc_size can be used to change the "size" of meta cells,
+# but too small is not recommended
+#
+# ------------------------------------------------------------------------------
+
+library(metacell)
+library(SingleCellExperiment)
+library(ggplot2)
+library(optparse)
+
+#Parse arguments
+option_list = list(
+ make_option(c("-K","--coclustK"), default="20",
+ help="Parameter K of mcell_mc_from_coclust_balanced",
+ type="integer"),
+ make_option(c("-m","--coclustMinMcSize"), default="10",
+ help="Parameter min_mc_size of mcell_mc_from_coclust_balanced",
+ type="integer")
+)
+
+opt_parser = OptionParser(option_list=option_list)
+opt = parse_args(opt_parser)
+
+#Parameters to change the granularity of the samples
+mc_coclustK<-opt$coclustK
+mc_coclustMin_size<-opt$coclustMinMcSize
+
+print(paste("Running meta cells with following parameters (changing granularity):",
+ "K",mc_coclustK,"min_mc_size",mc_coclustMin_size))
+
+#Create directories to save the meta cells and the correlation results
+mainDir<-paste0("metacells_K",mc_coclustK,"_minCells",mc_coclustMin_size)
+if(!dir.exists(mainDir))
+ dir.create(mainDir)
+
+setwd(mainDir)
+
+##########################################################################
+# Important note: a lot of the parameter are manged over tgconfig
+# see: https://github.com/tanaylab/tgconfig
+
+# To check all set parameters
+#tgconfig::get_package_params('metacell')
+
+#Set number of cores (otherwise I get issues for very small data sets)
+tgconfig::set_param('mc_cores', 8, 'metacell')
+
+#Issues with downsampling matrix => set parameter for downsampling lower
+#(probably problem as matrix is too sparse)
+#tgconfig::set_param("scm_n_downsamp_gstat",300,'metacell')
+
+########################################################################
+
+#Option to create additional plots for visualization
+allPlots<-FALSE
+fileType<-"seurat"
+
+#Load the h5ad object and convert it to a single cell object
+if(fileType=="h5ad"){
+
+ library(reticulate) # to load h5ad object
+ library(zellkonverter) # to convert h5ad object to single cell object
+
+ sc<-import("scanpy")
+ adata<-sc$read("../../seurat_objects/1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.SCT.h5ad")
+ #Filter for monocytes
+ adata<-adata[adata$obs$cell_type_lowerres=="monocyte"]$copy()
+ sce<-AnnData2SCE(adata)
+ rm(adata)
+
+ #Convert assay name to counts (before called X)
+ assayNames(sce)<-c("counts")
+
+ #Alternatively read a seurat object
+} else if (fileType=="seurat"){
+
+ library(Seurat)
+
+ seurat<-readRDS("../../seurat_objects/1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.rds")
+
+ #Filter for monocytes
+ seurat<-seurat[,seurat$cell_type_lowerres=="monocyte"]
+
+ #Convert into a single cell object
+ sce <- as.SingleCellExperiment(seurat,assay="RNA")
+ rm(seurat)
+
+} else {
+ stop("File type not known!")
+}
+
+#Select all remaining samples
+samples<-as.character(unique(sce@colData$assignment))
+
+#Save the results
+metacell.allsamples<-NULL
+annotations.allsamples<-NULL
+annotations.percell<-NULL
+#Calculate meta-cell algorithm for each sample separatly
+#Also option to calculate correlation, but currently not done
+for(sample in samples){
+
+ print(paste("Processing sample:",sample))
+ sce.sample.full<-sce[,sce@colData$assignment == sample]
+
+ #Create data base directory
+ if(!dir.exists("database")){
+ dir.create("database/")
+ } else {
+ do.call(file.remove, list(list.files("database/", full.names = TRUE)))
+ }
+ scdb_init("database/", force_reinit=T)
+
+ #Upload SCE object
+ #Filter for genes with at least 4 counts (preliminary before the real filtering downstream
+ #to reduce the calculation burden)
+ mat<-scm_import_sce_to_mat(sce.sample.full[rowSums(counts(sce.sample.full))>3,])
+ scdb_add_mat(sample, mat)
+
+ #Create a directory for figures
+ if(!dir.exists("figs")) dir.create("figs/")
+ scfigs_init("figs/")
+
+ #Create a gset for generating the knn graph
+ mcell_add_gene_stat(gstat_id="stat", mat_id=sample)
+ mcell_gset_filter_varmean(gset_id="sample_feat", gstat_id="stat", T_vm=0.08, force_new=T)
+ #Sampled coverage of at least T_tot and threshold for the third highest UMI count > T_top3
+ mcell_gset_filter_cov(gset_id = "sample_feat", gstat_id="stat", T_tot=100, T_top3=2)
+ #Check generated gene set
+ gset<-scdb_gset("sample_feat")
+ print(paste("Number of selected genes:",length(gset@gene_set)))
+
+ #Create the knn graph based on correlation
+ mcell_add_cgraph_from_mat_bknn(mat_id=sample,
+ gset_id = "sample_feat",
+ graph_id="sample_graph",
+ K=50,
+ dsamp=T)
+
+ #Resample cells from the graph to robustly define groups
+ mcell_coclust_from_graph_resamp(
+ coc_id="sample_coc500",
+ graph_id="sample_graph",
+ min_mc_size=20,
+ p_resamp=0.75,
+ n_resamp=500)
+
+ #Remark the size of the meta cells can be influenced by the paramters
+ #K and min_mc_size (for both is true: the smaller, the more cells ...)
+ mcell_mc_from_coclust_balanced(
+ coc_id="sample_coc500",
+ mat_id= sample,
+ mc_id= paste0(sample,"_mc"),
+ K=mc_coclustK,
+ min_mc_size=mc_coclustMin_size,
+ alpha=2)
+
+ #Plotting outlier (only possible for small groups)
+ if(allPlots){
+ mcell_plot_outlier_heatmap(mc_id=paste0(sample,"_mc"),
+ mat_id = sample, T_lfc=3)
+ }
+
+ #Split and filter metacells using dbscan and outlier gene detection
+ mcell_mc_split_filt(new_mc_id=paste0(sample,"_mc_f"),
+ mc_id=paste0(sample,"_mc"),
+ mat_id=sample,
+ T_lfc=3, plot_mats=F)
+
+ ##Selecting marker genes automatically
+ mcell_gset_from_mc_markers(gset_id="sample_markers", mc_id=paste0(sample,"_mc_f"))
+ mc_colorize_default(paste0(sample,"_mc_f"))
+
+ #Creating a heatmap of genes and metacells
+ #(also not really well visible with too many cells)
+ if(allPlots){
+ mcell_mc_plot_marks(mc_id=paste0(sample,"_mc_f"), gset_id="sample_markers",
+ mat_id=sample)
+ }
+
+ #Create graph layout
+ mcell_mc2d_force_knn(mc2d_id=paste0(sample,"_2dproj"),
+ mc_id=paste0(sample,"_mc_f"), graph_id="sample_graph")
+ #Plotting also not really interesting for two large
+ mcell_mc2d_plot(mc2d_id=paste0(sample,"_2dproj"))
+
+ #Save it again as a h5ad object to compare the results
+ #So far no direct exporting function found, therefore processing the object myself
+ #See https://tanaylab.github.io/metacell/reference/tgMCCov-class.html
+ sce_meta<-scdb_mc(paste0(sample,"_mc_f"))
+
+ #Meta cell annotations
+ mc.annot<-data.frame(metaCell=sce_meta@mc)
+ mc.annot$cell<-rownames(mc.annot)
+ rownames(mc.annot)<-NULL
+ mc.annot<-rbind(mc.annot,
+ data.frame(metaCell=0,
+ cell=sce_meta@outliers))
+
+ annotations.percell<-rbind(annotations.percell,
+ mc.annot)
+
+ #Check distributions between cell types and stimulation results
+ annotations<-sce.sample.full@colData
+ #annotations$cell<-rownames(annotations)
+ annotations<-merge(mc.annot,annotations,by.x="cell",by.y="bare_barcode_lane")
+
+ perMetacell<-as.data.frame(table(annotations$metaCell))
+
+ #Plot only timepoint for now
+ freqs<-as.data.frame(table(annotations$metaCell,
+ annotations$timepoint))
+ freqs<-merge(freqs,perMetacell,by="Var1",suffixes=c(".spc",".mc"))
+ freqs$Fraction<-freqs$Freq.spc/freqs$Freq.mc
+
+ g<-ggplot(freqs,aes(x=as.factor(Var1),y=Fraction,fill=Var2))+
+ geom_bar(stat="identity")+
+ xlab("Meta cell (0=Outlier)")+
+ scale_fill_discrete(name = "Time point")+
+ ggtitle(paste("Cell number in total:",sum(freqs$Freq.spc)))
+ ggsave(g,filename=paste0("figs/barplot_time_ct_",sample,".png"))
+
+ #Create a pseudobulk object with the meta-cell annotation (without outliers)
+ mc.annot<-mc.annot[mc.annot$metaCell>0,]
+ sc.counts<-counts(sce.sample.full)[,mc.annot$cell]
+ all(colnames(sc.counts)==mc.annot$cell)
+
+ mc.annot$metaCell<-as.factor(paste0(sample,"_mc_",mc.annot$metaCell))
+ mc.pseudobulk<- t(apply(sc.counts, 1, tapply, mc.annot$metaCell,
+ sum, na.rm=T))
+
+ #Normalize to 10,000 per metacell
+ libSize<-colSums(mc.pseudobulk)
+ mc.pseudobulk<-t(t(mc.pseudobulk)/libSize*10000)
+
+ metacell.allsamples<-cbind(metacell.allsamples,mc.pseudobulk)
+
+ #Create a majority annotation for each metacell
+ annotations$metaCell<-paste0(sample,"_mc_",annotations$metaCell)
+ timepoint.mc<-sapply(colnames(mc.pseudobulk),
+ function(id) names(which.max(table(
+ annotations$timepoint[
+ annotations$metaCell==id]))))
+
+ annot.mc<-data.frame(metacell=names(timepoint.mc),
+ timepoint=timepoint.mc,
+ sample=sample)
+
+ #Add how many cells where part of the meta-cell
+ perMetacell$Var1<-paste0(sample,"_mc_",perMetacell$Var1)
+ colnames(perMetacell)<-c("metacell","cell.count")
+ annot.mc<-merge(annot.mc,perMetacell,by="metacell")
+ annotations.allsamples<-rbind(annotations.allsamples,annot.mc)
+
+}
+
+#Save results
+write.table(annotations.allsamples,file="annotations_metacell.tsv",sep="\t")
+write.table(annotations.percell,file="annotations_singlecell_metacell.tsv",sep="\t")
+saveRDS(metacell.allsamples,file="pseudobulk_metacell.RDS")
+
+#Delete the database directory
+unlink("database",recursive = TRUE)
+
diff --git a/01_association_metrics/metacell/metacells_from_leiden.R b/01_association_metrics/metacell/metacells_from_leiden.R
new file mode 100644
index 0000000..bd9a811
--- /dev/null
+++ b/01_association_metrics/metacell/metacells_from_leiden.R
@@ -0,0 +1,117 @@
+# ------------------------------------------------------------------------------
+# Implement own method to generate metacells based on leiden clustering
+# Run leiden clustering separatley for each donor (run on Oelen v3, Monocytes)
+# and use group cells that are part of the same cluster
+# ------------------------------------------------------------------------------
+
+library(Seurat)
+
+#Load complete seurat object
+seurat<-readRDS("../../seurat_objects/1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.rds")
+DefaultAssay(seurat)<-"SCT" #3000 most variable genes already identified
+
+#Filter for monocytes
+seurat<-seurat[,seurat$cell_type_lowerres=="monocyte"]
+
+#Resolution for leiden clusters
+leidenRes<-100
+print(paste("Leiden resolution:",leidenRes))
+
+type<-"SCT" #choose RNA or SCT
+print(paste("Normalization:",type))
+
+#Files with overall annotation and metacell matrix
+annot_mc_all<-NULL
+annot_mc_major_all<-NULL
+metacellBulk_all<-NULL
+
+#Iterate over all samples
+samples<-levels(seurat$assignment)
+for(donor in samples){
+
+ print(paste("Processing donor:",donor))
+
+ #Filter for the donor
+ seurat_donor<-seurat[,seurat$assignment==donor]
+
+ #Calculate PCA
+ seurat_donor<-RunPCA(seurat_donor, verbose=FALSE)
+
+ #Generate kNN graph and leidern clustering
+ seurat_donor <- FindNeighbors(seurat_donor, dims = 1:20)
+ seurat_donor <- FindClusters(seurat_donor, resolution = leidenRes,
+ algorithm = 4, #4=Leiden
+ group.singletons=FALSE)
+ #don't assign all singletons to the nearest cluster
+
+ #Save metacell - cell annotation
+ annot_mc<-data.frame(cluster=Idents(seurat_donor),
+ metacell=paste0("mc_",Idents(seurat_donor),"_",donor),
+ sample=donor,
+ cell=names(Idents(seurat_donor)),
+ row.names=NULL)
+ annot_mc_all<-rbind(annot_mc_all,annot_mc)
+
+ #Create pseudobulk
+ #all(colnames(seurat_donor)==annot_mc$cell)
+ if(type=="RNA"){
+ metacellBulk <- t(apply(as.matrix(seurat_donor@assays$RNA@counts), 1, tapply,
+ as.factor(annot_mc$cluster),
+ mean, na.rm=T))
+ } else if (type=="SCT"){
+ metacellBulk <- t(apply(as.matrix(seurat_donor@assays$SCT@counts), 1, tapply,
+ as.factor(annot_mc$cluster),
+ mean, na.rm=T))
+ } else {
+ stop(paste("Matrix type",type,"not known! Only RNA or SCT!"))
+ }
+
+
+ colnames(metacellBulk)<-paste0("mc_",1:ncol(metacellBulk),"_",donor)
+ metacellBulk_all<-cbind(metacellBulk_all,metacellBulk)
+
+ #Get majority annotation
+ meta.data<-seurat_donor@meta.data
+ meta.data$cell<-rownames(meta.data)
+ meta.data<-merge(meta.data,annot_mc,
+ by.x="cell",by.y="cell")
+
+ # Annotate each meta-cell to the most frequent condition
+ timepoint.mc<-sapply(colnames(metacellBulk),
+ function(id) names(which.max(table(
+ meta.data$timepoint[
+ meta.data$metacell==id]))))
+
+ #Save majority annotation
+ annot_mc_major<-data.frame(metacell=names(timepoint.mc),
+ condition=unlist(timepoint.mc),
+ sample=donor,
+ row.names=NULL)
+
+ annot_mc_major_all<-rbind(annot_mc_major_all,annot_mc_major)
+
+}
+
+
+
+if(type=="RNA"){
+ #Save per cell annotation
+ write.table(annot_mc_all,file="annotations_metacell_leiden_perCell.tsv",sep="\t")
+ write.table(annot_mc_major_all,file="annotations_mc_leiden_tp.tsv",sep="\t")
+
+ #Save peudobulk counts
+ saveRDS(metacellBulk_all, file="metacell_leiden.RDS")
+} else if(type=="SCT"){
+ write.table(annot_mc_all,file=paste0("annotations_metacell_leiden_SCT_perCell_",
+ leidenRes,".tsv"),
+ sep="\t")
+ write.table(annot_mc_major_all,file=paste0("annotations_mc_leiden_SCT_tp_",
+ leidenRes,".tsv"),
+ sep="\t")
+
+ #Save peudobulk counts
+ saveRDS(metacellBulk_all, file=paste0("metacell_leiden_SCT_",
+ leidenRes,".RDS"))
+}
+
+
diff --git a/01_association_metrics/metacell/plot_overview_metacell.R b/01_association_metrics/metacell/plot_overview_metacell.R
new file mode 100644
index 0000000..00c9ea1
--- /dev/null
+++ b/01_association_metrics/metacell/plot_overview_metacell.R
@@ -0,0 +1,180 @@
+# ------------------------------------------------------------------------------
+# Supplementary figure to show MetaCell overview
+# * Expression distribution of genes in a cell
+# * number of (meta)cells per sample
+# * comparison with Blueprint
+# ------------------------------------------------------------------------------
+
+library(Seurat)
+library(dplyr)
+library(ggplot2)
+library(ggpubr)
+
+theme_set(theme_bw())
+
+# ------------------------------------------------------------------------------
+# Expression distribution of genes in a cell
+# ------------------------------------------------------------------------------
+
+#Load the single cell object and get expressed genes
+seurat<-readRDS("seurat_objects/1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.rds")
+
+#Filter for monocytes
+seurat<-seurat[,seurat$cell_type_lowerres=="monocyte" &
+ seurat$timepoint=="UT"]
+
+exprGenes.singleCell<-rowSums(as.matrix(seurat@assays$SCT@counts)>0)/ncol(seurat)
+
+print(paste("Number of genes expressed in at least 50% of cells:",
+ sum(exprGenes.singleCell>=0.5)))
+
+exprGene.df<-data.frame(expr.perc=sort(exprGenes.singleCell),
+ position=1:length(exprGenes.singleCell),
+ Type="SingleCell",
+ stringsAsFactors = FALSE)
+
+#Metacell
+metacell.allsamples<-readRDS("metacell_general/metacell/metacells_K20_minCells10/pseudobulk_metacell.RDS")
+#Keep only UT metacells
+meta_annot<-read.table("metacell_general/metacell/metacells_K20_minCells10/annotations_metacell.tsv")
+#all(meta_annot$metacell == colnames(metacell.allsamples))
+metacell.allsamples<-metacell.allsamples[,meta_annot$timepoint == "UT"]
+exprGenes.metacell<-rowSums(metacell.allsamples>0)/ncol(metacell.allsamples)
+
+print(paste("Number of genes expressed in at least 50% of cells:",
+ sum(exprGenes.metacell>=0.5)))
+
+exprGene.df<-rbind(exprGene.df,
+ data.frame(expr.perc=sort(exprGenes.metacell),
+ position=1:length(exprGenes.metacell),
+ Type="MetaCell",
+ stringsAsFactors = FALSE))
+
+#Leiden
+metacell.allsamples<-readRDS("metacell_general/leiden_metacells/metacell_leiden_SCT.RDS")
+#Keep only UT metacells
+meta_annot<-read.table("metacell_general/leiden_metacells/annotations_mc_leiden_SCT_tp.tsv")
+#all(meta_annot$metacell == colnames(metacell.allsamples))
+metacell.allsamples<-metacell.allsamples[,meta_annot$condition == "UT"]
+exprGenes.metacell<-rowSums(metacell.allsamples>0)/ncol(metacell.allsamples)
+
+print(paste("Number of genes expressed in at least 50% of cells:",
+ sum(exprGenes.metacell>=0.5)))
+
+exprGene.df<-rbind(exprGene.df,
+ data.frame(expr.perc=sort(exprGenes.metacell),
+ position=1:length(exprGenes.metacell),
+ Type="Leiden",
+ stringsAsFactors = FALSE))
+
+
+g.1<-ggplot(exprGene.df,aes(x=position,y=expr.perc,color=Type))+geom_point()+
+ xlab("Gene index")+ylab("Expressed in x% of the cells")+
+ scale_color_discrete("Method")+
+ theme(axis.title = element_text(size=14),
+ axis.text=element_text(size=13),
+ legend.position = "none")
+
+# ------------------------------------------------------------------------------
+# Number of (meta)cells per sample
+# ------------------------------------------------------------------------------
+
+counts_all_mc<-NULL
+
+#Load metacell annotation leiden
+mc_method<-read.table("metacell_general/leiden_metacells/annotations_mc_leiden_SCT_tp.tsv",
+ stringsAsFactors = FALSE)
+
+mc_method<-mc_method%>%
+ group_by(sample,condition)%>%
+ summarize(counts=n())
+
+mc_method$method<-"Leiden"
+counts_all_mc<-rbind(counts_all_mc,mc_method)
+
+#Load metacell annotation
+mc_method<-read.table("metacell_general/metacell/metacells_K20_minCells10/annotations_metacell.tsv",
+ stringsAsFactors=FALSE)
+mc_method<-mc_method%>%
+ group_by(sample,timepoint)%>%
+ summarize(counts=n())
+
+mc_method$method<-"MetaCell"
+colnames(mc_method)<-colnames(counts_all_mc)
+counts_all_mc<-rbind(counts_all_mc,mc_method)
+
+#Get number of single cells per sample and condition
+sc_annot<-seurat@meta.data
+sc_annot<-sc_annot%>%
+ group_by(assignment,timepoint)%>%
+ summarize(counts=n())
+sc_annot$method<-"SingleCell"
+colnames(sc_annot)<-colnames(counts_all_mc)
+counts_all_mc<-rbind(counts_all_mc,sc_annot)
+
+#Filter to show only UT cells
+counts_all_mc<-counts_all_mc[counts_all_mc$condition=="UT",]
+
+#Create plot
+g.2<-ggplot(counts_all_mc,aes(x=method,y=counts,fill=method))+
+ geom_boxplot()+
+ ylab("Number of (meta)cells per sample")+
+ xlab("Method")+
+ scale_y_log10()+
+ scale_fill_discrete("Method")+
+ theme(legend.position = "none",
+ axis.title = element_text(size=14),
+ axis.text = element_text(size=13),
+ legend.title = element_text(size=13),
+ legend.text= element_text(size=13))
+
+# ------------------------------------------------------------------------------
+# BLUEPRINT comparison
+# ------------------------------------------------------------------------------
+
+res<-read.table("metacell_general/eval_allmethods/perCondition_eval.tsv",header=TRUE)
+res2<-read.table("metacell_general/eval_allmethods/singleCell_eval.tsv",header=TRUE)
+res3<-read.table("metacell_general/eval_allmethods/sc_leiden_SCT_eval.tsv",header=TRUE)
+#Parse method
+res$method<-ifelse(grepl("leiden",res$File),"leiden",
+ ifelse(grepl("MetaCellar",res$File),"MetaCellaR","metacell"))
+res2$method<-"singleCell"
+res3$method<-ifelse(grepl("leiden",res3$File),"leiden_SCT","singleCell_SCT")
+
+res<-rbind(res,res2,res3)
+rm(res2,res3)
+
+#Parse cutoff
+res$cutoff<-as.numeric(stringi::stri_match(res$File,regex="cutoff(.*?)(_|\\.)")[,2])
+res$cutoff<-paste0(as.character(res$cutoff*10),"%")
+
+#Filter it to show only UT results and allGenes
+res<-res[res$Condition=="UT" & res$Test == "allGenes",]
+
+#Show only SCT results (also used later and noMetaCellaR)
+res<-res[res$method %in% c("leiden_SCT","metacell","singleCell_SCT"),]
+rename_methods<-setNames(c("Leiden","MetaCell","SingleCell"),
+ c("leiden_SCT","metacell","singleCell_SCT"))
+res$method<-rename_methods[res$method]
+
+g.3<-ggplot(res,aes(x=cutoff,y=Corr_corr,fill=method))+
+ geom_bar(stat="identity",position="dodge")+
+ ylab("Correlation with BLUEPRINT")+
+ xlab("Genes stratified by x% expression in single cell")+
+ scale_fill_discrete("Method")+
+ theme(legend.position = "bottom",
+ axis.title = element_text(size=14),
+ axis.text = element_text(size=13),
+ legend.title = element_text(size=13),
+ legend.text= element_text(size=13))
+
+g.bottom<-ggarrange(g.2,g.3,ncol=2,widths=c(0.4,0.6),
+ common.legend = TRUE,legend="bottom",
+ labels=c("b)","c)"))
+g<-ggarrange(g.1,g.bottom,ncol=1,
+ labels=c("a)",""))
+ggsave(g,file="metacell_general/plots/metacell_overview_suppfigure.pdf",
+ width=9,height=9)
+ggsave(g,file="metacell_general/plots/metacell_overview_suppfigure.png",
+ width=9,height=9)
+
diff --git a/01_association_metrics/metacell/single_cell_correlation_tp.R b/01_association_metrics/metacell/single_cell_correlation_tp.R
new file mode 100644
index 0000000..6d40e2c
--- /dev/null
+++ b/01_association_metrics/metacell/single_cell_correlation_tp.R
@@ -0,0 +1,157 @@
+# ------------------------------------------------------------------------------
+# Calculate correlation per timepoint (and sample if stated) from the
+# original single cell dataset (Oelen v3 dataset, Monocytes) for different
+# gene sets (split dependent on gene expression cutoff) for comparison with
+# metacells (see corresponding files create_genesets.R,
+# metacell_general_correlation_tp.R and eval_blueprint_genesets.R)
+# Input: Seurat object, file with selected genes
+# Output: files with correlation values (r-values and p-values)
+# ------------------------------------------------------------------------------
+
+library(Seurat)
+library(Hmisc) #for fast calculation of correlation
+library(optparse)
+
+#Parse arguments
+option_list = list(
+ make_option(c("-g","--selectedGenes"),
+ default="benchmark/celltypes/gene_expressed_over_hald_cells.txt",
+ help="path to list with selected genes"),
+ make_option(c("-s","--perSample"),action="store_true",
+ default=FALSE,
+ help="Shall the evaluation be done for each sample separatly"),
+ make_option(c("-t","--type"),
+ default="RNA",
+ help="Use either RNA count matrix (RNA) or SCT count matrix (SCT)."),
+ make_option(c("-o","--outputFile"),
+ default="timepoint_monocytes",
+ help="Suffix of the output files")
+)
+
+opt_parser = OptionParser(option_list=option_list)
+opt = parse_args(opt_parser)
+
+pathSelectedGenes<-opt$selectedGenes
+perSample<-opt$perSample
+matrixType<-opt$type
+outputSuffix<-opt$outputFile
+
+print(paste("Evaluating single cell data for gene set:"))
+print(pathSelectedGenes)
+
+print(paste("Evaluating each sample individually:", perSample))
+
+#Load complete seurat object
+seurat<-readRDS("seurat_objects/1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.rds")
+
+#Filter for monocytes
+seurat<-seurat[,seurat$cell_type_lowerres=="monocyte"]
+
+#Select which genes shall be chosen for correlation (same as for single cell)
+selected.genes<-read.table(pathSelectedGenes,
+ header=FALSE)
+seurat<-seurat[selected.genes$V1,]
+
+#Result data frame (correlation and pvalues)
+corr.df<-NULL
+pval.df<-NULL
+
+correlationRes<-function(meta_counts,colName){
+
+ #Be carefull: rcorr does not work with less than 5 samples
+ corr.mc<-rcorr(t(meta_counts), type="spearman")
+ #corr.mc<-cor(t(meta_counts), method="spearman")
+
+ #Create a pairwise data frame for the correlation
+ corr.pairs.mc<-as.data.frame(as.table(corr.mc$r),
+ stringsAsFactors = FALSE)
+ corr.pairs.mc<-corr.pairs.mc[corr.pairs.mc$Var10% and <5% of cells)
+# and 50 very highly expressed genes (expressed in >95% of the cells)
+# Input: Seurat object of Oelen v3 dataset (UT monocytes)
+# Output: scatterplot for comparison
+# ------------------------------------------------------------------------------
+
+library(Seurat)
+library(propr)
+library(Matrix)
+library(ggplot2)
+
+theme_set(theme_bw())
+
+#Load complete seurat object
+seurat<-readRDS("seurat_objects/1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.rds")
+
+#Filter for monocytes and UT timepoint
+seurat<-seurat[,seurat$cell_type_lowerres == "monocyte"]
+seurat<-seurat[,seurat$timepoint == "UT"]
+
+# Get non-zero-ratio of each gene
+nozeroratio<-rowMeans(seurat$RNA@data>0)
+
+full_count_matrix<-t(as.matrix(seurat$RNA@data))
+
+#Select 50 very lowly expressed genes and 50 very highly expressed genes
+set.seed(1)
+low_genes<-sample(names(nozeroratio)[nozeroratio > 0 & nozeroratio < 0.05],50)
+high_genes<-sample(names(nozeroratio)[nozeroratio > 0.9],50)
+
+#Calculate rho values
+res<-propr::perb(full_count_matrix,
+ select=c(low_genes,high_genes))@matrix
+
+propr<-reshape2::melt(res)
+propr$Var1<-as.character(propr$Var1)
+propr$Var2<-as.character(propr$Var2)
+propr<-propr[propr$Var1 < propr$Var2,]
+
+#Compare with spearman values
+spearman<-cor(full_count_matrix[,c(low_genes,high_genes)],method="spearman")
+spearman<-reshape2::melt(spearman)
+spearman$Var1<-as.character(spearman$Var1)
+spearman$Var2<-as.character(spearman$Var2)
+spearman<-spearman[spearman$Var1 < spearman$Var2,]
+
+#Combine both into one plot
+all(propr$Var1 == spearman$Var1)
+all(propr$Var2 == spearman$Var2)
+
+propr$corr<-spearman$value
+
+propr$type<-ifelse(propr$Var1 %in% low_genes,
+ ifelse(propr$Var2 %in% high_genes,"mixed","both_low"),
+ ifelse(propr$Var2 %in% high_genes,"both_high","mixed"))
+
+g<-ggplot(propr,aes(x=corr,y=value,color=type))+
+ geom_point(alpha=0.5)+
+ xlab("Spearman correlation")+
+ ylab("Rho proportionality")+
+ xlim(-0.2,1)+ylim(-0.2,1)+
+ scale_color_discrete("Expression gene pair")+
+ geom_abline()
+ggsave(g,file="test_rho.pdf")
diff --git a/01_association_metrics/scorpius_and_slingshot_clean.R b/01_association_metrics/scorpius_and_slingshot_clean.R
new file mode 100644
index 0000000..6ca2390
--- /dev/null
+++ b/01_association_metrics/scorpius_and_slingshot_clean.R
@@ -0,0 +1,143 @@
+require(Seurat)
+require(slingshot)
+library(tradeSeq)
+library(RColorBrewer)
+library(SingleCellExperiment)
+
+all <- readRDS('1M_v3_mediumQC_sct_celltyped_minimized_rnascaled.rds')
+degenes <- read.table('degenes_monocyteUTX3hCA.txt')$V1
+mono1 <- subset(x = all, subset = cell_type == 'mono 1')
+mono1Ca <- subset(mono1, subset = (timepoint == 'UT') | (timepoint == 'X3hCA') | (timepoint == 'X24hCA'))
+library(Matrix)
+writeMM(GetAssayData(mono1Ca, assay='SCT', slot='data'),
+ "mono1Ca_allgenes.mtx")
+write.table(as.matrix(mono1Ca[[]]), 'mono1Ca_allgenes.meta.csv', sep=",")
+write.table(as.matrix(rownames(mono1Ca)), 'mono1Ca_allgenes.genes.txt')
+mono1Ca_de3h <- subset(mono1, subset = (timepoint == 'UT') | (timepoint == 'X3hCA') | (timepoint == 'X24hCA'),
+ features = degenes)
+# also select DE genes
+
+# plot
+pdf("pca_umap_sling_mono1CA_degenesUTX3h.pdf")
+mono1Ca_de3h <- RunPCA(mono1Ca_de3h, npcs=10)
+mono1Ca_de3h <- FindNeighbors(mono1Ca_de3h, verbose = FALSE, dims = 1:10)
+mono1Ca_de3h <- FindClusters(mono1Ca_de3h, pc=1:10, algorithm = 2, random.seed = 256, resolution = 0.8)
+mono1Ca_de3h <- RunUMAP(mono1Ca_de3h, dims = 1:10, reduction = "pca")
+
+DimPlot(mono1Ca_de3h, reduction = "pca",
+ group.by = "timepoint", pt.size = 0.5, label = TRUE, repel = TRUE)
+ElbowPlot(mono1Ca_de3h, ndims=10)
+DimPlot(mono1Ca_de3h, reduction = 'umap',
+ group.by = "lane", pt.size = 0.5, label = TRUE, repel = TRUE)
+DimPlot(mono1Ca_de3h, pt.size = 0.5, reduction = "umap",
+ group.by = "timepoint", label = TRUE)
+DimPlot(mono1Ca_de3h, pt.size = 0.5, reduction = "umap",
+ group.by = "SCT_snn_res.0.8", label = TRUE)
+
+# slingshot
+mono1sling <- slingshot(Embeddings(mono1Ca_de3h, "umap"), clusterLabels = mono1Ca_de3h$SCT_snn_res.0.8,
+ start.clus = 0, stretch = 0)
+saveRDS(mono1Ca_de3h, 'mono1Ca_degenes.Rda')
+saveRDS(mono1sling, 'mono1sling_degenes.Rda')
+# load the expression data
+mono1Ca_degenes <- readRDS('mono1Ca_degenes.Rda')
+# load the slingshot
+mono1sling <- readRDS('mono1sling_degenes.Rda')
+pdf("evaluateK_chooseKnots.pdf")
+mono1ca_matrix <- as.matrix(GetAssayData(mono1Ca_de3h, slot='data'))
+icMat <- evaluateK(counts = mono1ca_matrix,
+ sds = mono1sling, k = 3:10,
+ nGenes = 200, verbose = T)
+pdf("slingshot_pseudotime.pdf")
+pseudotime <- slingPseudotime(mono1sling)
+
+nc <- 2
+nms <- colnames(pseudotime)
+nr <- ceiling(length(nms)/nc)
+par(mfrow = c(nr, nc))
+for (i in nms) {
+ ggplot(data.frame(pseudotime), aes(x=i, color=timepoint)) +
+ geom_histogram(fill="white", alpha=0.5, position="identity")
+}
+
+ggplot_frame = data.frame(pseudotime)
+ggplot_frame$timepoint <- mono1Ca_degenes[[]]$timepoint
+ggplot(ggplot_frame, aes(x=curve1, color=timepoint)) +
+ geom_histogram(fill="white", alpha=0.5, position="identity")
+ggplot(ggplot_frame, aes(x=curve2, color=timepoint)) +
+ geom_histogram(fill="white", alpha=0.5, position="identity")
+ggplot(ggplot_frame, aes(x=curve3, color=timepoint)) +
+ geom_histogram(fill="white", alpha=0.5, position="identity")
+ggplot(ggplot_frame, aes(x=curve4, color=timepoint)) +
+ geom_histogram(fill="white", alpha=0.5, position="identity")
+dev.off()
+
+#cellWeights <- slingCurveWeights(mono1sling)
+#sce <- fitGAM(counts = GetAssayData(mono1Ca, slot='data'),
+# pseudotime = pseudotime, cellWeights = cellWeights,
+library(viridis)
+pdf('slingshot_cells_in_different_linearges.pdf')
+nc <- 2
+nms <- colnames(pseudotime)
+nr <- ceiling(length(nms)/nc)
+pal <- viridis(100, end = 0.95)
+par(mfrow = c(nr, nc))
+for (i in nms) {
+ colors <- pal[cut(pseudotime[,i], breaks = 100)]
+ plot(reducedDim(mono1sling), col = colors, pch = 16, cex = 0.5, main = i)
+ lines(mono1sling, lwd = 2, col = 'black', type = 'lineages')
+}
+
+dev.off()
+
+
+library(SCORPIUS)
+mono1Ca_degenes <- readRDS('mono1Ca_degenes.Rda')
+#pdf('SCORPIUS_plots.pdf')
+expression <- t(as.matrix(GetAssayData(mono1Ca_degenes, slot='data')))
+group_name <- factor(as.character(mono1Ca_degenes[[]]$timepoint))
+# try with PCA
+#pdf('scorpius_pca.pdf')
+#pearson_space <- reduce_dimensionality(expression, "pearson")
+#pearson_traj <- infer_trajectory(pearson_space)
+#draw_trajectory_plot(pearson_space, group_name, pearson_traj$path, contour = TRUE)
+#dev.off()
+
+space <- reduce_dimensionality(expression, "spearman")
+traj <- infer_trajectory(space)
+saveRDS(space, 'scorpius_space.rds')
+saveRDS(traj, 'scorpius_traj.rds')
+# save traj#time in tsv
+write.table(as.matrix(traj$time), file='scorpius_trajtime.tsv', sep = '\t')
+write.table(as.matrix(traj$path), file='scorpius_trajpath.tsv', sep = '\t')
+
+# load scorpius results
+space <- readRDS('scorpius_space.rds')
+traj <- readRDS('scorpius_traj.rds')
+draw_trajectory_plot(space, group_name, traj$path, contour = TRUE)
+histogram_data <- data.frame("time" = matrix(unlist(traj$time), nrow=length(traj$time), byrow=T),
+ row.names=names(traj$time))
+histogram_data$timepoint <- mono1Ca_degenes[[]]$timepoint
+
+ggplot(histogram_data, aes(x=time, color=timepoint)) +
+ geom_histogram(fill="white", alpha=0.5, position="identity")
+
+# draw_trajectory_heatmap(space, traj$time, progression_group=group_name)
+pdf('scorpius_heatmap.pdf')
+gimp <- gene_importances(
+ expression,
+ traj$time,
+ num_permutations = 10,
+ num_threads = 8,
+ ntree = 10000,
+ ntree_perm = 1000
+)
+saveRDS(gimp, 'scorpius_gimp.rds')
+gimp$qvalue <- p.adjust(gimp$pvalue, "BH", length(gimp$pvalue))
+gene_sel <- gimp$gene[gimp$qvalue < .05]
+expr_sel <- scale_quantile(expression[,gene_sel])
+
+modules <- extract_modules(scale_quantile(expr_sel), traj$time, verbose = T) # needs more RAM than 50G
+draw_trajectory_heatmap(expr_sel, traj$time, group_name, modules)
+dev.off()
+
diff --git a/01_association_metrics/scvelo_analysis_dm.py b/01_association_metrics/scvelo_analysis_dm.py
new file mode 100644
index 0000000..4cddacd
--- /dev/null
+++ b/01_association_metrics/scvelo_analysis_dm.py
@@ -0,0 +1,100 @@
+"""
+RNA velocity analysis using the dynamic model
+run on all samples of Oelen v3 dataset for classical monocytes (mon1, mono2)
+and filtered for the 2000 most variable genes
+
+Input: loom files generated from velocyto
+Output: hd5ad object with RNA velocity estimates
+"""
+
+import scvelo as scv
+import pandas as pd
+import os
+
+scv.logging.print_version()
+scv.settings.verbosity = 3 # show errors(0), warnings(1), info(2), hints(3)
+scv.settings.set_figure_params('scvelo') # for beautified visualization
+
+#Load annotation file with UMAP coordinates
+fpath="annotations/umap_monocytes.tsv"
+umap_coords=pd.read_csv(fpath, sep='\t')
+
+#Load data for each processed lane
+lanes=os.listdir("velocyto")
+ldata_array=[]
+for lane in lanes:
+
+ print(lane)
+
+ #Get loom file for each lane (file name unfortnuately not always the same)
+ files=os.listdir("velocyto/"+lane)
+ file=[f for f in files if f.endswith(".loom")]
+ lfile="velocyto/"+lane+"/"+file[0]
+
+ #Read file
+ ldata = scv.read(lfile, cache=True)
+
+ #Filter monocytes from file
+ filteredNames=[barcodeName.split(":")[1] for barcodeName in ldata.obs.index]
+ filteredNames=[barcodeName.replace("x","")+"_"+lane for barcodeName in filteredNames]
+ ldata.obs.index=filteredNames
+ umap_coords_filtered=umap_coords[umap_coords["Unnamed: 0"].isin(filteredNames)]
+
+ #Filter for monocyotes (barcode in umap file)
+ ldata=ldata[umap_coords_filtered["Unnamed: 0"],:].copy()
+
+ #Make variable names unique
+ ldata.var_names_make_unique()
+ #Add ldata object
+ ldata_array.append(ldata)
+
+ldata_filtered=ldata_array[0].concatenate(ldata_array[1:], batch_key='lane',
+ batch_categories=lanes,index_unique=None)
+
+#Delete variables which are not required anymore
+del ldata
+del ldata_array
+
+#Add information about cell types and time points (more annotations are available)
+annotations=pd.read_csv("seurat_object_meta.tsv", sep='\t')
+annotations=annotations.loc[ldata_filtered.obs.index.tolist(),:]
+ldata_filtered.obs["timepoint"]=annotations["timepoint"]
+ldata_filtered.obs["celltype"]=annotations["cell_type"]
+
+#Filter for only monocytes 1 and 2
+ldata_filtered=ldata_filtered[ldata_filtered.obs.celltype.isin(["mono 1","mono 2"])].copy()
+
+#RNA velocity analysis
+scv.utils.show_proportions(ldata_filtered)
+#Filter genes with less than 20 counts (spliced + unspliced) and
+#reduce to the top 2000 highly variable genes
+scv.pp.filter_and_normalize(ldata_filtered, min_shared_counts=20, n_top_genes=2000)
+scv.pp.moments(ldata_filtered)
+
+#Run dynamic model
+scv.tl.recover_dynamics(ldata_filtered)
+scv.tl.velocity(ldata_filtered, mode='dynamical')
+scv.tl.velocity_graph(ldata_filtered)
+
+#Add UMAP coordinates
+umap_coords.index=umap_coords["Unnamed: 0"]
+umap_coords=umap_coords.loc[ldata_filtered.obs.index.tolist(),:]
+ldata_filtered.obsm["X_umap"]=umap_coords[["umap_1","umap_2"]].to_numpy()
+
+#Save file
+ldata_filtered.write("h5ad_objects/scveloAnalysis_dynamic_velocity_womono34.h5ad")
+
+#Create plot with embedding
+scv.pl.velocity_embedding_stream(ldata_filtered, basis='umap', color=['timepoint', 'celltype'],
+ show=False,save="embedding_dynamic_monocytes_womono34.png")
+
+scv.pl.velocity_graph(ldata_filtered,color="timepoint",
+ show=False,save="velocityGraph_dynamic_monocytes_womono34.png")
+
+#Calculate pseudotime
+scv.tl.latent_time(ldata_filtered)
+scv.pl.scatter(ldata_filtered, color='latent_time', cmap='gnuplot',
+ show=False,save="latenttime_dynamic_monocytes_womono34.png")
+
+#Save file
+ldata_filtered.write("h5ad_objects/scveloAnalysis_dynamic_velocity_latenttime_womono34.h5ad")
diff --git a/01_association_metrics/setting_files_for_grnboost2/config_bp_mono.yaml b/01_association_metrics/setting_files_for_grnboost2/config_bp_mono.yaml
new file mode 100644
index 0000000..1fcae52
--- /dev/null
+++ b/01_association_metrics/setting_files_for_grnboost2/config_bp_mono.yaml
@@ -0,0 +1,45 @@
+# Input Settings: initialize base input folder names,
+# dataset collections, and algorithms to run over
+input_settings:
+
+ # Base input directory
+ input_dir : "inputs"
+
+ # Subdirectory of inputs that datasets are placed in
+ dataset_dir: "example"
+
+ # Denotes a list of datasets, each with the following parameters:
+ # name: Name of the dataset. May be used in logging or other
+ # messages written during execution
+ #
+ # exprData: scRNA-Seq expression data file. Cells are along the
+ # columns and genes are along the rows.
+ # cellData: a file containing pseudotime ordering, or any other
+ # information about cells.
+ # trueEdges: Name of the refrence network file in the
+ # edge list format. Needed for evaluation.
+ datasets:
+ - name: "compare_grnboost2_bp_mono"
+ exprData: "bp_Expression.csv"
+ cellData: "bp_timepoint.fake.csv"
+ trueEdges: "selected_mono1data.string.csv"
+
+ # Denotes a list of algorithms to run. Each has the following parameters:
+ # name: Name of the algorithm. Must be recognized by the pipeline, see
+ # code for acceptable values
+ #
+ # should_run: whether or not to run the algorithm
+ #
+ # params: any additional, algorithm-specific parameters
+ # should be specified in the params map for a given algorithm
+ #
+ algorithms:
+ - name: "GRNBOOST2"
+ params:
+ should_run: [True]
+# Output Settings: initialize base output folder names
+output_settings:
+
+ # Base output directory
+ output_dir: "outputs"
+ output_prefix: "compare_grnboost2_bp_mono"
diff --git a/01_association_metrics/setting_files_for_grnboost2/config_sc_mono.yaml b/01_association_metrics/setting_files_for_grnboost2/config_sc_mono.yaml
new file mode 100644
index 0000000..a3f61cf
--- /dev/null
+++ b/01_association_metrics/setting_files_for_grnboost2/config_sc_mono.yaml
@@ -0,0 +1,45 @@
+# Input Settings: initialize base input folder names,
+# dataset collections, and algorithms to run over
+input_settings:
+
+ # Base input directory
+ input_dir : "inputs"
+
+ # Subdirectory of inputs that datasets are placed in
+ dataset_dir: "example"
+
+ # Denotes a list of datasets, each with the following parameters:
+ # name: Name of the dataset. May be used in logging or other
+ # messages written during execution
+ #
+ # exprData: scRNA-Seq expression data file. Cells are along the
+ # columns and genes are along the rows.
+ # cellData: a file containing pseudotime ordering, or any other
+ # information about cells.
+ # trueEdges: Name of the refrence network file in the
+ # edge list format. Needed for evaluation.
+ datasets:
+ - name: "compare_grnboost2_sc_mono"
+ exprData: "sc_Expression.csv"
+ cellData: "sc_timepoint.fake.csv"
+ trueEdges: "selected_mono1data.string.csv"
+
+ # Denotes a list of algorithms to run. Each has the following parameters:
+ # name: Name of the algorithm. Must be recognized by the pipeline, see
+ # code for acceptable values
+ #
+ # should_run: whether or not to run the algorithm
+ #
+ # params: any additional, algorithm-specific parameters
+ # should be specified in the params map for a given algorithm
+ #
+ algorithms:
+ - name: "GRNBOOST2"
+ params:
+ should_run: [True]
+# Output Settings: initialize base output folder names
+output_settings:
+
+ # Base output directory
+ output_dir: "outputs"
+ output_prefix: "compare_grnboost2_sc_mono"
diff --git a/02_correlation_evaluation/README.md b/02_correlation_evaluation/README.md
new file mode 100644
index 0000000..b4706fb
--- /dev/null
+++ b/02_correlation_evaluation/README.md
@@ -0,0 +1,35 @@
+# 02_correlation_evaluation
+
+*blueprint_normalize.sh* normalize BLUEPRINT dataset, as well as regress out the first PC
+
+*blueprint_correlation.py*: calculate the co-expression for gene pairs in BLUEPRINT data
+
+*compare_blueprint_cutoffs_CD4T.py* : Compare correlation between Blueprint and single cell (Oelen v3 dataset) for different expression thresholds (number of cells expressing the gene), implemented for UT and CD4+ T cells here
+
+*compare_immunexut_cutoffs_CD4T.py*: Same approach as in *compare_blueprint_cutoffs_CD4T.py*, but comparing correlation between ImmuNexUT and Oelen v3 dataset instead
+
+*correlation_between_datasets.R*: check Pearson correlation between data sets (for CD4+ T cells) for single cell vs single cell dataset comparison, single cell vs bulk dataset comparison and bulk vs bulk dataset comparison, afterwards combines all results in one large heatmap
+
+*correlation_between_datasets_extended.R*: check if the correlation values between matched cell types for single cell and bulk (ImmuNexUT) are higher than for not-matched cell types
+
+*correlation_between_datasets_othercts.R*: extension of *correlation_between_datasets.R* that includes all cell types (not only CD4+ T cells)
+
+*correlation_timepoint_combined_indivs_1mio.py*: calculate the co-expression for genes that are expressed in more than 50% cells in Oelen v2 and v3 dataset
+
+*correlation_timepoint_combined_indivs_ng.py*: calculate the co-expression for genes that are expressed in more than 50% cells in van der Wijst dataset
+
+*correlation_timepoint_combined_indivs_stemiv2.py*: calculate the co-expression for genes that are expressed in more than 50% cells in van Blokland v2 dataset
+
+*correlation_timepoint_combined_indivs_stemiv3.py*: calculate the co-expression for genes that are expressed in more than 50% cells in van Blokland v3 dataset
+
+*figure2_barplot_cutoffs.R*: create barplots from the results of *compare_blueprint_cutoffs_CD4T.py* and *compare_immunexut_cutoffs_CD4T.py*
+
+*figure2_scatterplots.R*: creates inset plots for Main Figure 2 (a,b,d), showing scatterplots of gene pair-wise Spearman correlation values between two data sets for a) Oelen v3 dataset vs van Blokland v2 dataset (both CD4+ T cells), b) ImmuNexUT - van Blokland v2 (naive CD4+ T cells and CD4+ T cells) and c) Blueprint - ImmuNexUT (both naive CD4+ T cells)
+
+*normalize_ImmuNexUT.R*: preprocessingImmuNexUT data (separately for each cell type with a matching single-cell cell type) following the description in the corresponding publication (filtering lowly expressed genes, TMM normalization and batch correction) followed by correlation calculation for all genes expressed in 50% of the cells of the Oelen v3 dataset (for comparison with single cell data)
+
+*wilcoxon_test_crispr.R*: Benchmark our correlation results from single cell (Oelen v3, CD4+ T cells) and bulk (ImmuNexUT, naive CD4+ T cells) with a public CRISPR perturbation dataset using Wilcoxon Rank Sum Test
+
+*wilcoxon_test_string.R*: Compare if correlated pairs from single cell (Oelen v3, CD4+ T cells) and bulk (ImmuNexUT, naive CD4+ T cells) are enriched in STRING database (Using the same strategy as in CRISPR validation with Wilcoxon Rank Sum Test)
+
+
diff --git a/02_correlation_evaluation/blueprint_correlation.py b/02_correlation_evaluation/blueprint_correlation.py
new file mode 100644
index 0000000..9e8c5e4
--- /dev/null
+++ b/02_correlation_evaluation/blueprint_correlation.py
@@ -0,0 +1,48 @@
+import pandas as pd
+import numpy as np
+from sklearn.decomposition import PCA
+from sklearn.preprocessing import StandardScaler
+from scipy.stats import spearmanr, pearsonr
+import scanpy as sc
+import seaborn as sns
+import matplotlib.pyplot as plt
+from tqdm import tqdm
+# %matplotlib inline
+
+# %%bash
+# export HDF5_USE_FILE_LOCKING='FALSE'
+
+def read_numpy(fileprefix, rowname='rows', colname='cols'):
+ data = np.load(fileprefix+'.npy')
+ rows = [item.strip() for item in open(fileprefix+f'.{rowname}.txt', 'r').readlines()]
+ cols = [item.strip() for item in open(fileprefix+f'.{colname}.txt', 'r').readlines()]
+ return pd.DataFrame(data=data,
+ index=rows,
+ columns=cols)
+
+def get_pairwise_correlations(corr_df):
+ corrmatrix = corr_df.corr()
+ triuindices = np.triu_indices(corrmatrix.shape[0], k=1)
+ return corrmatrix.values[triuindices]
+
+blueprint_mappings = pd.read_csv('../blueprint/blueprint_mappings.txt',
+ sep='\t', index_col=0)['Gene name'].T.to_dict()
+data = pd.read_csv('../blueprint/mono_gene_nor_combat_20151109.ProbesWithZeroVarianceRemoved.ProbesCentered.SamplesZTransformed.1PCAsOverSamplesRemoved.txt.gz',
+ sep='\t', index_col=0, compression='gzip')
+
+data.index = [item.split('.')[0] for item in data.index]
+data['genename'] = [blueprint_mappings.get(ids) for ids in data.index]
+print(data.shape)
+data = data.dropna(subset=['genename']).drop_duplicates(subset=['genename'])
+data = data.set_index('genename')
+
+data.head()
+coefs, ps = spearmanr(data, axis=1)
+print(coefs.shape)
+np.save('mono_gene_nor_combat_20151109.ProbesWithZeroVarianceRemoved.ProbesCentered.SamplesZTransformed.1PCAsOverSamplesRemoved.spearmanr.npy',
+ coefs)
+np.save('mono_gene_nor_combat_20151109.ProbesWithZeroVarianceRemoved.ProbesCentered.SamplesZTransformed.1PCAsOverSamplesRemoved.spearmanrPvalues.npy',
+ ps)
+with open('mono_gene_nor_combat_20151109.ProbesWithZeroVarianceRemoved.ProbesCentered.SamplesZTransformed.1PCAsOverSamplesRemoved.spearmanr.genes.txt',
+ 'w') as f:
+ f.write('\n'.join(data.index.values))
\ No newline at end of file
diff --git a/02_correlation_evaluation/blueprint_normalize.sh b/02_correlation_evaluation/blueprint_normalize.sh
new file mode 100644
index 0000000..1c295e2
--- /dev/null
+++ b/02_correlation_evaluation/blueprint_normalize.sh
@@ -0,0 +1,35 @@
+#!/usr/bin/env bash
+#SBATCH --time=7:00:00
+#SBATCH --cpus-per-task=10
+#SBATCH --mem=30gb
+#SBATCH --nodes=1
+#SBATCH --open-mode=append
+#SBATCH --export=NONE
+#SBATCH --get-user-env=L
+
+module purge
+module load Java
+
+jar_file=eqtl-mapping-pipeline-1.4.9-SNAPSHOT/eqtl-mapping-pipeline.jar
+traitfile=./blueprint/tcel_gene_nor_combat_20151109.ProbesWithZeroVarianceRemoved.ProbesCentered.SamplesZTransformed.txt.gz
+outdir=./blueprint
+logFile=./blueprint/blueprint_cd4t_adjustPCA.log
+java -Xmx30g -Xms30g -jar ${jar_file} \
+--mode normalize \
+--in ${traitfile} \
+--out ${outdir} \
+--adjustPCA \
+--maxnrpcaremoved 3 \
+--stepsizepcaremoval 1 | tee ${logFile}
+
+jar_file=eqtl-mapping-pipeline-1.4.9-SNAPSHOT/eqtl-mapping-pipeline.jar
+traitfile=./blueprint/mono_gene_nor_combat_20151109.ProbesWithZeroVarianceRemoved.ProbesCentered.SamplesZTransformed.txt.gz
+outdir=./blueprint
+logFile=./blueprint/blueprint_normalize.log
+java -Xmx30g -Xms30g -jar ${jar_file} \
+--mode normalize \
+--in ${traitfile} \
+--out ${outdir} \
+--adjustPCA \
+--maxnrpcaremoved 3 \
+--stepsizepcaremoval 1 | tee ${logFile}
\ No newline at end of file
diff --git a/02_correlation_evaluation/compare_blueprint_cutoffs_CD4T.py b/02_correlation_evaluation/compare_blueprint_cutoffs_CD4T.py
new file mode 100644
index 0000000..381d0dd
--- /dev/null
+++ b/02_correlation_evaluation/compare_blueprint_cutoffs_CD4T.py
@@ -0,0 +1,108 @@
+# ---------------------------------------------------------------------------------------
+# Compare correlation between Blueprint and single cell (Oelen v3 dataset)
+# for different thresholds (number of cells expressing the gene),
+# implemented for UT and CD4T cells here
+# Input: seurat objects with Oelen v3 dataset and precalculated Blueprint correlation
+# for all possible gene pairs
+# Output: csv file with the correlation between Blueprint and Oelen v3 for each threshold
+# ---------------------------------------------------------------------------------------
+
+from scipy.stats import spearmanr, pearsonr
+import scanpy as sc
+import numpy as np
+import pandas as pd
+from pathlib import Path
+from time import time
+import os
+import re
+
+# load scanpy object (Oelen v3 dataset)
+alldata = sc.read_h5ad('seurat_objects/1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.SCT.h5ad')
+
+# filter for CD4+ T cells and UT cells
+alldata = alldata[alldata.obs.cell_type_lowerres=='CD4T']
+alldata = alldata[alldata.obs.timepoint=='UT'].copy() #copy to not create only a view object
+
+celltype_data = pd.DataFrame(data=alldata.X.toarray(),
+ index=alldata.obs.index,
+ columns=alldata.var.index)
+
+# load Blueprint object
+bp_corr = np.load('blueprint_data/tcel_gene_nor_combat_20151109.ProbesWithZeroVarianceRemoved.ProbesCentered.SamplesZTransformed.spearmanR.npy',mmap_mode="r")
+
+bp_corr_genes = []
+f= open('blueprint_data/tcel_gene_nor_combat_20151109.ProbesWithZeroVarianceRemoved.ProbesCentered.SamplesZTransformed.spearmanR.cols.txt','r')
+for line in f.readlines():
+ bp_corr_genes.append(line.rstrip())
+
+# method to select genes above a certain nonzero ratio
+def select_gene_nonzeroratio(df, ratio):
+ nonzerocounts = np.count_nonzero(df.values, axis=0)/df.shape[0]
+ selected_genes = df.columns[nonzerocounts>ratio]
+ return selected_genes
+
+# generate a set of thresholds that should be tested (start with stricter thresholds)
+thresholds = [i/10 for i in range(1,10)]
+thresholds.reverse()
+
+f_out = open("co-expression_indivs_combined/blueprint_cutoff_eval_CD4T.txt", "w")
+f_out.write("threshold,ngenes,corr_pearson\n")
+
+# iterate over all thresholds
+for th in thresholds:
+
+ #select all genes within the threshold
+ selected_genes = select_gene_nonzeroratio(celltype_data, th)
+
+ # filter genes that are not in Blueprint
+ selected_genes = list(set(selected_genes) & set(bp_corr_genes))
+
+ print(f"Number of selected genes for {th}: {len(selected_genes)}")
+
+ gene_pairs = []
+ for i,gene1 in enumerate(selected_genes):
+ for j in range(i+1, len(selected_genes)):
+ if gene1 < selected_genes[j]:
+ gene_pairs.append(';'.join([gene1, selected_genes[j]]))
+ else:
+ gene_pairs.append(';'.join([selected_genes[j],gene1]))
+
+ # calculate correlation single cell
+ input_df = celltype_data[selected_genes]
+ input_data = spearmanr(input_df, axis=0)[0]
+ input_data_uppertria = input_data[np.triu_indices_from(input_data, 1)]
+
+ corrs_df = pd.DataFrame({'UT': input_data_uppertria},
+ index=gene_pairs)
+
+ # filter blueprint and order it the same way as the single cell object
+ filter_bp_genes = [gene in selected_genes for gene in bp_corr_genes]
+ bp_corr_filtered = bp_corr[filter_bp_genes][:,filter_bp_genes]
+ bp_uppertria = bp_corr_filtered[np.triu_indices_from(bp_corr_filtered, 1)]
+
+ # get genes from the blueprint object
+ bp_corr_genes_filtered = [gene for gene in bp_corr_genes if gene in selected_genes]
+ gene_pairs_bp=[]
+ for i,gene1 in enumerate(bp_corr_genes_filtered):
+ for j in range(i+1, len(bp_corr_genes_filtered)):
+ if gene1 < bp_corr_genes_filtered[j]:
+ gene_pairs_bp.append(';'.join([gene1, bp_corr_genes_filtered[j]]))
+ else:
+ gene_pairs_bp.append(';'.join([bp_corr_genes_filtered[j],gene1]))
+
+ corrs_df_bp = pd.DataFrame({'BP': bp_uppertria},
+ index=gene_pairs_bp)
+
+ # sort both and combine them
+ corrs_df = corrs_df.sort_index()
+ corrs_df_bp = corrs_df_bp.sort_index()
+ #all(corrs_df.index == corrs_df_bp.index)
+
+ # calculate correlation between datasets and save results
+ corr_data = pearsonr(corrs_df.UT, corrs_df_bp.BP)[0]
+
+ # save results
+ f_out.write(f"{th},{len(selected_genes)},{corr_data}\n")
+
+# close file
+f.close()
diff --git a/02_correlation_evaluation/compare_immunexut_cutoffs_CD4T.py b/02_correlation_evaluation/compare_immunexut_cutoffs_CD4T.py
new file mode 100644
index 0000000..6ffde6b
--- /dev/null
+++ b/02_correlation_evaluation/compare_immunexut_cutoffs_CD4T.py
@@ -0,0 +1,93 @@
+# ---------------------------------------------------------------------------------------
+# Compare correlation between ImmuNexUT and single cell (Oelen v3 dataset)
+# for different thresholds (number of cells expressing the gene),
+# implemented for UT and CD4T cells here
+# Input: seurat objects with Oelen v3 dataset and normalized ImmuNexUT counts
+# Output: csv file with the correlation between ImmuNexUT and Oelen v3 for each threshold
+# ---------------------------------------------------------------------------------------
+
+from scipy.stats import spearmanr, pearsonr
+import scanpy as sc
+import numpy as np
+import pandas as pd
+from pathlib import Path
+from time import time
+import os
+import re
+
+# load scanpy object (Oelen v3 dataset)
+alldata = sc.read_h5ad('seurat_objects/1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.SCT.h5ad')
+
+# filter for CD4+ T cells and UT cells
+alldata = alldata[alldata.obs.cell_type_lowerres=='CD4T']
+alldata = alldata[alldata.obs.timepoint=='UT'].copy() #copy to not create only a view object
+
+celltype_data = pd.DataFrame(data=alldata.X.toarray(),
+ index=alldata.obs.index,
+ columns=alldata.var.index)
+
+# load ImmuNexuT object
+counts = pd.read_csv('imd_paper_rna_data/norm_count/Naive_CD4_norm_count.txt',sep="\t")
+immunexut_genes = counts.index.values
+counts = counts.transpose()
+
+# method to select genes above a certain nonzero ratio
+def select_gene_nonzeroratio(df, ratio):
+ nonzerocounts = np.count_nonzero(df.values, axis=0)/df.shape[0]
+ selected_genes = df.columns[nonzerocounts>ratio]
+ return selected_genes
+
+# generate a set of thresholds that should be tested (start with stricter thresholds)
+thresholds = [i/10 for i in range(1,10)]
+thresholds.reverse()
+
+f_out = open("co-expression_indivs_combined/immunexut_cutoff_eval_CD4T.txt", "w")
+f_out.write("threshold,ngenes,corr_pearson\n")
+
+# iterate over all thresholds
+for th in thresholds:
+
+ #select all genes within the threshold
+ selected_genes = select_gene_nonzeroratio(celltype_data, th)
+
+ # filter genes that are not in ImmuNexUT
+ selected_genes = list(set(selected_genes) & set(immunexut_genes))
+
+ print(f"Number of selected genes for {th}: {len(selected_genes)}")
+
+ gene_pairs = []
+ for i,gene1 in enumerate(selected_genes):
+ for j in range(i+1, len(selected_genes)):
+ if gene1 < selected_genes[j]:
+ gene_pairs.append(';'.join([gene1, selected_genes[j]]))
+ else:
+ gene_pairs.append(';'.join([selected_genes[j],gene1]))
+
+ # calculate correlation single cell
+ input_df = celltype_data[selected_genes]
+ input_data = spearmanr(input_df, axis=0)[0]
+ input_data_uppertria = input_data[np.triu_indices_from(input_data, 1)]
+
+ corrs_df = pd.DataFrame({'UT': input_data_uppertria},
+ index=gene_pairs)
+
+ #c alculate correlation ImmuNexUT
+ input_df_ImmuNexUT = counts[selected_genes]
+ input_data = spearmanr(input_df_ImmuNexUT, axis=0)[0]
+ input_data_uppertria = input_data[np.triu_indices_from(input_data, 1)]
+
+ corrs_df_ImmuNexUT = pd.DataFrame({'BULK': input_data_uppertria},
+ index=gene_pairs)
+
+ # sorting both is not necessary here
+ #all(corrs_df.index == corrs_df_ImmuNexUT.index)
+
+ # calculate correlation between datasets and save results
+ corr_data = pearsonr(corrs_df.UT, corrs_df_ImmuNexUT.BULK)[0]
+
+ # save results
+ f_out.write(f"{th},{len(selected_genes)},{corr_data}\n")
+
+# close file
+f_out.close()
+
diff --git a/02_correlation_evaluation/correlation_between_datasets.R b/02_correlation_evaluation/correlation_between_datasets.R
new file mode 100644
index 0000000..72ecdfd
--- /dev/null
+++ b/02_correlation_evaluation/correlation_between_datasets.R
@@ -0,0 +1,341 @@
+# ------------------------------------------------------------------------------
+# Check Pearson correlation between data sets (for CD4+ T cells)
+# * for single cell vs single cell data set
+# * for single cell vs bulk data set
+# * for bulk vs bulk data set
+# Combine all results in one large heatmap
+# -----------------------------------------------------------------------------
+
+library(data.table)
+library(reticulate) # to read the single cell data (numpy)
+library(ggplot2)
+library(viridis)
+library(ggpubr)
+
+np <- import("numpy")
+
+theme_set(theme_bw())
+
+cell_type<-"CD4T"
+
+#Path to different single cell dataset
+datasets<-c(mio_v3="co-expression_indivs_combined/",
+ mio_v2="co-expression_indivs_combined/one_million_version2/",
+ stemi_v2="co-expression_indivs_combined/stemi/version2/",
+ stemi_v3="co-expression_indivs_combined/stemi/version3/",
+ pilot="co-expression_indivs_combined/ng_updated_version/")
+
+#File endings for different single cell datasets
+file_suffixes<-c(mio_v3="_UT_correlation.csv",
+ mio_v2="_UT_correlation.csv",
+ stemi_v2="_t8w_correlation.csv",
+ stemi_v3="_t8w_correlation.csv",
+ pilot="_correlation.csv")
+
+#Name on plots for different single cell datasets
+dataset_names<-c(mio_v3="Oelen (v3)",
+ mio_v2="Oelen (v2)",
+ stemi_v2="van Blokland (v2)",
+ stemi_v3="van Blokland (v3)",
+ pilot="van der Wijst")
+
+bulk_datasets<-c("Blueprint","BIOS","ImmuNexUT")
+
+resort<-function(corr){
+ #Split into two genes
+ corr$gene1<-gsub(";.*","",corr$V1)
+ corr$gene2<-gsub(".*;","",corr$V1)
+
+ #Order them alphabetically
+ corr$V1<-ifelse(corr$gene1 < corr$gene2,corr$V1,
+ paste0(corr$gene2,";",corr$gene1))
+ corr$gene1<-NULL
+ corr$gene2<-NULL
+
+ return(corr)
+}
+
+################################################################################
+# Compare single cell with each other
+################################################################################
+
+corr_comp<-NULL
+for(c1 in 1:(length(datasets)-1)){
+
+ #Read correlation file one
+ dataset_name1<-dataset_names[c1]
+ corr_c1<-fread(paste0(datasets[c1],cell_type,
+ "/",cell_type,file_suffixes[c1]))
+ corr_c1<-resort(corr_c1)
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr_c1$V1),
+ gsub(".*;","",corr_c1$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(c1=dataset_name1,
+ c2=dataset_name1,
+ gene_pairs=nrow(corr_c1),
+ genes_unique=num_genes,
+ corr=1))
+
+ for(c2 in (c1+1):length(datasets)){
+
+ #Read correlation file two
+ dataset_name2<-dataset_names[c2]
+ corr_c2<-fread(paste0(datasets[c2],cell_type,"/",
+ cell_type,file_suffixes[c2]))
+ corr_c2<-resort(corr_c2)
+
+ corr<-merge(corr_c1,corr_c2,by=c("V1"))
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr$V1),
+ gsub(".*;","",corr$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(c1=dataset_name1,
+ c2=dataset_name2,
+ gene_pairs=nrow(corr),
+ genes_unique=num_genes,
+ corr=cor(corr[[2]],corr[[3]],method="pearson")))
+ }
+}
+
+#Read correlation file one
+c1<-length(datasets)
+dataset_name1<-dataset_names[c1]
+corr_c1<-fread(paste0(datasets[c1],cell_type,
+ "/",cell_type,file_suffixes[c1]))
+
+#Unique genes
+num_genes<-length(union(gsub(";.*","",corr_c1$V1),
+ gsub(".*;","",corr_c1$V1)))
+
+corr_comp<-rbind(corr_comp,
+ data.frame(c1=dataset_name1,
+ c2=dataset_name1,
+ genes_unique=num_genes,
+ gene_pairs=nrow(corr_c1),
+ corr=1))
+
+corr_comp$c1<-factor(corr_comp$c1,levels=dataset_names)
+corr_comp$c2<-factor(corr_comp$c2,levels=dataset_names)
+
+# Save correlations
+write.table(corr_comp,
+ file="co-expression_indivs_combined/dataset_comp_summary/correlation_singlecell_datasets.tsv",
+ sep="\t",row.names = FALSE,quote=FALSE)
+
+################################################################################
+# Compare single cell with bulk
+################################################################################
+
+
+#Special function to read bulk data as they are not all saved in the same file type
+read_bulk_data<-function(dataset_name){
+
+ if(dataset_name=="Blueprint"){
+ path<-"blueprint_data/tcel_gene_nor_combat_20151109.ProbesWithZeroVarianceRemoved.ProbesCentered.SamplesZTransformed.spearmanR."
+ rowname_suffix<-"rows.txt"
+ colname_suffix<-"cols.txt"
+
+ corr_c1 <- np$load(paste0(path,"npy"), mmap_mode="r")
+ row_names<-fread(paste0(path,rowname_suffix),header=FALSE)
+ rownames(corr_c1)<-row_names$V1
+ col_names<-fread(paste0(path,colname_suffix),header=FALSE)
+ colnames(corr_c1)<-col_names$V1
+ rm(row_names,col_names)
+
+ #Filter for single cell data
+ ct_single_cell<-"CD4T"
+ corr_sc<-fread(paste0("co-expression_indivs_combined/",ct_single_cell,"/",
+ ct_single_cell,"_UT_correlation.csv"))
+ corr_sc$gene1<-gsub(";.*","",corr_sc$V1)
+ corr_sc$gene2<-gsub(".*;","",corr_sc$V1)
+ sc_genes<-union(corr_sc$gene1,corr_sc$gene2)
+ sc_genes<-sc_genes[sc_genes %in% colnames(corr_c1)]
+
+ corr_c1<-corr_c1[sc_genes,sc_genes]
+ corr_c1<-reshape2::melt(corr_c1)
+ corr_c1$Var1<-as.character(corr_c1$Var1)
+ corr_c1$Var2<-as.character(corr_c1$Var2)
+ colnames(corr_c1)[1:3]<-c("gene1","gene2","corr")
+
+ #Order so that gene1 is always the one first in alphabet
+ corr_c1<-corr_c1[corr_c1$gene1!=corr_c1$gene2,]
+ corr_c1$V1<-paste0(corr_c1$gene1,";",corr_c1$gene2)
+ corr_c1$gene1<-NULL
+ corr_c1$gene2<-NULL
+
+ corr_c1<-corr_c1[,c("V1","corr")]
+
+ } else if (dataset_name=="BIOS"){
+ corr_c1<-fread("bios/bios_correlation_tcellfiltered.tsv")
+ #all(corr_c1$gene1 < corr_c1$gene2)
+ corr_c1$V1<-paste0(corr_c1$gene1,";",corr_c1$gene2)
+ corr_c1$gene1<-NULL
+ corr_c1$gene2<-NULL
+ } else { #ImmuNexUT
+ corr_c1<-fread("imd_paper_rna_data/correlation/Naive_CD4_correlation.txt")
+ #all(corr_c1$gene1 < corr_c1$gene2)
+ corr_c1$V1<-paste0(corr_c1$gene1,";",corr_c1$gene2)
+ corr_c1$gene1<-NULL
+ corr_c1$gene2<-NULL
+ }
+
+ return(corr_c1)
+}
+
+corr_comp<-NULL
+for(c1 in 1:length(bulk_datasets)){
+
+ dataset_name1<-bulk_datasets[c1]
+ corr_c1<-read_bulk_data(dataset_name1)
+
+ for(c2 in 1:length(datasets)){
+
+ #Read correlation file two
+ dataset_name2<-dataset_names[c2]
+ corr_c2<-fread(paste0(datasets[c2],cell_type,"/",
+ cell_type,file_suffixes[c2]))
+ corr_c2<-resort(corr_c2)
+
+ corr<-merge(corr_c1,corr_c2,by=c("V1"))
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr$V1),
+ gsub(".*;","",corr$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(c1=dataset_name1,
+ c2=dataset_name2,
+ gene_pairs=nrow(corr),
+ genes_unique=num_genes,
+ corr=cor(corr[[2]],corr[[3]],method="pearson")))
+ }
+}
+
+# Save correlations
+write.table(corr_comp,
+ file="co-expression_indivs_combined/dataset_comp_summary/correlation_singlevsbulk_datasets.tsv",
+ sep="\t",row.names = FALSE,quote=FALSE)
+
+################################################################################
+# Compare bulk with bulk
+################################################################################
+
+corr_comp<-NULL
+for(c1 in 1:(length(bulk_datasets)-1)){
+
+ #Read correlation file one
+ dataset_name1<-bulk_datasets[c1]
+ corr_c1<-read_bulk_data(dataset_name1)
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr_c1$V1),
+ gsub(".*;","",corr_c1$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(c1=dataset_name1,
+ c2=dataset_name1,
+ gene_pairs=nrow(corr_c1),
+ genes_unique=num_genes,
+ corr=1))
+
+ for(c2 in (c1+1):length(bulk_datasets)){
+
+ #Read correlation file two
+ dataset_name2<-bulk_datasets[c2]
+ corr_c2<-read_bulk_data(dataset_name2)
+
+ corr<-merge(corr_c1,corr_c2,by=c("V1"))
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr$V1),
+ gsub(".*;","",corr$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(c1=dataset_name1,
+ c2=dataset_name2,
+ gene_pairs=nrow(corr),
+ genes_unique=num_genes,
+ corr=cor(corr[[2]],corr[[3]],method="pearson")))
+ }
+}
+
+#Read correlation file one
+c1<-length(bulk_datasets)
+dataset_name1<-bulk_datasets[c1]
+corr_c1<-read_bulk_data(dataset_name1)
+
+#Unique genes
+num_genes<-length(union(gsub(";.*","",corr_c1$V1),
+ gsub(".*;","",corr_c1$V1)))
+
+corr_comp<-rbind(corr_comp,
+ data.frame(c1=dataset_name1,
+ c2=dataset_name1,
+ gene_pairs=nrow(corr_c1),
+ genes_unique=num_genes,
+ corr=1))
+
+# Save correlations
+write.table(corr_comp,
+ file="co-expression_indivs_combined/dataset_comp_summary/correlation_bulk_datasets.tsv",
+ sep="\t",row.names = FALSE,quote=FALSE)
+
+
+################################################################################
+# Combine all results in one large plot
+################################################################################
+
+corr_comp<-fread("co-expression_indivs_combined/dataset_comp_summary/correlation_singlecell_datasets.tsv")
+corr_comp$c1<-factor(corr_comp$c1,levels=dataset_names)
+corr_comp$c2<-factor(corr_comp$c2,levels=dataset_names)
+g.1<-ggplot(corr_comp,aes(x=c1,y=c2,fill=corr))+
+ geom_tile()+
+ geom_text(aes(label=paste0(round(corr,3),"\n(",genes_unique,")")),size=3)+
+ xlab("Single cell data set")+
+ ylab("Single cell data set")+
+ scale_fill_viridis("Correlation",limits=c(0,1))+
+ scale_y_discrete(labels=c("Oelen (v3)","Oelen (v2)","van Blokland\n(v2)",
+ "van Blokland\n(v3)","van der Wijst"))+
+ scale_x_discrete(labels=c("Oelen\n(v3)","Oelen\n(v2)","van\nBlokland\n(v2)",
+ "van\nBlokland\n(v3)","van der\nWijst"))
+
+corr_comp<-fread("co-expression_indivs_combined/dataset_comp_summary/correlation_singlevsbulk_datasets.tsv")
+corr_comp$c1[corr_comp$c1=="Blueprint"]<-"BLUEPRINT"
+corr_comp$c2<-factor(corr_comp$c2,levels=bulk_datasets)
+corr_comp$c1<-factor(corr_comp$c1,levels=dataset_names)
+g.2<-ggplot(corr_comp,aes(x=c2,y=c1,fill=corr))+
+ geom_tile()+
+ geom_text(aes(label=paste0(round(corr,3),"\n(",genes_unique,")")),size=3,
+ color="white")+
+ xlab("Bulk data set")+
+ ylab("Single cell data set")+
+ scale_fill_viridis("Correlation",limits=c(0,1))+
+ scale_y_discrete(labels=c("Oelen (v3)","Oelen (v2)","van Blokland\n(v2)",
+ "van Blokland\n(v3)","van der Wijst"))
+
+corr_comp<-fread("co-expression_indivs_combined/dataset_comp_summary/correlation_bulk_datasets.tsv")
+corr_comp$c1[corr_comp$c1=="Blueprint"]<-"BLUEPRINT"
+corr_comp$c2[corr_comp$c2=="Blueprint"]<-"BLUEPRINT"
+corr_comp$c1<-factor(corr_comp$c1,levels=bulk_datasets)
+corr_comp$c2<-factor(corr_comp$c2,levels=bulk_datasets)
+g.3<-ggplot(corr_comp,aes(x=c1,y=c2,fill=corr))+
+ geom_tile()+
+ geom_text(aes(label=paste0(round(corr,3),"\n(",genes_unique,")"),
+ color=ifelse(corr<0.6,'white','black')),size=3)+
+ scale_color_manual(values=c("black","white"))+
+ xlab("Bulk data set")+
+ ylab("Bulk data set")+
+ scale_fill_viridis("Correlation",limits=c(0,1))+
+ coord_flip()
+
+
+g_empty<-ggplot()+theme_void()
+g<-ggarrange(g.1,g.2,g_empty,g.3,ncol=2,nrow=2,widths=c(4,3),heights=c(4,3),
+ common.legend = TRUE,legend="bottom",align="hv")
+ggsave(g,file=paste0("co-expression_indivs_combined/plots/corr_datasets_combined.pdf"),
+ width=6.5,height=6.5)
diff --git a/02_correlation_evaluation/correlation_between_datasets_extended.R b/02_correlation_evaluation/correlation_between_datasets_extended.R
new file mode 100644
index 0000000..fd52dd6
--- /dev/null
+++ b/02_correlation_evaluation/correlation_between_datasets_extended.R
@@ -0,0 +1,188 @@
+###############################################################################
+# In order to better interpret the correlation levels:
+# check if correlation between single cell and bulk (ImmuNexUT) is higher for matched
+# cell types compared to not matched cell types
+###############################################################################
+
+library(data.table)
+library(reticulate) # to read the single cell data (numpy)
+library(ggplot2)
+library(viridis)
+library(dplyr)
+
+theme_set(theme_bw())
+
+#Rename cell types
+ct_fullname<-setNames(c("CD8+ T cells","monocytes","NK cells","B cells","DC"),
+ c("CD8T","monocyte","NK","B","DC"))
+
+#Path to different single cell dataset
+datasets<-c(mio_v3="co-expression_indivs_combined/",
+ mio_v2="co-expression_indivs_combined/one_million_version2/",
+ stemi_v2="co-expression_indivs_combined/stemi/version2/",
+ stemi_v3="co-expression_indivs_combined/stemi/version3/",
+ pilot="co-expression_indivs_combined/ng_updated_version/")
+
+#File endings for different single cell datasets
+file_suffixes<-c(mio_v3="_UT_correlation.csv",
+ mio_v2="_UT_correlation.csv",
+ stemi_v2="_t8w_correlation.csv",
+ stemi_v3="_t8w_correlation.csv",
+ pilot="_correlation.csv")
+
+#Name on plots for different single cell datasets
+dataset_names<-c(mio_v3="Oelen (v3)",
+ mio_v2="Oelen (v2)",
+ stemi_v2="van Blokland (v2)",
+ stemi_v3="van Blokland (v3)",
+ pilot="van der Wijst")
+
+#Different bulk datasets
+bulk_datasets<-c("BLUEPRINT","BIOS","ImmuNexUT")
+
+resort<-function(corr){
+ #Split into two genes
+ corr$gene1<-gsub(";.*","",corr$V1)
+ corr$gene2<-gsub(".*;","",corr$V1)
+
+ #Order them alphabetically
+ corr$V1<-ifelse(corr$gene1 < corr$gene2,corr$V1,
+ paste0(corr$gene2,";",corr$gene1))
+ corr$gene1<-NULL
+ corr$gene2<-NULL
+
+ return(corr)
+}
+
+################################################################################
+# Compare single cell vs ImmuNexUT - all cell types against all cell types
+################################################################################
+
+# Cell type matching
+ct_mapping<-data.frame(sc_ct=c("CD4T","CD8T","B","monocyte","NK","DC"),
+ imn_ct=c("Naive_CD4","Naive_CD8","Naive_B","CL_Mono","NK","mDC"))
+
+corr_comp<-NULL
+for(i in 1:nrow(ct_mapping)){
+
+ ct <- ct_mapping$imn_ct[i]
+ #cell_type<- "CD4T"
+
+ #Load ImmuNexUT data
+ combat_tmm<-fread(paste0("imd_paper_rna_data/norm_count/",ct,"_norm_count.txt"))
+
+ #Load the different single cell data sets
+ for(c1 in 1:length(datasets)){
+
+ #Load for each single cell dataset all cell types
+ for(cell_type in ct_mapping$sc_ct){
+
+ #Load single cell data set
+ corr_c2<-fread(paste0(datasets[c1],cell_type,
+ "/",cell_type,file_suffixes[c1]))
+ corr_c2<-resort(corr_c2)
+
+ #Filter the ImmuNexUT data set
+ expressed_genes<-union(gsub(";.*","",corr_c2$V1),
+ gsub(".*;","",corr_c2$V1))
+ expressed_genes<-intersect(expressed_genes,combat_tmm$V1)
+
+ combat_tmm_filtered<-combat_tmm[combat_tmm$V1 %in% expressed_genes,]
+ combat_tmm_filtered<-as.data.frame(combat_tmm_filtered)
+ rownames(combat_tmm_filtered)<-combat_tmm_filtered$V1
+ combat_tmm_filtered$V1<-NULL
+
+ #Calculation correlation
+ cor_matrix<-cor(t(combat_tmm_filtered),method="spearman")
+ cor_matrix<-reshape2::melt(cor_matrix)
+ cor_matrix$Var1<-as.character(cor_matrix$Var1)
+ cor_matrix$Var2<-as.character(cor_matrix$Var2)
+ cor_matrix<-cor_matrix[cor_matrix$Var1 < cor_matrix$Var2,]
+ cor_matrix$V1<-paste0(cor_matrix$Var1,";",cor_matrix$Var2)
+ cor_matrix$Var1<-NULL
+ cor_matrix$Var2<-NULL
+
+ #Compare BIOS with single cell
+ corr<-merge(corr_c2,cor_matrix,by=c("V1"))
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr$V1),
+ gsub(".*;","",corr$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(sc_ct=cell_type,
+ bulk_ct=ct,
+ c1=dataset_names[c1],
+ c2="ImmuNexUT",
+ gene_pairs=nrow(corr),
+ genes_unique=num_genes,
+ corr=cor(corr[[2]],corr[[3]],method="pearson")))
+ }
+ }
+}
+
+# Save correlations
+write.table(corr_comp,
+ file="co-expression_indivs_combined/dataset_comp_summary/correlation_singlecell_immunexut_mixedcts.tsv",
+ sep="\t",row.names = FALSE,quote=FALSE)
+
+
+################################################################################
+# Plot the results
+################################################################################
+
+corr_comp<-fread("co-expression_indivs_combined/dataset_comp_summary/correlation_singlecell_immunexut_mixedcts.tsv")
+
+ct_mapping<-data.frame(sc_ct=c("CD4T","CD8T","B","monocyte","NK","DC"),
+ imn_ct=c("Naive_CD4","Naive_CD8","Naive_B","CL_Mono","NK","mDC"))
+
+#Order single cell and bulk the same way
+corr_comp$sc_ct<-factor(corr_comp$sc_ct,levels=ct_mapping$sc_ct)
+corr_comp$bulk_ct<-factor(corr_comp$bulk_ct,levels=ct_mapping$imn_ct)
+
+g<-ggplot(corr_comp,aes(x=sc_ct,y=bulk_ct,fill=corr))+
+ geom_tile()+
+ geom_text(aes(label=paste0(round(corr,3),"\n(",genes_unique,")"),
+ color=ifelse(corr<0.6,'white','black')),size=3)+
+ scale_color_manual(values=c("black","white"))+
+ facet_wrap(~c1)+
+ xlab("Cell type - single cell")+
+ ylab("Cell type - bulk")+
+ scale_fill_viridis("Correlation",limits=c(0,1))+
+ theme(legend.position = "bottom")+
+ guides(color="none")
+
+
+print(g)
+
+ggsave(g,file="correlation_mixed_cts.png",height=7,width=9)
+
+################################################################################
+# Normalize the columns to always by the diagonal (matched cell types)
+################################################################################
+
+ct_mapping_list<-setNames(c("CD4T","CD8T","B","monocyte","NK","DC"),
+ c("Naive_CD4","Naive_CD8","Naive_B","CL_Mono","NK","mDC"))
+corr_comp$bulk_matched_ct<-ct_mapping_list[corr_comp$bulk_ct]
+corr_diagonal<-corr_comp[corr_comp$sc_ct==corr_comp$bulk_matched_ct,c("sc_ct","c1","corr")]
+colnames(corr_diagonal)<-c("sc_ct","c1","diag_corr")
+
+corr_comp<-merge(corr_comp,corr_diagonal,by=c("sc_ct","c1"))
+corr_comp$rel_corr<-corr_comp$corr/corr_comp$diag_corr
+
+g<-ggplot(corr_comp,aes(x=sc_ct,y=bulk_ct,fill=rel_corr))+
+ geom_tile()+
+ geom_text(aes(label=paste0(round(rel_corr,3),"\n(",round(corr,3),")"),
+ color=ifelse(rel_corr<1,'white','black')),size=3)+
+ scale_color_manual(values=c("black","white"))+
+ facet_wrap(~c1)+
+ xlab("Cell type - single cell")+
+ ylab("Cell type - bulk")+
+ scale_fill_viridis("Relative corr")+
+ theme(legend.position = "bottom")+
+ guides(color="none")
+
+
+print(g)
+
+ggsave(g,file="correlation_mixed_cts_normalized.png",height=7,width=9)
diff --git a/02_correlation_evaluation/correlation_between_datasets_othercts.R b/02_correlation_evaluation/correlation_between_datasets_othercts.R
new file mode 100644
index 0000000..35a45b1
--- /dev/null
+++ b/02_correlation_evaluation/correlation_between_datasets_othercts.R
@@ -0,0 +1,616 @@
+# ------------------------------------------------------------------------------
+# Extension of correlation_between_datasets.R (which looks only at CD4+ T cells)
+# for other cell types: get Pearson correlation between data sets
+# * for single cell vs single cell data set
+# * for single cell vs bulk data set
+# * for bulk vs bulk data set (here only monocytes)
+# Plot one heatmap for each comparison
+# ------------------------------------------------------------------------------
+
+library(data.table)
+library(reticulate) # to read the single cell data (numpy)
+library(ggplot2)
+library(viridis)
+library(dplyr)
+
+theme_set(theme_bw())
+
+#Rename cell types
+ct_fullname<-setNames(c("CD8+ T cells","monocytes","NK cells","B cells","DC"),
+ c("CD8T","monocyte","NK","B","DC"))
+
+#Path to different single cell dataset
+datasets<-c(mio_v3="co-expression_indivs_combined/",
+ mio_v2="co-expression_indivs_combined/one_million_version2/",
+ stemi_v2="co-expression_indivs_combined/stemi/version2/",
+ stemi_v3="co-expression_indivs_combined/stemi/version3/",
+ pilot="co-expression_indivs_combined/ng_updated_version/")
+
+#File endings for different single cell datasets
+file_suffixes<-c(mio_v3="_UT_correlation.csv",
+ mio_v2="_UT_correlation.csv",
+ stemi_v2="_t8w_correlation.csv",
+ stemi_v3="_t8w_correlation.csv",
+ pilot="_correlation.csv")
+
+#Name on plots for different single cell datasets
+dataset_names<-c(mio_v3="Oelen (v3)",
+ mio_v2="Oelen (v2)",
+ stemi_v2="van Blokland (v2)",
+ stemi_v3="van Blokland (v3)",
+ pilot="van der Wijst")
+
+#Different bulk datasets
+bulk_datasets<-c("BLUEPRINT","BIOS","ImmuNexUT")
+
+resort<-function(corr){
+ #Split into two genes
+ corr$gene1<-gsub(";.*","",corr$V1)
+ corr$gene2<-gsub(".*;","",corr$V1)
+
+ #Order them alphabetically
+ corr$V1<-ifelse(corr$gene1 < corr$gene2,corr$V1,
+ paste0(corr$gene2,";",corr$gene1))
+ corr$gene1<-NULL
+ corr$gene2<-NULL
+
+ return(corr)
+}
+
+
+################################################################################
+# 1) Compare single cell with each other
+################################################################################
+
+corr_comp<-NULL
+for(cell_type in c("CD8T","monocyte","NK","B","DC")){
+
+ for(c1 in 1:(length(datasets)-1)){
+
+ #Read correlation file one
+ dataset_name1<-dataset_names[c1]
+ corr_c1<-fread(paste0(datasets[c1],cell_type,
+ "/",cell_type,file_suffixes[c1]))
+ corr_c1<-resort(corr_c1)
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr_c1$V1),
+ gsub(".*;","",corr_c1$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(cell_type,
+ c1=dataset_name1,
+ c2=dataset_name1,
+ gene_pairs=nrow(corr_c1),
+ genes_unique=num_genes,
+ corr=1))
+
+ for(c2 in (c1+1):length(datasets)){
+
+ #Read correlation file two
+ dataset_name2<-dataset_names[c2]
+ corr_c2<-fread(paste0(datasets[c2],cell_type,"/",
+ cell_type,file_suffixes[c2]))
+ corr_c2<-resort(corr_c2)
+
+ corr<-merge(corr_c1,corr_c2,by=c("V1"))
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr$V1),
+ gsub(".*;","",corr$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(cell_type,
+ c1=dataset_name1,
+ c2=dataset_name2,
+ gene_pairs=nrow(corr),
+ genes_unique=num_genes,
+ corr=cor(corr[[2]],corr[[3]],method="pearson")))
+ }
+ }
+
+
+ #Read correlation file one
+ c1<-length(datasets)
+ dataset_name1<-dataset_names[c1]
+ corr_c1<-fread(paste0(datasets[c1],cell_type,
+ "/",cell_type,file_suffixes[c1]))
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr_c1$V1),
+ gsub(".*;","",corr_c1$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(cell_type,
+ c1=dataset_name1,
+ c2=dataset_name1,
+ genes_unique=num_genes,
+ gene_pairs=nrow(corr_c1),
+ corr=1))
+}
+
+# Save correlations
+write.table(corr_comp,
+ file="co-expression_indivs_combined/dataset_comp_summary/correlation_singlecell_datasets_othercts.tsv",
+ sep="\t",row.names = FALSE,quote=FALSE)
+
+################################################################################
+# Plot comparison of single cell vs single cell (Supplementary Figure)
+################################################################################
+
+corr_comp<-fread("co-expression_indivs_combined/dataset_comp_summary/correlation_singlecell_datasets_othercts.tsv")
+corr_comp$c1<-factor(corr_comp$c1,levels=dataset_names)
+corr_comp$c2<-factor(corr_comp$c2,levels=dataset_names)
+corr_comp$cell_type<-ct_fullname[corr_comp$cell_type]
+
+g<-ggplot(corr_comp,aes(x=c1,y=c2,fill=corr))+
+ geom_tile()+
+ geom_text(aes(label=paste0(round(corr,3),"\n(",genes_unique,")"),
+ color=ifelse(corr<0.6,'white','black')),size=3)+
+ scale_color_manual(values=c("black","white"))+
+ xlab("Single cell data set")+
+ ylab("Single cell data set")+
+ scale_fill_viridis("Correlation",limits=c(0,1))+
+ facet_wrap(~cell_type)+
+ scale_y_discrete(labels=c("Oelen (v3)","Oelen (v2)","van Blokland\n(v2)",
+ "van Blokland\n(v3)","van der Wijst"))+
+ scale_x_discrete(labels=c("Oelen\n(v3)","Oelen\n(v2)","van\nBlokland\n(v2)",
+ "van\nBlokland\n(v3)","van der\nWijst"))+
+ theme(legend.position=c(0.9,0.1))+
+ guides(color=FALSE)
+print(g)
+
+ggsave(g,file=paste0("co-expression_indivs_combined/plots/corr_single_cell_othercts.png"),
+ width=8.5,height=6.5)
+
+#Get also CD4 T cell results
+corr_comp_ct<-fread("co-expression_indivs_combined/dataset_comp_summary/correlation_singlecell_datasets.tsv")
+corr_comp_ct$cell_type<-"CD4T"
+corr_comp_ct<-corr_comp_ct[,colnames(corr_comp),with=FALSE]
+corr_comp<-rbind(corr_comp_ct,corr_comp)
+
+#Get median correlation
+corr_comp%>%
+ group_by(cell_type)%>%
+ summarise(mean(corr),median(corr),min(corr),max(corr))
+
+#Overall distribution across all cell types
+summary(corr_comp$corr)
+
+################################################################################
+# 2) Compare single cell with bulk
+################################################################################
+
+################################################################################
+# For Blueprint - Monocytes
+################################################################################
+
+#Blueprint Monocyte correlation
+path<-"blueprint_data/mono_gene_nor_combat_20151109.ProbesWithZeroVarianceRemoved.ProbesCentered.SamplesZTransformed.1PCAsOverSamplesRemoved.spearmanr."
+rowname_suffix<-"genes.txt"
+
+corr_c1 <- np$load(paste0(path,"npy"), mmap_mode="r")
+row_names<-fread(paste0(path,rowname_suffix),header=FALSE)
+rownames(corr_c1)<-row_names$V1
+colnames(corr_c1)<-row_names$V1
+rm(row_names)
+
+corr_comp<-NULL
+cell_type<-"monocyte"
+for(c1 in 1:length(datasets)){
+
+ #Load single cell data set
+ corr_c2<-fread(paste0(datasets[c1],cell_type,
+ "/",cell_type,file_suffixes[c1]))
+ corr_c2<-resort(corr_c2)
+
+ #Filter the Blueprint data set
+ expressed_genes<-union(gsub(";.*","",corr_c2$V1),
+ gsub(".*;","",corr_c2$V1))
+ expressed_genes<-intersect(expressed_genes,colnames(corr_c1))
+
+ corr_c1_filtered<-corr_c1[expressed_genes,expressed_genes]
+ corr_c1_filtered<-reshape2::melt(corr_c1_filtered)
+ corr_c1_filtered$Var1<-as.character(corr_c1_filtered$Var1)
+ corr_c1_filtered$Var2<-as.character(corr_c1_filtered$Var2)
+ corr_c1_filtered<-corr_c1_filtered[corr_c1_filtered$Var1 < corr_c1_filtered$Var2,]
+ corr_c1_filtered$V1<-paste0(corr_c1_filtered$Var1,";",corr_c1_filtered$Var2)
+ corr_c1_filtered$Var1<-NULL
+ corr_c1_filtered$Var2<-NULL
+
+ corr<-merge(corr_c1_filtered,corr_c2,by=c("V1"))
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr$V1),
+ gsub(".*;","",corr$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(cell_type,
+ c1=dataset_names[c1],
+ c2="BLUEPRINT",
+ gene_pairs=nrow(corr),
+ genes_unique=num_genes,
+ corr=cor(corr[[2]],corr[[3]],method="pearson")))
+}
+
+# Save correlations
+write.table(corr_comp,
+ file="co-expression_indivs_combined/dataset_comp_summary/correlation_singlecell_blueprint_mono.tsv",
+ sep="\t",row.names = FALSE,quote=FALSE)
+
+################################################################################
+# For Blueprint - CD4T
+################################################################################
+
+#Blueprint CD4T correlation
+path<-"blueprint_data/tcel_gene_nor_combat_20151109.ProbesWithZeroVarianceRemoved.ProbesCentered.SamplesZTransformed.spearmanR."
+rowname_suffix<-"rows.txt"
+
+corr_c1 <- np$load(paste0(path,"npy"), mmap_mode="r")
+row_names<-fread(paste0(path,rowname_suffix),header=FALSE)
+rownames(corr_c1)<-row_names$V1
+colnames(corr_c1)<-row_names$V1
+rm(row_names)
+
+corr_comp<-NULL
+cell_type<-"CD4T"
+for(c1 in 1:length(datasets)){
+
+ #Load single cell data set
+ corr_c2<-fread(paste0(datasets[c1],cell_type,
+ "/",cell_type,file_suffixes[c1]))
+ corr_c2<-resort(corr_c2)
+
+ #Filter the Blueprint data set
+ expressed_genes<-union(gsub(";.*","",corr_c2$V1),
+ gsub(".*;","",corr_c2$V1))
+ expressed_genes<-intersect(expressed_genes,colnames(corr_c1))
+
+ corr_c1_filtered<-corr_c1[expressed_genes,expressed_genes]
+ corr_c1_filtered<-reshape2::melt(corr_c1_filtered)
+ corr_c1_filtered$Var1<-as.character(corr_c1_filtered$Var1)
+ corr_c1_filtered$Var2<-as.character(corr_c1_filtered$Var2)
+ corr_c1_filtered<-corr_c1_filtered[corr_c1_filtered$Var1 < corr_c1_filtered$Var2,]
+ corr_c1_filtered$V1<-paste0(corr_c1_filtered$Var1,";",corr_c1_filtered$Var2)
+ corr_c1_filtered$Var1<-NULL
+ corr_c1_filtered$Var2<-NULL
+
+ corr<-merge(corr_c1_filtered,corr_c2,by=c("V1"))
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr$V1),
+ gsub(".*;","",corr$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(cell_type,
+ c1=dataset_names[c1],
+ c2="BLUEPRINT",
+ gene_pairs=nrow(corr),
+ genes_unique=num_genes,
+ corr=cor(corr[[2]],corr[[3]],method="pearson")))
+}
+
+# Save correlations
+write.table(corr_comp,
+ file="co-expression_indivs_combined/dataset_comp_summary/correlation_singlecell_blueprint_cd4t.tsv",
+ sep="\t",row.names = FALSE,quote=FALSE)
+
+################################################################################
+# For ImmuNexUT - all cell types
+################################################################################
+
+# Cell type matching
+ct_mapping<-data.frame(sc_ct=c("CD4T","CD8T","B","monocyte","NK","DC"),
+ imn_ct=c("Naive_CD4","Naive_CD8","Naive_B","CL_Mono","NK","mDC"))
+
+corr_comp<-NULL
+for(i in 1:nrow(ct_mapping)){
+
+ ct <- ct_mapping$imn_ct[i]
+ cell_type<- ct_mapping$sc_ct[i]
+
+ #Load ImmuNexUT data
+ combat_tmm<-fread(paste0("imd_paper_rna_data/norm_count/",ct,"_norm_count.txt"))
+
+ #Load the different single cell data sets
+ for(c1 in 1:length(datasets)){
+ #Load single cell data set
+ corr_c2<-fread(paste0(datasets[c1],cell_type,
+ "/",cell_type,file_suffixes[c1]))
+ corr_c2<-resort(corr_c2)
+
+ #Filter the ImmuNexUT data set
+ expressed_genes<-union(gsub(";.*","",corr_c2$V1),
+ gsub(".*;","",corr_c2$V1))
+ expressed_genes<-intersect(expressed_genes,combat_tmm$V1)
+
+ combat_tmm_filtered<-combat_tmm[combat_tmm$V1 %in% expressed_genes,]
+ combat_tmm_filtered<-as.data.frame(combat_tmm_filtered)
+ rownames(combat_tmm_filtered)<-combat_tmm_filtered$V1
+ combat_tmm_filtered$V1<-NULL
+
+ #Calculation correlation
+ cor_matrix<-cor(t(combat_tmm_filtered),method="spearman")
+ cor_matrix<-reshape2::melt(cor_matrix)
+ cor_matrix$Var1<-as.character(cor_matrix$Var1)
+ cor_matrix$Var2<-as.character(cor_matrix$Var2)
+ cor_matrix<-cor_matrix[cor_matrix$Var1 < cor_matrix$Var2,]
+ cor_matrix$V1<-paste0(cor_matrix$Var1,";",cor_matrix$Var2)
+ cor_matrix$Var1<-NULL
+ cor_matrix$Var2<-NULL
+
+ #Compare BIOS with single cell
+ corr<-merge(corr_c2,cor_matrix,by=c("V1"))
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr$V1),
+ gsub(".*;","",corr$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(cell_type,
+ c1=dataset_names[c1],
+ c2="ImmuNexUT",
+ gene_pairs=nrow(corr),
+ genes_unique=num_genes,
+ corr=cor(corr[[2]],corr[[3]],method="pearson")))
+ }
+}
+
+# Save correlations
+write.table(corr_comp,
+ file="co-expression_indivs_combined/dataset_comp_summary/correlation_singlecell_immunexut_allcts.tsv",
+ sep="\t",row.names = FALSE,quote=FALSE)
+
+################################################################################
+# For BIOS - all cell types
+################################################################################
+
+#Load the bios expression matrix
+bios_data<-fread("bios/gene_read_counts_BIOS_and_LLD_passQC.tsv.SampleSelection.ProbesWithZeroVarianceRemoved.TMM.SampleSelection.ProbesWithZeroVarianceRemoved.Log2Transformed.ProbesCentered.SamplesZTransformed.CovariatesRemovedOLS.noLLDeep.scGeneOnly.txt.gz")
+
+corr_comp<-NULL
+for(cell_type in c("CD4T","CD8T","monocyte","NK","B","DC")){
+ for(c1 in 1:length(datasets)){
+
+ corr_c1<-fread(paste0(datasets[c1],cell_type,
+ "/",cell_type,file_suffixes[c1]))
+ corr_c1<-resort(corr_c1)
+ expressed_genes<-union(gsub(";.*","",corr_c1$V1),
+ gsub(".*;","",corr_c1$V1))
+
+ #Filter BIOS for the genes expressed in the respective data set
+ bios_data_filtered<-bios_data[bios_data$genename %in% expressed_genes,]
+ bios_data_filtered<-as.data.frame(bios_data_filtered)
+ rownames(bios_data_filtered)<-bios_data_filtered$genename
+ bios_data_filtered$genename<-NULL
+
+ #Calculate correlation for BIOS
+ cor_matrix<-cor(t(bios_data_filtered),method="spearman")
+ cor_matrix<-reshape2::melt(cor_matrix)
+ cor_matrix$Var1<-as.character(cor_matrix$Var1)
+ cor_matrix$Var2<-as.character(cor_matrix$Var2)
+ cor_matrix<-cor_matrix[cor_matrix$Var1 < cor_matrix$Var2,]
+ cor_matrix$V1<-paste0(cor_matrix$Var1,";",cor_matrix$Var2)
+ cor_matrix$Var1<-NULL
+ cor_matrix$Var2<-NULL
+
+ #Compare BIOS with single cell
+ corr<-merge(corr_c1,cor_matrix,by=c("V1"))
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr$V1),
+ gsub(".*;","",corr$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(cell_type,
+ c1=dataset_names[c1],
+ c2="BIOS",
+ gene_pairs=nrow(corr),
+ genes_unique=num_genes,
+ corr=cor(corr[[2]],corr[[3]],method="pearson")))
+
+ }
+}
+
+# Save correlations
+write.table(corr_comp,
+ file="co-expression_indivs_combined/dataset_comp_summary/correlation_singlecell_bios_allcts.tsv",
+ sep="\t",row.names = FALSE,quote=FALSE)
+
+################################################################################
+# Plot comparison of single cell vs bulk (Supplementary Figure)
+################################################################################
+
+#Load the different data sets
+corr_comp<-rbind(fread("co-expression_indivs_combined/dataset_comp_summary/correlation_singlecell_bios_allcts.tsv"),
+ fread("co-expression_indivs_combined/dataset_comp_summary/correlation_singlecell_immunexut_allcts.tsv"),
+ fread("co-expression_indivs_combined/dataset_comp_summary/correlation_singlecell_blueprint_mono.tsv"),
+ fread("co-expression_indivs_combined/dataset_comp_summary/correlation_singlecell_blueprint_cd4t.tsv"))
+
+corr_comp%>%
+ group_by(cell_type,c2)%>%
+ summarise(mean(corr),median(corr),min(corr),max(corr))
+
+#Remove CD4T cells (already shown in the main figure)
+corr_comp<-corr_comp[corr_comp$cell_type != "CD4T",]
+
+corr_comp$c1<-factor(corr_comp$c1,levels=dataset_names)
+
+corr_comp$cell_type<-ct_fullname[corr_comp$cell_type]
+
+g<-ggplot(corr_comp,aes(x=c2,y=c1,fill=corr))+
+ geom_tile()+
+ geom_text(aes(label=paste0(round(corr,3),"\n(",genes_unique,")"),
+ color=ifelse(corr<0.6,'white','black')),size=3)+
+ scale_color_manual(values=c("black","white"))+
+ xlab("Bulk cell data set")+
+ ylab("Single cell data set")+
+ scale_fill_viridis("Correlation",limits=c(0,1))+
+ facet_wrap(~cell_type)+
+ scale_y_discrete(labels=c("Oelen (v3)","Oelen (v2)","van Blokland\n(v2)",
+ "van Blokland\n(v3)","van der Wijst"))+
+ theme(legend.position=c(0.9,0.1))+
+ guides(color=FALSE)
+print(g)
+
+ggsave(g,file=paste0("co-expression_indivs_combined/plots/corr_singlevsbulk_othercts.png"),
+ width=8.5,height=6.5)
+
+################################################################################
+# 3) Compare bulk vs bulk for Monocytes
+################################################################################
+
+#Special function to read bulk data as they are not all saved in the same file type
+read_bulk_data<-function(dataset_name){
+
+ if(dataset_name=="BLUEPRINT"){
+ #Blueprint Monocyte correlation
+ path<-"blueprint_data/mono_gene_nor_combat_20151109.ProbesWithZeroVarianceRemoved.ProbesCentered.SamplesZTransformed.1PCAsOverSamplesRemoved.spearmanr."
+ rowname_suffix<-"genes.txt"
+
+ corr_c1 <- np$load(paste0(path,"npy"), mmap_mode="r")
+ row_names<-fread(paste0(path,rowname_suffix),header=FALSE)
+ rownames(corr_c1)<-row_names$V1
+ colnames(corr_c1)<-row_names$V1
+ rm(row_names)
+
+ #Filter for single cell data
+ ct_single_cell<-"monocyte"
+ corr_sc<-fread(paste0("co-expression_indivs_combined/",ct_single_cell,"/",
+ ct_single_cell,"_UT_correlation.csv"))
+ corr_sc$gene1<-gsub(";.*","",corr_sc$V1)
+ corr_sc$gene2<-gsub(".*;","",corr_sc$V1)
+ sc_genes<-union(corr_sc$gene1,corr_sc$gene2)
+ sc_genes<-sc_genes[sc_genes %in% colnames(corr_c1)]
+
+ corr_c1<-corr_c1[sc_genes,sc_genes]
+ corr_c1<-reshape2::melt(corr_c1)
+ corr_c1$Var1<-as.character(corr_c1$Var1)
+ corr_c1$Var2<-as.character(corr_c1$Var2)
+ colnames(corr_c1)[1:3]<-c("gene1","gene2","corr")
+
+ #Order so that gene1 is always the one first in alphabet
+ corr_c1<-corr_c1[corr_c1$gene1!=corr_c1$gene2,]
+ corr_c1$V1<-paste0(corr_c1$gene1,";",corr_c1$gene2)
+ corr_c1$gene1<-NULL
+ corr_c1$gene2<-NULL
+
+ corr_c1<-corr_c1[,c("V1","corr")]
+
+ } else if (dataset_name=="BIOS"){
+
+ #Load the bios expression matrix
+ bios_data<-fread("bios/gene_read_counts_BIOS_and_LLD_passQC.tsv.SampleSelection.ProbesWithZeroVarianceRemoved.TMM.SampleSelection.ProbesWithZeroVarianceRemoved.Log2Transformed.ProbesCentered.SamplesZTransformed.CovariatesRemovedOLS.noLLDeep.scGeneOnly.txt.gz")
+
+ # Read single cell data to filter for the expressed genes
+ cell_type <- "monocyte"
+ corr_sc<-fread(paste0("co-expression_indivs_combined/",cell_type,
+ "/",cell_type,"_UT_correlation.csv"))
+ corr_sc<-resort(corr_sc)
+ expressed_genes<-union(gsub(";.*","",corr_sc$V1),
+ gsub(".*;","",corr_sc$V1))
+
+ #Filter BIOS for the genes expressed in the respective data set
+ bios_data_filtered<-bios_data[bios_data$genename %in% expressed_genes,]
+ bios_data_filtered<-as.data.frame(bios_data_filtered)
+ rownames(bios_data_filtered)<-bios_data_filtered$genename
+ bios_data_filtered$genename<-NULL
+
+ #Calculate correlation for BIOS
+ corr_c1<-cor(t(bios_data_filtered),method="spearman")
+ corr_c1<-reshape2::melt(corr_c1)
+ corr_c1$Var1<-as.character(corr_c1$Var1)
+ corr_c1$Var2<-as.character(corr_c1$Var2)
+ corr_c1<-corr_c1[corr_c1$Var1 < corr_c1$Var2,]
+ corr_c1$V1<-paste0(corr_c1$Var1,";",corr_c1$Var2)
+ corr_c1$Var1<-NULL
+ corr_c1$Var2<-NULL
+
+ } else { #ImmuNexUT
+ corr_c1<-fread("imd_paper_rna_data/correlation/CL_Mono_correlation.txt")
+ #all(corr_c1$gene1 < corr_c1$gene2)
+ corr_c1$V1<-paste0(corr_c1$gene1,";",corr_c1$gene2)
+ corr_c1$gene1<-NULL
+ corr_c1$gene2<-NULL
+ }
+
+ return(corr_c1)
+}
+
+#Compare each bulk dataset against all other
+corr_comp<-NULL
+for(c1 in 1:(length(bulk_datasets)-1)){
+
+ #Read correlation file one
+ dataset_name1<-bulk_datasets[c1]
+ corr_c1<-read_bulk_data(dataset_name1)
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr_c1$V1),
+ gsub(".*;","",corr_c1$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(c1=dataset_name1,
+ c2=dataset_name1,
+ gene_pairs=nrow(corr_c1),
+ genes_unique=num_genes,
+ corr=1))
+
+ for(c2 in (c1+1):length(bulk_datasets)){
+
+ #Read correlation file two
+ dataset_name2<-bulk_datasets[c2]
+ corr_c2<-read_bulk_data(dataset_name2)
+
+ corr<-merge(corr_c1,corr_c2,by=c("V1"))
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr$V1),
+ gsub(".*;","",corr$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(c1=dataset_name1,
+ c2=dataset_name2,
+ gene_pairs=nrow(corr),
+ genes_unique=num_genes,
+ corr=cor(corr[[2]],corr[[3]],method="pearson")))
+ }
+}
+
+#Read correlation file one
+c1<-length(bulk_datasets)
+dataset_name1<-bulk_datasets[c1]
+corr_c1<-read_bulk_data(dataset_name1)
+
+#Unique genes
+num_genes<-length(union(gsub(";.*","",corr_c1$V1),
+ gsub(".*;","",corr_c1$V1)))
+
+corr_comp<-rbind(corr_comp,
+ data.frame(c1=dataset_name1,
+ c2=dataset_name1,
+ gene_pairs=nrow(corr_c1),
+ genes_unique=num_genes,
+ corr=1))
+
+# Save correlations
+write.table(corr_comp,
+ file="co-expression_indivs_combined/dataset_comp_summary/correlation_bulk_datasets_monocytes.tsv",
+ sep="\t",row.names = FALSE,quote=FALSE)
+
+# Save plot
+corr_comp$c1<-factor(corr_comp$c1,levels=bulk_datasets)
+corr_comp$c2<-factor(corr_comp$c2,levels=bulk_datasets)
+
+g<-ggplot(corr_comp,aes(x=c1,y=c2,fill=corr))+
+ geom_tile()+
+ geom_text(aes(label=paste0(round(corr,3),"\n(",genes_unique,")"),
+ color=ifelse(corr<0.6,'white','black')),size=3)+
+ scale_color_manual(values=c("black","white"))+
+ xlab("Bulk data set")+
+ ylab("Bulk data set")+
+ scale_fill_viridis("Correlation",limits=c(0,1))+
+ guides(color=FALSE)
+
+ggsave(g,file="co-expression_indivs_combined/plots/corr_bulk_mono.png",
+ width=5,height=3)
\ No newline at end of file
diff --git a/02_correlation_evaluation/correlation_timepoint_combined_indivs_1mio.py b/02_correlation_evaluation/correlation_timepoint_combined_indivs_1mio.py
new file mode 100644
index 0000000..15f0bdb
--- /dev/null
+++ b/02_correlation_evaluation/correlation_timepoint_combined_indivs_1mio.py
@@ -0,0 +1,97 @@
+###########################################################################################
+# Calculate correlation for each cell type, selecting always one timepoint (UT)
+# merging all individuals for Oelen v2 and v3 dataset
+###########################################################################################
+
+#from scipy.stats import t, norm
+from scipy.stats import spearmanr
+import scanpy as sc
+import numpy as np
+import pandas as pd
+from pathlib import Path
+from time import time
+import os
+import re
+
+# specify if Oelen v3 or v2 dataset should be used
+version2 = True
+
+# load scanpy object
+lif version2:
+ prefix_results = Path('co-expression_indivs_combined/one_million_version2/')
+else:
+ prefix_results = Path('co-expression_indivs_combined/')
+
+if version2:
+ alldata = sc.read_h5ad('seurat_objects/1M_v2_mediumQC_ctd_rnanormed_demuxids_20201029.sct.h5ad')
+else:
+ alldata = sc.read_h5ad('seurat_objects/1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.SCT.h5ad')
+
+def select_gene_nonzeroratio(df, ratio):
+ nonzerocounts = np.count_nonzero(df.values, axis=0)/df.shape[0]
+ selected_genes = df.columns[nonzerocounts>ratio]
+ return selected_genes
+
+# extract timepoint from timepoint - stimulation annotation
+def get_time(x):
+ if x == 'UT':
+ return x
+ else:
+ pattern = re.compile(r'\d+h')
+ return re.findall(pattern, x)[0]
+
+
+# extract timepoint from timepoint - stimulation annotation
+observations = alldata.obs.copy()
+observations['time_merged'] = [get_time(item) for item in observations['timepoint']]
+observations['timepoint_id_celltype'] = [f'{item[0]}_{item[1]}' for item
+ in observations[['time_merged', 'cell_type_lowerres']].values]
+
+celltypes = ['B', 'CD4T', 'CD8T', 'monocyte', 'DC', 'NK']
+for celltype in celltypes:
+ if not os.path.isdir(prefix_results/celltype):
+ os.mkdir(prefix_results/celltype)
+ starttime = time()
+ print(celltype)
+ specific = alldata[alldata.obs.cell_type_lowerres==celltype]
+ celltype_data = pd.DataFrame(data=specific.X.toarray(),
+ index=specific.obs.index,
+ columns=specific.var.index)
+
+ # get the set of gene pairs
+ specific_obs = observations[observations['cell_type_lowerres']==celltype]
+
+ for condition in ['UT', '3h', '24h']:
+
+ # filter for the condition
+ celltype_condition_data = celltype_data[specific_obs.time_merged==condition]
+
+ # take either tsv file with selected genes or filter genes after a nonzero rate
+ if gene_selection_file:
+ selected_genes = pd.read_csv('co-expression_indivs_combined/coexp_tp_union/genelists_tp_union/expressed_gene_'+celltype+'.tsv')
+ selected_genes =selected_genes["genes"].tolist()
+ else:
+ selected_genes = select_gene_nonzeroratio(celltype_condition_data, 0.5)
+
+ print(f"Number of selected genes for {celltype} {condition}: {len(selected_genes)}")
+
+ gene_pairs = []
+ for i,gene1 in enumerate(selected_genes):
+ for j in range(i+1, len(selected_genes)):
+ gene_pairs.append(';'.join([gene1, selected_genes[j]]))
+
+ input_df = celltype_condition_data[selected_genes]
+ input_data = spearmanr(input_df, axis=0)[0]
+ input_data_uppertria = input_data[np.triu_indices_from(input_data, 1)]
+
+ corrs_df = pd.DataFrame(data=input_data_uppertria,
+ columns=[f'{condition}'],
+ index=gene_pairs)
+
+ corrs_df.to_csv(prefix_results/celltype/f'{celltype}_{condition}_correlation.csv')
+
+ #Filter for 0.3 correlation cutoff
+ corrs_df = corrs_df[corrs_df[condition]>0.3]
+ corrs_df.to_csv(prefix_results/celltype/f'{celltype}_{condition}_correlation_03filtered.csv')
+
+ print(f"Finished {celltype} with time {time() - starttime}")
diff --git a/02_correlation_evaluation/correlation_timepoint_combined_indivs_ng.py b/02_correlation_evaluation/correlation_timepoint_combined_indivs_ng.py
new file mode 100644
index 0000000..616a978
--- /dev/null
+++ b/02_correlation_evaluation/correlation_timepoint_combined_indivs_ng.py
@@ -0,0 +1,88 @@
+######################################################################
+# Calculate correlation for each cell type for van der Wijst dataset,
+# merging all individuals
+######################################################################
+
+from scipy.stats import spearmanr
+import numpy as np
+import pandas as pd
+from pathlib import Path
+from time import time
+import scanpy as sc
+import os
+
+
+def select_gene_nonzeroratio(df, ratio):
+ nonzerocounts = np.count_nonzero(df.values, axis=0)/df.shape[0]
+ selected_genes = df.columns[nonzerocounts>ratio]
+ return selected_genes
+
+
+def select_gene_variances(df, ratio):
+ variances = np.var(df.values, axis=0)/df.shape[0]
+ var_thres = np.percentile(variances, ratio)
+ # var_thres = np.nanmedian(variances)
+ selected_genes = df.columns[variances>var_thres]
+ print(selected_genes[:5])
+ return selected_genes
+
+
+def get_genename(df, mapping):
+ df['genename'] = [mapping.get(geneid) for geneid in df.index]
+ df = df.dropna(subset=['genename']).drop_duplicates(subset=['genename'])
+ df = df.set_index('genename')
+ return df
+
+
+# set working directory (to shorten path length)
+os.chdir('./')
+gene_selection_file = False
+
+# load scanpy object
+prefix_results = Path('co-expression_indivs_combined/ng_updated_version')
+# test stemi v2
+# alldata = sc.read_h5ad('seurat_objects/pilot3_subsetted_celltypes_final_ensemble_converted_samples.h5ad')
+alldata = sc.read_h5ad('seurat_objects/pilot3_seurat3_200420_sct_azimuth.h5ad')
+
+# extract timepoint from timepoint - stimulation annotation
+celltype_maping = {'CD4 T': 'CD4T', 'CD8 T': 'CD8T', 'Mono': 'monocyte', 'DC': 'DC', 'NK':'NK', 'other T': 'otherT', 'other': 'other', 'B':'B'}
+alldata.obs['cell_type_mapped_to_onemillion'] = [celltype_maping.get(name) for name in alldata.obs['predicted.celltype.l1']]
+observations = alldata.obs.copy()
+celltypes = [item for item in observations['cell_type_mapped_to_onemillion'].unique() if not pd.isnull(item)]
+print(celltypes)
+for celltype in celltypes:
+ if not os.path.isdir(prefix_results / celltype):
+ os.mkdir(prefix_results / celltype)
+ starttime = time()
+ print(celltype)
+ specific = alldata[alldata.obs['cell_type_mapped_to_onemillion'] == celltype]
+ celltype_data = pd.DataFrame(data=specific.X.toarray(),
+ index=specific.obs.index,
+ columns=specific.var.index)
+ print(celltype_data.shape)
+ # get the set of gene pairs
+ specific_obs = observations[observations['cell_type_mapped_to_onemillion'] == celltype]
+ # filter for the condition
+ celltype_condition_data = celltype_data
+ # take either tsv file with selected genes or filter genes after a nonzero rate
+ if gene_selection_file:
+ selected_genes = pd.read_csv(' /genelists_tp_union/expressed_gene_' + celltype + '.tsv')
+ selected_genes = selected_genes["genes"].tolist()
+ else:
+ selected_genes = select_gene_nonzeroratio(celltype_condition_data, 0.5)
+ print(f"Number of selected genes for {celltype} : {len(selected_genes)}")
+ gene_pairs = []
+ for i, gene1 in enumerate(selected_genes):
+ for j in range(i + 1, len(selected_genes)):
+ gene_pairs.append(';'.join([gene1, selected_genes[j]]))
+ input_df = celltype_condition_data[selected_genes]
+ input_data = spearmanr(input_df, axis=0)[0]
+ input_data_uppertria = input_data[np.triu_indices_from(input_data, 1)]
+ corrs_df = pd.DataFrame(data=input_data_uppertria,
+ columns=[f'UT'],
+ index=gene_pairs)
+ corrs_df.to_csv(prefix_results / celltype / f'{celltype}_correlation.csv')
+ # Filter for 0.3 correlation cutoff
+ corrs_df = corrs_df[corrs_df['UT'] > 0.3]
+ corrs_df.to_csv(prefix_results / celltype / f'{celltype}_correlation_03filtered.csv')
+ print(f"Finished {celltype} with time {time() - starttime}")
diff --git a/02_correlation_evaluation/correlation_timepoint_combined_indivs_stemiv2.py b/02_correlation_evaluation/correlation_timepoint_combined_indivs_stemiv2.py
new file mode 100644
index 0000000..8312a5f
--- /dev/null
+++ b/02_correlation_evaluation/correlation_timepoint_combined_indivs_stemiv2.py
@@ -0,0 +1,50 @@
+##############################################################################
+# Calculate correlation for each cell type for the van Blokland v2 dataset,
+# timpeoint 6-8 weeks after admission, merging all individuals
+##############################################################################
+
+from scipy.stats import spearmanr
+import numpy as np
+import pandas as pd
+from pathlib import Path
+from time import time
+import os
+
+
+def select_gene_nonzeroratio(df, ratio):
+ nonzerocounts = np.count_nonzero(df.values, axis=0)/df.shape[0]
+ selected_genes = df.columns[nonzerocounts>ratio]
+ return selected_genes
+
+# set working directory (to shorten path length)
+os.chdir('./')
+
+# load scanpy object
+prefix_results = Path('co-expression_indivs_combined/stemi/')
+stemi_data = pd.read_csv('seurat_objects/stemi_v2_monocyte.csv.gz', compression='gzip', sep=' ', index_col=0).T
+stemi_meta = pd.read_csv('seurat_objects/stemi_v2_monocyte.meta.csv', sep=' ', index_col=0)
+
+for condition in stemi_meta['timepoint.final'].unique():
+ starttime = time()
+ # filter for the condition
+ celltype_condition_data = stemi_data[stemi_meta['timepoint.final']==condition]
+ # take either tsv file with selected genes or filter genes after a nonzero rate
+ selected_genes = select_gene_nonzeroratio(celltype_condition_data, 0.5)
+ print(f"Number of selected genes for stemi {condition}: {len(selected_genes)}")
+ # get gene pair names
+ gene_pairs = []
+ for i,gene1 in enumerate(selected_genes):
+ for j in range(i+1, len(selected_genes)):
+ gene_pairs.append(';'.join([gene1, selected_genes[j]]))
+ # get gene-gene correlations
+ input_df = celltype_condition_data[selected_genes]
+ input_data = spearmanr(input_df, axis=0)[0]
+ input_data_uppertria = input_data[np.triu_indices_from(input_data, 1)]
+ corrs_df = pd.DataFrame(data=input_data_uppertria,
+ columns=[f'{condition}'],
+ index=gene_pairs)
+ corrs_df.to_csv(prefix_results/f'monocyte_{condition}_correlation.csv')
+ #Filter for 0.3 correlation cutoff
+ corrs_df = corrs_df[corrs_df[condition]>0.3]
+ corrs_df.to_csv(prefix_results/f'monocyte_{condition}_correlation_03filtered.csv')
+ print(f"Finished {condition} with time {time() - starttime}")
diff --git a/02_correlation_evaluation/correlation_timepoint_combined_indivs_stemiv3.py b/02_correlation_evaluation/correlation_timepoint_combined_indivs_stemiv3.py
new file mode 100644
index 0000000..6892bc5
--- /dev/null
+++ b/02_correlation_evaluation/correlation_timepoint_combined_indivs_stemiv3.py
@@ -0,0 +1,91 @@
+##############################################################################
+# Calculate correlation for each cell type for the van Blokland v3 dataset,
+# timpeoint 6-8 weeks after admission, merging all individuals
+##############################################################################
+
+#from scipy.stats import t, norm
+from scipy.stats import spearmanr
+import scanpy as sc
+import numpy as np
+import pandas as pd
+from pathlib import Path
+from time import time
+import os
+import re
+
+# specify if the gene selection was done before and is passed in a file
+gene_selection_file = False
+
+# set working directory (to shorten path length)
+os.chdir('./')
+
+# load scanpy object
+prefix_results = Path('co-expression_indivs_combined/stemi/version3')
+# test stemi v2
+alldata = sc.read_h5ad('seurat_objects/cardio.integrated.20210301.stemiv3.h5ad')
+
+def select_gene_nonzeroratio(df, ratio):
+ nonzerocounts = np.count_nonzero(df.values, axis=0)/df.shape[0]
+ selected_genes = df.columns[nonzerocounts>ratio]
+ return selected_genes
+
+# extract timepoint from timepoint - stimulation annotation
+def get_time(x):
+ if x == 'UT':
+ return x
+ else:
+ pattern = re.compile(r'\d+h')
+ return re.findall(pattern, x)[0]
+
+
+# extract timepoint from timepoint - stimulation annotation
+observations = alldata.obs.copy()
+observations['timepoint_id_celltype'] = [f'{item[0]}_{item[1]}' for item
+ in observations[['timepoint.final', 'cell_type_lowerres']].values]
+
+celltypes = ['B', 'CD4T', 'CD8T', 'monocyte', 'DC', 'NK']
+for celltype in celltypes:
+ if not os.path.isdir(prefix_results/celltype):
+ os.mkdir(prefix_results/celltype)
+ starttime = time()
+ print(celltype)
+ specific = alldata[alldata.obs.cell_type_lowerres==celltype]
+ celltype_data = pd.DataFrame(data=specific.X.toarray(),
+ index=specific.obs.index,
+ columns=specific.var.index)
+
+ # get the set of gene pairs
+ specific_obs = observations[observations['cell_type_lowerres']==celltype]
+ for condition in observations['timepoint.final'].unique():
+ # filter for the condition
+ celltype_condition_data = celltype_data[specific_obs['timepoint.final']==condition]
+
+ # take either tsv file with selected genes or filter genes after a nonzero rate
+ if gene_selection_file:
+ selected_genes = pd.read_csv(' /genelists_tp_union/expressed_gene_'+celltype+'.tsv')
+ selected_genes =selected_genes["genes"].tolist()
+ else:
+ selected_genes = select_gene_nonzeroratio(celltype_condition_data, 0.5)
+
+ print(f"Number of selected genes for {celltype} {condition}: {len(selected_genes)}")
+
+ gene_pairs = []
+ for i,gene1 in enumerate(selected_genes):
+ for j in range(i+1, len(selected_genes)):
+ gene_pairs.append(';'.join([gene1, selected_genes[j]]))
+
+ input_df = celltype_condition_data[selected_genes]
+ input_data = spearmanr(input_df, axis=0)[0]
+ input_data_uppertria = input_data[np.triu_indices_from(input_data, 1)]
+
+ corrs_df = pd.DataFrame(data=input_data_uppertria,
+ columns=[f'{condition}'],
+ index=gene_pairs)
+
+ corrs_df.to_csv(prefix_results/celltype/f'{celltype}_{condition}_correlation.csv')
+
+ #Filter for 0.3 correlation cutoff
+ corrs_df = corrs_df[corrs_df[condition]>0.3]
+ corrs_df.to_csv(prefix_results/celltype/f'{celltype}_{condition}_correlation_03filtered.csv')
+
+ print(f"Finished {celltype} with time {time() - starttime}")
diff --git a/02_correlation_evaluation/figure2_barplot_cutoffs.R b/02_correlation_evaluation/figure2_barplot_cutoffs.R
new file mode 100644
index 0000000..df79e75
--- /dev/null
+++ b/02_correlation_evaluation/figure2_barplot_cutoffs.R
@@ -0,0 +1,72 @@
+# ------------------------------------------------------------------------------
+# Create barplot of correlation dependency on expression cutoff
+# for Oelen v3 and ImmuNexUT / Blueprint
+# (only plotting in R, calculation done with python script)
+# Input: correlation comparison between Blueprint and Oelen v3 dataset
+# (precalculated in compare_blueprint_cutoffs_CD4T.py) and between
+# ImmuNexUT and Oelen v3 dataset (precalculated in
+# compare_immunexut_cutoffs_CD4T.py)
+# Output: two barplots, one for Blueprint comparsion and one for
+# ImmuNexUT comparison
+# ------------------------------------------------------------------------------
+
+library(ggplot2)
+library(RColorBrewer)
+
+theme_set(theme_bw())
+
+################################################################################
+# Plot for ImmuNexUT (main Figure 2c)
+################################################################################
+
+vals<-read.table("co-expression_indivs_combined/immunexut_cutoff_eval_CD4T.txt",
+ sep=",",header=TRUE)
+
+vals$threshold<-as.factor(vals$threshold)
+g<-ggplot(vals,aes(x=threshold,y=corr_pearson,fill=ngenes))+
+ geom_bar(stat="identity")+
+ geom_text(aes(x = threshold, y = corr_pearson / 2, label = ngenes,
+ color=ifelse(ngenes<1000,'white','black')),size=5)+
+ scale_color_manual(values=c("black","white"))+
+ xlab("Expression cutoff")+
+ ylab("Correlation between Oelen (v3)\nand ImmuNexUT")+ylim(0,1)+
+ scale_fill_distiller("Number of\ngenes",palette="YlOrBr")+
+ theme(legend.position = "bottom",
+ legend.key.width = unit(1, "cm"),
+ axis.title = element_text(size=16),
+ axis.text = element_text(size=14),
+ legend.title=element_text(size=13),
+ legend.text=element_text(size=12))+
+ guides(color=FALSE)
+print(g)
+ggsave(g,file="co-expression_indivs_combined/plots/eval_immunexut_cutoff.pdf",
+ width=6,height=5)
+
+
+################################################################################
+# Plot for Blueprint (Supplement)
+################################################################################
+
+vals<-read.table("co-expression_indivs_combined/blueprint_cutoff_eval_CD4T.txt",
+ sep=",",header=TRUE)
+
+vals$threshold<-as.factor(vals$threshold)
+g<-ggplot(vals,aes(x=threshold,y=corr_pearson,fill=ngenes))+
+ geom_bar(stat="identity")+
+ geom_text(aes(x = threshold, y = corr_pearson / 2, label = ngenes,
+ color=ifelse(ngenes<1000,'white','black')),size=5)+
+ scale_color_manual(values=c("black","white"))+
+ xlab("Expression cutoff")+
+ ylab("Correlation between Oelen (v3)\nand BLUEPRINT")+ylim(0,1)+
+ scale_fill_distiller("Number of\ngenes",palette="YlOrBr")+
+ theme(legend.position = "bottom",
+ legend.key.width = unit(1, "cm"),
+ axis.title = element_text(size=16),
+ axis.text = element_text(size=14),
+ legend.title=element_text(size=13),
+ legend.text=element_text(size=12))+
+ guides(color=FALSE)
+print(g)
+ggsave(g,file="co-expression_indivs_combined/plots/eval_blueprint_cutoff.png",
+ width=6,height=5)
+
diff --git a/02_correlation_evaluation/figure2_scatterplots.R b/02_correlation_evaluation/figure2_scatterplots.R
new file mode 100644
index 0000000..15925d6
--- /dev/null
+++ b/02_correlation_evaluation/figure2_scatterplots.R
@@ -0,0 +1,162 @@
+# ------------------------------------------------------------------------------
+# Create inset plots for Main Figure 2 (a,b,d), showing scatterplots of
+# gene pair-wise Spearman correlation values between two data sets for
+# a) Oelen v3 dataset vs van Blokland v2 dataset (both CD4+ T cells)
+# b) ImmuNexUT - van Blokland v2 (naive CD4+ T cells and CD4+ T cells)
+# c) Blueprint - ImmuNexUT (both naive CD4+ T cells)
+# ------------------------------------------------------------------------------
+
+library(data.table)
+library(reticulate) # to read the single cell data (numpy)
+library(reshape2)
+library(ggplot2)
+library(viridis)
+library(ggpubr)
+
+np <- import("numpy")
+
+theme_set(theme_bw())
+
+#Load single cell
+load_sc_corr_data<-function(path){
+
+ # Load single cell data
+ corr_ct<-fread(path)
+ corr_ct$gene1<-sapply(corr_ct$V1,function(s) strsplit(s,";")[[1]][1])
+ corr_ct$gene2<-sapply(corr_ct$V1,function(s) strsplit(s,";")[[1]][2])
+ corr_ct$V1<-NULL
+
+ #Order so that gene1 is always the one first in alphabet
+ corr_ct$swap<-ifelse(corr_ct$gene1 > corr_ct$gene2,corr_ct$gene1,corr_ct$gene2)
+ corr_ct$gene1<-ifelse(corr_ct$gene1 > corr_ct$gene2,corr_ct$gene2,corr_ct$gene1)
+ corr_ct$gene2<-corr_ct$swap
+ corr_ct$swap<-NULL
+
+ return(corr_ct)
+}
+
+#Load data saved in numpy format
+load_numpy_data<-function(path,rowname_suffix,colname_suffix,corr_sc){
+ corr_bios <- np$load(paste0(path,"npy"), mmap_mode="r")
+ row_names<-fread(paste0(path,rowname_suffix),header=FALSE)
+ rownames(corr_bios)<-row_names$V1
+ col_names<-fread(paste0(path,colname_suffix),header=FALSE)
+ colnames(corr_bios)<-col_names$V1
+ rm(row_names,col_names)
+
+ #Filter for single cell data
+ sc_genes<-sort(union(corr_sc$gene1,corr_sc$gene2))
+ sc_genes<-sc_genes[sc_genes %in% colnames(corr_bios)]
+ corr_bios<-corr_bios[sc_genes,sc_genes]
+ corr_bios<-reshape2::melt(corr_bios)
+ corr_bios$Var1<-as.character(corr_bios$Var1)
+ corr_bios$Var2<-as.character(corr_bios$Var2)
+ colnames(corr_bios)[1:2]<-c("gene1","gene2")
+
+
+ #Order so that gene1 is always the one first in alphabet
+ corr_bios$swap<-ifelse(corr_bios$gene1 > corr_bios$gene2,corr_bios$gene1,corr_bios$gene2)
+ corr_bios$gene1<-ifelse(corr_bios$gene1 > corr_bios$gene2,corr_bios$gene2,corr_bios$gene1)
+ corr_bios$gene2<-corr_bios$swap
+ corr_bios$swap<-NULL
+ corr_bios<-corr_bios[corr_bios$gene1!=corr_bios$gene2,]
+
+ return(corr_bios)
+}
+
+#Create ggplot 2d histogram based on two correlation data frames
+create_corr_plot<-function(corr_d1,corr_d2,
+ xlab_text,ylab_text,
+ annot_text_size=9,annot_text_digits=3){
+
+ #Merge both
+ corrs<-merge(corr_d1,corr_d2,by=c("gene1","gene2"))
+
+ print(paste("Overlapping genes:",length(union(corrs$gene1,
+ corrs$gene2))))
+
+ corr_corr<-cor(corrs$corr1,corrs$corr2,
+ method="pearson")
+
+ #Plot
+ g<-ggplot(corrs,aes(corr1,corr2))+
+ geom_bin2d(bins=50)+
+ xlab(xlab_text)+
+ ylab(ylab_text)+
+ xlim(-1,1)+ylim(-1,1)+
+ scale_fill_distiller("Density",palette="BuPu",trans="log10",
+ breaks = c(2, 600),
+ labels = c("Low", "High"))+
+ annotate(geom="text", x=-0.95, y=0.95,size=annot_text_size,
+ hjust = 0,vjust=1,
+ label=paste0("r = ",format(corr_corr,digits=annot_text_digits)))+
+ ggtitle("Pairwise gene correlation")+
+ geom_smooth(method="lm",color="black")+
+ theme(legend.position="none",
+ plot.title=element_text(size=25),
+ axis.title=element_text(size=25),
+ axis.text=element_text(size=20))
+
+ return(g)
+}
+
+
+################################################################################
+# For 2a: Oelen v3 - van Blokland v2
+################################################################################
+
+main_celltype<-"CD4T"
+
+corr_oelen<-load_sc_corr_data(paste0("co-expression_indivs_combined/",
+ main_celltype,"/",main_celltype,
+ "_UT_correlation.csv"))
+
+corr_stemi<-load_sc_corr_data(paste0("co-expression_indivs_combined/stemi/version2/",
+ main_celltype,"/",main_celltype,
+ "_t8w_correlation.csv"))
+
+colnames(corr_oelen)<-c("corr1","gene1","gene2")
+colnames(corr_stemi)<-c("corr2","gene1","gene2")
+
+#Create gggplot
+g<-create_corr_plot(corr_oelen,corr_stemi,
+ xlab_text="Oelen (v3)", ylab_text="van Blokland (v2)")
+
+g_leg<-get_legend(g+theme(legend.position = "bottom"))
+g_leg<-as_ggplot(g_leg)
+ggsave(g_leg,file="bios/plots/figure2_legend_inset.pdf",width=3,height=1)
+
+
+ggsave(g,file="bios/plots/figure2a_exampleplot.pdf",width=5,height=5)
+
+################################################################################
+# For 2b: ImmuNexUT - van Blokland v2
+################################################################################
+
+corr_immu<-fread("imd_paper_rna_data/correlation/Naive_CD4_correlation.txt")
+corr_immu$V1<-NULL
+
+colnames(corr_immu)<-c("gene1","gene2","corr1")
+
+#Create gggplot
+g<-create_corr_plot(corr_immu,corr_stemi,
+ xlab_text="ImmuNexUT",ylab_text="van Blokland (v2)")
+
+ggsave(g,file="bios/plots/figure2b_exampleplot.pdf",width=5,height=5)
+
+################################################################################
+# For 2c: Blueprint - ImmuNexUT
+################################################################################
+
+#Load Blueprint data
+corr_bp<-load_numpy_data(path="blueprint_data/tcel_gene_nor_combat_20151109.ProbesWithZeroVarianceRemoved.ProbesCentered.SamplesZTransformed.spearmanR.",
+ rowname_suffix="rows.txt",
+ colname_suffix="cols.txt",
+ corr_immu)
+
+colnames(corr_bp)<-c("gene1","gene2","corr2")
+
+#Create gggplot
+g<-create_corr_plot(corr_immu,corr_bp,
+ xlab_text="ImmuNexUT",ylab_text="BLUEPRINT")
+ggsave(g,file="bios/plots/figure2c_exampleplot.pdf",width=5,height=5)
diff --git a/02_correlation_evaluation/normalize_ImmuNexUT.R b/02_correlation_evaluation/normalize_ImmuNexUT.R
new file mode 100644
index 0000000..80e04ea
--- /dev/null
+++ b/02_correlation_evaluation/normalize_ImmuNexUT.R
@@ -0,0 +1,142 @@
+# ------------------------------------------------------------------------------
+# Normalize ImmuNexUT data (separately for each cell type with a matching
+# single-cell cell type) following the description in the corresponding
+# publication (filtering lowly expressed genes, TMM normalization and
+# batch correction)
+# followed by correlation calculation for all genes expressed in 50% of the cells
+# of the Oelen v3 dataset (for comparison with single cell data)
+# Input: Count matrices downloaded from
+# https://humandbs.biosciencedbc.jp/en/hum0214-v5#E-GEAD-397,
+# correlation estimates from Oelen v3 to identify the expressed genes
+# for downstream comparisons
+# Output: normalized count matrices (one per cell type), orrelation matrices
+# for all genes expressed in 50% of the cells of the Oelen v3 dataset and
+# plots for comparison between ImmuNexUT and Oelen v3 dataset
+# ------------------------------------------------------------------------------
+
+library(data.table)
+library(edgeR) #for normalization
+library(sva) # for batch correction with combat
+library(corrplot) # to plot sample correlations
+library(ggplot2)
+library(viridis)
+
+theme_set(theme_bw())
+
+# Cell type matching
+ct_mapping<-data.frame(sc_ct=c("CD4T","CD8T","B","monocyte","NK","DC"),
+ imn_ct=c("Naive_CD4","Naive_CD8","Naive_B","CL_Mono","NK","mDC"))
+
+
+for(i in 1:nrow(ct_mapping)){
+
+ ct <- ct_mapping$imn_ct[i]
+ ct_single_cell<- ct_mapping$sc_ct[i]
+
+ # Try to prevent redoing the whole normalization when the correlation
+ # is already calculated
+ corr_file_name<-paste0("imd_paper_rna_data/correlation/",ct,"_correlation.txt")
+ if(! file.exists(corr_file_name)){
+
+ counts<-fread(paste0("imd_paper_rna_data/count/",ct,"_count.txt"))
+
+ #Format to matrix
+ gene_id<-counts$Gene_id
+ gene_name<-counts$Gene_name
+ counts$Gene_name<-NULL
+ counts$Gene_id<-NULL
+ counts<-as.matrix(counts)
+ rownames(counts)<-gene_name
+
+ #Filter lowly expressed genes (at least 10 in > 90% of samples)
+ counts<-counts[!(rowSums(counts<10) > 0.9 * ncol(counts)),]
+
+ #Normalize using edgeR (TMM plus log-transformed CPM)
+ dge <- DGEList(counts=counts)
+ dge <- calcNormFactors(dge, method = "TMM")
+ tmm <- cpm(dge) #in publication it says log-transformed CPM, but log-transformation
+ #is not working in combination with combat ...
+
+ #Remove batch data using combat
+ batch_data<-fread("imd_paper_rna_data/clinical_diagnosis_age_sex_v2.txt")
+
+ #Filter batch data for samples in the matrix
+ batch_data<-batch_data[batch_data$id %in% colnames(tmm),]
+ print(paste("Sorted the batch data correctly:",all(batch_data$id == colnames(tmm))))
+
+ modcombat = model.matrix(~1, data=batch_data)
+ combat_tmm = ComBat(dat=tmm, batch=batch_data$Phase,mod=modcombat, prior.plots = FALSE)
+
+ #Check that correlation between samples is high
+ cor_matrix<-cor(combat_tmm)
+
+ #Filter samples with a correlation coefficient less than 0.9
+ cor_coef_mean<-rowMeans(cor_matrix)
+ combat_tmm<-combat_tmm[,names(cor_coef_mean)[cor_coef_mean>=0.9]]
+
+ # #Plot remaining samples
+ # cor_matrix<-cor(combat_tmm)
+ # png("imd_paper_rna_data/plots/sample_correlation.png")
+ # corrplot(cor_matrix,method="color",order="hclust",tl.col="black",tl.cex=0.2)
+ # dev.off()
+
+ #Combine genes that appear multiple times in the matrix
+ combat_tmm<- apply(combat_tmm, 2, tapply, rownames(combat_tmm),
+ mean, na.rm=T)
+
+ #Save normalized matrix
+ write.table(combat_tmm, file=paste0("imd_paper_rna_data/norm_count/",ct,"_norm_count.txt"),
+ quote=FALSE,sep="\t")
+
+ #Read single cell correlation
+ corr_ct<-fread(paste0("co-expression_indivs_combined/",ct_single_cell,"/",
+ ct_single_cell,"_UT_correlation.csv"))
+ corr_ct$gene1<-gsub(";.*","",corr_ct$V1)
+ corr_ct$gene2<-gsub(".*;","",corr_ct$V1)
+
+ #Order so that gene1 is always the one first in alphabet
+ corr_ct$swap<-ifelse(corr_ct$gene1 > corr_ct$gene2,corr_ct$gene1,corr_ct$gene2)
+ corr_ct$gene1<-ifelse(corr_ct$gene1 > corr_ct$gene2,corr_ct$gene2,corr_ct$gene1)
+ corr_ct$gene2<-corr_ct$swap
+ corr_ct$swap<-NULL
+ corr_ct$V1<-NULL
+
+ #Filter for correlation values in CD4 T cells
+ expressed_genes<-union(corr_ct$gene1,corr_ct$gene2)
+ combat_tmm<-combat_tmm[rownames(combat_tmm) %in% expressed_genes,]
+
+ #Calculation correlation
+ cor_matrix<-cor(t(combat_tmm),method="spearman")
+ cor_matrix<-reshape2::melt(cor_matrix)
+ cor_matrix$Var1<-as.character(cor_matrix$Var1)
+ cor_matrix$Var2<-as.character(cor_matrix$Var2)
+ cor_matrix<-cor_matrix[cor_matrix$Var1 < cor_matrix$Var2,]
+ colnames(cor_matrix)<-c("gene1","gene2","corr")
+
+ #Save correlation
+ write.table(cor_matrix, file=corr_file_name,
+ quote=FALSE,sep="\t")
+ }
+
+ #Compare with single cell correlation
+ cor_matrix<-merge(cor_matrix,corr_ct,by=c("gene1","gene2"))
+
+ ylab_text<-paste("Correlation ImmuNexUT -",ct)
+ plot_path<-paste0("imd_paper_rna_data/plots/correlation_",ct,".png")
+ corr_corr<-cor(cor_matrix$UT,cor_matrix$corr)
+
+ g<-ggplot(cor_matrix,aes(UT,corr))+
+ geom_bin2d(bins=50)+
+ xlab("Correlation single cell")+
+ ylab(ylab_text)+
+ xlim(-1,1)+ylim(-1,1)+
+ scale_fill_viridis(trans="log10")+
+ annotate(geom="text", x=-0.95, y=0.95,size=8,
+ hjust = 0,vjust=1,
+ label=paste0("r = ",format(corr_corr,digits=2)))+
+ theme(axis.title=element_text(size=16),
+ axis.text=element_text(size=14),
+ legend.position="none")
+
+ ggsave(g,file=plot_path)
+}
\ No newline at end of file
diff --git a/02_correlation_evaluation/wilcoxon_test_crispr.R b/02_correlation_evaluation/wilcoxon_test_crispr.R
new file mode 100644
index 0000000..bf85c42
--- /dev/null
+++ b/02_correlation_evaluation/wilcoxon_test_crispr.R
@@ -0,0 +1,212 @@
+# ------------------------------------------------------------------------------
+# Benchmark our correlation results from single cell (Oelen v3, CD4+ T cells)
+# and bulk (ImmuNexUT, naive CD4+ T cells)
+# with a public CRISPR perturbation dataset using Wilcoxon Rank Sum Test
+# ------------------------------------------------------------------------------
+
+library(data.table)
+library(ggplot2)
+library(ggpubr)
+library(RColorBrewer)
+library(gtools)
+library(dplyr)
+
+theme_set(theme_bw())
+
+#Get colors
+cols_brewer <- c(brewer.pal(n = 3, "Set2")[2],"grey78")
+
+#Set MT correction for KO gene identification
+MTcorrection<-"FDR" #alternatives: "Bonf","FDR"
+print(paste("MT correction:",MTcorrection))
+
+# Load single cell data
+ct<-"CD4T" #alternative "CD8T"
+cond<-"UT"
+
+corr_sc<-fread(paste0("co-expression_indivs_combined/",ct,"/",ct,"_",cond,
+ "_correlation.csv"))
+corr_sc$gene1<-gsub(";.*","",corr_sc$V1)
+corr_sc$gene2<-gsub(".*;","",corr_sc$V1)
+
+corr_sc$swap<-ifelse(corr_sc$gene1 > corr_sc$gene2,corr_sc$gene1,corr_sc$gene2)
+corr_sc$gene1<-ifelse(corr_sc$gene1 > corr_sc$gene2,corr_sc$gene2,corr_sc$gene1)
+corr_sc$gene2<-corr_sc$swap
+corr_sc$swap<-NULL
+
+# Load ImmuNexUT data (already preprocessed correctly)
+ct<-"Naive_CD4"
+corr_imn<-fread(paste0("imd_paper_rna_data/correlation/",
+ ct,"_correlation_extended.txt"))
+corr_imn$V1<-NULL
+colnames(corr_imn)[3]<-"UT"
+
+# Filter for genes that are expressed in both data sets
+expressed_genes_sc<-union(corr_sc$gene1,corr_sc$gene2)
+expressed_genes_bulk<-union(corr_imn$gene1,corr_imn$gene2)
+expressed_genes<-intersect(expressed_genes_sc,expressed_genes_bulk)
+
+print(paste("Number of genes expressed in both data sets:",length(expressed_genes)))
+
+# Load perturbation data
+path<-"perturbation_dataset/perturbation_data/CD4T_GATE2019_MAST_DE/WT_KO/"
+path_negControl <- "perturbation_dataset/perturbation_data/CD4T_GATE2019_MAST_DE/WT_NP/"
+
+# Get a list with all DE genes
+files<-list.files(path)
+
+# Use the setting without artifical cells
+files<-files[!startsWith(files,"artificialCells_")]
+genes<-unique(sapply(files,function(fl) strsplit(fl,"\\.")[[1]][1]))
+print(paste0("Unique genes:",length(genes)))
+
+genes<-genes[genes %in% expressed_genes]
+print(paste0("Unique genes expressed in 50% of cells:",length(genes)))
+
+# Iterate over both data sets and all KO genes to perform Wilcoxon test
+p_vals<-NULL
+all_comps<-NULL
+for(data_type in c("ImmuNexUT","sc")){
+
+ if(data_type == "sc"){
+ corr_ct<-corr_sc
+ expressed_genes<-expressed_genes_sc
+
+ } else if (data_type == "ImmuNexUT"){
+ corr_ct<-corr_imn
+ expressed_genes<-expressed_genes_bulk
+ }
+
+ #Bonferroni cutoff corrected for the number of expressed genes
+ if(MTcorrection == "Bonf"){
+ cutoff<-0.05/length(expressed_genes)
+ } else {
+ cutoff<-0.05
+ }
+
+ # Go over each gene
+ plot_list<-list()
+ for(gene in genes){
+
+ corr_ct_ko<-corr_ct[corr_ct$gene1==gene,c("gene2","UT")]
+ colnames(corr_ct_ko)[1]<-"gene1"
+ corr_ct_ko<-rbind(corr_ct_ko,corr_ct[corr_ct$gene2==gene,c("gene1","UT")])
+
+ #Use absolute correlation
+ corr_ct_ko$UT<-abs(corr_ct_ko$UT)
+
+ #Get all knock_out genes
+ all_measured_ko_genes<-NULL
+ ko_genes_combined<-NULL
+ for(fl in files[startsWith(files,gene)]){
+ ko_genes<-read.table(paste0(path,fl))
+ all_measured_ko_genes<-union(all_measured_ko_genes,rownames(ko_genes))
+
+ if(MTcorrection=="FDR"){
+ ko_genes<-ko_genes[rownames(ko_genes) %in% expressed_genes,]
+ ko_genes$p_val<-p.adjust(ko_genes$p_val,method="BH")
+ }
+
+ #Filter for expressed genes and significant threshold
+ ko_genes<-ko_genes[rownames(ko_genes) %in% expressed_genes &
+ ko_genes$p_val%
+ group_by(ko_gene,data_type)%>%
+ summarize(max_UT=max(UT))
+
+p_vals<-merge(p_vals,max_corr,by=c("ko_gene","data_type"))
+p_vals$max_UT<-p_vals$max_UT*1.1
+p_vals$is_ko<-1.5
+
+g_sc<-ggplot()+
+ geom_violin(data=all_comps[all_comps$data_type=="single cell",],
+ aes(x=is_ko,y=UT,fill=is_ko))+
+ geom_boxplot(data=all_comps[all_comps$data_type=="single cell",],
+ aes(x=is_ko,y=UT,fill=is_ko),
+ width = 0.15, outlier.shape = NA)+
+ geom_text(data=p_vals[p_vals$data_type=="single cell",],
+ aes(x=is_ko,y=max_UT,label=pvaltext),
+ size=6)+
+ facet_wrap(~ko_gene,scales ="free",nrow=1)+
+ xlab("")+
+ ylab("Absolute correlation (single cell)")+
+ scale_fill_manual("DE gene\nafter KO",values=cols_brewer)+
+ theme(legend.position="none",
+ axis.title=element_text(size=15),
+ axis.text=element_text(size=14),
+ strip.text=element_text(size=15))
+
+g_bulk<-ggplot()+
+ geom_violin(data=all_comps[all_comps$data_type=="ImmuNexUT",],
+ aes(x=is_ko,y=UT,fill=is_ko))+
+ geom_boxplot(data=all_comps[all_comps$data_type=="ImmuNexUT",],
+ aes(x=is_ko,y=UT,fill=is_ko),
+ width = 0.15, outlier.shape = NA)+
+ geom_text(data=p_vals[p_vals$data_type=="ImmuNexUT",],
+ aes(x=is_ko,y=max_UT,label=pvaltext),
+ size=6)+
+ facet_wrap(~ko_gene,scales ="free",nrow=1)+
+ xlab("")+
+ ylab("Absolute correlation (ImmuNexUT)")+
+ scale_fill_manual("DE gene\nafter KO",values=cols_brewer)+
+ theme(legend.position="none",
+ axis.title=element_text(size=15),
+ axis.text=element_text(size=14),
+ strip.text=element_text(size=15))
+
+g<-ggarrange(g_sc,g_bulk,ncol=1,align="hv")
+
+ggsave(g,file="perturbation_dataset/plots/wilcoxon_all_combined.pdf",
+ width=15,height=8)
+
\ No newline at end of file
diff --git a/02_correlation_evaluation/wilcoxon_test_string.R b/02_correlation_evaluation/wilcoxon_test_string.R
new file mode 100644
index 0000000..996825d
--- /dev/null
+++ b/02_correlation_evaluation/wilcoxon_test_string.R
@@ -0,0 +1,96 @@
+# ------------------------------------------------------------------------------
+# Compare if correlated pairs from single cell (Oelen v3, CD4+ T cells)
+# and bulk (ImmuNexUT, naive CD4+ T cells) are enriched in STRING database
+# (Using the same strategy as in CRISPR validation with
+# Wilcoxon Rank Sum Test)
+# ------------------------------------------------------------------------------
+
+library(data.table)
+library(ggplot2)
+library(RColorBrewer)
+
+theme_set(theme_bw())
+
+#Get colors
+cols_brewer <- c("grey78",brewer.pal(n = 3, "Set2")[2])
+
+cond<-"UT"
+
+plot_list<-NULL
+for(data_type in c("sc","ImmuNexUT")){
+
+ print(data_type)
+
+ # Load single cell correlation (cell type specific)
+ if(data_type == "sc"){
+
+ ct<-"CD4T" #alternative "CD8T"
+
+ corr_ct<-fread(paste0("co-expression_indivs_combined/",ct,"/",ct,"_",cond,
+ "_correlation.csv"))
+ corr_ct$gene1<-gsub(";.*","",corr_ct$V1)
+ corr_ct$gene2<-gsub(".*;","",corr_ct$V1)
+
+ corr_ct$swap<-ifelse(corr_ct$gene1 > corr_ct$gene2,corr_ct$gene1,corr_ct$gene2)
+ corr_ct$gene1<-ifelse(corr_ct$gene1 > corr_ct$gene2,corr_ct$gene2,corr_ct$gene1)
+ corr_ct$gene2<-corr_ct$swap
+ corr_ct$swap<-NULL
+ } else if (data_type == "ImmuNexUT"){
+
+ ct<-"Naive_CD4"
+
+ #Read ImmuNexUT data (already preprocessed correctly)
+ corr_ct<-fread(paste0("imd_paper_rna_data/correlation/",
+ ct,"_correlation.txt"))
+ corr_ct$V1<-NULL
+ colnames(corr_ct)[3]<-"UT"
+ }
+
+ expressed_genes<-union(corr_ct$gene1,corr_ct$gene2)
+
+ corr_ct$UT<-abs(corr_ct$UT)
+
+ #Read STRING data base
+ string<-fread("additional_files/STRING-network.csv")
+ string<-string[string$Gene1 %in% expressed_genes &
+ string$Gene2 %in% expressed_genes,]
+
+ string$swap<-ifelse(string$Gene1 > string$Gene2,string$Gene1,string$Gene2)
+ string$Gene1<-ifelse(string$Gene1 > string$Gene2,string$Gene2,string$Gene1)
+ string$Gene2<-string$swap
+ string$swap<-NULL
+
+ #Combine with correlation values
+ string$is_string<-TRUE
+ corr_ct<-merge(corr_ct,string,by.x=c("gene1","gene2"),
+ by.y=c("Gene1","Gene2"),all.x=TRUE)
+ corr_ct$is_string[is.na(corr_ct$is_string)]<-FALSE
+
+ wt<-wilcox.test(corr_ct$UT[corr_ct$is_string],corr_ct$UT[!corr_ct$is_string],
+ paired=FALSE,alternative="greater")
+ print(wt$p.value)
+
+ if(data_type=="sc"){
+ data_type<-"Oelen (v3)"
+ }
+
+ g<-ggplot(corr_ct,aes(x=is_string,y=UT, fill=is_string))+
+ geom_violin()+
+ geom_boxplot(width = 0.15, outlier.shape = NA)+
+ xlab("Gene pair in STRING network")+
+ ylab("Absolute correlation")+
+ ylim(c(0,1))+
+ ggtitle(paste(data_type,"dataset"))+
+ annotate("text",x=1.5,y=0.9,label=paste0("p =",
+ format(wt$p.value,digits=2)),size=4.5)+
+ scale_fill_manual(values=cols_brewer)+
+ theme(legend.position = "none",
+ plot.title=element_text(size=15),
+ axis.title=element_text(size=14),
+ axis.text=element_text(size=12))
+ plot_list<-c(plot_list,list(g))
+}
+
+g<-ggarrange(plotlist=plot_list,ncol=2,labels=c("a","b"))
+ggsave(g,file=paste0("compare_with_string/plots/string_wilcoxon_combined.pdf"),
+ width=7,height=4)
\ No newline at end of file
diff --git a/03_celltype_individual_comparison/README.md b/03_celltype_individual_comparison/README.md
new file mode 100644
index 0000000..e9df023
--- /dev/null
+++ b/03_celltype_individual_comparison/README.md
@@ -0,0 +1,15 @@
+# 03_celltype_individual_comparison
+
+*compare_individuals_variance.R* : explores for all genes expressed in at least 50% of the cells the variance across individuals
+
+*correlation_between_celltypes.R* : calculates the Pearson correlation of gene pairwise Spearman correlation for all pairwise combinations of cell types within each dataset (for Oelen v2 and v3 dataset, input from *correlation_celltype.py*), taking only genes expressed in 50% of the cells in both cell types; plots results in heatmap afterwards
+
+*correlation_celltype.py* : calculates Spearman correlation for each genepair expressed in 50% of the cells for Oelen dataset (V2) and (V3), separately per cell type, but combing all individuals; provides so the input csv files for *correlation_between_celltypes.R*
+
+*correlation_correlation_distribution_celltypes_and_individuals.R* : combines two basic overview plots: the correlation distribution in each cell type (input from *correlation_celltype.py*) and the concordance of donor-specific correlation (calculates Pearson correlation of gene pairwise Spearman correlation for each combination of individuals within each cell type)
+
+*correlation_subsampling.py* : calculates per donor correlation for each cell type and different numbers of cells for the sample (randomly subsampling to this number of cells), followed by comparison between donors for within the cell type and the subsampling step, taking genepairs expressed in 50% of the cells, using again Oelen v2 and v3 dataset separately
+
+*fit_logcurve_indiv_subsampling_effect.R* : tkes the results from *correlation_subsampling.py* and fitting logarithmic curves for the relationship between number of cells and concordance between individuals, one per celltype, to better describe this relationship
+
+*plot_indiv_subsampling_effect.R* : plots results from *correlation_subsampling.py* to show relationship between number of cells and concordance between individuals
diff --git a/03_celltype_individual_comparison/compare_individuals_variance.R b/03_celltype_individual_comparison/compare_individuals_variance.R
new file mode 100644
index 0000000..ffb661c
--- /dev/null
+++ b/03_celltype_individual_comparison/compare_individuals_variance.R
@@ -0,0 +1,81 @@
+# ------------------------------------------------------------------------------
+# Combine gene pair variance across individuals
+# for Oelen (v2) and (v3) in one plot (taking Z scores)
+# Input: correlation matrices per individual and cell type
+# (for comparison of individuals)
+# Output: plot and summary as output text
+# ------------------------------------------------------------------------------
+
+library(data.table)
+library(dplyr)
+library(ggplot2)
+library(ggpubr)
+
+theme_set(theme_bw())
+
+path<-"coeqtl_mapping/input/individual_networks/UT/"
+
+cell_types<-c("B","CD4T","CD8T","DC","monocyte","NK")
+
+#Full cell type names as reported in the paper
+cell_types_corrected<-setNames(c("CD4+ T","CD8+ T","Monocyte","NK","DC","B"),
+ c("CD4T","CD8T","monocyte","NK","DC","B"))
+
+g_list<-NULL
+#Evaluate both Oelen v2 and v3 dataset
+for(dataset in c("onemillionv2","onemillionv3")){
+ corr_summary<-NULL
+ for(ct in cell_types){
+
+ #Correlation values
+ if(dataset=="onemillionv2"){
+ corr<-fread(paste0(path,dataset,"/UT_",ct,".genesnonzero0.5.zscores.tsv.gz"))
+ } else {
+ corr<-fread(paste0(path,dataset,"/UT_",ct,".genesnonzero0.5.zscores.gz"))
+ }
+
+ gene_pairs<-corr$V1
+ corr$V1<-NULL
+
+ #Set Inf values to NA to remove them afterwards
+ corr<-as.matrix(corr)
+ corr[is.infinite(corr)]<-NA
+
+ #Get mean and variance for each gene pair (drop NA and Inf values from calculation)
+ corr_summary<-rbind(corr_summary,
+ data.frame(ct,
+ gene_pairs,
+ var=apply(corr,1,var,na.rm=TRUE),
+ mean=apply(corr,1,mean,na.rm=TRUE)))
+ }
+
+ #Check frequency of "highly variable" genes
+ print(paste("Frequency of highly variable genes for",dataset))
+ tmp<-corr_summary%>%
+ group_by(ct)%>%
+ summarise(freq_high_var=mean(var>2,na.rm=TRUE))
+ print(tmp)
+ print(median(tmp$freq_high_var))
+
+ #Replace cell type names
+ corr_summary$ct<-cell_types_corrected[corr_summary$ct]
+
+ g<-ggplot(corr_summary,aes(x=var,color=ct))+
+ geom_density()+
+ xlab("Correlation variance across individuals")+
+ ylab("Density")+
+ ylim(0,2)+
+ xlim(0,15)+
+ scale_color_discrete("Cell type")+
+ theme(axis.title=element_text(size=10),
+ axis.text=element_text(size=9),
+ legend.title=element_text(size=10),
+ legend.text=element_text(size=10))
+
+ g_list<-c(g_list,list(g))
+}
+
+g<-ggarrange(plotlist=g_list,ncol=2,common.legend = TRUE,
+ legend="bottom",labels=c("a","b"))
+ggsave(g,file="co-expression_indivs_combined/plots/per_indivual_var_zscores_combined.pdf",
+ width=8,height=4)
\ No newline at end of file
diff --git a/03_celltype_individual_comparison/correlation_between_celltypes.R b/03_celltype_individual_comparison/correlation_between_celltypes.R
new file mode 100644
index 0000000..d61c2c1
--- /dev/null
+++ b/03_celltype_individual_comparison/correlation_between_celltypes.R
@@ -0,0 +1,110 @@
+# ------------------------------------------------------------------------------
+# Check Pearson correlation between cell types for Oelen v2 and v3 dataset
+# Input: correlation matrices generated with correlation_timepoint_combined_indivs.py
+# Output: heatmap plot and summary as output text
+# -----------------------------------------------------------------------------
+
+library(data.table)
+library(ggplot2)
+library(viridis)
+
+theme_set(theme_bw())
+
+cell_types<-c("CD4T","CD8T","monocyte","NK","DC","B")
+
+#Full cell type names as reported in the paper
+cell_types_corrected<-setNames(c("CD4+ T","CD8+ T","Monocyte","NK","DC","B"),
+ c("CD4T","CD8T","monocyte","NK","DC","B"))
+
+#Check for both Oelen v3 and v2 datasets (paths set dependent on that)
+path_v3<-"co-expression_indivs_combined/"
+path_v2<-"co-expression_indivs_combined/one_million_version2/"
+
+for(version in c("v2","v3")){
+
+ if(version=="v2"){
+ path<-path_v2
+ } else {
+ path<-path_v3
+ }
+
+ #Iterate over each cell type combination to do all pairwise comparisons
+ corr_comp<-NULL
+ for(c1 in 1:c(length(cell_types)-1)){
+
+ #Read correlation file one
+ cell_type1<-cell_types[c1]
+ corr_c1<-fread(paste0(path,cell_type1,"/",cell_type1,"_UT_correlation.csv"))
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr_c1$V1),
+ gsub(".*;","",corr_c1$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(c1=cell_type1,
+ c2=cell_type1,
+ gene_pairs=nrow(corr_c1),
+ genes_unique=num_genes,
+ corr=1))
+
+ for(c2 in (c1+1):length(cell_types)){
+
+ #Read correlation file two
+ cell_type2<-cell_types[c2]
+ corr_c2<-fread(paste0(path,cell_type2,"/",cell_type2,"_UT_correlation.csv"))
+
+ corr<-merge(corr_c1,corr_c2,by=c("V1"))
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr$V1),
+ gsub(".*;","",corr$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(c1=cell_type1,
+ c2=cell_type2,
+ gene_pairs=nrow(corr),
+ genes_unique=num_genes,
+ corr=cor(corr$UT.x,corr$UT.y,method="pearson")))
+ }
+ }
+
+ #Add last diagonal entry
+ cell_type1<-cell_types[length(cell_types)]
+ corr_c1<-fread(paste0(path,cell_type1,"/",cell_type1,"_UT_correlation.csv"))
+
+ #Unique genes
+ num_genes<-length(union(gsub(";.*","",corr_c1$V1),
+ gsub(".*;","",corr_c1$V1)))
+
+ corr_comp<-rbind(corr_comp,
+ data.frame(c1=cell_type1,
+ c2=cell_type1,
+ gene_pairs=nrow(corr_c1),
+ genes_unique=num_genes,
+ corr=1))
+
+ #Rename cell types to make it coherent with other part of the manuscript
+ corr_comp$c1<-cell_types_corrected[corr_comp$c1]
+ corr_comp$c2<-cell_types_corrected[corr_comp$c2]
+ corr_comp$c1<-factor(corr_comp$c1,levels=cell_types_corrected)
+ corr_comp$c2<-factor(corr_comp$c2,levels=cell_types_corrected)
+
+ #Create heatmap
+ g<-ggplot(corr_comp,aes(x=c1,y=c2,fill=corr))+
+ geom_tile()+
+ geom_text(aes(label=paste0(round(corr,3),"\n(",genes_unique,")")),size=4)+
+ xlab("Cell type")+
+ ylab("Cell type")+
+ #scale_fill_gradient2("Correlation",limits = c(-1,1),low="darkblue",mid="white",high="darkred")
+ scale_fill_viridis("Correlation",limits=c(0,1))+
+ theme(axis.title = element_text(size=14),
+ axis.text = element_text(size=12),
+ legend.title = element_text(size=14),
+ legend.text = element_text(size=12))
+ ggsave(g,file=paste0("co-expression_indivs_combined/plots/corr_celltypes_",version,".pdf"),
+ width=7,height=5)
+
+ #Check correlation distribution across cell types
+ summary(corr_comp$corr[corr_comp$c1 != corr_comp$c2])
+
+}
\ No newline at end of file
diff --git a/03_celltype_individual_comparison/correlation_celltype.py b/03_celltype_individual_comparison/correlation_celltype.py
new file mode 100644
index 0000000..86b3e78
--- /dev/null
+++ b/03_celltype_individual_comparison/correlation_celltype.py
@@ -0,0 +1,96 @@
+#############################################################################################
+# Calculate correlation for each pairwise gene combiation in each cell type and the UT timepoint,
+# where both genes are expressed in at least 50% of the cells
+# merging all individuals for Oelen v2 and v3 dataset (specified in parameter version2)
+# Input: seurat objects with Oelen v2 and v3 dataset
+# Output: correlation values as csv files (one per cell type)
+############################################################################################
+
+#from scipy.stats import t, norm
+from scipy.stats import spearmanr
+import scanpy as sc
+import numpy as np
+import pandas as pd
+from pathlib import Path
+from time import time
+import os
+import re
+
+# specify if Oelen v2 (version2=True) or v3 (version2=False) dataset is used
+version2 = True
+
+# set result path
+if version2:
+ prefix_results = Path('co-expression_indivs_combined/one_million_version2/')
+else:
+ prefix_results = Path('co-expression_indivs_combined/')
+
+# load scanpy object
+if version2:
+ alldata = sc.read_h5ad('seurat_objects/1M_v2_mediumQC_ctd_rnanormed_demuxids_20201029.sct.h5ad')
+else:
+ alldata = sc.read_h5ad('seurat_objects/1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.SCT.h5ad')
+
+def select_gene_nonzeroratio(df, ratio):
+ nonzerocounts = np.count_nonzero(df.values, axis=0)/df.shape[0]
+ selected_genes = df.columns[nonzerocounts>ratio]
+ return selected_genes
+
+# extract timepoint from timepoint - stimulation annotation
+def get_time(x):
+ if x == 'UT':
+ return x
+ else:
+ pattern = re.compile(r'\d+h')
+ return re.findall(pattern, x)[0]
+
+
+# extract timepoint from timepoint - stimulation annotation
+observations = alldata.obs.copy()
+observations['time_merged'] = [get_time(item) for item in observations['timepoint']]
+observations['timepoint_id_celltype'] = [f'{item[0]}_{item[1]}' for item
+ in observations[['time_merged', 'cell_type_lowerres']].values]
+
+# iterate over each cell type
+celltypes = ['B', 'CD4T', 'CD8T', 'monocyte', 'DC', 'NK']
+for celltype in celltypes:
+ if not os.path.isdir(prefix_results/celltype):
+ os.mkdir(prefix_results/celltype)
+ starttime = time()
+ print(celltype)
+ specific = alldata[alldata.obs.cell_type_lowerres==celltype]
+ celltype_data = pd.DataFrame(data=specific.X.toarray(),
+ index=specific.obs.index,
+ columns=specific.var.index)
+
+ # get the set of gene pairs
+ specific_obs = observations[observations['cell_type_lowerres']==celltype]
+
+ # select only UT cells
+ for condition in ['UT']:
+
+ # filter for the condition
+ celltype_condition_data = celltype_data[specific_obs.time_merged==condition]
+
+ #filter genes after a nonzero rate of at least 0.5
+ selected_genes = select_gene_nonzeroratio(celltype_condition_data, 0.5)
+
+ print(f"Number of selected genes for {celltype} {condition}: {len(selected_genes)}")
+
+ gene_pairs = []
+ for i,gene1 in enumerate(selected_genes):
+ for j in range(i+1, len(selected_genes)):
+ gene_pairs.append(';'.join([gene1, selected_genes[j]]))
+
+ input_df = celltype_condition_data[selected_genes]
+ input_data = spearmanr(input_df, axis=0)[0]
+ input_data_uppertria = input_data[np.triu_indices_from(input_data, 1)]
+
+ corrs_df = pd.DataFrame(data=input_data_uppertria,
+ columns=[f'{condition}'],
+ index=gene_pairs)
+
+ corrs_df.to_csv(prefix_results/celltype/f'{celltype}_{condition}_correlation.csv')
+
+
+ print(f"Finished {celltype} with time {time() - starttime}")
diff --git a/03_celltype_individual_comparison/correlation_distribution_celltypes_and_individuals.R b/03_celltype_individual_comparison/correlation_distribution_celltypes_and_individuals.R
new file mode 100644
index 0000000..1400f3d
--- /dev/null
+++ b/03_celltype_individual_comparison/correlation_distribution_celltypes_and_individuals.R
@@ -0,0 +1,167 @@
+# ------------------------------------------------------------------------------
+# Check Pearson correlation between individuals (per cell type)
+# and combine it with correlation levels in the cell type
+# (as both are below each other in the final figure)
+# Input:
+# 1) correlation matrices per cell type generated with
+# correlation_timepoint_combined_indivs.py
+# (for correlation levels in each cell type)
+# 2) correlation matrices per individual and cell type
+# (for comparison of individuals)
+# Output: plot and summary as output text
+# -----------------------------------------------------------------------------
+
+library(data.table)
+library(ggplot2)
+library(ggpubr)
+library(RColorBrewer)
+library(dplyr)
+
+theme_set(theme_bw())
+
+path<-"coeqtl_mapping/input/individual_networks/UT/"
+
+cell_types<-c("B","CD4T","CD8T","DC","monocyte","NK")
+
+#Full cell type names as reported in the paper
+cell_types_corrected<-setNames(c("CD4+ T","CD8+ T","Monocyte","NK","DC","B"),
+ c("CD4T","CD8T","monocyte","NK","DC","B"))
+
+#Get standard color scale
+gg_color_hue <- function(n) {
+ hues = seq(15, 375, length = n + 1)
+ hcl(h = hues, l = 65, c = 100)[1:n]
+}
+
+#Evaluate both Oelen v2 and v3 dataset
+for(dataset in c("onemillionv2","onemillionv3")){
+
+ #Evaluate correlation distribution in the cell type
+ all_corrs<-NULL
+ tp<-"UT"
+ for(ct in cell_types){
+
+ #Load correlation values
+ if(dataset=="onemillionv3"){
+ corr_ct<-fread(paste0("co-expression_indivs_combined/",ct,"/",
+ ct,"_",tp,"_correlation.csv"))
+ } else {
+ corr_ct<-fread(paste0("co-expression_indivs_combined/one_million_version2/",
+ ct,"/",ct,"_",tp,"_correlation.csv"))
+ }
+ colnames(corr_ct)[2]<-"corr"
+
+ #Get absolute correlation
+ corr_ct$corr<-abs(corr_ct$corr)
+ all_corrs<-rbind(all_corrs,
+ data.frame(level=c("<0.05",">0.05",">0.1",">0.2",">0.3"),
+ values=c(sum(abs(corr_ct$corr<0.05)),
+ sum(abs(corr_ct$corr)>0.05 &
+ abs(corr_ct$corr)<0.1),
+ sum(abs(corr_ct$corr)>0.1 &
+ abs(corr_ct$corr)<0.2),
+ sum(abs(corr_ct$corr)>0.2 &
+ abs(corr_ct$corr)<0.3),
+ sum(abs(corr_ct$corr)>0.3)),
+ freq=c(mean(abs(corr_ct$corr<0.05)),
+ mean(abs(corr_ct$corr)>0.05 &
+ abs(corr_ct$corr)<0.1),
+ mean(abs(corr_ct$corr)>0.1 &
+ abs(corr_ct$corr)<0.2),
+ mean(abs(corr_ct$corr)>0.2 &
+ abs(corr_ct$corr)<0.3),
+ mean(abs(corr_ct$corr)>0.3)),
+ ct,tp))
+ }
+
+ #Check general distribution of "highly correlated genes"
+ high_corr<-all_corrs[all_corrs$level %in% c(">0.3",">0.2",">0.1"),]
+ high_corr<-high_corr%>%group_by(ct)%>%
+ summarize(high_freq=sum(freq))%>%
+ as.data.frame()
+ median(high_corr$high_freq)
+
+ #Get comparison between cell types
+ summary<-NULL
+ for(ct in cell_types){
+ #Load file with all correlation values per individual and cell type
+ #each individual one column
+ if(dataset=="onemillionv3"){
+ corr<-fread(paste0(path,dataset,"/UT_",ct,".genesnonzero0.5.coefs.gz"))
+ } else {
+ corr<-fread(paste0(path,dataset,"/UT_",ct,".genesnonzero0.5.coefs.tsv.gz"))
+ }
+
+ #Get Pearson correlation between individual-specific correlations
+ gene_pairs<-corr$V1
+ corr$V1<-NULL
+ indiv_corr<-cor(corr,method="pearson")
+
+ #Melt the upper triangle
+ tmp<-reshape2::melt(indiv_corr)
+ tmp$Var1<-as.character(tmp$Var1)
+ tmp$Var2<-as.character(tmp$Var2)
+ tmp<-tmp[tmp$Var1 < tmp$Var2,]
+
+ tmp$ct<-ct
+
+ summary<-rbind(summary,tmp)
+ }
+
+ #Replace cell type names
+ all_corrs$ct<-cell_types_corrected[all_corrs$ct]
+ summary$ct<-cell_types_corrected[summary$ct]
+
+ #Sort cell types according to their highly correlated genes
+ sorting<-all_corrs[all_corrs$level==">0.3",]
+
+ #Sort cell type colors
+ colors_cts<-gg_color_hue(6)
+ colors_cts<-colors_cts[order(sorting$freq)]
+
+ sorting<-sorting[order(sorting$freq),]
+
+ #Barplot showing the general correlation distribution in the cell type
+ all_corrs$level<-factor(all_corrs$level,levels=c("<0.05",">0.05",">0.1",">0.2",">0.3"))
+ all_corrs$ct<-factor(all_corrs$ct,levels=sorting$ct)
+ colors_bars<-brewer.pal(n = 6, "YlGnBu")
+ g.1<-ggplot(all_corrs,aes(x=ct,y=freq,fill=level))+
+ geom_bar(stat="identity")+
+ xlab("Cell type")+ylab("Fraction correlated genes")+
+ scale_fill_manual("Absolute\ncorrelation",values=colors_bars[2:6])+
+ theme(legend.position="bottom",
+ axis.title.y = element_text(size=13.5),
+ axis.title.x = element_blank(),
+ axis.text = element_text(size=12),
+ legend.title=element_text(size=11),
+ legend.text=element_text(size=10.5))
+
+ #Violin plot showing differences between individuals in the cell type
+ summary$ct<-factor(summary$ct,levels=sorting$ct)
+ g.2<-ggplot(summary,aes(x=ct,fill=ct,y=value))+
+ geom_violin()+
+ geom_boxplot(width = 0.15, outlier.shape = NA)+
+ ylim(0,1)+
+ xlab("Cell type")+
+ ylab("Correlation between individuals")+
+ scale_fill_manual(values=colors_cts)+
+ theme(legend.position = "none",
+ axis.title.y = element_text(size=13.5),
+ axis.title.x = element_blank(),
+ axis.text = element_text(size=12))
+
+
+ g<-ggarrange(g.1,g.2,ncol=1,align="hv")
+ ggsave(g,file=paste0("co-expression_indivs_combined/plots/corr_ct_indiv_",
+ dataset,".pdf"),
+ width=5,height=6)
+
+ #Get median correlation in each cell type
+ med_corr<-summary%>%
+ group_by(ct)%>%
+ summarise(median(value,na.rm=TRUE))
+
+ print(dataset)
+ print(med_corr)
+
+}
diff --git a/03_celltype_individual_comparison/correlation_subsampling.py b/03_celltype_individual_comparison/correlation_subsampling.py
new file mode 100644
index 0000000..bfd1845
--- /dev/null
+++ b/03_celltype_individual_comparison/correlation_subsampling.py
@@ -0,0 +1,121 @@
+####################################################################################
+# Calculate per sample correlation with subsampled number of cells per donor
+# to explore the relationship between number of cells and
+# and concordance between donors
+# Individuals with a total number of cells below the respective subsampled value
+# are not tested, sampling range from 25 cells to the 75% quantile for the cell type
+# (so that at least 25% of the individuals can be included each time)
+# Selecting again genes expressed in at least 50% of the cells
+# Input: seurat objects with Oelen v2 and v3 dataset
+# Output: Csv file with Pearson correlation values for all individual comparison
+# per celltype and subsampled number of cells
+####################################################################################
+
+import scanpy as sc
+import numpy as np
+import pandas as pd
+from tqdm import tqdm
+from scipy.stats import pearsonr, spearmanr
+
+def select_gene_nonzeroratio(df, ratio):
+ '''
+ Select genes with non-zero ratio across all cells > specified ratio
+ '''
+ nonzerocounts = np.count_nonzero(df.values, axis=0)/df.shape[0]
+ selected_genes = df.columns[nonzerocounts>ratio]
+ return selected_genes
+
+def calculate_individual_network(individual_df, n_cells=0, random_state=8):
+ '''
+ Randomly select the n_cells from individual_df to calculate the gene-gene spearman network;
+ if n_cell not set, then use all cells from the individual
+ Return: A list of correlation coefficients
+ '''
+ if n_cells > 0:
+ specific_individual_network = individual_df.sample(n_cells, random_state=random_state).corr(method='spearman')
+ else:
+ specific_individual_network = individual_df.corr(method='spearman')
+ indices = np.tril_indices_from(np.zeros((specific_individual_network.shape[0],
+ specific_individual_network.shape[0])),
+ k=1)
+ return specific_individual_network.values[indices].flatten()
+
+def calculate_correlation(celltype_df, celltype_obs, selected_genes, select_individuals, n_cells=100):
+ '''
+ Calculate all inidividual networks for certain n_cells, and selected_indidviauls
+ Input: celltype_df: gene index in columns, cell index in rows, cell index will be used to match the index of
+ celltype_df; it needs at least one column named 'assignment', storing the individual index for
+ each cell
+ selected_genes: a list of gene index
+ select_individuals: a list of individual index
+ n_cells: number of cells to select from each individual, it should be smaller than the max number of cells
+ in all individuals
+ Output: all_individuals_correlation: a dataframe, each column of values is all the gene-gene spearman
+ correlation coefficients
+ correlation_of_individual_correlations: spearman correlation between all pairs of individuals' networks
+ '''
+ all_individuals_correlation = pd.DataFrame()
+ if select_individuals is not None:
+ for assignment in select_individuals:
+ allcells_individual = celltype_obs[celltype_obs.assignment==assignment].index.values
+ specific_individual_df = celltype_df[selected_genes].loc[allcells_individual]
+ all_individuals_correlation[assignment] = calculate_individual_network(specific_individual_df, n_cells)
+ correlation_of_individual_correlations = all_individuals_correlation.corr(method='pearson')
+ individual_indices = np.triu_indices_from(correlation_of_individual_correlations.values, k=1)
+ return all_individuals_correlation, correlation_of_individual_correlations.values[individual_indices]
+
+# define path (run for Oelen v2 and v3 dataset separately)
+version2 = False
+if version2:
+ input_path = 'seurat_objects/1M_v2_mediumQC_ctd_rnanormed_demuxids_20201029.sct.h5ad'
+ output_path ='co-expression_indivs_subsampled/correlation_individuals_subsampled_1M_v2.csv'
+else:
+ input_path = 'seurat_objects/1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.SCT.h5ad'
+ output_path ='co-expression_indivs_subsampled/correlation_individuals_subsampled_1M_v3.csv'
+
+# load single cell data
+alldata = sc.read_h5ad(input_path)
+
+# filter to look only at UT cells
+alldata = alldata[alldata.obs.timepoint == "UT"].copy()
+
+# select common individual per celltype
+celltypes = ['CD4T','NK','monocyte','CD8T','B','DC']
+selected_individuals = {}
+selected_individuals_cell_number = {}
+for celltype in celltypes:
+ celltype_data = alldata[alldata.obs.cell_type_lowerres == celltype]
+ selected_individuals_cell_number[f'{celltype}'] = celltype_data.obs.assignment.value_counts().values
+ selected_individuals[f'{celltype}'] = celltype_data.obs.assignment.value_counts().index
+ #Check distribution of cells per individual
+ print(celltype_data.obs.assignment.value_counts().describe())
+
+# calculate for each celltype
+all_celltype_res = pd.DataFrame()
+for celltype in tqdm(celltypes):
+ celltype_data = alldata[alldata.obs.cell_type_lowerres == celltype]
+ celltype_df = pd.DataFrame(data=celltype_data.X.toarray(),
+ columns=celltype_data.var.index, # genes
+ index=celltype_data.obs.index) # cells
+
+ # select only genes expressed in at least 50% of the cells
+ selected_genes = select_gene_nonzeroratio(celltype_df, ratio=0.5)
+
+ # Run each cell type for different number of cells so that at least 25% of individuals have that many cells
+ for cell_num in range(25, int(np.quantile(selected_individuals_cell_number[f'{celltype}'],0.75)),25):
+
+ print(cell_num)
+
+ # Select all individuals that have enough cells
+ indivs = selected_individuals[f'{celltype}'][selected_individuals_cell_number[f'{celltype}']>=cell_num]
+ # Get all pairwise correlation for these pairs
+ celltype_correlations = pd.DataFrame(data=calculate_correlation(celltype_df, celltype_data.obs,
+ selected_genes=selected_genes,
+ n_cells=cell_num,
+ select_individuals=indivs)[1],
+ columns=['corr'])
+ celltype_correlations['celltype'] = celltype
+ celltype_correlations['cell_num'] = cell_num
+ all_celltype_res = pd.concat([all_celltype_res, celltype_correlations], axis=0)
+
+all_celltype_res.to_csv(output_path)
diff --git a/03_celltype_individual_comparison/fit_logcurve_indiv_subsampling_effect.R b/03_celltype_individual_comparison/fit_logcurve_indiv_subsampling_effect.R
new file mode 100644
index 0000000..09903ea
--- /dev/null
+++ b/03_celltype_individual_comparison/fit_logcurve_indiv_subsampling_effect.R
@@ -0,0 +1,102 @@
+# ------------------------------------------------------------------------------
+# Fit logarithmic curve describing mean correlation between individuals dependent
+# on the number of cells per individual and cell type, fit down separately
+# for each cell type
+# Input: pairwise comparison of all individuals (Pearson correlation) per cell type
+# and for different numbers of cells
+# (subsampling and calculation done in correlation_subsampling.py)
+# Output: logarithmic fit per cell type and curve visualizing the fit
+# ------------------------------------------------------------------------------
+
+library(ggplot2)
+library(dplyr)
+
+theme_set(theme_bw())
+
+suffix<-"v3"
+#suffix<-"v2"
+
+color_coding <- list()
+color_coding[["CD4+ T"]] <- "#2E9D33"
+color_coding[["CD8+ T"]] <- "#126725"
+color_coding[["Monocyte"]] <- "#EDBA1B"
+color_coding[["NK"]] <- "#E64B50"
+color_coding[["B"]] <- "#009DDB"
+color_coding[["DC"]] <- "#965EC8"
+
+#Full cell type names as reported in the paper
+cell_types_corrected<-setNames(c("CD4+ T","CD8+ T","Monocyte","NK","DC","B"),
+ c("CD4T","CD8T","monocyte","NK","DC","B"))
+
+#Load results
+res<-read.csv(paste0("co-expression_indivs_subsampled/",
+ "correlation_individuals_subsampled_1M_",suffix,".csv"),
+ stringsAsFactors = FALSE)
+res$X<-NULL
+
+res$celltype<-cell_types_corrected[res$celltype]
+
+res_summary<-res%>%
+ group_by(celltype,cell_num)%>%
+ summarise(mean_corr=mean(corr),
+ quantile_25=quantile(corr,0.25),
+ quantile_75=quantile(corr,0.75))%>%
+ as.data.frame()
+
+#Filter out B cells and DCs because no line can be drawn for them
+res_summary<-res_summary[! res_summary$celltype %in% c("B","DC"),]
+
+#Fit one log function for each cell type
+log_parameters<-NULL
+for(cell_type in unique(res_summary$celltype)){
+
+ #Fit the linear model
+ res_ct<-res[res$celltype == cell_type,]
+ model_lm<-lm(corr~log(cell_num),data=res_ct)
+
+ #Save model summary
+ summary_model<-summary(model_lm)
+ print(summary_model)
+
+ log_parameters<-rbind(log_parameters,
+ data.frame(cell_type,
+ intercept=summary_model$coefficients[1,1],
+ log_beta=summary_model$coefficients[2,1],
+ adj_r_squared=summary_model$adj.r.squared,
+ stringsAsFactors = FALSE))
+ res_summary<-rbind(res_summary,
+ data.frame(celltype=cell_type,
+ cell_num=seq(max(res_ct$cell_num)+25,1500,by=25),
+ mean_corr=NA,
+ quantile_25=NA,
+ quantile_75=NA))
+}
+
+
+
+res_summary$fitted_corr<-sapply(1:nrow(res_summary),function(i)
+ log_parameters$intercept[log_parameters$cell_type == res_summary$celltype[i]] +
+ log_parameters$log_beta[log_parameters$cell_type == res_summary$celltype[i]] *
+ log(res_summary$cell_num[i]))
+
+res_summary_melt<-reshape2::melt(res_summary[,c("celltype","cell_num","mean_corr","fitted_corr")],
+ id.vars=c("celltype","cell_num"))
+
+g<-ggplot()+
+ geom_line(data=res_summary_melt,aes(x=cell_num,y=value,color=celltype,
+ linetype=variable))+
+ geom_point(data=res_summary,aes(x=cell_num,y=mean_corr,color=celltype))+
+ # annotate("text",x=850,y=0.2,hjust=0,
+ # label=paste0("y ~ -0.56 + 0.21 * log(x), R^2 = 0.98 (CD4+ T)\n",
+ # "y ~ -0.48 + 0.20 * log(x), R^2 = 0.86 (CD8+ T)\n",
+ # "y ~ -0.53 + 0.20 * log(x), R^2 = 0.94 (Monocyte)\n",
+ # "y ~ -0.41 + 0.15 * log(x), R^2 = 0.93 (NK)\n"))+
+ scale_color_manual("Cell type",values=unlist(color_coding))+
+ scale_linetype_discrete("",labels=c("Observed","Predicted"))+
+ xlab("Subsampled number of cells per individual")+
+ ylab("Correlation between individuals")
+print(g)
+
+ggsave(g,file=paste0("co-expression_indivs_subsampled/plots/subsampling_1M_",
+ suffix,"_fitted_lines.pdf"),
+ width=10,height=4)
diff --git a/03_celltype_individual_comparison/individual_networks_for_selected_genepairs.py b/03_celltype_individual_comparison/individual_networks_for_selected_genepairs.py
new file mode 100644
index 0000000..3f72781
--- /dev/null
+++ b/03_celltype_individual_comparison/individual_networks_for_selected_genepairs.py
@@ -0,0 +1,268 @@
+import argparse
+import os
+import re
+from collections import namedtuple
+from pathlib import Path
+
+import numpy as np
+import pandas as pd
+import scanpy as sc
+from scipy.stats import rankdata
+from scipy.stats import t, norm
+from tqdm import tqdm
+
+
+def get_time(x):
+ if x == 'UT':
+ return x
+ else:
+ pattern = re.compile(r'\d+h')
+ return re.findall(pattern, x)[0]
+
+
+class DATASET:
+ def __init__(self, datasetname):
+ self.name = datasetname
+ self.path_prefix = Path("./")
+ self.information = self.get_information()
+
+ def get_information(self):
+ if self.name == 'onemillionv2':
+ self.path = '1M_v2_mediumQC_ctd_rnanormed_demuxids_20201029.sct.h5ad'
+ self.individual_id_col = 'assignment'
+ self.timepoint_id_col = 'time'
+ self.celltype_id = 'cell_type_lowerres'
+ self.chosen_condition = {'UT': 'UT',
+ 'stimulated': '3h'}
+ elif self.name == 'onemillionv3':
+ self.path = '1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.SCT.h5ad'
+ self.individual_id_col = 'assignment'
+ self.timepoint_id_col = 'time'
+ self.celltype_id = 'cell_type_lowerres'
+ self.chosen_condition = {'UT': 'UT',
+ 'stimulated': '3h'}
+ elif self.name == 'stemiv2':
+ self.path = 'cardio.integrated.20210301.stemiv2.h5ad'
+ self.individual_id_col = 'assignment.final'
+ self.timepoint_id_col = 'timepoint.final'
+ self.celltype_id = 'cell_type_lowerres'
+ self.chosen_condition = {'UT': 't8w',
+ 'stimulated': 'Baseline'}
+ elif self.name == 'ng':
+ self.path = 'pilot3_seurat3_200420_sct_azimuth.h5ad'
+ self.individual_id_col = 'snumber'
+ self.celltype_id = 'cell_type_mapped_to_onemillion'
+ else:
+ raise IOError("Dataset name not understood.")
+
+ def load_dataset(self):
+ self.get_information()
+ print(f'Loading dataset {self.name} from {self.path_prefix} {self.path}')
+ self.data_sc = sc.read_h5ad(self.path_prefix / self.path)
+ if self.name.startswith('onemillion'):
+ self.data_sc.obs['time'] = [get_time(item) for item in self.data_sc.obs['timepoint']]
+ elif self.name == 'ng':
+ celltype_maping = {'CD4 T': 'CD4T', 'CD8 T': 'CD8T', 'Mono': 'monocyte', 'DC': 'DC', 'NK': 'NK',
+ 'other T': 'otherT', 'other': 'other', 'B': 'B'}
+ self.data_sc.obs['cell_type_mapped_to_onemillion'] = [celltype_maping.get(name) for name in
+ self.data_sc.obs['predicted.celltype.l1']]
+
+
+def select_gene_nonzeroratio(df, ratio):
+ nonzerocounts = np.count_nonzero(df.values, axis=0) / df.shape[0]
+ selected_genes = df.columns[nonzerocounts > ratio]
+ return selected_genes
+
+
+def corr_to_z(coef, num):
+ t_statistic = coef * np.sqrt((num - 2) / (1 - coef ** 2))
+ prob = t.cdf(t_statistic, num - 2)
+ z_score = norm.ppf(prob)
+ positive_coef_probs = 1 - prob
+ positive_coef_probs[coef < 0] = 0
+ negative_coef_probs = prob
+ negative_coef_probs[coef > 0] = 0
+ probs = negative_coef_probs + positive_coef_probs
+ return z_score, probs
+
+
+def get_om_name(filename):
+ pattern = re.compile(r'LLDeep_\d\d\d\d')
+ return re.findall(pattern, filename)[0]
+
+
+def get_stemi_name(filename):
+ pattern = re.compile(r'TEST_\d.')
+ return re.findall(pattern, filename)[0]
+
+
+def save_numpy(data_df, prefix):
+ np.save(f'{prefix}.npy', data_df.values)
+ with open(f'{prefix}.cols.txt', 'w') as f:
+ f.write('\n'.join(data_df.columns))
+ with open(f'{prefix}.rows.txt', 'w') as f:
+ f.write('\n'.join(data_df.index))
+ return None
+
+
+def _contains_nan(a, nan_policy='propagate'):
+ policies = ['propagate', 'raise', 'omit']
+ if nan_policy not in policies:
+ raise ValueError("nan_policy must be one of {%s}" %
+ ', '.join("'%s'" % s for s in policies))
+ try:
+ with np.errstate(invalid='ignore'):
+ contains_nan = np.isnan(np.sum(a))
+ except TypeError:
+ try:
+ contains_nan = np.nan in set(a.ravel())
+ except TypeError:
+ contains_nan = False
+ nan_policy = 'omit'
+ if contains_nan and nan_policy == 'raise':
+ raise ValueError("The input contains nan values")
+ return contains_nan, nan_policy
+
+
+def _chk_asarray(a, axis):
+ if axis is None:
+ a = np.ravel(a)
+ outaxis = 0
+ else:
+ a = np.asarray(a)
+ outaxis = axis
+ if a.ndim == 0:
+ a = np.atleast_1d(a)
+ return a, outaxis
+
+
+def spearmanr_withnan(a, axis=0, nan_policy='propagate'):
+ SpearmanrResult = namedtuple('SpearmanrResult', ('correlation', 'pvalue'))
+ if axis is not None and axis > 1:
+ raise ValueError("spearmanr only handles 1-D or 2-D arrays, supplied axis argument {}, "
+ "please use only values 0, 1 or None for axis".format(axis))
+ a, axisout = _chk_asarray(a, axis)
+ if a.ndim > 2:
+ raise ValueError("spearmanr only handles 1-D or 2-D arrays")
+ n_vars = a.shape[1 - axisout]
+ n_obs = a.shape[axisout]
+ if n_obs <= 1:
+ # Handle empty arrays or single observations.
+ return SpearmanrResult(np.nan, np.nan)
+ a_contains_nan, nan_policy = _contains_nan(a, nan_policy)
+ variable_has_nan = np.zeros(n_vars, dtype=bool)
+ if a_contains_nan:
+ if nan_policy == 'propagate':
+ if a.ndim == 1 or n_vars <= 2:
+ return SpearmanrResult(np.nan, np.nan)
+ else:
+ variable_has_nan = np.isnan(a).sum(axis=axisout)
+ a_ranked = np.apply_along_axis(rankdata, axisout, a)
+ rs = np.corrcoef(a_ranked, rowvar=axisout)
+ dof = n_obs - 2 # degrees of freedom
+ # rs can have elements equal to 1, so avoid zero division warnings
+ with np.errstate(divide='ignore'):
+ t_ = rs * np.sqrt((dof / ((rs + 1.0) * (1.0 - rs))).clip(0))
+ prob = 2 * t.sf(np.abs(t_), dof)
+ # For backwards compatibility, return scalars when comparing 2 columns
+ if rs.shape == (2, 2):
+ return SpearmanrResult(rs[1, 0], prob[1, 0])
+ else:
+ rs[variable_has_nan, :] = np.nan
+ rs[:, variable_has_nan] = np.nan
+ return SpearmanrResult(rs, prob)
+
+
+def get_individual_networks_halfratioGenes(data_sc, individual_colname, selected_genes=None):
+ data_df = pd.DataFrame(data=data_sc.X.toarray(),
+ index=data_sc.obs.index,
+ columns=data_sc.var.index)
+ selected_genes = select_gene_nonzeroratio(data_df, ratio=0.5)
+ print(f"Selected {len(selected_genes)} genes.")
+ from itertools import combinations
+ selected_genes_sorted_genepairs = [';'.join(sorted(item)) for item in combinations(selected_genes, 2)]
+ coef_df = pd.DataFrame(index=selected_genes_sorted_genepairs)
+ coef_p_df = pd.DataFrame(index=selected_genes_sorted_genepairs)
+ zscore_df = pd.DataFrame(index=selected_genes_sorted_genepairs)
+ zscore_p_df = pd.DataFrame(index=selected_genes_sorted_genepairs)
+ data_selected_df = data_df[selected_genes]
+ print(f"Begin calculating networks for {len(data_sc.obs[individual_colname].unique())} individuals.")
+ for ind_id in tqdm(data_sc.obs[individual_colname].unique()):
+ cell_num = data_sc.obs[data_sc.obs[individual_colname] == ind_id].shape[0]
+ if cell_num > 10:
+ individual_df = data_selected_df.loc[data_sc.obs[individual_colname] == ind_id]
+ individual_coefs, individual_coef_ps = spearmanr_withnan(individual_df.values, axis=0)
+ individual_coefs_flatten = pd.DataFrame(data=individual_coefs[np.triu_indices_from(individual_coefs, 1)],
+ index=selected_genes_sorted_genepairs).loc[
+ selected_genes_sorted_genepairs]
+ individual_coef_ps_flatten = \
+ pd.DataFrame(data=individual_coef_ps[np.triu_indices_from(individual_coefs, 1)],
+ index=selected_genes_sorted_genepairs).loc[selected_genes_sorted_genepairs]
+ coef_df[ind_id] = individual_coefs_flatten
+ coef_p_df[ind_id] = individual_coef_ps_flatten
+ try:
+ individual_zscores_flatten, individual_zscore_ps_flatten = corr_to_z(individual_coefs_flatten.values,
+ cell_num)
+ zscore_df[ind_id] = individual_zscores_flatten
+ zscore_p_df[ind_id] = individual_zscore_ps_flatten
+ except:
+ continue
+ else:
+ print("Deleted this individual because of low cell number", cell_num)
+ return coef_df, coef_p_df, zscore_df, zscore_p_df
+
+
+def get_individual_networks_given_celltype_condition_datasetname_for_6major_celltypes(datasetname, condition='UT',
+ genelist=None):
+ # load the data and data information
+ celltypes = ['CD4T', 'CD8T', 'monocyte', 'NK', 'B', 'DC']
+ dataset = DATASET(datasetname)
+ dataset.load_dataset()
+ print(f"{datasetname} loaded.")
+ # calculate the individual network for specific condition and celltype
+ for celltype in celltypes:
+ print(datasetname, celltype, condition)
+ if datasetname == 'ng':
+ data_selected = dataset.data_sc[(dataset.data_sc.obs[dataset.celltype_id] == celltype)]
+ else:
+ data_selected = dataset.data_sc[(dataset.data_sc.obs[dataset.celltype_id] == celltype) &
+ (dataset.data_sc.obs[dataset.timepoint_id_col] == dataset.chosen_condition[
+ condition])]
+ individual_coefs_df, individual_coefs_p_df, individual_zscores_df, individual_zscores_p_df = \
+ get_individual_networks_halfratioGenes(
+ data_selected,
+ dataset.individual_id_col,
+ genelist
+ )
+ print(individual_coefs_df.head())
+ save_prefix = Path(
+ 'coeqtl_mapping/input')
+ if not os.path.exists(save_prefix / 'individual_networks' / condition / datasetname):
+ os.mkdir(save_prefix / 'individual_networks' / condition / datasetname)
+ individual_coefs_df.to_csv(
+ save_prefix / 'individual_networks' / condition / datasetname / f'{condition}_{celltype}.genesnonzero0.5.coefs.gz',
+ sep='\t', compression='gzip')
+ individual_zscores_df.to_csv(
+ save_prefix / 'individual_networks' / condition / datasetname / f'{condition}_{celltype}.genesnonzero0.5.zscores.gz',
+ sep='\t', compression='gzip')
+ print("Saved ")
+ return None
+
+
+def argumentsparser():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--datasetname', type=str, dest='datasetname')
+ parser.add_argument('--condition', type=str, dest='condition')
+ return parser
+
+
+def run_get_individual_networks_given_celltype_condition_datasetname():
+ args = argumentsparser().parse_args()
+ print(f"Starting to calculate individual network for {args.datasetname}, {args.celltype}, {args.condition}.")
+ get_individual_networks_given_celltype_condition_datasetname_for_6major_celltypes(condition=args.condition,
+ datasetname=args.datasetname)
+ return None
+
+
+if __name__ == '__main__':
+ run_get_individual_networks_given_celltype_condition_datasetname()
diff --git a/03_celltype_individual_comparison/plot_indiv_subsampling_effect.R b/03_celltype_individual_comparison/plot_indiv_subsampling_effect.R
new file mode 100644
index 0000000..103007e
--- /dev/null
+++ b/03_celltype_individual_comparison/plot_indiv_subsampling_effect.R
@@ -0,0 +1,55 @@
+# ------------------------------------------------------------------------------
+# Plot effect of number of cells on correlation between individuals
+# Input: pairwise comparison of all individuals (Pearson correlation) per cell type
+# and for different numbers of cells
+# (subsampling and calculation done in correlation_subsampling.py)
+# Output: violin plot showing trend
+# ------------------------------------------------------------------------------
+
+library(ggplot2)
+
+theme_set(theme_bw())
+
+suffix<-"v3"
+#suffix<-"v2"
+
+color_coding <- list()
+color_coding[["CD4+ T"]] <- "#2E9D33"
+color_coding[["CD8+ T"]] <- "#126725"
+color_coding[["Monocyte"]] <- "#EDBA1B"
+color_coding[["NK"]] <- "#E64B50"
+color_coding[["B"]] <- "#009DDB"
+color_coding[["DC"]] <- "#965EC8"
+
+#Full cell type names as reported in the paper
+cell_types_corrected<-setNames(c("CD4+ T","CD8+ T","Monocyte","NK","DC","B"),
+ c("CD4T","CD8T","monocyte","NK","DC","B"))
+
+#Load results
+res<-read.csv(paste0("co-expression_indivs_subsampled/",
+ "correlation_individuals_subsampled_1M_",suffix,".csv"))
+res$X<-NULL
+
+res$celltype<-cell_types_corrected[res$celltype]
+
+#Filter out some values to make it more visible
+res<-res[res$cell_num %in% seq(25,500,50),]
+
+res$cell_num<-as.factor(res$cell_num)
+
+g<-ggplot(res,aes(x=cell_num,y=corr,fill=celltype))+
+ geom_violin(position = position_dodge(0.9)) +
+ xlab("Subsampled number of cells per individual")+
+ ylab("Correlation between individuals")+
+ ylim(0,1)+
+ scale_fill_manual("Cell type",values=color_coding)+
+ theme(axis.title = element_text(size=16),
+ axis.text = element_text(size=14),
+ legend.title = element_text(size=13),
+ legend.text = element_text(size=13),
+ legend.position=c(0.9,0.2))+
+ guides(fill=guide_legend(nrow=3,byrow=FALSE))
+print(g)
+ggsave(g,file=paste0("co-expression_indivs_subsampled/plots/subsampling_1M_",
+ suffix,"_filtered.pdf"),
+ width=14,height=4)
diff --git a/04_coeqtl_mapping/.ipynb_checkpoints/examine_bios_replication-checkpoint.ipynb b/04_coeqtl_mapping/.ipynb_checkpoints/examine_bios_replication-checkpoint.ipynb
new file mode 100644
index 0000000..8c5b906
--- /dev/null
+++ b/04_coeqtl_mapping/.ipynb_checkpoints/examine_bios_replication-checkpoint.ipynb
@@ -0,0 +1,1013 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "from scipy.stats import spearmanr\n",
+ "from pathlib import Path\n",
+ "from scipy.stats import t, norm\n",
+ "import seaborn as sns\n",
+ "%matplotlib inline\n",
+ "\n",
+ "def flip_zscore(zscore, coeqtlallele, altaf, altallele):\n",
+ " if not pd.isnull(zscore):\n",
+ " if coeqtlallele == altallele:\n",
+ " coeqtlaf = altaf\n",
+ " else:\n",
+ " coeqtlaf = 1 - altaf\n",
+ " if coeqtlaf > 0.5:\n",
+ " return -zscore\n",
+ " else:\n",
+ " return zscore\n",
+ " else:\n",
+ " return np.nan\n",
+ " \n",
+ "def flip_allele(altaf, altallele, refallele):\n",
+ " if altaf > 0.5:\n",
+ " return refallele\n",
+ " else:\n",
+ " return altallele"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "coeqtl_withbios_prefix = Path(\n",
+ " \"./coeqtl_mapping/output\"\n",
+ ")\n",
+ "filter_type = 'filtered_results'\n",
+ "\n",
+ "def flip_direction(allele1, allele2, zscore2):\n",
+ " if allele1 == allele2:\n",
+ " return zscore2\n",
+ " else:\n",
+ " return -1*zscore2\n",
+ "\n",
+ "\n",
+ "def get_z_score(t_statistic, num):\n",
+ " prob = t.cdf(t_statistic, num - 2)\n",
+ " z_score = norm.ppf(prob)\n",
+ " return z_score"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import seaborn as sns\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "import matplotlib.patches as mpatches"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "color_dict = {'CD4T': '#2E9D33',\n",
+ " 'CD8T': 'darkgreen',\n",
+ " 'monocyte': '#EDBA1B',\n",
+ " 'NK': '#E64B50',\n",
+ " 'DC': '#965EC8',\n",
+ " 'B': '#009DDB',\n",
+ " 'cMono': 'peru',\n",
+ " 'ncMono': 'y',\n",
+ " 'CD4T_individual_100': '#2E9D33',\n",
+ " 'CD4T_individual_50': '#2E9D33',\n",
+ " 'CD4T_50': '#2E9D33',\n",
+ " 'CD4T_150': '#2E9D33',\n",
+ " 'CD4T_250': '#2E9D33'}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "workdir = Path(\"./coeqtl_mapping/\")\n",
+ "bios_replication_filtered_df = pd.read_csv(\n",
+ " workdir/'bios/onlyRNAAlignMetrics_rmLLD/filtered_results/replication_summary.csv', \n",
+ " index_col=0\n",
+ ").set_index('celltype')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "celltype = 'CD4T'\n",
+ "eqtldf = pd.read_csv(\n",
+ " workdir/f'input/snp_selection/eqtl/UT_{celltype}_eQTLProbesFDR0.05-ProbeLevel_withAF.tsv',\n",
+ " sep='\\t'\n",
+ " )\n",
+ "eqtldf['snp_eqtlgene'] = ['_'.join(item) for item in eqtldf[['SNPName', 'genename']].values]\n",
+ "eqtl_allele_af_df = eqtldf.drop_duplicates(subset=['snp_eqtlgene', 'AlleleAssessed', 'AF'])\n",
+ "eqtl_allele_af_dict = eqtl_allele_af_df.set_index('snp_eqtlgene')[['AlleleAssessed', 'AF', 'alt_allele', 'ref_allele']].T.to_dict()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "biostype = 'onlyRNAAlignMetrics_rmLLD'\n",
+ "celltype = 'CD4T'\n",
+ "filter_type = 'filtered_results'\n",
+ "\n",
+ "coeqtl_df = pd.read_csv(\n",
+ " coeqtl_withbios_prefix/filter_type/f'UT_{celltype}/coeqtls_fullresults_fixed.sig.withbios{biostype}.tsv.gz',\n",
+ " compression='gzip', \n",
+ " index_col=0, \n",
+ " sep='\\t')\n",
+ "coeqtl_df = coeqtl_df.dropna(subset=['t_bios'])\n",
+ "coeqtl_df['zscore_bios'] = [get_z_score(item[0], item[1]) for item in \n",
+ " coeqtl_df[['t_bios', \n",
+ " 'num_individuals_bios']].values]\n",
+ "coeqtl_df['flipped_zscore_bios'] = [flip_direction(item[0], item[1], item[2]) for item in \n",
+ " coeqtl_df[['SNPEffectAllele', \n",
+ " 'assessed_allele_bios',\n",
+ " 'zscore_bios']].values]\n",
+ "\n",
+ "isConcordant = lambda x:True if x[0]*x[1] > 0 else False\n",
+ "coeqtl_df['is_concordant'] = [isConcordant(item) for item in \n",
+ " coeqtl_df[['MetaPZ', 'flipped_zscore_bios']].values]\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " snp_genepair | \n",
+ " Gene | \n",
+ " GeneChr | \n",
+ " GenePos | \n",
+ " GeneStrand | \n",
+ " GeneSymbol | \n",
+ " SNP | \n",
+ " SNPChr | \n",
+ " SNPPos | \n",
+ " SNPAlleles | \n",
+ " ... | \n",
+ " gene1_bios | \n",
+ " gene2_bios | \n",
+ " assessed_allele_bios | \n",
+ " num_individuals_bios | \n",
+ " isinteractionterm_bios | \n",
+ " snp_genepair_bios | \n",
+ " corrected_p_bios | \n",
+ " zscore_bios | \n",
+ " flipped_zscore_bios | \n",
+ " is_concordant | \n",
+ "
\n",
+ " \n",
+ " snp_gene1_gene2 | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " rs7605824_SH3YL1_NPM1 | \n",
+ " rs7605824_NPM1;SH3YL1 | \n",
+ " NPM1;SH3YL1 | \n",
+ " 2 | \n",
+ " 217730 | \n",
+ " NaN | \n",
+ " NPM1;SH3YL1 | \n",
+ " rs7605824 | \n",
+ " 2 | \n",
+ " 280819 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SH3YL1 | \n",
+ " NPM1 | \n",
+ " A | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs7605824_NPM1;SH3YL1 | \n",
+ " 0.000000 | \n",
+ " -3.617874 | \n",
+ " -3.617874 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " rs7605824_SH3YL1_CD48 | \n",
+ " rs7605824_CD48;SH3YL1 | \n",
+ " CD48;SH3YL1 | \n",
+ " 2 | \n",
+ " 217730 | \n",
+ " NaN | \n",
+ " CD48;SH3YL1 | \n",
+ " rs7605824 | \n",
+ " 2 | \n",
+ " 280819 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SH3YL1 | \n",
+ " CD48 | \n",
+ " A | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs7605824_CD48;SH3YL1 | \n",
+ " 0.784422 | \n",
+ " -0.446946 | \n",
+ " -0.446946 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " rs7605824_SH3YL1_RPS13 | \n",
+ " rs7605824_RPS13;SH3YL1 | \n",
+ " RPS13;SH3YL1 | \n",
+ " 2 | \n",
+ " 217730 | \n",
+ " NaN | \n",
+ " RPS13;SH3YL1 | \n",
+ " rs7605824 | \n",
+ " 2 | \n",
+ " 280819 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SH3YL1 | \n",
+ " RPS13 | \n",
+ " A | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs7605824_RPS13;SH3YL1 | \n",
+ " 0.000000 | \n",
+ " -3.489377 | \n",
+ " -3.489377 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " rs7605824_SH3YL1_RPL31 | \n",
+ " rs7605824_RPL31;SH3YL1 | \n",
+ " RPL31;SH3YL1 | \n",
+ " 2 | \n",
+ " 217730 | \n",
+ " NaN | \n",
+ " RPL31;SH3YL1 | \n",
+ " rs7605824 | \n",
+ " 2 | \n",
+ " 280819 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SH3YL1 | \n",
+ " RPL31 | \n",
+ " A | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs7605824_RPL31;SH3YL1 | \n",
+ " 0.349601 | \n",
+ " -1.325633 | \n",
+ " -1.325633 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " rs7605824_SH3YL1_RPL3 | \n",
+ " rs7605824_RPL3;SH3YL1 | \n",
+ " RPL3;SH3YL1 | \n",
+ " 2 | \n",
+ " 217730 | \n",
+ " NaN | \n",
+ " RPL3;SH3YL1 | \n",
+ " rs7605824 | \n",
+ " 2 | \n",
+ " 280819 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SH3YL1 | \n",
+ " RPL3 | \n",
+ " A | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs7605824_RPL3;SH3YL1 | \n",
+ " 0.000000 | \n",
+ " -3.854851 | \n",
+ " -3.854851 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " rs4147638_SMDT1_ACTB | \n",
+ " rs4147638_ACTB;SMDT1 | \n",
+ " ACTB;SMDT1 | \n",
+ " 22 | \n",
+ " 42475695 | \n",
+ " NaN | \n",
+ " ACTB;SMDT1 | \n",
+ " rs4147638 | \n",
+ " 22 | \n",
+ " 42487900 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SMDT1 | \n",
+ " ACTB | \n",
+ " G | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs4147638_ACTB;SMDT1 | \n",
+ " 0.000000 | \n",
+ " -3.748326 | \n",
+ " 3.748326 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " rs4147638_SMDT1_RPS25 | \n",
+ " rs4147638_RPS25;SMDT1 | \n",
+ " RPS25;SMDT1 | \n",
+ " 22 | \n",
+ " 42475695 | \n",
+ " NaN | \n",
+ " RPS25;SMDT1 | \n",
+ " rs4147638 | \n",
+ " 22 | \n",
+ " 42487900 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SMDT1 | \n",
+ " RPS25 | \n",
+ " G | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs4147638_RPS25;SMDT1 | \n",
+ " 0.000000 | \n",
+ " 5.773036 | \n",
+ " -5.773036 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " rs4147638_SMDT1_RPS3A | \n",
+ " rs4147638_RPS3A;SMDT1 | \n",
+ " RPS3A;SMDT1 | \n",
+ " 22 | \n",
+ " 42475695 | \n",
+ " NaN | \n",
+ " RPS3A;SMDT1 | \n",
+ " rs4147638 | \n",
+ " 22 | \n",
+ " 42487900 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SMDT1 | \n",
+ " RPS3A | \n",
+ " G | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs4147638_RPS3A;SMDT1 | \n",
+ " 0.000000 | \n",
+ " 4.434777 | \n",
+ " -4.434777 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " rs4147638_SMDT1_RPS18 | \n",
+ " rs4147638_RPS18;SMDT1 | \n",
+ " RPS18;SMDT1 | \n",
+ " 22 | \n",
+ " 42475695 | \n",
+ " NaN | \n",
+ " RPS18;SMDT1 | \n",
+ " rs4147638 | \n",
+ " 22 | \n",
+ " 42487900 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SMDT1 | \n",
+ " RPS18 | \n",
+ " G | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs4147638_RPS18;SMDT1 | \n",
+ " 0.000000 | \n",
+ " 7.128733 | \n",
+ " -7.128733 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " rs4147638_SMDT1_RPL11 | \n",
+ " rs4147638_RPL11;SMDT1 | \n",
+ " RPL11;SMDT1 | \n",
+ " 22 | \n",
+ " 42475695 | \n",
+ " NaN | \n",
+ " RPL11;SMDT1 | \n",
+ " rs4147638 | \n",
+ " 22 | \n",
+ " 42487900 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SMDT1 | \n",
+ " RPL11 | \n",
+ " G | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs4147638_RPL11;SMDT1 | \n",
+ " 0.000000 | \n",
+ " 5.896748 | \n",
+ " -5.896748 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
497 rows × 55 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " snp_genepair Gene GeneChr \\\n",
+ "snp_gene1_gene2 \n",
+ "rs7605824_SH3YL1_NPM1 rs7605824_NPM1;SH3YL1 NPM1;SH3YL1 2 \n",
+ "rs7605824_SH3YL1_CD48 rs7605824_CD48;SH3YL1 CD48;SH3YL1 2 \n",
+ "rs7605824_SH3YL1_RPS13 rs7605824_RPS13;SH3YL1 RPS13;SH3YL1 2 \n",
+ "rs7605824_SH3YL1_RPL31 rs7605824_RPL31;SH3YL1 RPL31;SH3YL1 2 \n",
+ "rs7605824_SH3YL1_RPL3 rs7605824_RPL3;SH3YL1 RPL3;SH3YL1 2 \n",
+ "... ... ... ... \n",
+ "rs4147638_SMDT1_ACTB rs4147638_ACTB;SMDT1 ACTB;SMDT1 22 \n",
+ "rs4147638_SMDT1_RPS25 rs4147638_RPS25;SMDT1 RPS25;SMDT1 22 \n",
+ "rs4147638_SMDT1_RPS3A rs4147638_RPS3A;SMDT1 RPS3A;SMDT1 22 \n",
+ "rs4147638_SMDT1_RPS18 rs4147638_RPS18;SMDT1 RPS18;SMDT1 22 \n",
+ "rs4147638_SMDT1_RPL11 rs4147638_RPL11;SMDT1 RPL11;SMDT1 22 \n",
+ "\n",
+ " GenePos GeneStrand GeneSymbol SNP SNPChr \\\n",
+ "snp_gene1_gene2 \n",
+ "rs7605824_SH3YL1_NPM1 217730 NaN NPM1;SH3YL1 rs7605824 2 \n",
+ "rs7605824_SH3YL1_CD48 217730 NaN CD48;SH3YL1 rs7605824 2 \n",
+ "rs7605824_SH3YL1_RPS13 217730 NaN RPS13;SH3YL1 rs7605824 2 \n",
+ "rs7605824_SH3YL1_RPL31 217730 NaN RPL31;SH3YL1 rs7605824 2 \n",
+ "rs7605824_SH3YL1_RPL3 217730 NaN RPL3;SH3YL1 rs7605824 2 \n",
+ "... ... ... ... ... ... \n",
+ "rs4147638_SMDT1_ACTB 42475695 NaN ACTB;SMDT1 rs4147638 22 \n",
+ "rs4147638_SMDT1_RPS25 42475695 NaN RPS25;SMDT1 rs4147638 22 \n",
+ "rs4147638_SMDT1_RPS3A 42475695 NaN RPS3A;SMDT1 rs4147638 22 \n",
+ "rs4147638_SMDT1_RPS18 42475695 NaN RPS18;SMDT1 rs4147638 22 \n",
+ "rs4147638_SMDT1_RPL11 42475695 NaN RPL11;SMDT1 rs4147638 22 \n",
+ "\n",
+ " SNPPos SNPAlleles ... gene1_bios gene2_bios \\\n",
+ "snp_gene1_gene2 ... \n",
+ "rs7605824_SH3YL1_NPM1 280819 G/A ... SH3YL1 NPM1 \n",
+ "rs7605824_SH3YL1_CD48 280819 G/A ... SH3YL1 CD48 \n",
+ "rs7605824_SH3YL1_RPS13 280819 G/A ... SH3YL1 RPS13 \n",
+ "rs7605824_SH3YL1_RPL31 280819 G/A ... SH3YL1 RPL31 \n",
+ "rs7605824_SH3YL1_RPL3 280819 G/A ... SH3YL1 RPL3 \n",
+ "... ... ... ... ... ... \n",
+ "rs4147638_SMDT1_ACTB 42487900 G/A ... SMDT1 ACTB \n",
+ "rs4147638_SMDT1_RPS25 42487900 G/A ... SMDT1 RPS25 \n",
+ "rs4147638_SMDT1_RPS3A 42487900 G/A ... SMDT1 RPS3A \n",
+ "rs4147638_SMDT1_RPS18 42487900 G/A ... SMDT1 RPS18 \n",
+ "rs4147638_SMDT1_RPL11 42487900 G/A ... SMDT1 RPL11 \n",
+ "\n",
+ " assessed_allele_bios num_individuals_bios \\\n",
+ "snp_gene1_gene2 \n",
+ "rs7605824_SH3YL1_NPM1 A 2491.0 \n",
+ "rs7605824_SH3YL1_CD48 A 2491.0 \n",
+ "rs7605824_SH3YL1_RPS13 A 2491.0 \n",
+ "rs7605824_SH3YL1_RPL31 A 2491.0 \n",
+ "rs7605824_SH3YL1_RPL3 A 2491.0 \n",
+ "... ... ... \n",
+ "rs4147638_SMDT1_ACTB G 2491.0 \n",
+ "rs4147638_SMDT1_RPS25 G 2491.0 \n",
+ "rs4147638_SMDT1_RPS3A G 2491.0 \n",
+ "rs4147638_SMDT1_RPS18 G 2491.0 \n",
+ "rs4147638_SMDT1_RPL11 G 2491.0 \n",
+ "\n",
+ " isinteractionterm_bios snp_genepair_bios \\\n",
+ "snp_gene1_gene2 \n",
+ "rs7605824_SH3YL1_NPM1 True rs7605824_NPM1;SH3YL1 \n",
+ "rs7605824_SH3YL1_CD48 True rs7605824_CD48;SH3YL1 \n",
+ "rs7605824_SH3YL1_RPS13 True rs7605824_RPS13;SH3YL1 \n",
+ "rs7605824_SH3YL1_RPL31 True rs7605824_RPL31;SH3YL1 \n",
+ "rs7605824_SH3YL1_RPL3 True rs7605824_RPL3;SH3YL1 \n",
+ "... ... ... \n",
+ "rs4147638_SMDT1_ACTB True rs4147638_ACTB;SMDT1 \n",
+ "rs4147638_SMDT1_RPS25 True rs4147638_RPS25;SMDT1 \n",
+ "rs4147638_SMDT1_RPS3A True rs4147638_RPS3A;SMDT1 \n",
+ "rs4147638_SMDT1_RPS18 True rs4147638_RPS18;SMDT1 \n",
+ "rs4147638_SMDT1_RPL11 True rs4147638_RPL11;SMDT1 \n",
+ "\n",
+ " corrected_p_bios zscore_bios flipped_zscore_bios \\\n",
+ "snp_gene1_gene2 \n",
+ "rs7605824_SH3YL1_NPM1 0.000000 -3.617874 -3.617874 \n",
+ "rs7605824_SH3YL1_CD48 0.784422 -0.446946 -0.446946 \n",
+ "rs7605824_SH3YL1_RPS13 0.000000 -3.489377 -3.489377 \n",
+ "rs7605824_SH3YL1_RPL31 0.349601 -1.325633 -1.325633 \n",
+ "rs7605824_SH3YL1_RPL3 0.000000 -3.854851 -3.854851 \n",
+ "... ... ... ... \n",
+ "rs4147638_SMDT1_ACTB 0.000000 -3.748326 3.748326 \n",
+ "rs4147638_SMDT1_RPS25 0.000000 5.773036 -5.773036 \n",
+ "rs4147638_SMDT1_RPS3A 0.000000 4.434777 -4.434777 \n",
+ "rs4147638_SMDT1_RPS18 0.000000 7.128733 -7.128733 \n",
+ "rs4147638_SMDT1_RPL11 0.000000 5.896748 -5.896748 \n",
+ "\n",
+ " is_concordant \n",
+ "snp_gene1_gene2 \n",
+ "rs7605824_SH3YL1_NPM1 True \n",
+ "rs7605824_SH3YL1_CD48 True \n",
+ "rs7605824_SH3YL1_RPS13 True \n",
+ "rs7605824_SH3YL1_RPL31 True \n",
+ "rs7605824_SH3YL1_RPL3 True \n",
+ "... ... \n",
+ "rs4147638_SMDT1_ACTB True \n",
+ "rs4147638_SMDT1_RPS25 True \n",
+ "rs4147638_SMDT1_RPS3A True \n",
+ "rs4147638_SMDT1_RPS18 True \n",
+ "rs4147638_SMDT1_RPL11 True \n",
+ "\n",
+ "[497 rows x 55 columns]"
+ ]
+ },
+ "execution_count": 51,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "coeqtl_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# flip direction according to AF\n",
+ "coeqtl_df['eqtl_effect_allele'] = [eqtl_allele_af_dict.get(eqtl)['AlleleAssessed'] for eqtl in \n",
+ " coeqtl_df['snp_eqtlgene']]\n",
+ "coeqtl_df['eqtl_alt_af'] = [eqtl_allele_af_dict.get(eqtl)['AF'] for eqtl in coeqtl_df['snp_eqtlgene']]\n",
+ "coeqtl_df['eqtl_alt_allele'] = [eqtl_allele_af_dict.get(eqtl)['alt_allele'] for eqtl in \n",
+ " coeqtl_df['snp_eqtlgene']]\n",
+ "coeqtl_df['eqtl_ref_allele'] = [eqtl_allele_af_dict.get(eqtl)['ref_allele'] for eqtl in \n",
+ " coeqtl_df['snp_eqtlgene']]\n",
+ "coeqtl_df[f'MetaPZ_flippedforAF'] = [flip_zscore(zscore, coeqtlallele, altaf, altallele)\n",
+ " for zscore, coeqtlallele, altaf, altallele in\n",
+ " coeqtl_df[[f'MetaPZ',\n",
+ " f'SNPEffectAllele',\n",
+ " 'eqtl_alt_af',\n",
+ " 'eqtl_alt_allele']].values]\n",
+ "coeqtl_df[f'flipped_zscore_bios_flippedforAF'] = [flip_zscore(zscore, coeqtlallele, altaf, altallele)\n",
+ " for zscore, coeqtlallele, altaf, altallele in\n",
+ " coeqtl_df[[f'flipped_zscore_bios',\n",
+ " f'SNPEffectAllele',\n",
+ " 'eqtl_alt_af',\n",
+ " 'eqtl_alt_allele']].values]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "0.9637681159420289\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "Text(3, -5, 'Concordance = 0.96\\nrb = 0.61')"
+ ]
+ },
+ "execution_count": 53,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "coeqtl_sig = coeqtl_df[coeqtl_df['corrected_p_bios']<=0.05]\n",
+ "coeqtl_nonsig = coeqtl_df[coeqtl_df['corrected_p_bios']>0.05]\n",
+ "plt.figure(figsize=(5, 5))\n",
+ "plt.scatter(coeqtl_nonsig['MetaPZ_flippedforAF'], \n",
+ " coeqtl_nonsig['flipped_zscore_bios_flippedforAF'], \n",
+ " label='Insignificant',\n",
+ " edgecolor='gray',\n",
+ " facecolor='white', alpha=1)\n",
+ "plt.scatter(coeqtl_sig['MetaPZ_flippedforAF'],\n",
+ " coeqtl_sig['flipped_zscore_bios_flippedforAF'], \n",
+ " label='Significant',\n",
+ " edgecolor=color_dict[celltype],\n",
+ " facecolor=color_dict[celltype], alpha=1)\n",
+ "plt.plot([-15, 12], [0, 0], linestyle='--', color='lightgray')\n",
+ "plt.plot([0, 0], [-6.5, 4], linestyle='--', color='lightgray')\n",
+ "plt.legend()\n",
+ "\n",
+ "concordance_rate = coeqtl_sig[coeqtl_sig['is_concordant']].shape[0] / coeqtl_sig.shape[0]\n",
+ "print(concordance_rate)\n",
+ "\n",
+ "celltype_rb = bios_replication_filtered_df.loc[celltype]['r']\n",
+ "plt.text(3, -5, f'Concordance = {concordance_rate:.2f}\\nrb = {celltype_rb:.2f}')\n",
+ "\n",
+ "# plt.savefig('bios_replication.cd4t.filtered_results.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 62,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "def plot_ci_manual(t, s_err, n, x, x2, y2, ax=None):\n",
+ " \"\"\"Return an axes of confidence bands using a simple approach.\n",
+ " \n",
+ " Notes\n",
+ " -----\n",
+ " .. math:: \\left| \\: \\hat{\\mu}_{y|x0} - \\mu_{y|x0} \\: \\right| \\; \\leq \\; T_{n-2}^{.975} \\; \\hat{\\sigma} \\; \\sqrt{\\frac{1}{n}+\\frac{(x_0-\\bar{x})^2}{\\sum_{i=1}^n{(x_i-\\bar{x})^2}}}\n",
+ " .. math:: \\hat{\\sigma} = \\sqrt{\\sum_{i=1}^n{\\frac{(y_i-\\hat{y})^2}{n-2}}}\n",
+ " \n",
+ " References\n",
+ " ----------\n",
+ " .. [1] M. Duarte. \"Curve fitting,\" Jupyter Notebook.\n",
+ " http://nbviewer.ipython.org/github/demotu/BMC/blob/master/notebooks/CurveFitting.ipynb\n",
+ " \n",
+ " \"\"\"\n",
+ " if ax is None:\n",
+ " ax = plt.gca()\n",
+ " \n",
+ " ci = t * s_err * np.sqrt(1/n + (x2 - np.mean(x))**2 / np.sum((x - np.mean(x))**2))\n",
+ " ax.fill_between(x2, y2 + ci, y2 - ci, alpha=0.1, color='gray')\n",
+ " return ax\n",
+ "\n",
+ "from scipy import stats\n",
+ "def equation(a, b):\n",
+ " \"\"\"Return a 1D polynomial.\"\"\"\n",
+ " return np.polyval(a, b) \n",
+ "\n",
+ "x=coeqtl_df['MetaPZ_flippedforAF']\n",
+ "y=coeqtl_df['flipped_zscore_bios_flippedforAF']\n",
+ "\n",
+ "p, cov = np.polyfit(x, y, 1, cov=True) # parameters and covariance from of the fit of 1-D polynom.\n",
+ "y_model = equation(p, x) \n",
+ "# Statistics\n",
+ "n = y.size # number of observations\n",
+ "m = p.size # number of parameters\n",
+ "dof = n - m # degrees of freedom\n",
+ "t = stats.t.ppf(0.975, n - m) # used for CI and PI bands\n",
+ "# Estimates of Error in Data/Model\n",
+ "resid = y - y_model \n",
+ "chi2 = np.sum((resid / y_model)**2) # chi-squared; estimates error in data\n",
+ "chi2_red = chi2 / dof # reduced chi-squared; measures goodness of fit\n",
+ "s_err = np.sqrt(np.sum(resid**2) / dof) # standard deviation of the error\n",
+ "\n",
+ "# Plotting --------------------------------------------------------------------\n",
+ "fig, ax = plt.subplots(figsize=(5, 5))\n",
+ "# Data\n",
+ "ax.scatter(\n",
+ " x, y\n",
+ ")\n",
+ "\n",
+ "\n",
+ "# Fit\n",
+ "ax.plot(x, y_model, \"-\", color=\"0.1\", linewidth=1.5, alpha=0.5, label=\"Fit\") \n",
+ "\n",
+ "x2 = np.linspace(np.min(x), np.max(x), 100)\n",
+ "y2 = equation(p, x2)\n",
+ "\n",
+ "# Confidence Interval (select one)\n",
+ "plot_ci_manual(t, s_err, n, x, x2, y2, ax=ax)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":19: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " coeqtl_sig['celltype'] = celltype\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 46,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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119/ffJxW7du5ayzzmLdunWcfvrp9Pf3c+DAAc455xw2bNjAhg0beP755wF46qmn2LJlC+95z3tYvnw573//+9Fa86//+q8cO3aMt7/97bz97W8/6WtcsGABt956K29729u4//77+eEPf8imTZtYt24df/mXf8ng4CDPP/88Dz74IJ/73OdYv349b7311rB2/v73v+fUU09lzZo1fPjDHyYYDGb9vv7mN7/hQx/6EEopzjzzTHp7e2lrazvpce985ztRSqGU4vTTT+fIkSMAKKXo7+9Ha43P56O+vh6bTbbjigLkG5NGxhur4+TnRQJmz53dCcF+83H+2RDN/j4YC4lNxY1N0WiUz33uc3z7298edrvb7UYpBcDAwEDy/0JMFxKbSrPfVOqxSQZ3U1Gispy/F3TMfAz0mtsLMcl79y6++GIOHz7M0qVLufHGG3n66adPesyxY8f42te+xosvvsjjjz/Orl27ht3f1tbGc889x8MPP8wXvvCFk57/4IMPsnjxYl577TXOOeec5O2hUIhrrrmG733ve2zbto0nnngCl8vFjBkzePzxx3nllVe47777uPnmm5PPefXVV/nud7/Lzp072bdvH3/84x+5+eabmTVrFk8++SRPPvlk2q/T6XTy3HPPce211/Lud7+brVu3sm3bNlasWMFdd93FWWedxRVXXMF3vvMdXnvtNRYvXpx8biAQ4Prrr+e+++7j9ddfJxKJ8B//8R+ASUF48MEHT3q9o0ePMnfuUCd6zpw5HD16NNOPgXA4zD333MMll1wCwCc/+UlaW1uZNWsWa9as4Xvf+x4Wi4QGUYB8YlK6eNN3FE4cGP48qx0aToEF58Dyy8xHm3NCz7qT2FTc2PRv//ZvXHHFFbS0tJx0369+9SuWL1/OZZddxn/913+l/bqEKFcSm0qz3wSlHZukBzcVjdcB5ZO8d8/tdvPyyy9z55130tTUxDXXXMNPfvKTYY/585//zHnnnUd9fT12u52rr7562P1XXnklFouFlStX0tHRkfdr7969m5aWFjZt2gRATU0NNpuNcDjMxz72MdasWcPVV189LJ/79NNPZ86cOVgsFtavX8+BAwfyeq1rrrkm+f8dO3ZwzjnnsGbNGn7605/yxhtv5GznwoULWbp0KQDXXXcdzzzzDAC33norV1xxxUnPMavzw2WbRbrxxhs599xzk0H8scceY/369Rw7dozXXnuNT37yk/T19WV8vhAnyScmpYs3dQuhZtbw553zOQj1w5uPw66HzccT+wufvCqAxKbixaZjx45x//33c9NNN6V93auuuopdu3bx61//mn/4h3/I/gUKMZEmMdMpQWJTafaboLRjk+ReTVXjcUC597CZQU/lrJnQqnRWq5UtW7awZcsW1qxZw913383111+fvD/dGy5VIjUhn8em0lqnfePefvvtNDc3s23bNmKxGE6nM+1rWa1WIpFIXq9VVVWV/P/111/Pr3/9a9atW8dPfvITnnrqqZztLNScOXM4fHjoZ3bkyJFk2sZIX/3qV+nq6uI///M/k7f9+Mc/5gtf+AJKKZYsWcLChQvZtWsXp59+esFtEdNYrpiUKd70HYW3f3HotvYdQPy9mnw7THzKi8Smp3K2s1D5xKZXX32VvXv3smTJEgAGBwdZsmQJe/fuHfa4c889l7feeovu7m4aGxsLbosQY5LIPHDWDs90Gs3EeoEkNj2Vs52FGmu/KVUpxiZZuZvOxnPvXh52797Nm2++mfz8tddeY/78+cMec/rpp/P0009z4sQJIpEIv/zlL8fltZcvX86xY8fYunUrAP39/UQiEbxeLy0tLVgsFu655x6i0WjOa1VXV9Pf35/X6/b399PS0kI4HOanP/1pzmssX76cAwcOJDs299xzD+edd17W17jiiiv47//+b7TWvPjii3g8nrTpTT/60Y947LHH+NnPfjYs7XLevHn8/ve/B6Cjo4Pdu3ezaNGivL4+IfKWb7xpfQjqFsApF8GKvzAf6xZMaDVgiU3Fi02XXXYZ7e3tHDhwgAMHDlBZWZl8jb179yY7bq+88gqhUIiGhoa8vj4hxlWRqpRLbCrNflOpxyYZ3E1n47V3L08+n4/rrruOlStXsnbtWnbu3Mktt9wy7DGzZ8/mS1/6EmeccQYXXnghK1euxOPxjPm1KyoquO+++7jppptYt24dF110EYFAgBtvvJG7776bM888kz179gybPcrkhhtu4NJLL027MXikr33ta5xxxhlcdNFFLF++PHn7tddey3e+8x1OPfVU3nrrreTtTqeTH//4x1x99dWsWbMGi8XCxz/+cSBz7vg73/lOFi1axJIlS/jYxz7GD37wg2H3HTt2DICPf/zjdHR0sHnzZtavX8+tt94KwD/8wz/w/PPPs2bNGi644AK+9a1vlczskygj+cYb72GzopdqgjMKJDYVNzZl8stf/pLVq1ezfv16/vZv/5b77ruv5AoXiGmiCHEJJDYVOzZl6jeVemxSo1nOLJaNGzfqRGUgMU7ad5iZJ+9hM4O+4vIJTzHIxefz4Xa7iUQiXHXVVXz4wx/mqquuKmqbxMRRSr2std5Y7HaMhcSmPKWLNzD8Nl8nWCvMzHiCv9d8npq+WQQSm6YfiU8CMHvsEnEooUTiEkhsmo6yxSbZczfdjcfevXF2yy238MQTTxAIBLj44ou58sori90kIcR4GBlv0u1j6TuG2Wy30MyMB/rMCt+GDxalyakkNgkxTa243MQqKLm4BBKbxHAyuBMl57bbbit2E4QQkyF1H4uvE7p3w0A32F1msNd31KzmbfhgSUxCSWwSYppKVAROzTIokbgEEpvEcDK4E0IIURyJCpq+TjjyZ3Oouase/MchPDgpleiEECIvJZjpJEQ6UlBFTKr29nauvfZaFi9ezMqVK3nnO9/Jnj17it0stmzZQinvSXjqqad4/vnnk5/fcccd/Pd///eor/fNb36TJUuWsGzZMh577LG0j9m2bRubN29mzZo1XH755cPOvtu+fTubN29m1apVrFmzhkAgMOq2iGkm9ayoEwfg+H6zYmd1gN0J0RBUNU5KJbphzZLYNCqlFJtCoRB//dd/zZo1a1i3bl3OEupCTAUSm0anGLHptdde48wzz2T9+vVs3LiRP//5zwAcOHAAl8vF+vXrWb9+fbLgy0SRlTsxabTWXHXVVVx33XXce++9gHkjdHR0JA+fnAyRSASbrfR+9bO166mnnsLtdnPWWWcBjCkw7Ny5k3vvvZc33niDY8eOceGFF7Jnzx6sVuuwx330ox/ltttu47zzzuO//uu/+M53vsPXvvY1IpEIH/jAB7jnnntYt24dPT092O32UbdHTCMj99iFg3DElNmmugXCAYgEoGXdpFSiS5DYlN1UiU0//OEPAXj99dfp7Ozk0ksvZevWrcNKmAsxlUhsyq7UYtPnP/95vvKVr3DppZfyv//7v3z+859PTjItXryY1157bdRtKIREPDFpnnzySex2+7A32Pr16znnnHPQWvO5z32O1atXs2bNGu677z7AvDm3bNnCe97zHpYvX8773//+5NkiW7du5ayzzmLdunWcfvrp9Pf3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SzZu3Mh///d/N2jdlXAIdWreaKsrrppJ6kc/+hHXXXddo95n48aNPP/882zYsIG///3v3HzzzUFnu5oxYwYPPvggn3/+ORMmTGDevHkALF26lLKyMj7//HNWr17N008/HfJaNiLxSLmpbtHKTa1ateL++++vtxXiwQcfZPTo0WzdupXRo0fz4IMPAqHnNpFEodxUt3g7b5o9ezb33nsva9as4b777mP27Nn+OK+99lqeeuopNmzYwPLly2nRokWjYgmFijuJmmXLltGiRQv/LEYA2dnZjBgxAjPjjjvuYMCAAWRkZPgX2F6+fDmjRo3immuuoW/fvvzgBz/wr2mSm5vL8OHDycrKIicnh6KiIkpLS7n++uvJyMhg4MCBLFu2DIBFixYxceJExo0bx6WXXkpJSQmTJ08mMzOTSZMmUVJS4o9p5syZDB48mPT0dO69917/9jPPPJN7772XQYMGkZGRwRdffAF4A5l975mZmemfhvjtt99m2LBhDBo0iIkTJ1JcXHzcdzJq1CjuuusuRo4cyaOPPsprr73G+eefz8CBAxkzZgzffvsteXl5PPXUU8yfP5/s7GxWrlzJnDlz/CdAvitFmZmZTJgwodpV7GBeeeUVJk+eTHJyMr169aJ3797Vri75bN68mYsuugiAsWPH+j+Xc45Dhw5RUVFBSUkJLVu21PTkktCUm+IjN7Vp04YLL7yw2rpZwbzyyitMnToV8BYsfvnll/3bQ8ltIolCuSk+clOoucU55+/lVFhY6F877+233yYzM5OsrCwATjvtNJKSkup8zxNiZgnzc95555kkrkcffdR+8pOfBH3uz3/+s40ZM8YqKips586d1qNHD8vPz7dly5ZZ+/btbfv27Xb06FEbOnSorVy50srKyqxXr162atUqMzMrLCy0I0eO2COPPGLTpk0zM7NNmzZZjx49rKSkxBYuXGinn3667d2718zMfvWrX9n1119vZmZr1661pKQky83NNTPz71NRUWEjR460tWvXmplZz5497bHHHjMzsyeeeMKmT59uZmazZ8+2H//4x/7Psm/fPtu9e7eNGDHCiouLzczswQcftP/8z/887nOPHDnSZs6cWe21x44dMzOzZ5991m6//XYzM7v33ntt3rx5/v0CH2dkZNjy5cvNzOzuu+/2x/Lkk0/ak08+edx73nLLLbZkyRL/4xtuuMGWLl163H7Dhg2zl19+2f99tW3b1szMysvLbdKkSZaammqtW7e2p59++rjXNgTwqcVBfjmRH+WmxKbcFB+5yWfhwoV2yy231Pp8SkpKtcennnqqmYWe2xpC+UliSbkpPnJTqLll48aN1qNHD0tLS7Pu3btbXl6emZnNnz/frr32Wrv00ktt4MCB9tBDDx332oaqKzfFZEIV51w28BTQCqgAbjYzXV47iX3wwQdMmTKFpKQkunTpwsiRI8nNzaV9+/bk5OSQlpYGeFes8vLy/AtODhkyBMDfcvTBBx8wa9YswFvYsmfPnv6+6WPHjqVjx44AvP/++9x2220AZGZmkpmZ6Y/lxRdf5JlnnqGiooKCggI2btzof/673/0uAOeddx5//etfAXj33Xd5/vnn/a/v0KEDr7/+Ohs3buSCCy4AoLy8nGHDhgX97JMmTfLf37FjB5MmTaKgoIDy8nJ69epV5/dWWFjIgQMH/At2Tp06lYkTJwJUu9IXyMsJ1Tnnjtv2+9//nttuu4377ruP8ePH07JlSwBWrVpFUlIS+fn57N+/nxEjRjBmzBgtfC5NknKTJxq56USFmttEmgLlJk88nTc9+eSTzJ8/n+9973u8+OKLTJ8+nXfffZeKigo++OADcnNzad26NaNHj+a8885j9OjRdcbaWLHqlvkw8J9mlg3cU/lYmrj09HRWr14d9Llg/zg+ycnJ/vtJSUlUVFRgZkH/seo6Ts2FNoO9/quvvuKRRx7hvffeY926dVx55ZXVBr36YvHF4XvPmscyM8aOHcuaNWtYs2YNGzduZMGCBfXGNWvWLG699VY+//xznn766YgMuE1LS2P79u3+xzt27PB3HQjUt29f3n77bVavXs2UKVM4++yzAfjjH//IZZddRosWLejcuTMXXHBBXA+qFqmPclN85KZQdenShYKCAgAKCgro3LkzEHpuE0kUyk3xkZtCzS2LFy/2F7MTJ070d91MS0tj5MiRpKam0rp1a6644go+++yzsMfpE6vizgDfIJ0UID9GcUgUXXLJJZSVlfHss8/6t+Xm5rJixQouuugiXnjhBY4ePcru3bt5//33ycnJqfVYffv2JT8/n9zcXACKioqoqKjgoosu4rnnngNgy5YtfP3115x77rnHvT5wv/Xr17Nu3ToADh48SJs2bUhJSeHbb7/lzTffrPdzXXrp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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# withbiostechnicalandcelltypePICs\n",
+ "sig_df = pd.DataFrame()\n",
+ "fig, axes = plt.subplots(2, 3, figsize=(15, 10), sharex=True, sharey=True)\n",
+ "celltypes = ['CD4T', 'CD8T', 'monocyte', 'NK', 'B', 'DC']\n",
+ "for i in range(2):\n",
+ " for j in range(3):\n",
+ " celltype = celltypes[i*3+j]\n",
+ " coeqtl_df = pd.read_csv(\n",
+ " coeqtl_withbios_prefix/filter_type/f'UT_{celltype}/coeqtls_fullresults_fixed.sig.withbiosonlyRNAAlignMetrics_rmLLD.tsv.gz',\n",
+ " compression='gzip', index_col=0, sep='\\t')\n",
+ " coeqtl_df['zscore_bios'] = [get_z_score(item[0], item[1]) for item in \n",
+ " coeqtl_df[['t_bios', \n",
+ " 'num_individuals_bios']].values]\n",
+ " coeqtl_df['flipped_zscore_bios'] = [flip_direction(item[0], item[1], item[2]) for item in \n",
+ " coeqtl_df[['SNPEffectAllele', \n",
+ " 'assessed_allele_bios',\n",
+ " 'zscore_bios']].values]\n",
+ " # flip the direction according to AF\n",
+ " coeqtl_df['eqtl_effect_allele'] = [eqtl_allele_af_dict.get(eqtl)['AlleleAssessed'] for eqtl in \n",
+ " coeqtl_df['snp_eqtlgene']]\n",
+ " coeqtl_df['eqtl_alt_af'] = [eqtl_allele_af_dict.get(eqtl)['AF'] for eqtl in coeqtl_df['snp_eqtlgene']]\n",
+ " coeqtl_df['eqtl_alt_allele'] = [eqtl_allele_af_dict.get(eqtl)['alt_allele'] for eqtl in \n",
+ " coeqtl_df['snp_eqtlgene']]\n",
+ " coeqtl_df['eqtl_ref_allele'] = [eqtl_allele_af_dict.get(eqtl)['ref_allele'] for eqtl in \n",
+ " coeqtl_df['snp_eqtlgene']]\n",
+ " coeqtl_df[f'MetaPZ_flippedforAF'] = [flip_zscore(zscore, coeqtlallele, altaf, altallele)\n",
+ " for zscore, coeqtlallele, altaf, altallele in\n",
+ " coeqtl_df[[f'MetaPZ',\n",
+ " f'SNPEffectAllele',\n",
+ " 'eqtl_alt_af',\n",
+ " 'eqtl_alt_allele']].values]\n",
+ " coeqtl_df[f'flipped_zscore_bios_flippedforAF'] = [flip_zscore(zscore, coeqtlallele, altaf, altallele)\n",
+ " for zscore, coeqtlallele, altaf, altallele in\n",
+ " coeqtl_df[[f'flipped_zscore_bios',\n",
+ " f'SNPEffectAllele',\n",
+ " 'eqtl_alt_af',\n",
+ " 'eqtl_alt_allele']].values]\n",
+ " ## end flip\n",
+ " coeqtl_sig = coeqtl_df[coeqtl_df['corrected_p_bios']<=0.05]\n",
+ " coeqtl_sig['celltype'] = celltype\n",
+ " sig_df = pd.concat([coeqtl_sig, sig_df], axis=0)\n",
+ " significant_ratio = coeqtl_sig.shape[0] / coeqtl_df.shape[0]\n",
+ " coeqtl_sig_samedirection = coeqtl_sig[((coeqtl_sig['MetaPZ']>0) & (coeqtl_sig['flipped_zscore_bios']>0)) | \n",
+ " ((coeqtl_sig['MetaPZ']<0) & (coeqtl_sig['flipped_zscore_bios']<0))]\n",
+ " consistent_ratio = coeqtl_sig_samedirection.shape[0] / coeqtl_sig.shape[0]\n",
+ " # draw\n",
+ " ax = axes[i][j]\n",
+ " ax.scatter(coeqtl_df['MetaPZ'][coeqtl_df['corrected_p_bios']>0.05], \n",
+ " coeqtl_df['flipped_zscore_bios'][coeqtl_df['corrected_p_bios']>0.05], alpha=0.5,\n",
+ " label='Non-sig')\n",
+ " ax.scatter(coeqtl_df['MetaPZ'][coeqtl_df['corrected_p_bios']<=0.05],\n",
+ " coeqtl_df['flipped_zscore_bios'][coeqtl_df['corrected_p_bios']<=0.05], alpha=0.5,\n",
+ " label='Sig')\n",
+ " ax.set_xlabel('single cell')\n",
+ " ax.set_ylabel('BIOS')\n",
+ " ax.set_title(celltype)\n",
+ " ax.text(-2, -8, \n",
+ " f'Significant ratio: {significant_ratio:.2f}\\nConcordance ratio: {consistent_ratio:.2f}')\n",
+ "ax.legend(loc='upper left')\n",
+ " \n",
+ "# plt.savefig('bios_replication.filtered_results.scatterplots.pdf')\n",
+ "# plt.savefig('bios_replication.filtered_results.scatterplots.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":19: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " coeqtl_sig['celltype'] = celltype\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# unfiltered results \n",
+ "# withbiosonlyRNAAlignMetrics_rmLLD\n",
+ "sig_df = pd.DataFrame()\n",
+ "fig, axes = plt.subplots(2, 3, figsize=(15, 10), sharex=True, sharey=True)\n",
+ "celltypes = ['CD4T', 'CD8T', 'monocyte', 'NK', 'B', 'DC']\n",
+ "for i in range(2):\n",
+ " for j in range(3):\n",
+ " celltype = celltypes[i*3+j]\n",
+ " coeqtl_df = pd.read_csv(\n",
+ " coeqtl_withbios_prefix/'unfiltered_results'/f'UT_{celltype}/coeqtls_fullresults_fixed.sig.withbiosonlyRNAAlignMetrics_rmLLD.tsv.gz',\n",
+ " compression='gzip', index_col=0, sep='\\t')\n",
+ " coeqtl_df['zscore_bios'] = [get_z_score(item[0], item[1]) for item in \n",
+ " coeqtl_df[['t_bios', \n",
+ " 'num_individuals_bios']].values]\n",
+ " coeqtl_df['flipped_zscore_bios'] = [flip_direction(item[0], item[1], item[2]) for item in \n",
+ " coeqtl_df[['SNPEffectAllele', \n",
+ " 'assessed_allele_bios',\n",
+ " 'zscore_bios']].values]\n",
+ " coeqtl_sig = coeqtl_df[coeqtl_df['corrected_p_bios']<=0.05]\n",
+ " coeqtl_sig['celltype'] = celltype\n",
+ " sig_df = pd.concat([coeqtl_sig, sig_df], axis=0)\n",
+ " # draw\n",
+ " ax = axes[i][j]\n",
+ " ax.scatter(coeqtl_df['MetaPZ'][coeqtl_df['corrected_p_bios']>0.05], \n",
+ " coeqtl_df['flipped_zscore_bios'][coeqtl_df['corrected_p_bios']>0.05], alpha=0.5,\n",
+ " label='Non-sig')\n",
+ " ax.scatter(coeqtl_df['MetaPZ'][coeqtl_df['corrected_p_bios']<=0.05],\n",
+ " coeqtl_df['flipped_zscore_bios'][coeqtl_df['corrected_p_bios']<=0.05], alpha=0.5,\n",
+ " label='Sig')\n",
+ " ax.set_xlabel('single cell')\n",
+ " ax.set_ylabel('BIOS')\n",
+ " ax.set_title(celltype)\n",
+ "ax.legend(loc='upper left')\n",
+ "# plt.savefig('bios_replication.unfiltered_results.scatterplots.pdf')\n",
+ "# plt.savefig('bios_replication.unfiltered_results.scatterplots.png', dpi=300)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "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.7.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/04_coeqtl_mapping/.ipynb_checkpoints/plot_example_imputed_zero-checkpoint.ipynb b/04_coeqtl_mapping/.ipynb_checkpoints/plot_example_imputed_zero-checkpoint.ipynb
new file mode 100644
index 0000000..fc28e77
--- /dev/null
+++ b/04_coeqtl_mapping/.ipynb_checkpoints/plot_example_imputed_zero-checkpoint.ipynb
@@ -0,0 +1,571 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "import os\n",
+ "import re\n",
+ "from pathlib import Path\n",
+ "\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import scanpy as sc\n",
+ "from scipy.stats import spearmanr, pearsonr\n",
+ "from scipy.stats import t, norm\n",
+ "from tqdm import tqdm\n",
+ "\n",
+ "\n",
+ "def get_time(x):\n",
+ " if x == 'UT':\n",
+ " return x\n",
+ " else:\n",
+ " pattern = re.compile(r'\\d+h')\n",
+ " return re.findall(pattern, x)[0]\n",
+ "\n",
+ "\n",
+ "class DATASET:\n",
+ " def __init__(self, datasetname):\n",
+ " self.name = datasetname\n",
+ " self.path_prefix = Path(\"./seurat_objects\")\n",
+ " self.information = self.get_information()\n",
+ " def get_information(self):\n",
+ " if self.name == 'onemillionv2':\n",
+ " self.path = '1M_v2_mediumQC_ctd_rnanormed_demuxids_20201029.sct.h5ad'\n",
+ " self.individual_id_col = 'assignment'\n",
+ " self.timepoint_id_col = 'time'\n",
+ " self.celltype_id = 'cell_type_lowerres'\n",
+ " self.chosen_condition = {'UT': 'UT',\n",
+ " 'stimulated': '3h'}\n",
+ " elif self.name == 'onemillionv3':\n",
+ " self.path = '1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.SCT.h5ad'\n",
+ " self.individual_id_col = 'assignment'\n",
+ " self.timepoint_id_col = 'time'\n",
+ " self.celltype_id = 'cell_type_lowerres'\n",
+ " self.chosen_condition = {'UT': 'UT',\n",
+ " 'stimulated': '3h'}\n",
+ " elif self.name == 'stemiv2':\n",
+ " self.path = 'cardio.integrated.20210301.stemiv2.h5ad'\n",
+ " self.individual_id_col = 'assignment.final'\n",
+ " self.timepoint_id_col = 'timepoint.final'\n",
+ " self.celltype_id = 'cell_type_lowerres'\n",
+ " self.chosen_condition = {'UT': 't8w',\n",
+ " 'stimulated': 'Baseline'}\n",
+ " elif self.name == 'ng':\n",
+ " self.path = 'pilot3_seurat3_200420_sct_azimuth.h5ad'\n",
+ " self.individual_id_col = 'snumber'\n",
+ " self.celltype_id = 'cell_type_mapped_to_onemillion'\n",
+ " else:\n",
+ " raise IOError(\"Dataset name not understood.\")\n",
+ " def load_dataset(self):\n",
+ " self.get_information()\n",
+ " print(f'Loading dataset {self.name} from {self.path_prefix} {self.path}')\n",
+ " self.data_sc = sc.read_h5ad(self.path_prefix / self.path)\n",
+ " if self.name.startswith('onemillion'):\n",
+ " self.data_sc.obs['time'] = [get_time(item) for item in self.data_sc.obs['timepoint']]\n",
+ " elif self.name == 'ng':\n",
+ " celltype_maping = {'CD4 T': 'CD4T', 'CD8 T': 'CD8T', 'Mono': 'monocyte', 'DC': 'DC', 'NK': 'NK',\n",
+ " 'other T': 'otherT', 'other': 'other', 'B': 'B'}\n",
+ " self.data_sc.obs['cell_type_mapped_to_onemillion'] = [celltype_maping.get(name) for name in\n",
+ " self.data_sc.obs['predicted.celltype.l1']]\n",
+ " def get_cMono_ncMono(self):\n",
+ " def tell_cmono_foronemillion(x):\n",
+ " if x == 'mono 1' or x == 'mono 3' or x == 'mono 4':\n",
+ " return 'cMono'\n",
+ " elif x == 'mono 2':\n",
+ " return 'ncMono'\n",
+ " if self.name.startswith('onemillion'):\n",
+ " self.data_sc.obs['sub_monocytes'] = [tell_cmono_foronemillion(x) for x in\n",
+ " self.data_sc.obs['cell_type']]\n",
+ " self.cmono = self.data_sc[self.data_sc.obs['sub_monocytes'] == 'cMono']\n",
+ " self.ncmono = self.data_sc[self.data_sc.obs['sub_monocytes'] == 'ncMono']\n",
+ " elif self.name.startswith('stemi'):\n",
+ " self.cmono = self.data_sc[self.data_sc.obs['cell_type'] == 'cMono']\n",
+ " self.ncmono = self.data_sc[self.data_sc.obs['cell_type'] == 'ncMono']\n",
+ " elif self.name == 'ng':\n",
+ " self.cmono = self.data_sc[self.data_sc.obs['predicted.celltype.l2'] == 'CD14 Mono']\n",
+ " self.ncmono = self.data_sc[self.data_sc.obs['predicted.celltype.l2'] == 'CD16 Mono']\n",
+ " else:\n",
+ " raise IOError(\"Dataset name not understood.\")\n",
+ "\n",
+ "example_savedir = Path(\n",
+ " \"/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output/examples\"\n",
+ ")\n",
+ "\n",
+ "import subprocess\n",
+ "bashfile_path = '/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/bios/select_snps_from_vcf.sh'\n",
+ "def get_snps_from_vcffile(bashfile_path, vcf_path, snps_path, savepath):\n",
+ " response = subprocess.run([bashfile_path, vcf_path, snps_path, savepath])\n",
+ " print(response)\n",
+ " return None\n",
+ "\n",
+ "# sample id mapping\n",
+ "gtefile = pd.read_csv(\n",
+ " '/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/summary/gte-fix.tsv',\n",
+ " sep='\\t'\n",
+ ")\n",
+ "gte_dict = gtefile.set_index(\"expressionsampleID\")[\"genotypesampleID\"].T.to_dict()\n",
+ "\n",
+ "\n",
+ "def corr_to_z(coef, num):\n",
+ " t_statistic = coef * np.sqrt((num - 2) / (1 - coef ** 2))\n",
+ " prob = t.cdf(t_statistic, num - 2)\n",
+ " z_score = norm.ppf(prob)\n",
+ " positive_coef_probs = 1 - prob\n",
+ " positive_coef_probs[coef < 0] = 0\n",
+ " negative_coef_probs = prob\n",
+ " negative_coef_probs[coef > 0] = 0\n",
+ " probs = negative_coef_probs + positive_coef_probs\n",
+ " return z_score, probs\n",
+ "\n",
+ "\n",
+ "def get_individual_networks_selected_genepairs(data_df, data_sc, individual_colname, genepair, fillna=False):\n",
+ "# data_df = pd.DataFrame(data=data_sc.X.toarray(),\n",
+ "# index=data_sc.obs.index,\n",
+ "# columns=data_sc.var.index)\n",
+ " gene1, gene2 = genepair.split(';')\n",
+ " sorted_genepair = [';'.join(sorted([gene1, gene2]))]\n",
+ " coef_df = pd.DataFrame(index=sorted_genepair)\n",
+ " coef_p_df = pd.DataFrame(index=sorted_genepair)\n",
+ " zscore_df = pd.DataFrame(index=sorted_genepair)\n",
+ " zscore_p_df = pd.DataFrame(index=sorted_genepair)\n",
+ " data_selected_df = data_df[[gene1, gene2]]\n",
+ " print(\n",
+ " f\"Calculating networks for {len(data_sc.obs[individual_colname].unique())} individuals and;\\n{genepair}\"\n",
+ " )\n",
+ " for ind_id in tqdm(data_sc.obs[individual_colname].unique()):\n",
+ " cell_num = data_sc.obs[data_sc.obs[individual_colname] == ind_id].shape[0]\n",
+ " if cell_num > 10:\n",
+ " individual_df = data_selected_df.loc[data_sc.obs[individual_colname] == ind_id]\n",
+ " individual_coefs, individual_coef_ps = spearmanr(individual_df.values, axis=0)\n",
+ " if data_selected_df.shape[1] == 2:\n",
+ " individual_coefs_flatten = pd.DataFrame(data = [individual_coefs],\n",
+ " index = sorted_genepair)\n",
+ " individual_coef_ps_flatten = \\\n",
+ " pd.DataFrame(data=[individual_coef_ps],\n",
+ " index=sorted_genepair)\n",
+ " else:\n",
+ " individual_coefs_flatten = pd.DataFrame(\n",
+ " data=individual_coefs[np.triu_indices_from(individual_coefs, 1)],\n",
+ " index=sorted_genepair).loc[sorted_genepair]\n",
+ " individual_coef_ps_flatten = \\\n",
+ " pd.DataFrame(data=individual_coef_ps[np.triu_indices_from(individual_coefs, 1)],\n",
+ " index=sorted_genepair).loc[sorted_genepair]\n",
+ " coef_df[ind_id] = individual_coefs_flatten\n",
+ " coef_p_df[ind_id] = individual_coef_ps_flatten\n",
+ " try:\n",
+ " individual_zscores_flatten, individual_zscore_ps_flatten = corr_to_z(\n",
+ " individual_coefs_flatten.values,\n",
+ " cell_num\n",
+ " )\n",
+ " zscore_df[ind_id] = individual_zscores_flatten\n",
+ " zscore_p_df[ind_id] = individual_zscore_ps_flatten\n",
+ " except:\n",
+ " continue\n",
+ " else:\n",
+ " print(\"Deleted this individual because of low cell number\", cell_num)\n",
+ " if fillna:\n",
+ " zscore_df = zscore_df.fillna(0)\n",
+ " return data_selected_df, zscore_df, zscore_p_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Loading dataset onemillionv2 from /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/seurat_objects 1M_v2_mediumQC_ctd_rnanormed_demuxids_20201029.sct.h5ad\n"
+ ]
+ }
+ ],
+ "source": [
+ "datasetname = 'onemillionv2'\n",
+ "dataset = DATASET(datasetname)\n",
+ "dataset.load_dataset()\n",
+ "data_sc = dataset.data_sc"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "CompletedProcess(args=['/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/bios/select_snps_from_vcf.sh', '/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output/genotypevcfs/chr1/GenotypeData.vcf.gz', PosixPath('/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output/examples/snplist.rs221045'), PosixPath('/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output/examples/rs221045.vcf')], returncode=0)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " #CHROM | \n",
+ " POS | \n",
+ " ID | \n",
+ " REF | \n",
+ " ALT | \n",
+ " QUAL | \n",
+ " FILTER | \n",
+ " INFO | \n",
+ " FORMAT | \n",
+ " 1_LLDeep_1191 | \n",
+ " ... | \n",
+ " s21 | \n",
+ " s43 | \n",
+ " s24 | \n",
+ " s23 | \n",
+ " s45 | \n",
+ " s26 | \n",
+ " s25 | \n",
+ " s28 | \n",
+ " s27 | \n",
+ " s29 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 16530049 | \n",
+ " rs221045 | \n",
+ " T | \n",
+ " C | \n",
+ " . | \n",
+ " . | \n",
+ " . | \n",
+ " GT:DS | \n",
+ " 0/0:0.03 | \n",
+ " ... | \n",
+ " 0/1:1.0 | \n",
+ " 0/0:0.010000000000000009 | \n",
+ " 0/1:1.0 | \n",
+ " 0/0:0.0 | \n",
+ " 0/0:0.0 | \n",
+ " 1/1:2.0 | \n",
+ " 0/0:0.0 | \n",
+ " 0/1:1.0 | \n",
+ " 0/0:0.0 | \n",
+ " 0/1:1.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
1 rows × 182 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT 1_LLDeep_1191 \\\n",
+ "0 1 16530049 rs221045 T C . . . GT:DS 0/0:0.03 \n",
+ "\n",
+ " ... s21 s43 s24 s23 s45 s26 \\\n",
+ "0 ... 0/1:1.0 0/0:0.010000000000000009 0/1:1.0 0/0:0.0 0/0:0.0 1/1:2.0 \n",
+ "\n",
+ " s25 s28 s27 s29 \n",
+ "0 0/0:0.0 0/1:1.0 0/0:0.0 0/1:1.0 \n",
+ "\n",
+ "[1 rows x 182 columns]"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "celltype = 'monocyte'\n",
+ "snp_id = 'rs221045'\n",
+ "chromosome = '1'\n",
+ "snp_vcf_path = example_savedir/f'{snp_id}.vcf'\n",
+ "with open(example_savedir/f'snplist.{snp_id}', 'w') as f:\n",
+ " f.write(f'{snp_id}\\n')\n",
+ "vcf_path = f'/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output/genotypevcfs/chr{chromosome}/GenotypeData.vcf.gz'\n",
+ "get_snps_from_vcffile(bashfile_path, vcf_path, example_savedir/f'snplist.{snp_id}', snp_vcf_path)\n",
+ "gt = pd.read_csv(snp_vcf_path, sep='\\t', skiprows=6)\n",
+ "gt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Calculating networks for 72 individuals and;\n",
+ "AC005076.5;ARHGEF19\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/72 [00:00, ?it/s]/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/Beeline/miniconda/envs/scpy3.8/lib/python3.8/site-packages/scipy/stats/stats.py:4264: SpearmanRConstantInputWarning: An input array is constant; the correlation coefficent is not defined.\n",
+ " warnings.warn(SpearmanRConstantInputWarning())\n",
+ "100%|██████████| 72/72 [00:00<00:00, 210.51it/s]\n",
+ "/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/Beeline/miniconda/envs/scpy3.8/lib/python3.8/site-packages/seaborn/categorical.py:1296: UserWarning: 42.5% of the points cannot be placed; you may want to decrease the size of the markers or use stripplot.\n",
+ " warnings.warn(msg, UserWarning)\n",
+ "/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/Beeline/miniconda/envs/scpy3.8/lib/python3.8/site-packages/seaborn/categorical.py:1296: UserWarning: 7.1% of the points cannot be placed; you may want to decrease the size of the markers or use stripplot.\n",
+ " warnings.warn(msg, UserWarning)\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Not Imputed SpearmanrResult(correlation=-0.028018282506059713, pvalue=0.8942369051146191)\n",
+ "Imputed SpearmanrResult(correlation=-0.24638574744096847, pvalue=0.03833253459364005)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmkAAAFNCAYAAABbpPhvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAACfvklEQVR4nOydd3hTZdvAfyez6d67lNFS9kY2KAgoQ8SJ+vm+6Kso4sa99x6v8oqICu49QERkCgjKBtl7QxfdTdvM8/2RNm1o0zZtkybt87suLpIznufOac6d+9zPPSRZlmUEAoFAIBAIBF6ForkFEAgEAoFAIBBURxhpAoFAIBAIBF6IMNIEAoFAIBAIvBBhpAkEAoFAIBB4IcJIEwgEAoFAIPBChJEmEAgEAoFA4IUII00AQFpaGidOnGhuMVoEjzzyCG+//XZziyEQCJywceNGhg8f3txitBhGjhzJX3/91dxitEiEkdaENNcX9aeffuK6667z+LwNZdGiRVx00UX06tWLO+64g/z8/BqPy8nJ4f7772fo0KH07duXKVOm8M8//9j3b9y4kU6dOtG7d2/7v59//tlDn6J5qO+1Azh9+jQ33ngjPXv25JJLLnH4bm7YsIGJEyfSr18/BgwYwIwZM8jMzLTvz8/P595772XAgAEMGDCAmTNnUlxcDEBubi5TpkxhwIAB9OvXj2uvvZatW7e67TMLGsbIkSMZPHgwJSUl9m3ff/89N954Y73Ov/HGG/n++++d7j99+jRpaWmYzeZGy+oqvvQgJMsyr7/+uv1eeu2116itPOnff//NJZdcQs+ePbnxxhs5c+aMfd8nn3zCqFGj6NOnD0OHDuWll15qluvvKVy9dr/99huXXnopvXv3Zty4caxYscK+r7CwkIcffphBgwYxaNAgZs2aVeMYmzZtIi0tzeH7tXr1aq677jr69evHkCFDeOKJJ+z60N0II03gErIsY7VaG3z+oUOHeOqpp3jttddYv349Op2OZ599tsZjS0pK6N69Oz/99BObNm1i8uTJTJs2Db1ebz8mOjqa7du32/9Nnjy5wbJ5O65cO4CZM2fSpUsXNm7cyH333cfdd99Nbm4uACkpKXz00Uds2bKFP//8k+TkZJ5++mn7uf/9738pLCxk5cqVrFixgpycHLtSCwgI4KWXXuLvv/9m8+bN3HrrrUyfPr1F/1j4KhaLhc8++6y5xfBpGvu9/vbbb1mxYgULFy7kl19+YfXq1XzzzTc1Hpubm8udd97JPffcw6ZNm+jWrRv33Xefff/IkSP5+eef2bZtG7/++iv79+/n888/b5R83owr1y4zM5OHHnqIRx55hG3btvHQQw8xc+ZMcnJyAHj55ZcpLS1l1apVfP/99yxcuJAff/zRYQyTycSLL75Iz549HbYXFRUxffp0/vzzT3777TcyMjJ47bXX3POhz0MYaW7ip59+YsqUKbz00kv069ePUaNGsW3bNn766SdGjBjBoEGDHLw+jzzyCE899RQ33XQTvXv35v/+7//sT1A1PbFWPOUeOXKEp59+mh07dtC7d2/69esHgNFo5NVXX+XCCy9k8ODBPPXUU5SVldnP/+ijjxg6dChDhw7lhx9+qPWz3Hjjjbz99ttMmTKFnj17curUqQZfl0WLFjFy5Ej69+9PQEAA99xzD8uXL6/xqSQpKYmbbrqJ6OholEol1157LSaTiWPHjtVrrrlz53Lbbbc53T9y5Eg++OADxo0bR//+/Xn00UcxGAwAXHrppfzxxx/2Y81mMwMGDGDPnj0A3H333QwZMoS+fftyww03cOjQoRrnqMnLWXVpua6/U1VcuXbHjh1jz5493HXXXfj5+TF27Fg6duzI0qVLAYiMjCQmJsZ+vFKp5OTJk/b3p0+fZtSoUQQGBhIUFMTo0aM5fPgwAFqtlvbt26NQKJBlGYVCQUFBAQUFBU6vtaB5+M9//sO8efMoLCyscf+2bdu48sor6du3L1deeSXbtm0D4O2332bLli0899xz9O7dm+eee67OuR555BGeeeYZbrnlFnr37s2UKVPIzs7mxRdfpH///lxyySXs3bvXfnxt919t9823337LokWL+Pjjj+nduze33347YPuRvuuuuxg4cCAjR450ME7Lysp45JFH6N+/P+PGjWPXrl21fpa0tDS+/PJLxowZw5gxY+r87LWxYMECbr75ZmJjY4mJieGmm25y6vFfvnw5qampXHrppWi1Wu666y7279/PkSNHAGjTpg3BwcEA9nuvapjKbbfdxty5c2scu+J35Ntvv7Xr/nnz5gG2a9ejRw8Hz/zevXsZMGAAJpOJkydP8q9//cvBs+7sO3W+l/P8peXa/k6NuXYZGRkEBQUxYsQIJEniwgsvRKfT2fXaqlWruOWWW9DpdCQmJnLVVVdVM9Lmz5/PkCFDaN++vcP2iRMnMnz4cHQ6HSEhIVxzzTVs377dqdxNiTDS3MjOnTtJS0tj48aNTJgwgfvvv59du3axfPlyXn/9dZ577jkHr9CiRYu444477Mt4DzzwQJ1zdOjQgWeffZZevXqxfft2tmzZAsDrr7/OsWPHWLBgAcuWLSMrK4v33nsPgLVr1zJv3jzmzZvHsmXL+Pvvv+ucZ+HChTz//PNs27aN+Ph4nnnmGfr161fjv4kTJzod59ChQ6Slpdnft2nTBrVazfHjx+uUYd++fZhMJpKTk+3bcnNzGTx4MCNHjuSll15yWNqZNm0aH3zwQa1jVij75cuXc+zYMWbPng3A+PHj+fXXX+3HrVu3jrCwMLp27QrA8OHDWbp0KX///TddunSp19+qJmr7O52PK9fu8OHDJCUlERgYaN/WqVMnu6EFcPbsWfr160ePHj2YN28et9xyi33fDTfcwOrVq+3G19KlSxk2bJjDHBMnTqRHjx5Mnz6dq6++moiIiAZdA4H76NatGxdccAEff/xxtX35+fncdttt3HjjjWzcuJGbbrqJ2267jby8PO677z769evHU089xfbt23nqqafqNd+SJUu499572bBhAxqNhmuvvZauXbuyYcMGxo4dy8svv+xwvLP7rzauvfZaJk6cyH/+8x+2b9/OnDlzsFqtTJ8+nbS0NNauXcunn37Kp59+yp9//gnA//73P06ePMny5cv5+OOPWbBgQZ3zrFixgu+++47ffvsNwB4eUNO/Z555xuk4hw4dolOnTvb3nTp1cvpQd/497u/vT5s2bRzu20WLFtGnTx8GDhzI/v37mTJlin3fBx98wLRp02r9XBs3bmTZsmV8/PHHzJ07l7/++ouYmBh69erFsmXLHOYZO3YsarUaWZa57bbb+PPPP1myZAkZGRlOlwtro66/U03Xo77Xrlu3bnTo0IGVK1disVhYsWIFGo3G4XpWRZZlh7HOnDnDjz/+yIwZM+r8HJs3byYlJaXO45oCYaS5kcTERK688kqUSiXjxo0jPT2dGTNmoNFoGDp0KBqNxsF7ceGFF9K/f380Gg333XcfO3bsID093eV5ZVnm+++/57HHHiM0NJTAwEBuu+02Fi9eDNgU6RVXXEHHjh3x9/fnzjvvrHPMyZMnk5qaikqlQq1W88wzz7Bly5Ya/y1atMjpOCUlJQQFBTlsCwwMdDBWa6K4uJiHHnqIO++8035++/btWbBgAevWrePTTz9lz549vPLKK3V+lqrccMMNxMXFERoayvTp0+3XaOLEiaxatYrS0lLAprAmTJhgP++qq64iMDAQjUZjf9otKipyae66/k7n48q10+v11Y4NCgpyODY+Pp4tW7awYcMG7rnnHoenxy5dumAymexPzkqlkuuvv95hvEWLFrF161befPNN+vbt69JnF3iOu+++my+++MK+1F3B6tWrSU5O5vLLL0elUjFhwgTat2/v4EF2ldGjR9OtWze0Wi2jR49Gq9Vy+eWX23Xgvn37HI53dv+5yq5du+xLhRqNhqSkJK655hq7gbVkyRJuv/12QkNDiYuLq1dc3rRp0wgNDcXPzw+wfd+d6bzajLSSkhKHh6WgoCBKSkpqjK2qzz0+ceJEtm3bxtKlS5kyZYrLD0czZszA39+ftLQ0rrjiCvvD6MSJE+2vZVnmt99+sz9wJycnM2TIEDQaDeHh4dx0001s3rzZpXmh7r/T+bhy7ZRKJZMmTeKBBx6ge/fuzJw5k+eeew5/f38Ahg0bxty5cykuLubEiRP8+OOPdv0O8MILL3DPPfcQEBBQ62dYv349CxYs4O6773b58zcElUdmaaVUvXkqbvTIyEj7Nq1W63DzxcbG2l8HBAQQEhJCVlaWyzdhbm4upaWlXHHFFfZtVWPJsrKy6Natm31fQkJCnWPGxcW5JAPAli1buPXWWwGbQbB48WL8/f2rLc8VFxfXemOUlZVx++2307NnT4fly6ioKKKiogDb0uiDDz7IbbfdVq+lmQqqfq74+HiysrIAm1Lq0KEDf/zxBxdddBGrVq2yP31bLBbefvttfv/9d3Jzc1EobM86eXl51RRsbdT1dzofV65dQEBAvY8NDQ1l8uTJTJo0ibVr16JSqbjnnnvo1KkTs2fPRpZlXn31VR588EHeeecdh3O1Wi0TJkzg0ksvpXPnzg5PvQLvoGPHjlx44YXMnTuXDh062LdnZWURHx/vcGx8fLxDAomrnK/zquo7Pz8/B083OL//XOXMmTNkZWXZwz3Adp9WvM/Kyqo2V100ROfNmTPH7r2fOHGi3UioqueLi4vx9/dHkqRq59d0j+v1+hrv27Zt25Kamsqzzz7L//73v3rLWPVzJSQkcPDgQQDGjh3L888/T2ZmJidOnECSJPv1y8nJ4YUXXmDLli3o9XpkWbYvu7pCXX+n83Hl2v3111+88cYbfPbZZ3Tt2pXdu3dzxx138OGHH9K5c2eeeOIJnn/+ecaOHUtoaCjjx4+3PxSsWrUKvV7PuHHjapV/x44dzJw5k3fffZd27dq5/PkbgjDSvIiMjAz7a71eT0FBAdHR0Wi1WsBmrFQ8VWRnZ9uPPf8LGxYWhp+fH4sXL3aIO6ogOjrawUN39uzZOmU7f46nnnrKqceswiDr169ftXX71NRU9u/fb39/6tQpTCYTbdu2rXEso9HIjBkziImJqdP4kiSp1syfmjj/OkRHR9vfT5gwgV9//RWr1UpKSop9mXXRokWsXLmS+fPnk5iYSFFREf37969xbp1O5xBjVvXvVtff6XxcuXYpKSmcOnWK4uJi+3dm//79Dt7AqlgsFnJyciguLiY0NJQDBw7wzDPP2J9Cr7vuumqetKqYzWZOnToljDQv5e6772by5MncfPPN9m3R0dHV7v309PRqy9ruxNn9V9t9A9X1UVxcHImJiQ7LdVWJiooiPT2d1NTUavM64/w5xo8f71RXVhhkt99+uz1GroKK+7ZHjx6A7T6skON8UlNTHWKuSkpKOHnypNOlNbPZ7LAaUx/S09PtxnrVax4cHMyQIUNYsmQJR48eZfz48fZr8OabbyJJEr/88gthYWGsWLHCqT4+/2937tw5++u6/k7n48q127dvH/369aN79+4A9OjRgx49evDXX3/RuXNnQkNDefPNN+3Hv/XWW/Zx//77b3bv3s2QIUMAW6KAUqnk4MGDvP/++4AtRm/69Om89NJLDBo0qF7yNwViudOLWLNmDVu2bMFoNPLOO+/Qs2dP4uLiCA8PJyYmhoULF2KxWPjhhx8cgvcjIiLIzMzEaDQCoFAouPrqq3nppZfsmS2ZmZn2df9LLrmEn3/+mcOHD1NaWurSU1gFzz33nENWZdV/tS1ZTJw4kT/++IMtW7ZQUlLCO++8w+jRox1c2hWYTCbuvvtutFotr776qt1jVcHGjRs5e/YssiyTnp7OG2+8wahRo+z7Z82aVeeyxldffUVGRgb5+fn2IOYKxo0bx/r16/n6668djBu9Xo9GoyEsLIzS0lLeeustp+NXxFDs27cPg8HgEMdR19+pMdeuXbt2dO7cmffeew+DwcDy5cs5cOAAY8eOBWDZsmUcPXoUq9VKbm4uL7/8Ml26dCE0NBSwxXd8//33lJWVUVZWxrfffmuP7dixY4f9e1pWVsbcuXM5d+6cXeEJvI/k5GTGjRvnkAk4YsQIjh8/zqJFizCbzfz2228cPnyYCy+8ELB5/RuTJFQfnN1/td03YNN5p0+ftr/v0aMHgYGBzJ07l7KyMiwWCwcPHmTnzp2ALRFo7ty5FBQUkJGR0aCMyMWLFzvVebU9QE6aNIn58+eTmZlJZmYm8+fPd5qFPnr0aA4dOsTSpUsxGAy89957pKWl2Y2q77//3q4rDh8+zNy5cx0MhhtvvLHOWLHZs2dTWlrKoUOH+Omnnxx03sSJE1m4cCFLly51iC3W6/X4+/sTHBxMZmYmH330kdPxO3fuzJo1a8jPzyc7O5tPP/3Uvq+uv1Njrl337t3ZsmWLfUl97969bN261a63Tp48SV5eHhaLhTVr1vDtt98yffp0AO655x6WLl3KggULWLBgASNHjuTqq6+2x1AePHiQW265hSeffJKRI0fWen2bGmGkeRETJkzgvffes2cRvv766/Z9zz//PB9//DEDBgzg8OHD9O7d275v4MCBpKSkMHToUAYMGADAgw8+SHJyMtdccw19+vRh6tSp9qzIESNG8O9//5t///vfjB49moEDB3rsM1a45x944AEGDx6MXq93KP3w1FNP2YOUt2/fzh9//MH69evp37+/vRZaRXLE3r17ufbaa+nVqxdTpkyhY8eOPP744/ax0tPT6dOnT63yTJgwgZtvvpmLL76YpKQk+00LNk9DRUJGVUV2+eWXEx8fz7Bhwxg/fjy9evVyOn67du2YMWMGU6dOZcyYMdVit2r7OzXm2oHtSXH37t3079+fN954g3fffZfw8HDAZgzecsst9OnTh4kTJ6JQKByM9ZdeeokzZ84wYsQIhg8fzqlTp+zxfkajkeeee44BAwYwfPhw1q5dy9y5c+vlDRQ0HzNmzHBYbgwLC2POnDnMnz+fAQMG8NFHHzFnzhz7d+Rf//oXS5cupX///rzwwgtukcnZ/VfXfXPVVVdx+PBh+vXrxx133IFSqeT9999n//79jBo1ioEDBzrUsrrzzjuJj49n1KhR3HzzzUyaNMktn6cmpkyZwkUXXcTEiROZOHEiI0aMcAj2Hz9+PL/88gsA4eHhzJo1i7fffpv+/fuzc+dOh4fAbdu2MXHiRHr16sW0adMYPnw4999/v31/fXTeBRdcwOjRo5k6dSo333wzQ4cOte8bOXIkx48fJzIy0sErfuedd7J371769evHtGnTas14nTRpEp06dWLkyJHcfPPNDrqzrr9TY67dBRdcwF133cXdd99N7969ueuuu7jtttvsn2/37t1MnDiRPn368NZbb/HGG2/YvXKBgYH28JmoqCj8/PzQ6XT2h9b58+eTm5vL448/bv8dGj9+fK3XuamQZFfXhwRu4ZFHHiEmJsahJo6gcUyaNIlPPvmEsLCwGvePHDmSF154gcGDB3tYMoFAIO6/piUjI4N77rmHb7/9tsb9FWV19uzZg0olIp18BfGXErRYFi5c2NwiCAQCgUeIjY11aqAJfBex3CkQCAQCgUDghYjlToFAIBAIBAIvRHjSBAKBQCAQCLwQYaQJBAKBQCAQeCEtMnFgwIAB9aqiLxAIWgZnzpxh48aNzS1GkyD0l0DQ+nCmw1qkkZaQkMBPP/3U3GIIBAIPUbW1lq8j9JdA0PpwpsPEcqdAIBAIBAKBFyKMNIFAIBAIBAIvRBhpAoFAIBAIBF6IMNIEAoFAIBAIvBBhpAkEAoFAIBB4IcJIEwgEAoFAIPBChJEmEAgEAoFA4IUII00gEAgEAoHACxFGmkAgEAgEAoEXIow0gUAgEAgEAi+kRbaFEggEjSMnJ4e77r4LvV5PZGQks9+bjVarbW6xBAKBoFUhPGkCgaAaJ06c4PSp0+Sacjl08BA5OTnNLZJAIBC0OoSRJhAIqlFSUgKAnCADUFpa2pziCAQCQatEGGkCgaAaFUYauvPeCwQCgcBjCCNNIBBUw+5J08kO7wUCgUDgOYSRJhAIqlFcXGx74X/ee4FAIBB4DGGkCQSCauj1ept28KvyXiAQCAQeRRhpAoGgGnq9HoVGAWrbe+FJEwgEAs8jjDSBQFCN4uJim4GmBBTCSBMIBILmQBhpAoGgGkVFRVjVVpBAoVFQVFTU3CIJBAJBq0MYaQKBoBoFhQXIaltmJxooLCxsXoEEAoGgFSKMNIFAUI2CwgJkjc1Is6qswpMmEAgEzYAw0gQCQTWKCotAY3sta2QKCguaVyCBQCBohQgjTSAQOGCxWNAX6x2MtPyC/GaVSSAQCFojwkgTCAQOFBcXI8syaMs3aMs9awKBQCDwKMJIEwgEDhQUlC9tlnvS0EJZaRkGg6HZZBIIBILWiDDSBAKBAxVGmqytzO4EkeEpEAgEnkYYaQKBwIH8/Hzbi/Llzgpjzb5dIBAIBB5BGGkCgcCBvLw824vyvp0V/9u3CwQCgcAjNKuRtnbtWsaOHcvo0aOZO3dutf1Hjhzh2muvpVu3bnz88cfNIKFA0PqwG2NVEgdAeNIEAoHA06iaa2KLxcJzzz3H/PnziYmJ4aqrrmLkyJGkpKTYjwkNDeXxxx9n5cqVzSWmQNDqyMvLQ6FRYFFYbBvKjbTc3NzmE0ogEAhaIc3mSdu5cyfJyckkJSWh0WgYP358NWMsIiKCHj16oFI1my0pELQ6cnNzK5c6AdQgKSWx3CkQCAQeptmMtMzMTGJjY+3vY2JiyMzMbC5xBAJBOTm5OVg0lsoNEkg6SXjSBAKBwMM0m5Emy3K1bZIkNYMkAoGgKtnnspF1jvenVWMlJyenmSQSCASC1kmzGWmxsbFkZGTY32dmZhIdHd1c4ggEgnLycvMclzsB2U8m+1x28wgkEAgErZRmM9K6d+/O8ePHOXXqFEajkcWLFzNy5MjmEkcgEAAlJSUYygzVjTSdLDxpAoFA4GGaLSJfpVLx1FNPccstt2CxWLjyyitJTU3l66+/BuC6664jOzubK6+8kuLiYhQKBZ9++im//fYbgYGBzSW2QNCisRtiuvN2+EFxUTFGoxGNRlPtPIFAIBA0Pc2aNjlixAhGjBjhsO26666zv46KimLt2rWeFksgaLVkZ9uWNM+PSasw2nJycoiLi/OwVAKBQNA6ER0HBAKBnXPnztlenOdJqzDa7PsFAoFA4HaEkSYQCOxUeNLOj0mrMNrs+wUCgUDgdoSRJhAI7Jw7dw5JI4H6vB26yv0CgUAg8AzCSBMIBHays7ORdDXUK1SDpJLIysryvFACgUDQShFGmkAgsJOZmYnFz1J9R3nXAbHcKRAIBJ5DGGkCgcBOZnZm9czOciw6C5lZonWbQCAQeAphpAkEAgDMZjMFeQXgX/N+WSeTkZlR806BQCAQNDnCSBMIBIAtHk2WZadGGv6Ql5OH2Wz2qFwCgUDQWmnWYrYCQWORZRmj0VhtuyRJojK+i1QkBcj+NS934m+73jk5OcTExHhQMoFAIGidCCNN4NO88cYbLFq0qMZ9Dz30EBMmTPCwRL5LZmZ5vNn5LaHKqYhVy8rKEkaaQCAQeABhpAl8FoPBwIrly+gUaqJHpMlh3+qzOpYs+U0YaS5gL6/hbLkz4LzjBAKBQOBWhJEm8Fm2bNlCaZmBiZ3K6BnpGCdltkr8vHsPOTk5RERENJOEvkVmZiYKrQKLqoYSHGA33jIyRPKAQCAQeAKROCDwWZYtW0aQBrqGVw9kHxBjRJZlVq5c2QyS+SaZmZnO49EAVKDQKoQnTSAQCDyEMNIEPklRURHr1v3JoJgyVDV8ixMCrLQPsbLkt8W2jEVBnaRnpGPVWWs9RtbJwpMmEAgEHkIsd3oAg8HAfffP5MiRw3Uee83VV/Of//zHA1L5NkuWLMFkMjMivnpmZwUj4kqZv/8Yu3fvpnv37h6UzveQZdnmSUuo3aC16qyiVppAIBB4COFJ8wBffvklu3ftpDAgicLgdk7/FatC+fSzz9i/f39zi+zVWK1WfvrxBzqGWkgOchI/BQyJNeKvlvjxxx89KJ1vUlxcTFlpmfOkgXLkAOFJEwgEAk8hPGlu5tSpU3zx5ZeYIzpgbD+s9oPNRgJ3/cAbb7zJnDnvo1KJP09NrF27lrPpGdzVvbTW4/xUNm/a0tWrOXv2LPHx8R6S0Peos0ZaBf5QWlJKcXExgYGBHpBMIBAIWi/Ck+ZGzGYzzz73HBYUGNtcUPcJKg2lbQZy8OABPv/8c/cL6IPIsswXn39GbIBM/2hTncdf2qYMCStff/21B6TzXezesYA6Diz3tNlrqgkEAoHAbQgjzY3MmzePgwcOUJo8BFlT16+fDUtEe8wRHfj000/ZuXOnmyX0PdatW8fBQ4eZ2KYEhVT38eF+MsPjDPy2+FexTFcLdqOrruXOck+bMNIEAoHA/QgjzU2sXr2aL774AlNUGpaI9i6da2g7BKs2iMefeEKUO6iCxWLhw7kfEBcgMzTOecLA+VzerhSsFubNm+dG6XybzMxMJKUE2joOLDfixPdSIBAI3I8w0tzAgQMHeOHFF7EGxWBsO9j1AVQaSlIuprBYz6OPPkZJSUnTC+mDLFmyhOMnTnJlez1KF765EX4yoxPLWLZ0KYcP151h2xrJzMxE8pegLu+kH6AQBW0FAoHAEwgjrYk5deoUM2c+gFHSUJYyChTKBo0j+4dR2v4iDh0+xONPPIHJVHf8VUtGr9fz4QdzSA21MKAesWjnM6ldGQFqmDXrXVE3rQYyMjOw+DnPlLUjgSJAFLQVCAQCTyCMtCYkIyOD++6/n6IyIyUdL0HW1BHgUweWsDYY2g1j65YtPP/885jN1SvrtxY++eQT8goK+b9UPVI9YtHOJ0Atc0U7Pdu372D16tVNLp+vk5GRgRxQP+PV4mcRMWkCgUDgAYSR1kSkp6dz5113kZ2TT0nqGGRdSJOMa47qiKHNAFavXs0zzzzbKg21I0eO8P3333NRgoEOIfXw9jhhZIKBtsFWZr37jlhCroLZbCYvNw909Tte9pc5m37WvUIJBAKBQBhpTcGpU6eYceddZOfmU5J2CdbAqCYd3xzXHUObAaxdu4Ynn3wSg8HQpON7MxaLhTdef50AlZVrOtReF60ulAqYmlZMTk4uH374YRNJ6PtkZ2fbloDrl4AM/pCXm9cqHxgEAoHAkwgjrZHs37+f26dPJ6egiJK0S5vcQKvAHNcdQ/Ig1q9fz8yZMykuLnbLPN7GggUL2LN3Lzek6gnSND6WLCXEwsWJZfz004/s3bu3CST0feyFbHX1vL46W9eHnJwcN0olEAgEAmGkNYKNGzdy1913U2SU0XeegDUg0q3zmWO7UtbhInbu3s2MO+9s8cHbGRkZzP1gDt0jzAyJrX/Jjbq4OqWUMD945eWXMBqbblxfxf49qmcIZUWttJb+/RMIBILmRhhpDWTBggU8/PDDlCkDKOk8AdmvaWLQ6sIS2YHSjmM4fvI0t067jYMHD3pkXk8jyzKvvfYqVrORmzs1LFnAGf4quDmtiOMnTorODrhupIlaaQKBQOAZhJHmIhaLhf/973+89dZbmIITKOk8vt7dBJoKa0gi+s4TyC8xMGPGnfz5558end8TLF68mC1btnJdSjFROmuTj98r0szQOANffPF5izV060tWVhYKjaL+nXx1lecJBAKBwH0II80FiouLeejhh/nuu+8wxXShrONoUGqaRRbZPxx958soU9s6E3zxxRctpv5XZmYm/5s1i85hZkYmuG858v86lhKksvLySy+16jp02dnZdTdWr4oaJLVEdna2+4QSCAQCgTDS6supU6e47fbb2bx5C4Z2Q22dBKTmvXyyxp+SzuMxh7dj7ty5vPDCCz6f+SnLMq+//joWYxm3dtbXqz9nQwlUy9zUqZgjR4/yxRdfuG8iLycjMwOrnwveSgkknSQ8aQKBQOBmhJFWDzZv3syt06ZxOj2L0k6XYI7u1NwiVaJQYehwEcbEvixfvpwZd97p0x6OpUuXsmnTJq7poCfav+mXOc+nb5SJwbEGPv/sM44ePer2+byRrKys+md2lmPxs5CVLYw0gUAgcCfCSKsFWZb58ccfefDBBymRtei7TMIaHN/cYlVHkjAl9KYsdTSHjhzllltuZd++fc0tlcvk5uYy69136BhqYXSS5zyCN3YsRae08MrLL2GxNLxYri9iMpkoLCisdyHbCmSdLIw0gUAgcDPCSHOC2WzmzTff5J133sEYkoi+ywRkv6DmFqtWLOHJ6DtPJK/UxJ133sXKlSubWySX+N///kdpiZ5bOhe7dZnzfII0Mjd2LGb/gYMsWLDAcxN7AfZaZy4aaeggPze/1Rm1AoFA4EmEkVYDxcXFPPDAA/zyyy8Y43piSG2+BAFXkf3D0Xe5DINfOM8++yyffPKJTyQUbNmyhRUrVjAxuZT4APcvc57PoBgT3SPMfDj3A59eLnaVc+fOAS4Usq2gvKBtfn5+0wslEAgEAkAYadXIysrijhkz2LZ9B4b2wzG16U+TFunyBGodpZ0uxRSZwrx583jttde8uoWP2Wzmv2+/RYy/zMS2Zc0igyTB1DQ9JkMZc+bMaRYZmoMKI60hy50O5wsEAoGgyRFGWhVOnDjBbbffzolTZyhNG4s5qmNzi9RwFEqM7UdgjO/F4sWLeeyxx7w283PBggWcPHWaG1L1aJTNJ0eMv5VL25SyfPly9uzZ03yCeJDGLHc6nC8QCASCJkcYaeUcOXKEGXfeRW6hnpJO47GGJDS3SI1HkjAl9cPQdggbNmzk4YcfprS0cU3Kmxq9Xs8n8+fRLdxM78jmr1V2WdsyQv3g/dmzfWKZuLHk5OTYtICrq/l+tv+EJ00gEAjchzDSgGPHjnHX3fdQVGZC32k81oCI5hapSTHHdMbQfjjbtm/nwYce8iqP2g8//EBhUTHXpJR4xaqynwomJZewc9cutmzZ0tziuJ2cnBwUOgW4eu2FkSYQCARup9ZGMBs2bGDZsmWkp6ejUqlITk7m6quvJjk52VPyuZ3MzEzunzkTvdGCvtN4ZL/g5hbJLZijUpElBTv/Wc1zzz3Hc889h1LZjGuLQGlpKd99+w19Ik20D/aeLMELEwz8etKfTz/5hP79+ze3OG4lJycHq7YBiRoKUPgpyMvLa3qhWgitQX8KBAL34tST9sYbb7Bw4UJ69uyJWq0mMTGRNm3acM8997BkyRJPyug2SktLeeDBB8nNL6QkdUyLNdAqsER2wJA8gD///JPZs2c3tzgsXbqUomI9E9p61xKsWgFjE23etAMHDjS3OG7l3LlzyNqGLevKfrKISXNCa9CfAoHA/Tg10tasWcPLL7/MpEmTeOutt9i+fTvXXHMNn376Ke+9954nZXQbs2bN4sTxE5R2GNniljidYY7thimmC99//z1//fVXs8khyzI//fgD7YOtpIZ4jxetggsTDGhVUouvm5aTl4Ps1zAjzaqxkpMrjLSaaA36UyAQuB+nRpokSfYaSFlZWVittiWRkJCQFhFQvX79en799VeMcd2xhCY2tzgexdhmAHJABC++9FKz1bk6evQox0+cZHh8qVfEop2Pvwr6R5Wx+o9VGI3ua/LenFgsFgrzC+3xZa4i+8mcyxExaTXR0vWnQCDwDE6NtNtvv53Jkydz8803c/3113PHHXcAttY9nTp5Ue/KBmCxWHhv9mzwD8OU2K+5xfE8CiWl7UdQVFTE119/3Swi/PHHHygkuCC6+TM6nTEoxoi+pJTNmzc3tyhuobCw0GYwNNBIww/y8/KF0VEDLVl/CgQCz+E0cWDcuHEMHjyYU6dOkZycTHCwLV4rPDycN998s0kmX7t2LS+++CJWq5Wrr76aadOmOeyXZZkXX3yRNWvW4OfnxyuvvELXrl0bPe/KlSs5feoUZamjQNE6E1xl/3BMER344YcfmTJlCmFhYR6df+uWLXQIsRCs8d4f+C7hZtRKiW3btjFkyJDmFqfJqQj6b2hMGlowGU2Ulpbi7+/fhJL5Pp7QnwKBoOVTa3ZnaGgooaGh1bYfOXKEDh06NGpii8XCc889x/z584mJieGqq65i5MiRpKSk2I9Zu3Ytx48fZ9myZfzzzz8888wzfP/99w2ec8SIEaxduxYAtVpDcJ5ESEpvQlP6AJC7fyNFx3eji04issdFKFRq9OlHyNm9DpUukKjeo1AHhGIszCF7x0qsJgMR3YbjH5OM1WQge8cqynLPEtLBN8bM2fMXWM1ERETw888/M2nSJJev6VdffcXKlSuJioqioKCA0NBQZsyYQWJiIunp6fzvf/8jLy+PqVOncsEFF2AwGJg1axYLFi5kVKo/YPtx/31fIasOFpEapeXG/uH4qRXsOlvKd9vzCNQo+NcFEcSFqMksMvHpxlwKyixc3SuUXon+GMxWvtycy77MMkakBDGhW0iTjXnmaCY///QTd911FwA///wzixcvpkuXLkyfPh2dTse2bduYN28eSqUSlUqFXq/n+uuvZ/jw4Q3+rnoCe2amtvo+/Vk9WX9nIakkYofG4hdRg7vNr3IcYaRVx536UyAQtBLkBjBixIiGnObAtm3b5Jtvvtn+fs6cOfKcOXMcjnnyySflRYsW2d+PGTNGzszMrHPsyZMnV9s2bdo0GajxX5vRU+WE4dc6bAvrNFDueP2TMgqlfZsmJEruPn2WrA4ItW+TlGq507+fl4Pb9WzEmO8225hV/7nKiy++WOM48fHxcmZmppycnGzfplKp5A0bNsjXXHONw7FPjI2VXxgf57Dt4rQg+bfbO8gapWTfFhOkkrc+mCYnhqorx1QgL7i1vTyha7Dbx3zjjTfk2bNnO2ybOHGivH37dlmj0VS7BpIkyUuXLnX5mnqSFStWyMOGDZMHvzBYHvxu5b/ej/eWFWpF5TUJVMn9X+7vcMzgdwfLgx8dLA8bNkzevXt3c3+UGu95b6Uu/elLn0UgEDQNzu57p560F154wZlRR2FhobPT6k1mZiaxsbH29zExMezcubPWY2JjY8nMzCQ6Otrl+T788EOn+87tXI3F6FgGIu/ARlAqwVqZeWgsyCZz82+Y9Pn2bbLFRPb2lRQe+6cRYy5p1JiSUtXgMasydepUPvnkE6f7z2fu3Lk1bj979iyvv/46J06csG8zm8188MEH1TyhX2/Nw0/tmDmw4kARUYEqjJbKZbjMIjMfrD/H6fzKGDazFb7cksvivY7fR2djRtc05l851cb8anP1MT/44AMCAwMdti1atIi4uLgaEwtkWebjjz9mzJgx1fZ5C/akkfM8adlbsrGaKmunmYvN5O7MJWZQjOOB5eeJWmnVcbf+FAgErQOnRtqPP/7II488gkZTvV/Mr7/+2uiJ5RqCjaXz0vzqc0x9USgUWCw1l3pQ+gVUa6KuUGlR+QVWO1YVUL2Wmso/CEmpQrZUNjH37JgBDR6zKt26datxuzPCwsIcDLGqxMTEVNsWERGBv78/er3evi3YT4Gf2jEuUKuSCPevXmg3MrD61zVMp0SnVlBirDQqnI0ZVtOYAdW3hdYwpr+/f7WlK61WS2RkZLXz7bJ5OM7PVfLz822dBs67xVW66tdZ5V+Dqig30goKCppcNl/H3fpTIBC0DpxGzXfv3p3U1FQmT55c7V9AQHWjwFViY2PJyMiwv6/JQ3b+MRkZGQ3yooGtcGpNKFQa4gZNIn7IlUhKtX173ODLiek7FnVQuH1bSIfexPS9hKA2XezbtKHRRPcZQ8wFE5ptzOgGjnk+DzzwgNN9NfH888+jVqurbb/44ou57777mDChcq6kpCTuvfdenn76afs2jVJi5sgY7rsw2sHzNWNYFDcPjCQprHLsoe0DuGVgBKM6Btm3xYeo+c+gSO4ZEVX5OVVNMOZgxzElSeL222/nmWeeQaer7ET+2GOPcc8999CuXbtq1yAqKoqZM2c6uXLeQX5+Pgpt9ZZQ0QOj0cVUfs6g9kGEdavB4NRWjiNwxN36UyAQtA4kuSZ3FTbFq9VqHX6UmhKz2czYsWP55JNP7IkDb775JqmpqfZjVq9ezRdffMGHH37IP//8wwsvvMAPP/xQ59hXXHEFP/30U7XtZ86coVOnTuj1ejr0Hok5Po2gNp1R+9u8TqbifIpO70cX1QZdRDwAVpOBwuO7UPoFEpiYhiRJyLKVopP7sJoMBLfthkJle1ouyT5JWU66z4xZfPYwOduXExUVRWZmput/xPJr+ueff9K5c2eOHz9OUFAQF110Ufn8MmvXriU3N5exY8fag8tff/11Pv74Yz68FJLLjaZzxWb+OlZMx2g/OsXYItLLTFbWHikmQKNgcLsA+5gbT5SQX2phRIdAdBrbc8bBrDL2Z5YxoG0AMUFNN+ayIybW5sXywQcf0LNnT7Kysli1ahVdu3ale/futjHLyli6dClBQUFotVrS09MZO3YsQUGVxp838tRTT7F2+1pMY6qXQbGareTvy0ehVhDSMQRJUYMHWwbVzyquueoaZsyY4QGJnePsnm8uGqM/ve2zCAQC9+Psvne63FlSUlJjZlJToVKpeOqpp7jllluwWCxceeWVpKam2ut2XXfddYwYMYI1a9YwevRodDodL730UqPmTEhIoKioiAceeIDN/+ylOK0/SJXORHVgKOGdBjqco1BrCU11rKUmSQqCk6uXAvGPaoN/VBuHbd48ZmRiezoHlHL//fdXO6a+JCQkMGXKFAB69ux53vwSI0aMqHZOWloa0dHRBOryscWm25YyL+se6nCcn1rBmE6Oy7aSJDGwbXVPRMdoPzpGO2YgNsWY+XIQG3Zp7PFo0dHR9s9rH9PPr0GZsc1Nfn4+FnXNIQAKlYLw7uE17rMjgeQniRirGnC3/hQIBK0Dp0bajBkz+PnnnwG46667mDVrVpNPPmLEiGo/4tddd539tSRJDstjTcXEiRPZtGkTyrxTWMJbb7NjVdY+NFotF198sUfnrYjVyjcoiPDzvpZQVck32oz4kJCQZpak6cnNy60Wj+YqskYWMWk14An92ZwsW7aM9evXExgYyN13341WW0MdF4FA0GicxqRVXQU9deqUR4TxFEOGDCE+PgG/05scsiJbEwr9OdTnDjFxwoRqWYvuJikpCYD0kupB+95Gul6Bv05HRETL6+1aUFjQ8EK25VjVVvIL8ptGoBZES9afAJ9/8QV/rF7DokWL2LdvX3OLIxC0WGrt3VnT65aASqXi/vvvg9IC1Gd3NLc4nsdqxe/4ekJCQrj55ps9Pn1CQgJqlZKTxd5vpJ0sVtG2bdsWdw/IskxxYXHjPWlambx8UYLjfFqy/gTIycnBEhhlfy0QCNyD0+XO/fv306dPH2RZxmAw0KePrdq9LMtIkq1Vji9zwQUXMHr0aJavWIElKAZrSOtpsq45uRGpOJv7n322WYLb1Wo1nTp14uCpnUBpncc3FyYrHC1UccXYHs0tSpNTWlpqK0nT2FUqDRRmipi082nJ+tNgMFBcVIQlri3Kokyys7ObWySfZ9euXcyfPx+LxUJSUhIzZ85skca9wHWcGmmtwYX9wAMPcPDQIU4eWY2+y0Rkv5YXd3Q+quyDqDP3cPXVV3PRRRc1mxw9e/Xm6z17KDFDTSW4vIFD+SpMVujRo+UZafY4skZ60tBAib4Ei8WCUun9nlFP0ZL1Z1ZWFgCyLhxJpWlwZrigkuXLl7Nj2xYi/Sxs376dm2++mfDwOhJ3BK0Cp8udf//9t/31+TEVy5Ytc59EHkSn0/HSiy8SqNPgf+B3JKO+7pN8GGXeCbTH/qR3795Mnz69WWUZNGgQFhl2nqteZ81b2JatRq1W0bdv3+YWpcmpyMiUG9vgXlu+dFpc3ARStRxasv5MT08HwOoXhKwN4uzZs80ske9z8uQJkoMs/CutBMBpkXBB68Opkfbaa6/ZX999990O+95//333SeRhkpKSeOvNN/GTzPgf+B1MJc0tkltQFJxBd3gVaWlpvPzyy6hUzeu+6tKlC2EhwWzObqwrxz1YZdhyzo++ffu2yObhdk9aEyx3AqIMx3m0ZP1ZYXTK2mDMmkBOtsDECE8iyzJHDh8mMcBMUqAtke3o0aPNLJXAW6hXduf59W6d1L/1WdLS0njt1VfRWEoI2PcbkqFledSUeSfxP7iMtsnJvPH6615hdCiVSi4cOYpt57SU1Nylqlk5VKDkXCmMGuXZ8iSeoqioyPaiCUpwgGgNdT4tWX+eOnUKSaVBVuuw6kJJT0/HbPbCm9hHyMrKoqCwiORAC6EamRCtxIEDB5pbLIGX0KDszpYY0NirVy/efust/DDgv38xUlnL8Awoc47id2gFKSkpzJr1rlfV+xozZgwmi8ymTO/zpq1L1+Kn1TBs2LDmFsUtNGVMGlQx+gRAy9afR48exeIXCpKEVReK1WLh9OnTzS2Wz1IRv9g+xIwkQfsgA3v37G5mqQTegtM1r1OnTnH77bdXew202Buye/fuvPPf/zLzgQeR9v1KSccxWAOcN9D2dlQZe9Ce2EC3bt147bVXPV4PrS66dOlCcpskVp89zoUJxuYWx06ZGf7O9OPCi0d6hdfRHTSVJ00sd9ZMS9Wfsixz6PARLDpbOzpZZwtuP3z4MG3btm1GyXyXf/75B40S2gbZljpTQ81sP3ya/Px80bVC4NxImz17tv31+bW0mqO2lqfo3Lkzc96fzb333Q/7F1OSMsr3ynPIMurTW9Cc/YchQ4bwzDPPeGVFcEmSmHjZJP73v/9xskhJmyDvKCz8d6aGMrPMZZdd1tyiuI2CggIktVSLL72eaCvHE1TSUvVnRkYG+uIirJG2h1erLgwUSg4ePOjxziUthW1bt9AxxISq/F7sHGpbOt66dSujRo1qRskE3oBTI+2CCy7wpBxeRZs2bZj7wRzunzmT4weWYWg3DHNUat0negNWC5pj61CfO8SECRO4//77mz1JoDbGjh3L3A8+YOUZDTd1av6aabIMK07raN+uLV27Vu972lIoLCxE0jbBslt5cq5Y7nSkperPiqU5+wqDQoHVP5y9e/c2o1S+S1ZWFseOn+C6VJN9W/tgCwFqiU2bNgkjTeD8OXrFihV8+eWX9vdXX301o0aNYtSoUfz+++8eEa45iYyMZPZ779G7V0+0R9egPrPd9gvuzZiN+B1chvrcIf7zn//w4IMPerWBBraemCNHjWJdhs4rEgiOFCo5UaRg8hVX+nzsUG0UFhYiq5vg+yyBQqsQnrTzaKn6c8+ePUgKFVb/yjZplsBo9u3fj8lkquVMQU2sW7cOgF6RlddOqYAe4Qb+Wr9OJGQInBtpH330ESNHjrS/NxqN/PDDD3z++ed8/fXXHhGuuQkMDOSNN95g9OjRaE5vRXP8L5CtzS1WjUjGEvz3L0ZdnMGjjz7Kv//9b58xMiZPnozBLLM+vfmXZFec0uKv82P06NHNLYpbyS/Ix6ppou+yRnjSzqel6s9t27djDowCReVPhyUoFpPRKDISG8CaNauJC5BJCHC8F/tFGykoLGLnzp3NJJnAW3BqpJlMJuLi4uzv+/btS1hYGPHx8ZSWNv+ylKdQq9U8/vjjXH/99aiz9qE9tBKs3vV0I5UW4L9vEX5mPa++8gqXXnppc4vkEp07dyatYyorzuia1VlZaJTYkKXlkkvHtdiEgQoKCgoaX8i2HKvaKjxp59ES9WdhYSFHjxzBEhTnsL3ivS+3umoOsrOz2bHjHwbFlFXb1yvShJ9KYsWKFc0gmcCbcGqknZ+t9dRTT9lf5+bmuk8iL0ShUHD77bdz9913o8o7ge7AMrB4RzaiQn+OgP2/EqxRMGvWuwwYMKC5RWoQl0++gjPFEgfym295du1ZDWYrTJo0qdlk8BSFhYWNz+wsR9bI5BfkN81gLYSWqD+3bNmCLMtYQhIcd6j9kAMi2bRpU/MI5qMsXboUWZYZHFv9t0SrhP5RZaxaudJnjXpB0+DUSOvRowffffddte3ffPNNi+xlWB+uuuoqnnjiCVTFGfjvXwLm6k9AnkRRlIn//t+ICA7k/fdn06lTp2aVpzGMHDkSf52OVWeap2aaLMMf6Tq6d+9Gu3btmkUGT2GxWCjRlzS+20A5slYWnrTzaIn68++//0ZSa7EGRlXbZwpJYPfu3WLZu55YLBYW/bKQTmFmYv1rDjsYEW+kpLSUVatWeVg6gTfh1G3x2GOPMWPGDBYtWmTPctuzZw9Go5H33nvPYwJ6G2PGjCEgIIAnnnwS//2/U9LpElD5eVwORVEm/gd/Jy4mmnf++19iYmI8LkNTotPpGDN2LIsXLURvKiWgKYLaXeBAvopMvcR/JrbcshsVFBUV2areN5U9rIHCTFEnrSotTX+azWbW//U3puBEkKo/21tCk7Ge/YcNGza0+HjOpmDjxo2kZ2RyZXfnD/ppoWYSg2R++vEHxo0b5zMxxoKmxaknLSIigm+++YY77riDhIQEEhISuOOOO/j222+JjPTdAq9NwZAhQ3j5pZdQGfLx3/87mD279KkoyrIbaP+bNcvnDbQKxo0bh8kiszHT803X/0zXoPPTMmLECI/P7WmarG9nBVowlBkwGAxNNKDv09L05z///ENxUSHm8LY17rcGRiFpA1izZo1nBfNRvv32G8L8oF+U84xYSYIxCSUcOnyEHTt2eE44gVfh1JOWn58P2IK6O3fuXG17a6+EPHDgQF568UUefewxdIeWU5o2FhTuj6eSSvPwP7SMmKgo/jdrlk8qfGekpaXRtk0S6zOOMTLRc4av0QKbsm0dBnQ6ncfmbS4q4qWaKnGgateBqKjqS2GtkZamP1etWoWkVGMJSar5AEnCGJrM339vQK/XExAQ4FkBfYh9+/axffsOrkstsRewdcbQOCM/HAvgyy+/pHfv3p4RUOBVOLUqrrjiCiRJQpZlsrOziY6OBmxtQSRJYuXKlR4T0lsZNGgQjz/2GM8//zzaI6sxpIyyPf64CcmoJ+DAUoIDdPz37bdalIEGtg4EIy8ezfx588gzSIRpPbPkuStXTalJbjWFIysMhaaMSQObh04YaTZakv40mUys+uMPTKFtQOn8QdQc0QFT5l7Wrl3rcxnmnuSzzz4lQA0XJdTtedYoYWxiKd9v2sT+/ft9Ou5Y0DCc3nFVgxUvv/xyFixY4Al5fI7Ro0eTk5PD7NmzsZ7dgSnBTU87Vgu6w6vQYObNN/5LfHy8e+ZpZi688ELmzZvH1mw1F3vIm7Y5S01QYAB9+vTxyHzNjTuWOx3GFbQo/bl+/Xr0xcWYE4bUepw1MBp0wSxZ8rsw0pxw4MAB1q//iyval+Jfz4WX0Ull/HbKn/nz5/Hqq6+5V0CB11Gvzn0iYLF2rr322vKCt9tQ5p9yyxyaExuQijJ57LFH6dixo1vm8AaSk5OJj4tlxznPxKVZZdiZq2XgoMFe352hqbB70poqcUB73rgCB3xdfy5e/BuSNqB66Y3zkSSMEans2LGds2fPekY4H2Pexx8ToJG4pE39KwP4q2BcUgl//71BtN9qhTS2vbIAmxJ+6KGHaNuuLbpjf4KpaUtzKPNPoc7ax7XXXstFF13UpGN7G5IkMXDQYPbmaTB5oLnDiSIlhQZ8tr5cQ8jPz0dSSbX40V1EGGktloyMDDZt2oghsmONWZ3nY47qCJLEokWLPCCdb7Fz507+3rCB8W309faiVTA2qYxgLXwwZ44tM1vQanD6VZk/f779dU5OjsN7gJtuusl9UvkgWq2Wp558kltvvRXtib8xpDSRMWU2oDu+jjbJbbn11lubZkwvp3fv3vz0008cK1TSMdTi1rn259lugday1AnlRppfE3p3NIAkjLSqtBT9uWjRImTAHJVWr+NlTQDm0Db8smgRU6dORatt/lZv3oAsy7w/ezahfjA2yfUsaD8VXJ5cwmc7drBx40YGDhzoBikF3ojTRyO9Xm//d8011zi81+v1npTRZ0hJSeHGG29ElXMERVFGk4ypPrsD2VjC448/hkbTPIVePU3Pnj0BPNJ94GC+ivjYmBaXhFEb+flN2LcT7E3WhZFWSUvQnwaDgQULF2IObYOsDaz3eaaYLhQVFvLHH3+4UTrfYu3atezZu5cr2+nRKhs2xshEAzH+MnPen43F4t6HV4H34PRX8M4773R6UklJiVuEaQlcf/31/LJoETknN1HSZWKjsj0lQxHazL2MHTu2VWX1hIaGEhsTxYmiM4B7a28d02voOaibW+fwNnJyc+wZmU2FrJXJy8tr0jF9mZagP1esWEFRYSGmTkNdOs8aHA/+YXz3/feMHTvW52PyGovJZGLO+7NJCJQZHtfwZCiVAq7poGfWruP8/vvvjB8/vgmlFHgrtQYZZGZmsmvXLoxG2xcrJyeHt956izFjxnhEOF/Ez8+P/9x8M1JxForC9EaNpU7fjUKCW265pYmk8x1SUtM4oXev51BvkjhXYvOAtiby8vKa3Eizaqw+25PSXfiy/pRlmW+++RY5IAJrcFzdJ1RFkjDEdOXwoUOiCCvwyy+/cOZsOtelFKNsZBT4BdEmUkIsfPThXNHTs5Xg9CvzySefMGnSJF544QWuvfZafv75Z8aNG0dZWRk//fSTJ2X0OcaMGUNwcAiajF0NH8RsRJNzkJEjR9prLLUm2rZtS5YeLG5MHsgosX39k5OT3TeJlyHLMgX5BU1XfqNiXD+ZnNycph3Uh/F1/blx40ZOnDiOMaZbg1YDzJEpSBodX331tRuk8x2KioqYP+9juoab6RlhbvR4kgTXp+rJyc3jm2++aQIJBd6O0+XO7777jt9//53Q0FDOnj3LmDFj+OKLL+jVq5cHxfNNtFotEydO4MuvvgJTKahdr2KvyjuObDZxxRVXuEFC7ychIQGLDOfKFMQ4aUDcWDJLbUZaYmKiW8b3RoqLi23xLE3dblYL+Wfzm3hQ38XX9eeXX32FpA3AHNG+YQMoVBiiOrNx4waOHj1K+/YNHMfH+fLLLykqKub6ASVNVue8Y6iF/tFGvv7qKy677DIiIiKaZmCBV+LUk6bVau2tS+Lj42nbtq3PKBhvYOTIkSDLqPJONOh8Ve4xoqKj6dKlSxNL5htU9CPNNbivSkxumW3s1uSptC9JNrWR5gelJaWif2c5vqw/9+7dyz87dlAW0w0UDYxyx5ZAICnVfPXVV00one+QmZnJ999/x5BYA8lBTRvof21KKSajoVrWsKDl4dSTlpGRwQsvvGB/n5OT4/D+iSeecK9kPk5KSgoRkVFkFpzBHO1i0L/Viqoog2GTJrbaoNvw8HAACgzu+/z5RgV+Wi3+/v5um8PbqDDSZL8mrrXkVzl+XJyLMUwtEF/Wn1988QWSWos5un5lN5yi9sMY1ZEVK1dyyy23EBsb2zQC+gjz589Htpi5qkPT1s0EiPW3MjKhjF9//ZVrr72WpCQnPVUFPo9TI+2hhx5yeN+1a1e3C9OSkCSJ3r16svLPvzHIsktxHYqSHGSLiR49erhRQu8mJCQEgGJz7dctr8TMF5tzyS2xMLlHKD0SdJzINfDk4nT2ZpQxpH0Az42LJ0RX3SNQbJIIDg5yi/zeit2T5oaYtIrxhZHmu/rz+PHjrFu3DmN8L1A2PnHHFNsdddY+vvnmG+69995Gj+crnDx5kt+XLGFMUhmRutrDNX7Zlc/GEyX0TNBxVc9QZOD1lZks2JlPTJCax8bEMqBt9Yb1l7crY226jnnz5vH000+76ZMImhunRtrkyZNr3G4wGBz60gmc06lTJ1asWAHmMpfi0hQlOfbzWysBATalVFqLkWa2yFw17xiHs21LbJ9tyuHbm9rz1G9n2ZNue3pdsLMAhSTx9hXV485KzRKBgfWv/9QSsBtprodJ1k4VT5rAd/XnV199haRUYYptGqNS1gZiikhh0a+/MnXqVPsScEvnk08+Qa2EiW1r96K9szqLt/7IAuCLzbAnvZQ2YRreX3cOgPRCM//56gQbZqYReF6BtRCtzJikEn5dtZJ//etftGvXzj0fRtCs1Cvgx2KxsGbNGh566CEuuugilixZ4m65WgQVLmhFmWuNp6WyAlQqlT0uqzVSUancYHFupG04rrcbaABmK3y28ZzdQKtg/dHiGs83WCT8/Jo6OMu7ycnJsd31Td0aVRhpTvEV/ZmZmcmy5csxRnZsULKTM0xxPTAZTfz4449NNqY3c/LkSVauXMnohFJCNLWHFXy+2fF++XprHuvO01dFBiv/nKm53Ma4Nga0SonPPvuscUILvJZaS7pv3ryZRYsWsWbNGnr06MG2bdtYuXIlOl1TP4a3TCqWfSSDnjJTBjm71iAplUT2uAhNsPOMHIVRT2RUNEplw4N2fR1JklAplVhq0XEB2urPGGH+KtqEqTmZZ7Jv6xZX8/fVIoNa3Tq6OFSQm5uLQqfAIjVxxfLy5dOcHFGGowJf05/ff/89VquMKa57tX1Wk5Fzu1ZjyM0gJKUPwW3rXwBa1oViDmvDDz/+yHXXXdfiY0C/+uorVAqZS+vRRD1QqyC7ik3mr1HQLU7HqoOVG9VKiY7RNT9MBmlkRiWUsmTVKm655RYSEhIaLb/Au3DqSRs+fDhvvvkmffr0YfHixcyaNQutVuu1CsYbqXDtG/Mz2P/F02Ru/o2MDYvY/8UzmEtr9u4ASKYywsPCPCSl96JUKrDKzj1pvRP9uTitMqYsMkDJjReE898rk0gOtxlfPRN0PDuu5hgpq0yrM4RzcnKwat1Q0kQBCp1CGGnl+Jr+LCoqYuEvv2AOb4+srR6neXThu5xe9SXZO1Zy+IfXyd33t0vjm+J6oi8u5rfffmsqkb2SnJwcli9byvC4MkLqUTD6/ouiUVRRcfeMiOL2IZGM7RyMJEG4v5LXJiUQFejcn3JJmzIkSeb7779vio8g8DKc/uXHjBnDypUrWbJkCUqlklGjRrXaTMOGUvHEmHNkF1Zj5VOVuaSQ/IObiexZcxN2yWoiIKBlP23WB6ssU9c37qPr2rD+qJ6/jhWzYFc+F793mBEpgSy4pR1qpYIgP+dGmIStuGtrIvtcdtNndpYj+8nCSCvH1/TnokWLMJSVYUqp7kUzFGRTeNyxMHf2jpWEdx5U7/GtQdFYg2L55ttvmTx5cot9OPr1118xmS1cUs8m6pd1D6VHvI61h4tZtKeAZ3/P4KO/c3h5Yjz/vSIRjVJCpaz9exOmlRkUY2DJb4u59dZb7fG8gpaBU0/aE088wapVq5g6dSobN25k7Nix5Obm8ttvv/lMg+DmRqWy2cAKVfUAIIXGeSyUAhm1uqmDhnwP2SojSbUbFJIk0T/Zn6+35nEm34wsw+pDxby2MqtWAw1AIYHV6saWBl7IuXPn3GakWTVWzuWcc8vYvoYv6U+z2cwPP/yIJTgOa0D1MAyFSguS40+FUu16LKcxtitZmZmsW7euwbJ6MxaLhV8WLqB7hJm4gPrrlbYRWg5mG9h0ogRZhtP5Ju784TQKiToNtApGJxooLTOwfPnyhoov8FJqTRyQJIlBgwbxwgsvsGrVKt58801WrlxpK9QqqJOKJ+eodp3QhlXWCNJFtcFiKCX/8DZkaw2xQbLs1U/dnkCWZcwWC6oaLoPFKvP+n9lc9fFRHv3lDP+cKSW3xPE6Ogu0rYpSAWazqc7jWgomk4niouKmz+wsR9bJnDsnjLQKfEV/rlu3jnPnsjHF1hxnpg4IJrrPaPt7hUpDYJvOnNu5GpO+/klRlrBk8Avixx+9vy1WQ9i6dSvZ53K4ML7uWLT1R4u56csTTP3iOOuOFLPzrKO+Kii1cCK3/s3Y2wdbSAqysmRJy15Obo3UmjhQFbVazciRIxk5ciRlZU1fnK8lYrHYDAeV1p/O/36egqP/YC4t4uyfP3JqxacABCZ1JvWahx2MMllS2M9trZjNtj53qhoeI2atyebt1ba09c0nS9iTXkpcsIr0wsreeINqqCt0PipJpsxYf0Xo67it20AFfpB/Kh+r1YpC4b5OEb6IN+vPBQsWgF8QllDnBVETL7qesLQLKMvLIHfv35xd+x0ASu23dJzyOLqoerRWkxQYozqxY8dmTpw40eJ65q5YsQJ/tUTvyNof/A5nG/j3FycwlWdF/XmkmMk9Qh0eLKODVLSPrH8xQ0mCYbFlfLVvP2fOnBEJBC2IOjXprFmzHN6//fbbfPbZZ+Tl5blNqJaCyVR+s0oKFCoNYR37Y8jNwFJWmTRQfGofxaf2O5wnSwqMrch4qImK9kJqRfWlud/2Oj69/3O2jBcnxNM7UUeoTsnVvUN5YFTd5UvUCjAYvOsH051UxIu5a7kTHVgtVgoKXCs505Lxdv159uxZtm3bZiu7IdX+cxAQn4IuMomiE7vt2yyGErK2Lq33fKYo2zwtLYHAbDaz7s+19IksQ1NHuN2KA4V2Aw1spYMSQtVc2yeMUJ2S3ok6PpzSBnU9lzoruCDa9nuzZs0al+UXeC91GmnnV8ru3r07KpWKl19+2W1CtRRKS21PRrKyMr7Maq5ufJ2/zapQUVJa93JdS6bSSKu+r02YY9mMIK2ClCgtD4yK4a/7OvLG5Yn4a+r25GiUcqvqNWkP6nfXcme58SeSByrxdv25dKnNwDJHptbreKulupeoJp3mFLUOc2gSvy1ZYveWtwR2795Nsb6EvlF1h08khVUv+9MmTMPkHiH8Mq09C27tQK9E1xPHInVW2gZb+fuvv1w+V+C91LnceX78xMUXX+w2YVoaJSUltheKSiMtssdF5OxZh1weC+UXEU9w8nnVvRVq9PoST4nplVQYT1plda/PQxfHsDejjDMFJvzUEpd0DmbkrEOYrRDsp+CT/2tL36S6lZxWAYaS1uOxtMeLuXG5s2KelJQUN03iW3iz/pRlmaXLlmMJjkPW1q/zRkBcB/xj21GSccy2QaEkqpdrMXbmyBQKDq1kx44d9OvXz1WxvZLNmzejkKBreN1G2thOwYzvGsziPYUADO8QyBsrMzlbaEaSYPqQSB4e3bA+p93DDSzevZuSkpIWX4+uteDUSMvNzbU3uQZYuHAhu3btIjU1lWuuuabVB7bXh4osLrlKDzz/mGQ6/d+z5O77G5UukIhuw5CUjn8GWaVBr2/dldsrlns1NRhpHaP9WHtPR/ZnlREdqGLU/2wGGkBhmZXXVmTw7U3t65xDrZQpK2tlnjQJ9xlpuirztHJ8QX8ePXqUs2dOY247pN7nSJJE6jUPk7P7T0zF+YR1GoB/tGuxZZbQJCSVmj/++KPFGGn//LODtsEW/OsR5a1SSsy+pg0nc41YZZn3151j7RFbCIwsw/vrz3FD/3ASQ10vtN05zMyi41b27NlD//79XT5f4H04XRP6z3/+Y389e/ZsfvnlF7p27cr69esb7arPz8/npptuYsyYMdx0001OY1geffRRBg0axIQJExo1X3NhN9LOK8Ghi0wgYdhVxPS7BJVfDQHuSg0lJd6Vpu9pKoKrna1aqpQS3eJ0aJQShWWO6e4ZhfVbRtEoZIxGY6uplZabm4vCT0GdxecaimgNZced+rOpWL9+PVCedekCSo2O6D5jSBh+jcsGGgAKFabgRP5ct65FlMCxWCwcPHCA1GDXMsXbhGtoG6Els8jxPFmGrKKGLQWnhNjO27dvX4POF3gfTo20qj9cy5cvZ9asWUyePJk333yTv/92rdr0+cydO5dBgwaxbNkyBg0axNy5c2s87oorruCjjz5q1FzNib0ektLxiagk+ySn13xLxsbFNXYekJVqykpLW3WGZ4UnrabEgaqE+qu4MNVxqWZyj9B6zaFR2ArmtqTYmNrIyclxX9IAgBIUGtF1ANyrP5uKjRs3IQdGImtcWxazGErI3LyE06u/Rl+x7OkiltAk8vPyOHasYed7E6dPn6bMYKRtUMP09eSeoQ7v20do6JnQsMBRfxXEBMChQ4cadH5L4Ny5cxw7dqzGf74Yg+zUOVtWVsbevXuxWq1YLBb7+rZarW50ev3KlSv5/PPPAbj88su58cYbefDBB6sd179/f06fPt2ouZqT4uJyF3YVI60k4xgHvn4B2WIzDHL2/Ennf7+AosqSZ8XxJSUlBAVVb9HSGqg00uo+9n9XJTFn/Tn2Z5YxvEMgN/YPr/skbMudYMvCbQ3Fg8/lnHNPS6iq+AlPGrhXfzYFZWVl7Nm7B1N017oProIsWzn43SuUZp4AIGvrMlKveZigpE4ujWMJjgdg27ZtdOjQwaVzvY2TJ08CkBDYMCNtUvdQlJLEL7vyiQ/RcPvQSJSKhru743VGTp443uDzfZktW7bwwIMPYLXUrOfatmvLh3M/RKutf3mT5sapkRYVFWV3y4eEhJCVlUV0dDR5eXmNbumRk5NDdHQ0ANHR0S1WqVckDlTN7jy3a43dQAMw5KZTdGIPIe17Vp5YfnxrNtIqypfU5UkDCPJT8mA9Sm6cj1pynKulk5OTgxzk3qVdi9YiCtriXv3ZFBw8eBCrxYI10LX7Rn/2iN1AA0C2cu6fVS4babI2EMkvkL1797p0njdy5swZAGJ0DX8AmtAthAndQppEnlh/K3vPnkVuZUXR8/LyeP7F55G1MtZuVuTzfjukAonj+44ze/Zs7rvvvmaS0nWcGmkVnq7zCQ4O5ssvv6xz4KlTp9aorO+99976S+fj2ItWVsnuVKiqW/AKteO2CqOutBWX4ahYgnSxVJBLKBWVnrSWjtVqJT8/H6LcO4/sJ4vWUDRef7qbiuUwa2CkS+cp1NWD2c/XX/XFpItg/4EDDTrXm8jOzkarkvBXeUdsa4SfFYPRRFFREcHBwc0tjkcwGAw89vhj5OfnYx5phtDqx8hJMlaLlZ9//pkOHTpw2WWXeVzOhlDvjgMVKJVKdLq618s/+eQTp/siIiLsT5ZZWVkOWVAtCfv6t6LyyTmq98Xk7vsLc4kt/ToouSuBiWmOJ0oqx/NbIRXxeMp6eNIaSsWKQksIXq6LoqIi2xKAu738fpB3yjsKtXoj9dWf7ubEiRNIKi2y2rV4NP/oZEJT+5F/aAsASq0/0X0vaZAMVl0Y6Wd3+ny4QX5+PiFaGW9xWgVrbPosPz+/VRhpRqORJ596kj2792AZaKnRQKtA7i5DEbz55psEBAQwatQoj8nZUFw20gAmT57Mzz//3OBJR44cyYIFC5g2bRoLFizwiQvVEIxGo81Aq3L3akOj6HLzKxQc2YFKF0hw2+7VXdLlRl1r7jrgiYzLiqveGrI77RXu3VV+owItGMoMlJWV4efn7sl8k8bqz6YgPT0dqzaIhlgW7S6bQdGJPZiK8wlp3wuVf8NCMmRtEFarlezsbOLj4xs0hjdQVFSEv9J7HvQqPHpFRUXNLIn7KSkp4cknn2Tz5s1Y+1jBeWczGwqwDLSgXKfkueeeo6ysjPHjx3tE1obSoAjWxiqYadOmsX79esaMGcP69euZNm0aAJmZmdx666324+6//36mTJnCsWPHGD58ON9//32j5vU0FosFqYZWKyq/ACK6DiGkfU+kGoKI5XLF2Ro8PM7wRCxFyzfNKsnPzwfc2BKqAj/H+QTVaW4DDSArKxuLi160CiRJQXDb7kR0G9ZgAw1A1tjKD/l6DGNZWRlahffoam35wk1LX4nJzMxkxp0z2LxlM9Z+VuQO9dRtKrAMtSBHy7z66qt8+OGHXv1bW29PWnFxMcePHycpKYmQkMYFOIaFhfHpp59W2x4TE8OHH35of//WW281ap7mRpblBtakkirPb6VUZMBZZccLuOmEnsd/PcuxHCNjOgXx6mUJBPk1LBC74vJ6Q7adu7F70ty83ClrZft8sbENq5reEmlK/dkUFBUXI6uaVw5ZZYtvs5cq8lEsFgtKqX66urDMwsMLz7D8QBHtIjS8OCGeC5JrqJXZCCpkacklnLZu3crTzzxNUUkRliEWiHNxgHJDTdom8fnnn3Po0CGeeOIJr1wedvrr9MADD9izLv/880/Gjx/PG2+8weWXX86SJUs8JqAvo1AoXHLXyFYLp//4mh2fP8/WrVu9pp5Sc1ARo2Ku8oBjNFuZ/u1JDmYZMFlkFu8p5I1VmRSWWXhtRQY3fXmC+RtysFrrd9HN5QagL8fD1Bd7wWh3x6Rpz5uvleLt+tNoNDjEyjYV+Ye3sXfeo+x8707OrP0OWXbuoZAVNh+BPcGqFfDGykx+22trsH4wy8D0b09iNFv5ZVc+t3x1gicXnyW9oOUnMjUUs9nMRx99xP33308RRbYkAVcNtAoUIPeVsfa2snHTRqbeNJUdO3Y0pbhNglNP2oEDB+wB/e+99x5ffvkliYmJ5ObmMnXqVC699FKPCemrKJVKZGvtTzPG4jwUSjUqXSDZ21eStfV3AMzYlnuvueYaIiIiPCCtd2E30qrYW8dzjZzTO17PradKuPP7U6w5bKtJt+pgEfmlZu67qO7SAiar41wtGbvR5HqnGdfQnDdfK6W16E+LsQxzaRHakChMxfkcW/SevcRQ5qbFaEOiiOx5UTNL6V40Gg1Fcv2WTLaecuzJfE5vYd6GHF5enmnf9ueRYlbemdrgWmkma8t8+Dx+/DgvvPgCBw8cxNrWitxbbmBUfRUkkFNkzOFmcjblcM899zBlyhRuvvlmr6ml5tSTZrVa7cVYJUmyB3aGh4e3aDdqU+Ln5wey1fYPMJcWYy1XYFaziSML3mH3nHvZ+f7dnF7zLUWn9zucX1ZWxubNmz0utzdQEXRusFQqqrbhGiIDHJ/+u8Xp7AZaBQt21s9AqBi7NQS45+fnI2mkBkahuoDwpAHerz81Gg3U8QB5PlaTEYuh0sg4t3M1u96/mz0fPsD+L56h4Ng/DjUgAYpOOy+xIZXP7y0/hg3Fz8+PMmv9vJJ9kxzjAKMCVfx1zFF/Hcsx8s+ZhpdfqtBrvn5dKzCbzXz++efcdPNNHDpxCMsgC3L/JjDQqhIO5ovNWNpZ+Prrr7np5pvYtWtXE07QcJx+zBkzZvCvf/2L66+/nj59+nDPPfcwatQoNmzYwLBhwzwpo89SkWpvKSng2O/zKDy2E6XWn8QLr8NqNlFweJvtQKuFrM2/EdlzpMP5arWaXr16eVhq76Di2pWZK400jUrBnGvb8MTiipi0YB4cFc3iPQUO/Ttjg+t395aZJbQatVcUF3U3RUVFNiPN3agr52vNeLv+DAwMQsqrf2B55ubfSP9rAVazkbCOF5Bw4RROrfwC2WJbmivJOEZRWBxICvtDKUBAbDvng1ps2esV3Rh8lcDAQErM9bu3HhwVQ47ebI9Je2F8PD/+kw9UxuVJEkQHNdwCqZAlMDCwjiO9n7179/LKq69w/NhxrInl3jN3PVOrbMuflkQLZ7aeYcaMGUyaNInbbrutWa+l02/CuHHj6Nq1K9999x3Hjx/HYrGwfft2xo8f7xVKxheo+MNmbvqNwmM7AVvfu5PLPyG865Bqx/tHJRHeZTB5+zagVquYPXt2qw2+rrh2+vOUX//kAJbekeqw7fExsTyxOB2TRSZEp+Thi+t3zfRmqUUosvpQVFSErPZAIooECq2CwsJC98/lxXi7/oyKjOBo9vF6HVt67gxn1nxrf593YCPqwDC7gVaBqTiP5LH/4czab7GU6QnvOoSoXs7LKymMNq+cr4dzhISEUGiwJSLVlZQe5KfkvWvaOGyLDVbz55FiTuebkCS4Y2gUiaENj0soNNqECA0NbfAYzU1RUREffvghCxcuBB1YBlsgwUOTx4B5jBlpt8TCXxay9s+13HP3PVx00UXN0sGhVnM9OTm5xp6agvpR0dKpNPuUw3bZakEb5hjtKCnVBHfoRWSvkaR064M2/R+mTp3qKVG9joosm2JT3TfFlL7hjOwYxOFzBnol+OOvqd+aXrFJajVtt4qKirCqPZRmrq7sW9ua8Wb9GRsbi/Kf3fU6tvTcqWrbzGXFqIPCMRVVtvQL6dCLiG5DbQ+gshWpjsQEyVCEJEn2FoG+SkREBEYLlFpsDc5dJSlMw+q7O7L9dAmxQWrahDcucDTfoECjVvvkA6gsy6xatYp33n2H/Px8rB2syN1ku4feY6hA7iVjaWMhb1sezzzzDIsXL2bmzJker+nn9Nfs5ZdfZuvWrZ6UpcVRETgcEt/eYbvSL4CIHiNoc8l/8I/rQFCbLqRcORNNkO14hcVAcEhoq1iGc4afnx9+Wg2FxvoZXNFBaga3C6y3gQZQaFISHuFaWxxfpai4yGOKTlbLPl9WobF4u/5MTExENpaCqe7MyqDETkhKxy9PcNtudJh8HyEpfdBFtyF+2FVE9x0D2GLw6jLQABRl+URGRft87FRMjC1JKaes4QGfaqXEBckBjTbQAM6VKYiOivS5vp1nzpxh5syZPPvss+RL+VhGWWzLm82Z/xAOlpEWrL2sbNmxhRtvvJHPP//co60Endr9CxcuZPPmzeTl5XHppZcyYcIEunTp4jHBWgIVbvyY1O4YUZG3/2/UgWEoNDp2z74Lpdaf+GFXEdnjQofzJKOeiBbaKqu+SJJEWFgY+YbqHpkj5wzM35BDmdnKDf3C6Z3YsJiWAqOS5FZynfV6PbK/Z+ruWZXWVm+kebv+7NChAwCKkhysIbWvI6kDQ+kw+R7Orv8Zi6EE/5i2nF79NeaSIsLSLiDtuidr7OlZF6rSXDr27tog+b2JuDjbqkhmiZKkwLq91WUmK59szGHX2VIGtwvkur5hKBqYyVkTWWUq4jvVVXrfezCbzXzzzTfMnz8fM2asvcsL03qLjakAOVXGnGjGusPKhx9+yLLly3j4oYfp1q2b26d3aqTFxsby008/cfz4cRYvXsyDDz6IxWJhwoQJjB8/nnbtagkIFQAQGWl7mlGYSogfegXxQ68ga9syTq+yNVg2lxZxcvknBLXpgja00uWvMpUQF5fmbNhWQ3RMDLknzjhsy9WbueKjo+SX2jLDFu4s4JdpHegc61o0qVWG3DKIinJzx3EvobS0FDxVu1QN+pLWbaR5u/5MS7PpF2Vxdp1GGkBw2+4Et+2OSV/A7rn327M48/ZvwC8inrhBk1wTwGyEkny7HL5MUpLNIEovqZ8n7aGFZ1i4y5b9/OueQs4UmHjo4rpLBtUHqwwZJUr6JvmGkXbkyBFeePEFjhw+gpxgq1lG87e2rRkdWAdZ4Syc3HGSGTNmcNVVV3Hrrbe6tUKA029Vhau0bdu2zJgxg8WLF/Pf//4Xg8Fgb+MkqB2VSkVYeDhSFW9QScYxx4NkmZLMEw6bJGOxz8dpNAUxMbHkGByfI5YfKLIbaABGi8zCXfkuj11klDBbaTXX2VBmAA+tnssqmZKSkroPbMF4u/4MCQkhMSkJRXFm3QdXoTT7VLUyG9V0Wj1Qls/bvXt3l8/1NgIDA4mKCOd0cd03WJnJyq97HMvT/LAjr8lkOVemoMwsN/tDQF1YLBa++OILbrnlFo6eOYplkAXrYC820KoSD+bRZiztLXz//fdMvWkqe/fuddt0To20mloSderUiZkzZ7J8+XK3CdTSSEhIQGmoLEcQmNTZYb+kVBGQkFK5wWxANhl8uuFwUxEbG0tOmWPXgfPrpAFolBL3/niKS2Yf5sWlGZSZ6l5yyCq1ffVbw3W2WCyYzeamrStUG8qW3zewLnxBf/bp3Rt1cQa40LfQP7YdCrVjDFlgUieX51YWnEWpUtG1q+8vdwKkdOzICX3dS75qpUTweW3sIgJUzFmXzbg5h7nlqxPsz2x4B4YTRbaxK5azvZFz585x7333MnfuXExxJsyjzZDY3FK5iBrkPjKWERbS89O5Y8YdfPnll27pAerUSPvyyy+bfLLWSFJiIkpjZTmCiG7DiB14GaqAEPwiEmg3cQaawDD7fkWZ7SkrIcFT+cbeS0JCArIM2aWVX9MLU4MYkVKZtdQ5xo8/DhXx884C9mWWMfevc7yyvG7vQGap0j5HS8duMLngSTu37Ry7/ruLPf/bQ/6BfNcmVILRaHTtnBaGL+jP/v37I5tNLnnTVH4BtL/8HnTRbVD5BxPd9xKi+4x2eW510Rl6dO/RYgpJp6V14kyxRJm59uOUConHxsSiLFdpfmqJvkn+vLw8kz3pZSw/UMSNnx/HYG7Yj/3RQiVKpYKUlJS6D24Gdu7cyU0338TO3Tux9rciD5Td0qquNLuUA/MP8M9r/3Bq6SnkerYKdJloWxFcc5yZDz74gMcef6zJVxGcPlsHBAQgyzI7d+4kMzPTnirdo0cPn8saaU4SExORDSW2GAyVxlZ9fOiVxA+9ssbjFaU2Iy3JR2IK3EnFNcgoURIXYFNaSoXEZze2ZdupEsrMVlIitfR/w7Gq+YqDhTwzrvaGbul6BQqFwh7025KxZyLVM/ms8EghBz856PC+9xO98Yuo5w+qQhhpvqA/+/Xrh1KpRJl/Emtw/e+D4OSuBP/r+QbPKxmKQJ/LoEFTGjyGt9G1a1dkGY4UqugaXruldk3vMIa2D2BvRhl9Ev2596fTDvuziszsPFtK/zauN14/VKAmNSXFKzNmV6xYwYsvvojV32rruemmGFnZKrNvzj7Ksm0eSf1pPZJCInG0m9x1GpAHylgPW/nrr7+4ffrtvPnGm00W7+xUba9bt44xY8Ywa9Ys1qxZw+rVq3n33XcZM2YM69ata5LJWwPJycmALd28Pkhl+SgUilbh4amLimt3Rl/9a9onyZ/B7QIJ91cRFej4rNEhsm4FdUavJCE+rsX1t6sJV4203N25Du9li0z+3vz6T6jAK1ofNSe+oD8DAgLo3bsPmvyTtkqsHkKZZ4vBHTKkekFvX6Vr164oJIn9efWLKYgP0XBxWjDhAapq+kqlgOQw17NljRabkdijZy+Xz3U3ixYt4rnnnsMSbnGrgQZQklFiN9AqyNvVdHF/NSLZMkAtQy2cOH2C6XdMJz09vUmGdvqNevHFF5k/fz6JiY7W56lTp5g2bRpLlixpEgFaOnYjrTQfa2DdQeqK0nzi4uNbhfFQF0FBQUSEh3Gq2Hl8k0op8cpl8cz8+Qz5pRbaRWh4YmzdHQdOl2jo2Nl74zaaErvBVE8Hji66evSuLsaFiF4FWMyt20jzFf05YsRwtmzZjFSai+zvmcr/6rzjtG3XrkWtFgQGBpKamsKerH1ciWsxZXcOj2L76RK2ny5Fp5Z4dHQs0UGu6//DBSpMFujdu7fL57qTlStX8vrrryPHybbsSDcnMGnDtCg0CqzGyiVjvxgPLavHgnm4mew/s7nn3nv4YM4HhIWF1X1eLTh9trZYLDW2JIqJibEFIQvqRXx8PCqVCqm0fpa8ylBAey/PzPEkKakdOamvXWGNTA3i6UvjuKFfOK9MjCc1qvYbsswCmXq8Nm6jqbEHsdfTSIvqH0V4z/L6cQqIHRZLSEcXHn2lmgPnWxO+oj+HDx+OJEmoclzP0GwIkkGPojCDkRdd5JH5PMkFAwZyuECFvh5dUqoSEaDi5YkJTB0QziMXx3Btn4b9qO/MUaNSKr3KSDtw4AAvvvQiROERAw1ApVPR7qp2KLQ288Y/3p8249rUcVYTEg7moWYyszJ54sknGn2/O/WkXXnllVx11VWMGzfOHreTnp7Ob7/9xlVXXdWoSVsTKpWKpKQ2HMrLr/tgqxlKC2jfvn3dx7YSUlNT2bJpI0YLaJzc4E8sPsuXW2xG8JdbcnltUkKtiu5kkRIZ786AakrsGUf1/O1QqBR0+k8nDHkGJJWEJqhhVdCtVisKRcOrsPsyvqI/w8LC6NO3L1t3H8SU2Lfu5pONRJl7FIBRo5z39PRVBg4cyOeff86uHBUDY+tfkf7vY8X832fH7Vnsv+8v4puprj+ob8/R0r1Hd69pWG8wGHjm2WewqC1YBlk8VgIIIGZgDJG9IzEWGtFFNUNdjwiw9LWwa9MuvvnmG/7v//6vwUM51aC33XYbb775JgA7duxg+/btALzxxhvcdtttDZ6wNdKhQ3vU9YhJU5QWgCzTtm1bt8vkK6SlpWGR4ZSTGkRFZRa+3ebopfz473O1jnms0PZs0rlz51qPayk0NFBdG6ZtsIHWmHlbAr6kP8eMHg1lhSiKs90+lybnCKmpHVvUUmcFXbp0ITQkmC3Zrt0zn27KdSgz9PcxPXvSS10aI6NEwZliiWHDhrt0njv58ccfOXP6DOa+ZrdkcNaFUqtsHgOtHDlZRk6QmT9/PtnZDb+3ao1y7NChQ6vxNriT9u3bs2LFCnuGpzOkUlvAtrjmlXTqZKvBdKRARYeQ6nFOCsmW8WmukmKtVtZuHBwpVBIRFkpkZOvo22n3ZnlqBVIu79/Yio008B39OWzYMN54401MOYcxBrmvuLNUmoekP8fYsS0nq7MqSqWSYcNHsGzJrxgserT19Bypa2gJVZcOO5+NmbbflWHDhrl0nrswGo18/c3XyLEy1B0i3GKx9rBi+t3EDz/8wPTp0xs0hlNP2tq1a+2vi4qKePzxx5k4cSIzZ87k3LnaPRUCRyo8Y4o64tIUJXkolcpqwcatmejoaCLCQjlcWLPGC9AquXlgZcCzQoI7htWe+nykSEuXbr5f6by+KJXl167p6yzWjAxSE/Yi9EV8SX8GBgYydOgQNLnHXCps6yqqc4eRJKlFLnVWMGrUKAxmme3Z9Q/8v2VwBDp15f0ytlMQHaPrH+guy/B3ph/dunaxN3tvbjZv3kxBfgHWFE8pHS8lEOQ4md+X/t7gOF2nRtrbb79tf/3KK68QGRnJnDlz6N69O0899VSDJmutVMSY1WmkleaRmJSESuWp0vDejyRJdO3eg0OFzv3lj4yO5at/t+WpS2L5fXoK47s6D3IvMEpk6vFIY1xvwf598pQnzQpqVevOTvY1/Tl27FhkUynKgtN1H9wQZBlN7lH69u1HRIRnskibg549exIZEc6f6fVf3+uZ4M/KO1N55tI4PryuDe9f61qQ+4kiJaeLJcZecqmr4rqNbdu2Iakk8A6bsVmR42XycvM4ceJE3QfXQL2ienfv3s19991HQkICU6dO5cyZM3WfJLATGxuLWqNBUZpf63FqkdlZIz169CC7BHLLnHtnhrQP5D+DIkmrI9X6YL7NYGkJPQPri72ci6eqYlhApRYPGhX4gv684IILCAwKRnXusFvGVxRlQlkRl1wy1i3jewtKpZKxl1zKrlx1rfrqfBJCNdw0MIIxnYJRuuiFXnNWg1qt4iIvypg9efIkcpBc79qMLRk51PZ0fPLkyQad7/QS5uTkMH/+fObNm0dxcbGDq84d/alaMgqFguTkZKTajDSLGbm00Osb4zYHFQbVgfzG//AfyFOhUavp2LFjo8fyFezVxz1opHljxXNP4mv6U6VScfGokagLToKl6btFqHIOo9FqGTp0aJOP7W2MHz8eq4xL3rSGYrDAX5k6Roy4kODgYLfPV1/0ej2yunWX4bFT/oys1+sbdLpTI+2aa65Br9dTUlLC5MmTycuzLdVlZ2e3mqy4pqRd27aoDflO91f07KwofiuoJDU1FZ2flv15jV9C21+goWu3rmg0Dc9a9DVUKpVtydODRlpL6cnYUHxRf44ePRrZYkaV27BlGadYrWjyjjNs6FCvKQ/hThITE+nbtw+rzuqwuNke35ChQW+Sueyyy9w7kYv4+/sjuVgvrsVSXo1Fp2tYpqlT18Sdd95Z4/aoqChee+21Bk3WmmnTpg1y2XKwmEBZ3diQykt0tGnjwaJ7PoJKZWt1snf3BooNRfywI5/8EgsTu4fYW6qYLTI5ejMxwc4NOb1J4kShgot6eU+xR0+h9dNiNHmmn6ZkkvAPavk/xrXhi/qzW7duREZFk5l7FHNUapONqyw8g2wq4+KLL26yMb2dyZOv4Imt29h2Tk3/aMeaaX8cKmLTcT29k/wZ06nS+5VdbCZIq8BPXb81QlmGZad1tGubTM+ePZtU/saSlJTE5m2bbclKrXzJUyqwGasNLTtT6/rRkSNHWLlyJVlZWYAt027UqFE+kVbubVQYX4qyQqwB1QNnFaUFSJIkMjud0KdPHzZs2MDkj45xMMvWduX99dn89J/25OjN3P/zGbKLzaRFa5k7pQ1tI6ovNezLUyGXj9XaCAgIoMhU5JnJzBAUGOSZubwYX9OfkiRx8aiRfPPdd2A2gKppluuUOUfR+QfQv3//JhnPFxg8eDAx0VEsPWV2MNLe/zObV1Zk2t/fOTyKWwdFcPt3p/j7mJ4grYInxsYypW94nXMcyFdxokjBg7df43Xlbnr16sWPP/4I2YjkgXQIDglucCiTUxt37ty53H///YAtJqgiLuj+++9n7ty5DZqsNVNhfEllhTXuV5QVEhEZ2epjeZzRp08f8vPz7QYaQJlJ5ovNucxcYDPQAA5kGXju94wax9ibp8JPq6FLly4ekdmbCAwM9Njyg8KsIDAw0CNzeSu+qj8vvPBCsFpR5TXRkqfViqbgJMOGDml1IQZXXnU1+/NUHKtSPujjDTkOx83fkMO7a7L4+5gtXqnIYOXJxemcK667ldCSk34EBwUyevTophW+CRg4cCABgQEoDrdyN1oJKM8qGX3x6AZ3X3HqSfvxxx/59ddfqzX6njp1KhMmTGDatGkNmrC1kpCQAIDCUFhjaJDCWERSivCiOSMlJYUA/+pr+hYZsoocFdqBrJobHO/J09KjR89W2bw+LDQMKd81I81cakZSSCjrW5WzHMkoeVUQc3Pgq/qzc+fORERGkpl3AnNU45NrFEXpyCYDI0aMaALpfIsJEybwyfx5LD5h5M7uNiPs/CK1KqXEwSyDwzajReZYjoHIQOcLXel6Bduy1fzfjZO9Mv5Tq9Vy7TXXMm/ePJs3rfbSlW7BarFiKbWgDmw+fS/tllBICq655poGj+HUtJMkye6mr0p2drbXuVZ9AX9/f4KCgpEMNS85KY1FxMfHe1gq30GpVHLx6DFEhFX++Af7Kbh9SCTd4hyV1IWp1Zfa8gwSZ4ol+vbr53ZZvZGQkBAUpnrGulhlDn91mE2PbmLzY5s5+asLqeMyWMushIS40JC9BeKr+lOSJIYPG4a68Iytl3AjUeWdQK3RtKqlzgoCAwO5bNLlbMrSkFVqu/fuGu5ordw5LIqLOjrqq4gAJd3jaw8y/+2kHyq1iiuvvLJphW5Crr32WqJjolFtVdmD5z3Fue3n2PLkFjY/tpld/92Fscgz8bgOnAHFCQXXX3+9vX9vQ3Bqqj/22GNMnTqV5ORk+wRnz57l5MmTPPnkkw2esDUTFxdHXmYNRprVjGwoITa2FffPqAf9+/dndZfujIs4hWwxcUmXEKICVXwwpQ0vLM1gX0YZI1ICeWR09eu4O8f2NNW3b19Pi+0VhIaGQs0Oxmqc23qOrA02A8NqtXJ62WlCO4cS3KEe3jETYC2frxXjy/pz0KBB/PzzzygL07GENqLHpiyjLjhN3z59vdLb4wmuuuoqfvj+e5ac0PLvTqVc3y+c7vE6Np3Q0yvRn75J/litMsUGKwt3FRAfouLhi2NrTR7IN0isS9dy6YRxhIfXHbvWXOh0Op568inuvuduFBsUWIdYPZJEYDFYOPLVESwG25pV0dEiTi0+RYcpHowFzQfVZhUpHVP497//3aihnBppw4cPZ+nSpezcuZPMzExkWSY2Npbu3btXtpkRuERMTDQHTmVydt0PnNu1FpVfAPHDriYs0fbliY52X9+8lkDfvn1RKBTEREcxOqlyiSAxVMOcOqp078lVERocREpKirvF9ErCw8OxGq22Mhx13L76s9Xr+ejP6OtnpBkq52vN+LL+7N27N2q1BlPB6RqNtMLjuzmz5ltMxXmEdxlMwohrkRTVP5NkKISyQgYOHOAJsb2S6OhoRo8Zw8plvzO5fRnBGpnu8ToHT5lCIXHPhdHcc2H99P/SU1rMssSUKd7fA7VHjx7MvH8mr7/+OtImCfkC9xe4LcspsxtoFejPNKxGWYMoBNWfKsKCw3j5pZcbHYtZ6+VSKBQkJiaSmJhImzZtSExM9HoF481ER0eTdfIwGRsWYdYXUJZzlmOL3sOUl27fL3BOQkICsTHR7Ml1raitLMPufC19+vVvcPCmr2M3murhTQvtFOq4QQGhaaE1HVqdUtt/Lbn1T33xVf2p1Wrp0bMH6sKz1faZy/QcXfgupdknMZcWkbV1KVnbltc4jrLAdn5rXOqsynXXXYfRIrPsVOOTwkrMsOKMPyNGjPCZSgATJ05k+vTpKE4pUPylgMavoteKf4w/mjBHwyi0c6h7J60gB1SrVYToQnjnv+80yW+601+7ffv28fTTT1NUVERsbCyyLJORkUFwcDBPP/00Xbt2bfTkrY2IiAjycx2ze2SLGf2ZQ4QgftjqQpIk+vW/gFVLs7HKeurbPeWsXkF+GfRrpfFoYKvPBdiMqIDajw1NC6XDlA6cXXMWhUpB4phEdDH1K8QolUqO87VSfF1/9u3Th61btoCpFNSVf/uSjGNYTY6B7sWn9hPT75JqYygL0wmPiPAZY8JdtG3blqFDh7J803omJJfh14jGKStPayk1ydxwww1NJ6AHuO666/D39+ett95C8YcC82BznXqooUhKic63debEghOUZpcS0TOCxDHu/w5KxyWU25TERMfw1ptvNdn33unX5ZFHHuG5556rViRvx44dPProo/zyyy9NIkBrIiIigsDAQMeAYkkiIDgU8jKFkVYP+vbty6+//sqxQiUdQupXQn93buuOR4NKo0kqlZDr0Wk9ZnAMMYMbUOCo3JMWGRnp+rktCF/XnxVyK4sysYS3tW/XRbVBUqqQLZXuEP/YGuo/yTJqfSZ9hg3y6kQJT3HDDTewbt06Vp/VckkbQ90n1IDJCktP+dO3bx/S0tKaWEL3M2nSJGJjY3n6macpXVGKuZ8ZEtwzV0B8AF3u8FCpJTNIOyQUxxT07N2T5559rkljcp2u/ZSWltZYxbhXr16UlpY2mQCtidDQUOLi4ojsdAGSQolKF0SbMTeh8/NDqVS1+tpS9aGiEO2e3PqnVe/JVREfG9OoDBtfJyam3OAqcfNEJRAQGNAq2v/Uhq/rz44dO6JUqVAUZzpsVwcEk3zpragCQkBSENZpIDH9Lq12vmQsRjbo6datm6dE9mq6du1Kj+7d+f2UP+YGtor6K11DvgGuv963vGhVGTBgAPM+nkdK2xSUfymRtkgez/xsUnJBtVKF4piCG264gbfefKvJk6ZqTRyYNm0al19+uT3rMCMjgwULFjBs2LAmFaK1EBoaikKhoN2QiSRdehsoFEiSAunonwQGBYknznoQFhZG+3Zt2Zt3iMvqUcDZKsP+Ai0jx7buuJiAgAACAgMo0ru364Ckl1q1MVyBr+tPrVZLSkoKe8+eq/YbGt5pIGFpA5CtFhTKmn9CFMXnALy2T2lzcN311/Poo4+yOUvNoFjXLBNZht9O+dOhfXufD9uIj49nzvtz+Oijj/jmm28gG8x9zL7VmcAC0l4JxQEFYeFhPPn2k25bqXFqpD3xxBOsWbPG3tZElmViYmK44YYbWmVhwqagosCnZDYgVVFuktlASEjrLv7pCr379GXRghOYraCqIw/gRJGSEpPcKltBnU9sbCzFxcX1Wu5sKIoSBfEdRb2/lqA/O3fqxMHDv9kshPMeICVJctBh56MoOYdCqaR9+/buFtNnGDRoEEkJCfx+6hSDYgtcOndXroozxRKP3T2lRTzMq9Vqpk+fztChQ3nxpRc5u/Ys1rZW5J4yeHtjimxQbVMhF8pccskl3HXXXQQFua8NntO7zGAw0L1792oKJScnB4PBINoXNQD7H9LiGJMgWQwEB4l4tPrSu3dvfvzxR44WKukYWntc2r4821e8V69eHpDMu2mT1IZjW49hpYHrLXUhA8WV3TVaMy1Bf3bo0AHZbLQtXWpd+xFSlOSSlJTkE5/TUygUCq68+mr++9//crhASUo9Y2oBlp7yIyw0hJEjR7pRQs/TvXt3Pv3kU+bPn88333yDnCFj6WFBbiODt9miBpB22WLPomKieOiph7jgggvcPq1TP8QLL7zAli1bqm1fv349L730kluFaqlUxOlIFkdXt8JqFvFoLtCjRw8A9ufXnSZ1IF9FQnxcqw9kB9syg7XYirtsNEpt3QqEkdYy9GdFQ2hFSZ7L56rLCkjx0kbyzckll1yCv86PFS6U48gqUbDznJpJl09ukf1PtVott99+Ox999BFp7dJQbFKgXKsE90Zm1B/ZlrmpWqZCdULFlClT+Pyzzz1ioEEtRtrWrVsZM2ZMte2XXXZZjcpHUDcqlQq1RgMWxxYVCoux1Qdau0JoaCjJbZI4kFd78oAsw8ECLT179faQZN5NUlKSzUBzV/JAUZV5WjktQX8mJycDIJW5tjSH1YxcVmg/X1CJv78/Y8ZewsYsLcWm+rmK/jirQZIkJkyY4GbpmpeUlBTmvD+HmTNn4l/sj2q5CmmPRI3Nrj1FISjXKlFsVtCpfSc+/vhj7rjjDnS6+pUkagqcGmmy7DxuxWp116N4y8dP64dkOa+an9Xs0T96S6B7j54cLtJgrSW8Kr1EQZFRFhlm5diNJzc9oUpFkuM8rZiWoD9DQkIICAhEUVbo0nlSme0LJjyqNTNx4kRMVvg7o26vmFWGdRk6Bgwc2CqKnSsUCiZNmsSXX37JqItGodirQLVcBdXb4LoXC0h7JFQrVPjr/XnggQd4f/b7dGgG77BTIy0iIoKdO3dW275z585W3/KlMWj9/MB6XmaPxdxqe9s1lG7duqE3yqTrnWcOHCpQ2Y8VVPGMFLop2KMQdP46Ue+PlqM/4+LjkAyuWfWK8uPj40UCSU2kpqaS0qE9f6bXrfN356rIK4Nx48Z5QDLvISIigqeeeoo333yTmMAYlGs8WK4jB1QrVCj2Khh54Ui++vIrLrvssmbrVuM0qOehhx7i3nvvZfLkyfbq2Lt372bBggW8/fbbHhOwpaHVapFKHP23stUsAmxdpEsXW6HCI4UqEgKNNR5ztECFv05Hmza19/VsLQQHBxMaFkpuYa5bxpeKJNq2bdsiss8aS0vRn3GxsRw+sxtXyq9KxmKgSm0+QTXGjL2E2bNnk1GiINbfuWf1rwwNgQH+DBo0yIPSeQ/9+/fns08/sycWkImtCK47vlrl3jPFQQURkRE89NpDDBw40A0TuYZT07BHjx589913yLLMzz//zIIFCwB49dVX7a8bSn5+PjfddBNjxozhpptuoqCgesxDeno6N954I5deeinjx4/n008/bdSc3oJWqwFrFSNNlsFqaZEBoe4kKSkJf50fxwqd90I8WqSmU+dOrbZfZ020a9cORaF7roeyUEm7tvUoXtcKcKf+9CTR0dFIRteaU0tGPQql0qc8hp7moosuAmBzlvO4WrMVtp3zY9jwEa3698HPz4/p06fz/vvvkxCRgHKtEmlHE8eqFYJqlQrFAQXjx43n888+9woDDeposB4ZGcndd9/N9OnTSUxMZMGCBbz77ruNXpedO3cugwYNYtmyZQwaNIi5c+dWO0apVPLII4+wZMkSvv32W7766isOHz7cqHm9AY1GA3KVJ6fy12p1/SvoC2zfj9TUjhwvrvm6ma1wqlhBWlonD0vm3bRv19623NnUpdLKwFpmFXWxquAu/elJIiIikM1GOD+OthYkUykhIaHi4agWYmJiSOuYytZs5yso+/NUlJhknyh+7Am6dOnC/HnzmTx5MopDCpSrleDa80ONSCckVCtVBFoDeeWVV3j44YcJCHBTY9EG4HS589ixYyxevJjFixcTGhrKuHHjkGWZzz//vNGTrly50j7O5Zdfzo033siDDz7ocEx0dLQ9UDIwMJD27duTmZlJSkpKo+dvTjRqNZJc1ZNmM9JUqkZ03W2lpKSm8uueXVhlqjVbP6tXYrba4j8EldhqX8k25daUVV8KKscXuFd/epKwsDAAJHMpsrJ+tdIkUynhkWHuFKtFMGjwED779BBFRokgTfWnpn9y1KjVKp/vMNCUaLVa7rvvPvr168cLL75A2coyzIPMENWAwWSQdtqWN7t178azzz7rlaWanD7qXHrppWzYsIE5c+bw9ddfc+ONNzbZk1FOTo7dAIuOjiY3t/YYmdOnT7Nv374ae+H5Gkql0rbEWUG5kaZUOl+2E9RMhw4dMFhkskqrfy9PFivtxwgqsXu6XKyqUBdSgeQ4fivHnfrTk1T0IZRMZfU+R2EuIzxMGGl10b9/f6xyZcHt89mdp6FH9x4iqawGhg0bxkcffkR8VDyqP1Vw2sUBLKDYoEBxUMHkyZN55513vNJAg1o8abNmzWLx4sX861//YtiwYYwfP77WtPLzmTp1KufOnau2/d5773VJQL1ez913381jjz3WIgq+KpVKpBqWO4WR5joVxTbPFCurBd+e0StQKhUkJiY2h2heS/v27W0tffIl5IQmXPPMh9DwULvnpbXTWP3pLVRtZVdflBYjISEh7hKpxdC5c2f8tBr25am4IMYxbbHYJHGqSMGY3qLGozOSkpL4YM4HPPzIw+zZsAfrBVZbp4K6sIDybyWkw4wZM7j22mvdL2wjcGqkjR49mtGjR1NSUsKKFSv45JNPyMnJ4emnn2b06NEMHTq01oE/+eQTp/siIiLIysoiOjqarKwspwGmJpOJu+++m4kTJ9ZYGNIXUSqVSFUCgqRyxS2WO12nbdu2AJwpUXB+a9t0vZLEhHgR63cefn5+JCQmcCr/VJP28FQWKOnYsWOTjefrNFZ/egvOWtnVisXYIh6o3Y1KpaJT584cObYNKHXYd6TA9tAuygfVTnBwMG+9+RYPPfwQ/2z6B4vaAnG1nCCDtEmCdHjggQe47LLLPCZrQ6nT/+7v789ll13GBx98wJo1a+jcuXONgf6uMHLkSHuG04IFCxg1alS1Y2RZ5vHHH6d9+/bcdNNNjZrPm7AteVT9cZSrbBe4QkBAAGGhIWSWVPdCZpSpSWrT1vNC+QCd0jqhLGhCz60F5EKZtLS0phuzheAO/elJKgKoJXPNZW6qIcvIJoMw0upJ585dOFlki5+tyvEi20O7uKfqRqfT8eorr9KhQwdUG1VQS+1laa+E4rSC6dOn+4SBBvUw0qoSGhrKlClT+Oyzzxo16bRp01i/fj1jxoxh/fr1TJs2DYDMzExuvfVWwNZWZeHChWzYsIFJkyYxadIk1qxZ06h5vQGFQuHYN1YWRlpjSExKIuM8I80qQ2aJJCqeOyE1NRWr3opLxa9qowAQSRp10lT605PYs9zOL8DtDNkCslW0uasnHTp0wGyFzBJH/X+qWElsTJQwduuJv78/r77yKoG6QJTrbUuZZDr+kw5KKPYqGDt2LFOmTGlegV2gWdbYwsLCaqx7FhMTw4cffghAv379OHDggKdFczuSJDkmDpR70kQB0IYRH5/AlsN7HLYVGCVMFlHx3Bn2Zck8ILbx40n5kuO4ghaDTqezxTBa6mmklR8njLT6UdEF5GyJkoTASndaRqmK5M4iCccVoqOjefSRR3nsscdQrqt5pSA2Lpb77rvPp35vRSCUh7F9Oapmd1bdLnCV2NhYcstkLFZQlj+M5pQp7PsE1akwpqQ8CTm2CeLS8sA/wJ+4uNqCQQS+iCRJaLRajPU00iRhpLlExYPk+RnqWaVK+oiVAJcZOnQoX375JXl5eTXub9++vc99N4WR5mFkWebIvl1krPwdpV8AiYMm4o8w0hpKVFQUsgz5RokIP5vBkVtupLWGhsQNISgoiNi4WNLz0pskeUCZryQtLU18h1sofn5+FFcx0vIPb+P0H19h0ucT3nkwSRf/C4Wy/KekfFlUlI2oH0FBQej8tOSWVZY4KTVDiUkW+quBJCUlkZSU1NxiNBkiEMrD7Nixg7MnjmI1GTAV5XJs+eeUlZWJmLQGEhVlq2KYZ6i8frnlr7217o030KVzF5T5TZA8YAHyoXOnzo0fS+CV+Pn5IVltHQfMJUUc+3U2xoJsZLOJnF1ryNqy1H6sVN6ZQKfTNYusvkhEeDgFxkr9VfE6IiKiuUQSeBHCMvAwZ86ccdwgWykqKmoeYVoAFeVbCgxVlZyEUqmw13gSVCctLa1pkgcKQLbKdOok2m+1VHR+Oig30kqyTiCbHZc+9WcPVb4pP0540upPcGgoxaZKL3TFa6G/BCCMNI9TzQ2rUBAUFCQ8aQ2koiJ6gbFSyRUaFYQGB4vlt1qwG1W1N/uoEylXchxP0OLQ+evsHjL/mLZIKsfagwEJlVm9kjDSXCYwMIhSS6X+LzVL5dtFZqdAGGkep1+/fiS0aYdC7YcmOJJ2F/+fbTlBGBQNosJIKzY7PomGlG8X1ExFDJmU18jvXR4EhwQTExPTNIIJvA6dnx+SbDO+VLpA2k24A21oDAqVhsgeFxLdd2zlwRZhpLmKVqvFaK38KS6z2O5JcQ0FIBIHPI5SqaRDp67EXPMMAFJJHuw6JjxpDUSr1aJRqyk2VV6/YpOCoGDRlqY2/P39SUxK5GTuyUYlDyjzlHTp3EU8ZLRgdDodinIPGUBoSh9CU/rUeKwkEgdcRqPRYLJW3j+W8kocoluKAIQnzeM46zggfuQaTmCAv32JAKDEoqxsZyNwij15oKE2mtnWaUAsdbZsdDqdfRmzTiqWRX2szEFzolAoqNpwoOK16OcsAGGkeZzzi9lKouNAowkICKCkipFWapEqK6ULnNK5c2espdbz2wbWnzxAto0jaLnodLp6dxyo8KSJ7M76Y/tNqL5dlpuut67AdxGWgYdRKpUgV31uEkZaY9EFBFBWxUgrM0viSb4eNDZ5QCQNtA78/f2hvr07LSZUajUqlYikqS9WqxVFlYWUipfCSBOAMNI8js1Iq3LzWW0Gm1BqDUen88dgqXxvMMsiJqYedOjQAYVSYTe2XCYPIqMiCQsLa1rBBF5FQEAAssVs11W1IVmM4gHJRSwWi4ORpix/bTbXc4lZ0KIRRpqHUalU53nSbK9F/EHD8fPzw2i1XT+rDCarCFyuD1qtlvbt2zc4w1OVp6Jrl65NLJXA27CHDljq9qbZjDQRauAKJpMJlVT54F7R3k4YaQIQRprHsRlpVdw+5U+nIpOn4Wg0GoyyzdAwltu/Wq22GSXyHbp07oIiX+F68oABrMVWsdTZCqio1yXVw0jDbCRYJO24hMlkQq2ofHBXK2w3o9FYzyVmQYtGGGkeRqVSIVdZNpDKDTbhSWs4Wq3WnsJuKq8xJIze+tGpUydkowzFLp6YV3m+oGVTkSktmetuT6GwGAkJEZXyXcFgMKCSqhpptv+FkSYAYaR5HLVaDVZLZVxa+dKnRqNpRql8m6p1hszll1V40upHhZHl6pJnxfEdO3ZscpkE3kVIiK3mYH2MNKXFYD9eUD+MhjI0VX6JhSdNUBVhpHkYuzFWEZdmtXnShOen4ajVaszll9NsFZ40V2jbtq3tWrmY4SnlScTFx4l6dK0Au9FlLqv7YHOZMNJcxGAoQ6OsjDeoMNgMhsY21hW0BISR5mHsRlq5cSaV/y88Pw1HpVJhKddxFcaayJatHyqVig4pHWxxaS6gzLd1GhC0fCpar0mmOgrqWS3IJoP9eEH9MBqM9iVOEJ40gSPCSPMwFcaYvYJ3eUyaWO5sOA6etHJjTRhp9adTWiek/JoLataIAax6q1jqbCUEBQWhVKqQTLV70ir2i5IsrmE0Ge2GGYBaKYw0QSXCSPMwdo9ZuQcNq2hI3FhUKhVmq02xieVO10lLS0M2uZA8UJ40IIy01oEkSYSEhiKZSmo/rnx/eHi4J8RqMZhNZlRVPWnl4aEmU/26PAhaNsLd4GG0Wi0nTpwgfdvjKHVBtOnSlxjEcmdjUKlUWKy2XAyL8KS5TGpqKgBSvoQcVLc7TcoXSQOtjajICLIybFZ84Yk9nFn7LabifMI7DyZh+DVICoUw0hqIyWxGKeqkCZwgfsk8zMqVKzl58iQAJn0Bh9adJXzAAOH5aQRGo5ETJ05w6zd5dIoPQZaDhJHmAu3atUOpVGLNs0JSPU7Ih6joKJE00IqIjo7mwKls9GV6ji54F2v50mbWliVogsKJ7jsGyVhiP1ZQfywWC/tO5XL7P9nEB6v518BI+3aBQPySeZh//vnH4b1stVJSUmJrsitoEB988AEnT57kJLB8fxHJyUphpLmAWq0muW0yR/KPINcjME1VoCKtR5oHJBN4C1FRUUhGPSUZx+wGWgVFJ/eWG2l6FAqFiElzkbPp6fy+84j9/R+HionvHCV6dwoAEZPmcXr27Fltm3jybDi5ubns2LHDYVtWVpYw0lykY2pHlIX1KKhsBmuh1b5EKmgdREdHI5sN6MJjkRSO3xP/mLYASMZiwsIjRGFuF0k/m+7w/miOgaKiomaSRuBtCCPNw9x8883ExMQgSQqUukDa9xxIVJQw0hpKQEBAtYbOarVaGGkukpKSgrXUCnWVwiqsPF7QeoiJiQFAo1KQfMktqPyDQZIITbuAmP6XAqAw6ImLjWlOMX2S8+ORJWzZ/mJ1RQBiudPjhIWF0bFjR5JG/R+W2G74HVxGYKBoSNxQtFotU6dOZfbs2QDoNIrKAq2CetOhQwfbiwKglkTjiqQB+/GCVkGFkaYwFBPeZTBhnQciW8woVJWlg1QmPbGxXZtLRJ8lNTWFwrwsCkts2ZxTB0VyWOUnPJICQBhpHicgwGaQKZGxKhQoLEYCzvMECVxjwoQJbNmyhf9LziYgOIhPDoYIT5qLVBhdUr6EHFNLLEwBaP20xMbGekgygTdQ8feWDLZlOElSIFUx0LBakQ1FxMXFNYd4Pk1IcDAzxvWkW8A54oLVRAT5ceefooyQwIZY7vQwGo0GhVIJZluhQoXVRGBgYDNL5dtoNBq0Wi392gWhLjfORHFg1wgNDSU4JNi+nOkMqVCiXbt2KBRCdbQmIiIiUGs0KAw1x0pJxmKQZWGkNQCNRoMsKRjaPpAOkVp7H2JRlkkAwkjzOJIk4e8fgGSxGWmSxWj3rgkaRoVBZrZK9s4D4inUdTp06ICisHaVoCxS0r5dew9JJPAWJEkiNjbO7kmrtr98e0JCgifFahFo/fwwWCrjz4zllTfEg6YAhJHWLAQGVhppmI3Ck9ZIKpSZyYp4Cm0E7du1RyqqpT2UAaylVtq3F0ZaayQpMQGVsWYjTVFmc8HGx8d7UqQWgX9AAGVVjLTS8tfnJ0QJWifCSGsGggKDwGywxXFYxHJnY6kw0owWCZPVcZug/rRt29bWHspZH+3CyuMErY+EhASksiJba4/zkAyFqFQqoqKimkEy3yYgIJBSS+VPcalZKt8uVlgEwkhrFoKDg1BYTVDuTfv/9u43pqmz7wP49zotlWJpgWIpYHEx0eh8NjXL5nRTY42yxTENyCvjoi80Wfw74oxur6aLm4uLPs8LzTAxmhj3wjhlukw3XTYcW26zZWYhMRkvtig8CpkihUJ7+ufcL8o5FNHbe/TQ61C+nzfQP8CvBK5+z/WXO7dnJr0nTU3w7M7RmjZtWuqTJ8xLEyEx/Hk0oVRWVkJLxCBiI1O8EgnBX17BuYqj4HK50B8fWskZHgxpvHgngCFNCpfLBSWhQiSixm0aPaMnLSkQSwrk5dn5ZjEKgUDqTCjR+4T9mXqBPEcee0smqKlTpwIARKRnxGN2tReBqZyPNhputxt98aH/uXBMGPcT8Z1MApfLBZFQIQZXeDKkZSY/P7WxVzQhoCaBSRzqHJWSkhI4C5zAEzY7F70CgUCAAXiC0hcF6PPPDJoGEek1Qhz9M263G32qhuTgKHJfTDHuJ2JrK4HL5UrNSRsc7uTcg8zoiwRiyVRQy8/nooHREEKgKlAF0ff4njRbvw3TqjjUOVGVlZVBsdkgosNDmoj1Q0vEGNJGyePxQNOGetBCqkCBM5/zagkAQ5oULpcLWiJuzO3gnLTMpPekRRMCkxwMaaMVCARgCz9mp/MkkOxL8o14ArPb7Sgr84/oSRODt7n9xujoB9L3GiFNQVGRR2ZJZCEMaRLow5tKtG/YbRodvSdNTQioCSDf6ZRc0fg1depUJMNJIPnIA/0AknwjnuiqAlNhe2QbDj20McCPTklJCQCgR1UGPwoUl3hllkQWwpAmgR7KhMqQZgaHwwFFCEQTQDQpGNIyUFFRkdonLfzIA31pj9OEVVlZmQpladtwiGgIis0Gn88nsbLxS+9J61EHe9LidpQwpNEghjQJjJAW7YUQAk6GiowIkZqHlhruVOB0chPI0TJC2CMhTYTF8MdpQqqoqIAWV1NzagcpkRB8vjKelztKek9aKKr3pClGcCNiSJNAXyigqGE4Cwq4Ws4Ezvx8RBIC0aRizFGjf04/e1EPZYZwak5SaWmphKrIKowVnmmLB2xqH6oCHOocLbfbDZtNQbeaOtauN6oZwY2I6UCCoZ60MI/+MEn+4Pl30YTg7zQDXq831SPy6HBnGCj1lfKCYoIzQnxkaF6aEu3lweoZUBQFxUUe9EQVhAaHPL1eDndSCltcCfQQIZIxuCZzPpoZnAUFiCT0LTjYkzZaiqKgdEppaqFA+v39CirLuWhgotPDmKIftB5XocUiDGkZKvGWokdVjMUD7EkjHUOaBOn7onGPNHM4nQWIJgQiCXCOX4bK/eVQ+oc3DUpEQVlZmaSKyCqcTicK3R6IwZAmBld6+v1+mWWNeyUlXvTEbHg42JPGkEY6hjQJ0ofjXC6GNDOketIUROMaQ1qGfD4flEha05AEkv1Jrt4jAEC532+sTNe3EWJIy0xJSQlCMZuxeIALB0jHkCZBXl4ebLbUSigOzZkjPz8focHjVBjSMuPz+ZDsT6a24gCASOoDz+wkAPD7y2CPpcbDRTQ1eZG9rJkpLi5GT1QzhjsZ0kgnZc30w4cP8c4776CjowOVlZU4cuQIPJ7hOyxHo1GsW7cOqqoikUiguroa27dvl1HumJiUn4/+cB8nuZvE6XSiJ5oaKmDwzcyUKVNSAS0CwAljfhpXdhKQCmQi+nPqzE61DzabnaEiQ8XFxUgkgXv9CvInOXihSQYpPWmNjY1YuHAhvvnmGyxcuBCNjY0jnuNwOHDq1Cl8+eWXuHDhAq5fv46bN29mv9gxov8TMlCYw+l0IpYc+pxGz1hZNtiDxp40SjdlyhRoiRiQUKGoYZR4vVz1myG9k+Juvw1FHh4JRUOk/Gddu3YNa9asAQCsWbMGV69eHfEcIYQxqT4ejyMej0OIxx/8PB7p4YyBwhzpYZfBNzNGSEsdLQsR4bYANEQP60Lth4j1wzeFPayZ0kNaR1iBu6hIbjFkKVJC2v37941JyD6fDw8ePHjs8xKJBFavXo1FixZh0aJFmDt3bjbLHFP6eZP6R8oMQ5p59DCmhzMMpLbmeHRKAk1Mxt9HrB+2+AB7WE3gdrsBAP1xBR5PkdxiyFLGbE7ahg0b8Pfff4+4f+fOnf/197DZbGhqakIoFMKWLVvwxx9/YObMmSZWKY8y+P7HQGGO9B5J/k4zU6Rfyesn/0SBQk8hh7QIwND2ECI2AKEOsIfVBHpIe/RzojELaSdPnnziY16vF11dXfD5fOjq6nrqnjButxsLFizA9evXcyak6UO3DodDciW5Ib1HkiEtM5MmTYKzwIlwJLVyT0QESoq5bxOl6O21Eu2DFo9y0YAJ9FNoAKCwsFBiJWQ1Ui6Ng8EgLly4AAC4cOECli9fPuI5Dx48QCiUOh8uEongp59+wvTp07NZZlZwuNMcHO40l6fIY/SkCZUhjYZMnjwZNpsdykA3AG4XYYb0kMYNzimdlJC2efNmtLS0YOXKlWhpacHmzZsBAJ2dndi0aRMAoKurC2+99RZqamqwdu1aLFq0CMuWLZNR7phiT5o50sMuf6eZKykugRjc0kRRFb4Rk0EIgUK3G2LgIQBwrqIJ7Ha7MbrCkEbppOyTVlxcjFOnTo24v6ysDMePHwcAzJo1y+hty0WaltopNC8vT3IluSE9mLEnLXNFniIo/68giSQQ5RsxDVfk8aD79h0AnENlNu6dSek4E1gS/arJbpeSk3NOek8ah5Az53a7gQFA3BZIqkm+EdMwHo8HIhk3PqfM6Rfu3JaJ0jGkScahOXMwpJmrsrISWkSD8q9UE1FRUSG5IrISt3tocjsnupvjf+Y8C4DnoNJw7MaRpKqqCm1tbbxqMkn6sLHNZpNYSW5Yv349gsEgkskk7HY7QxoNkz5vinOozHHkf/8P/f39Q1vgEIEhTZodO3YgGAxizpw5skvJCek9krl0MoUsiqIgEAjILoMsSg9miqJwDqhJHA4HR1ZoBIY0SYqKirB48WLZZeQMLsAgyh49pE3Kz+dFEdEY4pw0ygkMaUTZo0/TsCmcWkA0lhjSKCdwmIAoe8rLywGAQ+JEY4zDnZQTuJUJUfYEg0E8//zzXNlJNMb4zkY5gSGNKLtKS0tll0CU8/jORjlh8uTJqKur4/ALERHlDIY0yglCCOzYsUN2GURERKbhwgEiIiIiC2JIIyIiIrIghjQiIiIiC2JIIyIiIrIghjQiIiIiC2JIIyIiIrIghjQiIiIiC2JIIyIiIrIghjQiIiIiC2JIIyIiIrKgnDwWqqOjA7W1tbLLIKIs6ejokF2Cadh+EU08T2rDhKZpWpZrISIiIqKn4HAnERERkQUxpBERERFZEEMaERERkQUxpBERERFZEEMaERERkQUxpEnQ3NyM6upqrFixAo2NjbLLGff27t2LhQsX4o033pBdSs64e/cu1q9fj9dffx2rVq3CqVOnZJdEFsI2zFxsw8yVU+2XRlkVj8e15cuXa7dv39ai0ahWU1OjtbW1yS5rXLtx44bW2tqqrVq1SnYpOaOzs1NrbW3VNE3Tent7tZUrV/LvlDRNYxs2FtiGmSuX2i/2pGXZ77//jmnTpiEQCMDhcGDVqlW4du2a7LLGtRdffBEej0d2GTnF5/Nhzpw5AACXy4Xp06ejs7NTclVkBWzDzMc2zFy51H4xpGVZZ2cn/H6/cbusrGzc/vHQxNDe3o5bt25h7ty5skshC2AbRuPJeG+/GNKyTHvMAQ9CCAmVED1dOBzG9u3b8d5778HlcskuhyyAbRiNF7nQfjGkZZnf78e9e/eM252dnfD5fBIrInq8WCyG7du3o6amBitXrpRdDlkE2zAaD3Kl/WJIy7LnnnsOf/31F+7cuQNVVfHVV18hGAzKLotoGE3T8P7772P69OnYuHGj7HLIQtiGkdXlUvvFA9Yl+OGHH3DgwAEkEgnU1dXh7bffll3SuNbQ0IAbN26gu7sbXq8X27ZtQ319veyyxrVffvkF69atw8yZM6EoqWu5hoYGLF26VHJlZAVsw8zFNsxcudR+MaQRERERWRCHO4mIiIgsiCGNiIiIyIIY0oiIiIgsiCGNiIiIyIIY0oiIiIgsiCGNLOfgwYN47bXXUFNTgy1btiAUCgEAWlpaUFtbi5qaGtTW1uLnn382vubw4cNYunQp5s+fP+x7qaqKnTt3YsWKFaivr0d7e/uwx/v6+rB48WLs27fPuG/Pnj0IBoNYvXo1Vq9ejVu3bo3hqyWiXMM2jMzCkEbSaJqGZDI54v5XXnkFly5dwsWLF/HMM8/gs88+AwAUFxfj2LFjuHjxIj7++GPs3r3b+Jply5bh7NmzI77X2bNn4Xa78e2332LDhg04dOjQsMePHDmCl156acTX7d69G01NTWhqasLs2bMzfalElIPYhtFYs8sugCaW9vZ2bNq0CQsWLMDNmzdRWFiI7u5uCCFQV1eHDRs24NVXXzWeP2/ePFy+fBkA8Oyzzxr3z5gxA6qqQlVVOBwOzJs377E/77vvvsPWrVsBANXV1di3bx80TYMQAq2trbh//z4WL16M1tbWsXvRRJQz2IZRNrEnjbLuzz//xJo1a/Dhhx/CbrcbV5y1tbUjnnvu3DksWbJkxP1XrlzB7Nmz4XA4/uPP6uzsRHl5OQDAbrcbDWoymcTBgweHXcmmO3z4MGpqanDgwAGoqjqKV0lEuYptGGULQxplXUVFBebNm4dAIIA7d+5g//79aG5uhsvlGva8Y8eOwWaz4c033xx2f1tbGw4dOjRsDsaTPO5ADSEEzpw5gyVLlhiNX7qGhgZcvnwZ586dQ09PDxobG//hKySiXMY2jLKFw52UdQUFBQAAj8eDpqYm/Pjjjzhz5gy+/vprfPTRRwCA8+fP4/vvv8fJkychhDC+9t69e9i6dSsOHjyIqqqqp/4sv9+Pu3fvwu/3Ix6Po7e3F0VFRfjtt9/w66+/4vPPP0c4HEYsFkNBQQF27doFn88HAHA4HKitrcWJEyfG4LdAROMV2zDKFoY0kubBgwdwOByorq5GVVUV9uzZAwBobm7G8ePHcfr0aTidTuP5oVAImzdvRkNDA1544YX/6mcEg0GcP38e8+fPx5UrV/Dyyy9DCIFPP/3UeM4XX3yB1tZW7Nq1CwDQ1dUFn88HTdNw9epVzJgxw8RXTUS5gm0YjTWGNJKmq6sLe/fuNVZHNTQ0AAD2798PVVWxceNGAMDcuXOxb98+nD59Grdv38bRo0dx9OhRAMCJEyfg9XrxySef4NKlSxgYGMCSJUtQX1+Pbdu2Ye3atXj33XexYsUKeDweHD58+Kl17dq1C93d3dA0DbNmzcIHH3wwRr8BIhrP2IbRWBPa4wa8iYiIiEgqLhwgIiIisiCGNCIiIiILYkgjIiIisiCGNCIiIiILYkgjIiIisiCGNCIiIiILYkgjIiIisiCGNCIiIiIL+jdi8RtMc1uFUwAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# genepair = 'RP1-29C18.10;ZNF501'\n",
+ "# genepair = 'CCDC15;UNC5B'\n",
+ "# genepair = 'GSTM3;RP1-29C18.10'\n",
+ "# genepair = 'MMEL1;SARS2'\n",
+ "genepair = 'AC005076.5;ARHGEF19'\n",
+ "gene1, gene2 = genepair.split(';')\n",
+ "\n",
+ "if datasetname == 'ng':\n",
+ " ut_celltype = data_sc[data_sc.obs[dataset.celltype_id]==celltype]\n",
+ "else:\n",
+ " ut_celltype = data_sc[(data_sc.obs[dataset.celltype_id]==celltype) &\n",
+ " (data_sc.obs[dataset.timepoint_id_col]==dataset.chosen_condition['UT'])]\n",
+ "\n",
+ "ut_celltype_df = pd.DataFrame(data=ut_celltype.X.toarray(),\n",
+ " columns=ut_celltype.var.index,\n",
+ " index=ut_celltype.obs.index)\n",
+ "selected_expression_df, ut_zscore_df, ut_zscore_p_df = get_individual_networks_selected_genepairs(\n",
+ " data_df = ut_celltype_df,\n",
+ " data_sc = ut_celltype,\n",
+ " individual_colname = dataset.individual_id_col,\n",
+ " genepair = genepair,\n",
+ " fillna=False\n",
+ ")\n",
+ "\n",
+ "ut_t = ut_zscore_df.T\n",
+ "ut_t['gt_sampleid'] = [gte_dict.get(name) for name in ut_t.index]\n",
+ "ut_t = ut_t.set_index('gt_sampleid')\n",
+ "common_individuals = list(set(gt.columns) & set(ut_t.index))\n",
+ "gt_t = gt[common_individuals].T\n",
+ "gt_t['genotype'] = [item.split(':')[0].count('1') for item in gt_t[0]]\n",
+ "concat_df = pd.concat([gt_t, ut_t], axis=1).replace([np.inf, -np.inf], np.nan).dropna()\n",
+ "print('Not Imputed', spearmanr(concat_df['genotype'], concat_df[genepair]))\n",
+ "\n",
+ "ut_t_imputed = ut_zscore_df.fillna(0).T\n",
+ "ut_t_imputed['gt_sampleid'] = [gte_dict.get(name) for name in ut_t_imputed.index]\n",
+ "ut_t_imputed = ut_t_imputed.set_index('gt_sampleid')\n",
+ "common_individuals_imputed = list(set(gt.columns) & set(ut_t_imputed.index))\n",
+ "gt_t_imputed = gt[common_individuals_imputed].T\n",
+ "gt_t_imputed['genotype'] = [item.split(':')[0].count('1') for item in gt_t_imputed[0]]\n",
+ "concat_imputed_df = pd.concat([gt_t_imputed, ut_t_imputed], axis=1).replace([np.inf, -np.inf], np.nan).dropna()\n",
+ "print('Imputed', spearmanr(concat_imputed_df['genotype'], concat_imputed_df[genepair]))\n",
+ "\n",
+ "# dosage_dict = gt_t['genotype'].T.to_dict()\n",
+ "# selected_expression_df_withsample = pd.concat([selected_expression_df,\n",
+ "# ut_celltype.obs[[dataset.individual_id_col]]],\n",
+ "# axis=1)\n",
+ "# selected_expression_df_withsample['gt_sampleid'] = [gte_dict.get(name) for name in\n",
+ "# selected_expression_df_withsample[dataset.individual_id_col]]\n",
+ "# selected_expression_df_withsample['genotype'] = [dosage_dict.get(gt_sampleid) for gt_sampleid in\n",
+ "# selected_expression_df_withsample['gt_sampleid']]\n",
+ "\n",
+ "sns.set_style('white')\n",
+ "refallele = gt['REF'].values[0]\n",
+ "altallele = gt['ALT'].values[0]\n",
+ "snp_name = f'{snp_id}_{altallele}'\n",
+ "\n",
+ "_, axes = plt.subplots(1, 2, figsize=(10, 5), sharey=True)\n",
+ "ax1, ax2 = axes\n",
+ "\n",
+ "im_coef, im_p = spearmanr(concat_imputed_df['genotype'], concat_imputed_df[genepair])\n",
+ "sns.violinplot(x=concat_imputed_df['genotype'], \n",
+ " y=concat_imputed_df[genepair], \n",
+ " ax=ax1,\n",
+ " inner=None)\n",
+ "sns.swarmplot(x=concat_imputed_df['genotype'], \n",
+ " y=concat_imputed_df[genepair], \n",
+ " ax=ax1,\n",
+ " color='black')\n",
+ "ax1.set_title(f'Imputed r={im_coef:.2f}; pvalue {im_p:.4f}')\n",
+ "# ax1.set_xticklabels([f'{refallele}{refallele}', \n",
+ "# f'{refallele}{altallele}',\n",
+ "# f'{altallele}{altallele}'])\n",
+ "ax1.set_xlabel(snp_id)\n",
+ "\n",
+ "coef, p = spearmanr(concat_df['genotype'], concat_df[genepair])\n",
+ "sns.violinplot(x=concat_df['genotype'], \n",
+ " y=concat_df[genepair], \n",
+ " ax=ax2,\n",
+ " inner=None)\n",
+ "sns.swarmplot(x=concat_df['genotype'], \n",
+ " y=concat_df[genepair], \n",
+ " ax=ax2,\n",
+ " color='black')\n",
+ "ax2.set_xlabel('')\n",
+ "ax2.set_title(f'Not Imputed r={coef:.2f}; pvalue {p:.4f}')\n",
+ "# ax2.set_xticklabels([f'{refallele}{refallele}', \n",
+ "# f'{refallele}{altallele}',\n",
+ "# f'{altallele}{altallele}'])\n",
+ "ax2.set_xlabel(snp_id)\n",
+ "plt.savefig(example_savedir/f'{snp_name}_ref{refallele}_alt{altallele}_{gene1}_{gene2}.{celltype}_{datasetname}.full.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/Beeline/miniconda/envs/scpy3.8/lib/python3.8/site-packages/seaborn/categorical.py:1296: UserWarning: 42.5% of the points cannot be placed; you may want to decrease the size of the markers or use stripplot.\n",
+ " warnings.warn(msg, UserWarning)\n",
+ "/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/Beeline/miniconda/envs/scpy3.8/lib/python3.8/site-packages/seaborn/categorical.py:1296: UserWarning: 7.1% of the points cannot be placed; you may want to decrease the size of the markers or use stripplot.\n",
+ " warnings.warn(msg, UserWarning)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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jSlTpvDiiy9ar69VqxaRkZHs2rWL7777jhMnTvDBBx/c8bncatiwYVSuXBlfX19eeOEF62sUFhbG1q1byczMBCyFWZ8+fazXDRw4EC8vL3Q6nfVTcmpq6l099p1+Tre7m9cuPT0917ne3t4251apUoWDBw+yb98+XnrpJZtPnQ8++CAGg8H6iVuj0fDkk0/a3G/NmjUcOnSIjz/+mBYtWtzVcxclZ8KECfz444/W5vMcf/zxB9WrV6dfv35otVr69OlDrVq1bGqe71a3bt1o2LAhrq6udOvWDVdXV/r162ctA0+dOmVzfn7vv7v1119/WZsfdTodVatWZfDgwdbka/369YwZMwZfX18qV65cqH6A4eHh+Pr64ubmBlh+3/Mr8wpK4DIyMmw+SHl7e5ORkZFnX67CvMfDwsI4fPgwGzZsYMiQIXf9wWncuHF4eHhQt25dBgwYYP2gGhYWZv1eURTWrVtn/TBevXp1OnTogE6no3z58owYMYI///zzrh4X7vxzut3dvHYajYa+ffvyyiuv0KhRI15++WVmzJiBh4cHAJ06dSIiIoK0tDT++ecffv31V2v5DjBz5kxeeuklPD09C3wOu3fvJjIykgkTJtz1878X2hJ5FJHLrW+snEIgICDAus/V1dXmjVmpUiXr956envj4+BAbG3vXb9CEhAQyMzMZMGCAdd+tfddiY2Np2LCh9VhQUNAd71m5cuW7igHg4MGDPP/884AlWVi7di0eHh65mvzS0tIKfNNkZWUxZswYmjRpYtMkWqFCBSpUqABYmltfffVVRo8eXajmnhy3Pq8qVaoQGxsLWAqs2rVrs23bNh5++GG2bt1q/dRuMpmYO3cu//vf/0hISECttnxGSkxMzFX4FuROP6fb3c1r5+npWehzfX196d+/P3379mXHjh1otVpeeukl6tWrxxdffIGiKMyePZtXX32Vzz77zOZaV1dX+vTpQ8+ePalfv77Np2VROjzwwAM89NBDREREULt2bev+2NhYqlSpYnNulSpVbAaz3K3by7xbyzs3NzebGnLI//13t6Kjo4mNjbV2IQHL+zRnOzY2Ntdj3cm9lHkLFiyw1vqHhYVZE4hby/m0tDQ8PDxQqVS5rs/rPZ6enp7n+7ZGjRrUqVOHd955h88//7zQMd76vIKCgvj7778B6NGjB++++y4xMTH8888/qFQq6+sXHx/PzJkzOXjwIOnp6SiKYm3KvRt3+jnd7m5euz179jBnzhy+//57GjRowPHjxxk7diwLFy6kfv36TJs2jXfffZcePXrg6+tL7969rR8Ytm7dSnp6Or169Sow/qNHj/Lyyy/z3//+l5o1a971878XksA5iOvXr1u/T09PJzk5mcDAQFxdXQFLIpPzaeTGjRvWc2//Zfbz88PNzY21a9fa9HPKERgYaFOzd/Xq1TvGdvtjTJ8+Pd+atpxkrWXLlrn6CdSpU4fTp09bty9fvozBYKBGjRp53kuv1zNu3DgqVqx4x8RMpVIVOEIpL7e/DoGBgdbtPn368Pvvv2M2mwkJCbE23a5Zs4YtW7awePFigoODSU1NpVWrVnk+tru7u02ftlt/bnf6Od3ubl67kJAQLl++TFpamvV35vTp0za1iLcymUzEx8eTlpaGr68vZ86c4e2337Z+eh06dGiuGrhbGY1GLl++LAlcKTVhwgT69+/PyJEjrfsCAwNzvfevXbuWq6m8OOX3/ivofQO5y6PKlSsTHBxs0wR4qwoVKnDt2jXq1KmT63Hzc/tj9O7dO9+yMidZGzNmjLVPXo6c923jxo0By/swJ47b1alTx6aPV0ZGBpcuXcq3uc5oNNq04hTGtWvXrIn8ra95uXLl6NChA+vXr+f8+fP07t3b+hp8/PHHqFQqfvvtN/z8/Ni8eXO+5fHtP7u4uDjr93f6Od3ubl67U6dO0bJlSxo1agRA48aNady4MXv27KF+/fr4+vry8ccfW8//5JNPrPfdu3cvx48fp0OHDoBl0IJGo+Hvv//myy+/BCx9Al944QVmzZpFu3btChV/UZAmVAexfft2Dh48iF6v57PPPqNJkyZUrlyZ8uXLU7FiRVavXo3JZGLFihU2Awn8/f2JiYlBr9cDoFarGTRoELNmzbKOwImJibH2M3j00UdZtWoVUVFRZGZm3tWntxwzZsywGf1561dBzSBhYWFs27aNgwcPkpGRwWeffUa3bt1sqslzGAwGJkyYgKurK7Nnz7bWdOXYv38/V69eRVEUrl27xpw5c+jatav1+Lx58+7YVLJkyRKuX79OUlKStUN1jl69erF7925+/vlnm8QnPT0dnU6Hn58fmZmZfPLJJ/neP6fPxqlTp8jOzrbpN3Knn9P9vHY1a9akfv36zJ8/n+zsbDZt2sSZM2fo0aMHABs3buT8+fOYzWYSEhJ4//33efDBB/H19QUs/UmWL19OVlYWWVlZLF261NqX5OjRo9bf06ysLCIiIoiLi7MWhqL0qV69Or169bIZsdilSxcuXrzImjVrMBqNrFu3jqioKB566CHA0lpwPwOWCiO/919B7xuwlHlXrlyxbjdu3BgvLy8iIiLIysrCZDLx999/c+zYMcAyKCkiIoLk5GSuX79+TyM3165dm2+ZV9CHy759+7J48WJiYmKIiYlh8eLF+Y6W79atG2fPnmXDhg1kZ2czf/586tata024li9fbi0roqKiiIiIsEkmnn766Tv2Tfviiy/IzMzk7NmzrFy50qbMCwsLY/Xq1WzYsMGmL3N6ejoeHh6UK1eOmJgYvv7663zvX79+fbZv305SUhI3btzgu+++sx6708/pfl67Ro0acfDgQWsz/cmTJzl06JC13Lp06RKJiYmYTCa2b9/O0qVLeeGFFwB46aWX2LBhA5GRkURGRhIaGsqgQYOsfTb//vtvRo0axZtvvkloaGiBr29RkwTOQfTp04f58+dbRzt+9NFH1mPvvvsu33zzDW3atCEqKopmzZpZj7Vt25aQkBA6duxImzZtAHj11VepXr06gwcPpnnz5gwfPtw6erNLly48++yzPPvss3Tr1o22bduW2HPMqfJ/5ZVXaN++Penp6TbTV0yfPt3aYfrIkSNs27aN3bt306pVK+tcbzkDNU6ePMkTTzxB06ZNGTJkCA888ABvvPGG9V7Xrl2jefPmBcbTp08fRo4cySOPPELVqlWtb2iw1FDkDA65tZDr168fVapUoVOnTvTu3ZumTZvme/+aNWsybtw4hg8fTvfu3XP1FSvo53Q/rx1YPmEeP36cVq1aMWfOHP773/9Svnx5wJIojho1iubNmxMWFoZarbZJ5GfNmkV0dDRdunShc+fOXL582dq/UK/XM2PGDNq0aUPnzp3ZsWMHERERhapFFPYzbtw4myZMPz8/FixYwOLFi2nTpg1ff/01CxYssP6OPPPMM2zYsIFWrVoxc+bMYokpv/ffnd43AwcOJCoqipYtWzJ27Fg0Gg1ffvklp0+fpmvXrrRt29Zmrq4XX3yRKlWq0LVrV0aOHEnfvn2L5fnkZciQITz88MOEhYURFhZGly5dbAYe9O7dm99++w2A8uXLM2/ePObOnUurVq04duyY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jdRsMg2mMttfuTDuaRSqjJ4qei4uLmzbto0PPviA6Ohohg0bxuDBg+0dlkPz9vbmt99+IzU1FXd3d7TagqfIcNNpqOLiRlKGnuQ7rLFaFqlUKmr4e1LD3xM3Fw3ebrLu6t1y5nJ15syZBAQEsHnzZpo2bcprr71m75Ac3ksvvcQLL7yAwWDA09PT3uEUm4xsIylZRjL1Rqlluwv5/kW7fPkyY8aMyfU9SNNecalRowYLFiywdxhO5caNG6xdu5bg4GC6du16xz+SKpUKP09XPFy1JKYbpEARRcqZy1WNRsPLL79sM3BI3B+TycTGjRtJSkoiLCwMHx8fe4dUpPRGM0kZetKzpZy9F/kmcF988YX1+5EjR9ocu31biNLor7/+omPHjqSkpADwxBNP8MsvvxTqWlethko+GtKzjSRlGMg2Sod9cf+kXBWFZTabeeSRR/jjjz8AqFSpEvv376datWr2DawIKIpCSqahTM7NWZTyTeBat25dknEIUeTmzJljTd4Ali5dyvTp020GMtyJp6sWD52G1CyDjH4S903KVVFYW7dutSZvANevX+fLL7/k/ffft19QRSDLYCIhTU+WfCi+b/kOYti8eTM//fSTdXvQoEF07dqVrl278r///a9EghPifqSnpxdq352oVCrKueuo4utOORmtKu6DlKuisIqq/CoNTGaF1GwDMclZXEvOlOStiOSbwH399deEhoZat/V6PStWrOCHH37g559/LpHghLgfY8aMQa3+91e8devWtGzZ8p7vp9WoCfB2pWI5N1w0ksaJuyflqiisHj16EBISYt12c3Pjueees2NEd8dsVkjLNhCbksWVxAxupGSTrjfKqNIilG8TqsFgoHLlytbtFi1a4Ofnh5+f333P7ZOUlMSkSZOIjo4mKCiITz/9NM/Oma+99hp//PEH/v7+/P7773d9vSjbHnnkEfbs2cOyZcsIDg5m1KhRRTLSz8NVi06rJi5NT4beWASRirKiOMtV4Vzc3NzYu3cvCxcuJCkpiaeffpqGDRvaO6w7ytKbSM02klGGFpW3l3xr4G7tOwQwffp06/cJCQn39aARERG0a9eOjRs30q5dOyIiIvI8b8CAAXz99df3fL0Qbdq04eOPP2bSpEl4e3sX2X21GjWVfNyo4OWKVpZyEIVUnOWqcD4BAQHWJRZLe/KWZTBx/WYTaWqW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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "_, axes = plt.subplots(1, 2, figsize=(10, 5), sharey=True)\n",
+ "ax1, ax2 = axes\n",
+ "\n",
+ "im_coef, im_p = spearmanr(concat_imputed_df['genotype'], concat_imputed_df[genepair])\n",
+ "# sns.violinplot(x=concat_imputed_df['genotype'], \n",
+ "# y=concat_imputed_df[genepair], \n",
+ "# ax=ax1,\n",
+ "# inner=None)\n",
+ "sns.swarmplot(x=concat_imputed_df['genotype'], \n",
+ " y=concat_imputed_df[genepair], \n",
+ " ax=ax1,\n",
+ " color='black')\n",
+ "sns.regplot(x=concat_imputed_df['genotype'], \n",
+ " y=concat_imputed_df[genepair], \n",
+ " ax=ax1, scatter=False)\n",
+ "ax1.set_title(f'Imputed r={im_coef:.2f}; pvalue {im_p:.4f}')\n",
+ "ax1.set_xticklabels([f'{refallele}{refallele}', \n",
+ " f'{refallele}{altallele}',\n",
+ " f'{altallele}{altallele}'])\n",
+ "ax1.set_xlabel(snp_id)\n",
+ "\n",
+ "coef, p = spearmanr(concat_df['genotype'], concat_df[genepair])\n",
+ "# sns.violinplot(x=concat_df['genotype'], \n",
+ "# y=concat_df[genepair], \n",
+ "# ax=ax2,\n",
+ "# inner=None)\n",
+ "sns.swarmplot(x=concat_df['genotype'], \n",
+ " y=concat_df[genepair], \n",
+ " ax=ax2,\n",
+ " color='black')\n",
+ "sns.regplot(x=concat_df['genotype'], \n",
+ " y=concat_df[genepair], \n",
+ " ax=ax2, scatter=False)\n",
+ "ax2.set_xlabel('')\n",
+ "ax2.set_title(f'Not Imputed r={coef:.2f}; pvalue {p:.4f}')\n",
+ "ax2.set_xticklabels([f'{refallele}{refallele}', \n",
+ " f'{refallele}{altallele}',\n",
+ " f'{altallele}{altallele}'])\n",
+ "ax2.set_xlabel(snp_id)\n",
+ "plt.savefig(example_savedir/f'{snp_name}_ref{refallele}_alt{altallele}_{gene1}_{gene2}.{celltype}_{datasetname}.full.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 112,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "PosixPath('/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output/examples/rs221045_C_refT_altC_AC005076.5_ARHGEF19.monocyte_onemillionv2.full.pdf')"
+ ]
+ },
+ "execution_count": 112,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "example_savedir/f'{snp_name}_ref{refallele}_alt{altallele}_{gene1}_{gene2}.{celltype}_{datasetname}.full.pdf'"
+ ]
+ },
+ {
+ "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.7.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/04_coeqtl_mapping/.ipynb_checkpoints/rb_celltypes-checkpoint.ipynb b/04_coeqtl_mapping/.ipynb_checkpoints/rb_celltypes-checkpoint.ipynb
new file mode 100644
index 0000000..834ede3
--- /dev/null
+++ b/04_coeqtl_mapping/.ipynb_checkpoints/rb_celltypes-checkpoint.ipynb
@@ -0,0 +1,2026 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 67,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import matplotlib as mpl\n",
+ "mpl.rcParams['pdf.fonttype'] = 42\n",
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "%matplotlib inline\n",
+ "\n",
+ "from pathlib import Path\n",
+ "workdir = Path(\"./coeqtl_mapping/\")\n",
+ "\n",
+ "celltypes = ['CD4T', 'CD8T', 'monocyte', 'DC', 'NK', 'B']\n",
+ "import matplotlib\n",
+ "def heatmap(data, row_labels, col_labels, ax=None,\n",
+ " cbar_kw={}, cbarlabel=\"\", **kwargs):\n",
+ " \"\"\"\n",
+ " Create a heatmap from a numpy array and two lists of labels.\n",
+ "\n",
+ " Parameters\n",
+ " ----------\n",
+ " data\n",
+ " A 2D numpy array of shape (M, N).\n",
+ " row_labels\n",
+ " A list or array of length M with the labels for the rows.\n",
+ " col_labels\n",
+ " A list or array of length N with the labels for the columns.\n",
+ " ax\n",
+ " A `matplotlib.axes.Axes` instance to which the heatmap is plotted. If\n",
+ " not provided, use current axes or create a new one. Optional.\n",
+ " cbar_kw\n",
+ " A dictionary with arguments to `matplotlib.Figure.colorbar`. Optional.\n",
+ " cbarlabel\n",
+ " The label for the colorbar. Optional.\n",
+ " **kwargs\n",
+ " All other arguments are forwarded to `imshow`.\n",
+ " \"\"\"\n",
+ "\n",
+ " if not ax:\n",
+ " ax = plt.gca()\n",
+ "\n",
+ " # Plot the heatmap\n",
+ " im = ax.pcolormesh(data, **kwargs)\n",
+ "\n",
+ " # Create colorbar\n",
+ " cbar = ax.figure.colorbar(im, ax=ax, **cbar_kw)\n",
+ " cbar.ax.set_ylabel(cbarlabel, rotation=-90, va=\"bottom\")\n",
+ "\n",
+ " # Let the horizontal axes labeling appear on top.\n",
+ " ax.tick_params(top=True, bottom=False,\n",
+ " labeltop=True, labelbottom=False)\n",
+ "\n",
+ " # Rotate the tick labels and set their alignment.\n",
+ " plt.setp(ax.get_xticklabels(), rotation=-30, ha=\"right\",\n",
+ " rotation_mode=\"anchor\")\n",
+ "\n",
+ " # Turn spines off and create white grid.\n",
+ "# ax.spines[:].set_visible(False)\n",
+ "\n",
+ "# ax.set_xticks(np.arange(-0.5, data.shape[1]-2, 1), minor=True)\n",
+ "# ax.set_yticks(np.arange(-0.5, data.shape[0]-2, 1), minor=True)\n",
+ " # Show all ticks and label them with the respective list entries.\n",
+ " ax.set_xticklabels([\"\"]+col_labels)\n",
+ " ax.set_yticklabels([\"\"]+row_labels)\n",
+ "# ax.grid(which='minor', color=\"white\", linestyle='-', linewidth=2)\n",
+ "# ax.tick_params(which=\"minor\", bottom=False, left=False)\n",
+ " return im, cbar\n",
+ "\n",
+ "\n",
+ "def annotate_heatmap(im, data=None, valfmt=\"{x:.2f}\",\n",
+ " textcolors=(\"black\", \"white\"),\n",
+ " threshold=None, **textkw):\n",
+ " \"\"\"\n",
+ " A function to annotate a heatmap.\n",
+ "\n",
+ " Parameters\n",
+ " ----------\n",
+ " im\n",
+ " The AxesImage to be labeled.\n",
+ " data\n",
+ " Data used to annotate. If None, the image's data is used. Optional.\n",
+ " valfmt\n",
+ " The format of the annotations inside the heatmap. This should either\n",
+ " use the string format method, e.g. \"$ {x:.2f}\", or be a\n",
+ " `matplotlib.ticker.Formatter`. Optional.\n",
+ " textcolors\n",
+ " A pair of colors. The first is used for values below a threshold,\n",
+ " the second for those above. Optional.\n",
+ " threshold\n",
+ " Value in data units according to which the colors from textcolors are\n",
+ " applied. If None (the default) uses the middle of the colormap as\n",
+ " separation. Optional.\n",
+ " **kwargs\n",
+ " All other arguments are forwarded to each call to `text` used to create\n",
+ " the text labels.\n",
+ " \"\"\"\n",
+ "\n",
+ " # Normalize the threshold to the images color range.\n",
+ " if threshold is not None:\n",
+ " threshold = im.norm(threshold)\n",
+ " else:\n",
+ " threshold = im.norm(data.max())/2.\n",
+ "\n",
+ " # Set default alignment to center, but allow it to be\n",
+ " # overwritten by textkw.\n",
+ " kw = dict(horizontalalignment=\"center\",\n",
+ " verticalalignment=\"center\")\n",
+ " kw.update(textkw)\n",
+ "\n",
+ " # Get the formatter in case a string is supplied\n",
+ " if isinstance(valfmt, str):\n",
+ " valfmt = matplotlib.ticker.StrMethodFormatter(valfmt)\n",
+ "\n",
+ " # Loop over the data and create a `Text` for each \"pixel\".\n",
+ " # Change the text's color depending on the data.\n",
+ " texts = []\n",
+ " for i in range(data.shape[0]):\n",
+ " for j in range(data.shape[1]):\n",
+ "# kw.update(color=textcolors[int(im.norm(data[i, j]) > threshold)])\n",
+ " text = im.axes.text(j+0.5, i+0.5, valfmt(data[i, j], None), **kw)#j+0.1, i+0.5\n",
+ " texts.append(text)\n",
+ "\n",
+ " return texts"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## celltypes"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "filtered_res_df = pd.read_csv(workdir/'output/filtered_results/rb_calculations/summary.csv', index_col=0)\n",
+ "unfiltered_res_df = pd.read_csv(workdir/'output/unfiltered_results/rb_calculations/summary.csv', index_col=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "filtered_res_df_clean = filtered_res_df[filtered_res_df['celltype_discovery']!='B']\n",
+ "filtered_res_df_clean = filtered_res_df_clean.dropna()\n",
+ "filtered_res_df_clean.to_excel(workdir/'output/summary/rb_values_replication_in_other_celltypes_filtered_results.xlsx')\n",
+ "\n",
+ "unfiltered_res_df_clean = unfiltered_res_df[unfiltered_res_df['celltype_discovery']!='B']\n",
+ "unfiltered_res_df_clean = unfiltered_res_df_clean.dropna()\n",
+ "unfiltered_res_df_clean.to_excel(workdir/'output/summary/rb_values_replication_in_other_celltypes_unfiltered_results.xlsx')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### filtered results"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": [
+ "# filtered results\n",
+ "rb_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "rbse_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "rbpvalue_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "numcoeqtl_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "num_anno_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "rbse_anno_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "for discovery_celltype in celltypes:\n",
+ " # replication in other celltypes\n",
+ " for replication_celltype in celltypes:\n",
+ " if discovery_celltype != replication_celltype:\n",
+ " rb_results = filtered_res_df[(filtered_res_df['celltype_discovery'] == discovery_celltype) &\n",
+ " (filtered_res_df['celltype_replication'] == replication_celltype)]\n",
+ " replicated_coeqtls_num = pd.read_csv(\n",
+ " workdir/f'output/filtered_results/rb_calculations/discovery_{discovery_celltype}_replication_{replication_celltype}.tsv.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t',\n",
+ " index_col=0\n",
+ " ).shape[0]\n",
+ " if rb_results['r'].values[0] < 10 and discovery_celltype != 'B':\n",
+ " rb_df.loc[replication_celltype, discovery_celltype] = rb_results['r'].values[0]\n",
+ " rbse_df.loc[replication_celltype, discovery_celltype] = rb_results['se_r'].values[0]\n",
+ " rbpvalue_df.loc[replication_celltype, discovery_celltype] = rb_results['p'].values[0]\n",
+ " numcoeqtl_df.loc[replication_celltype, discovery_celltype] = replicated_coeqtls_num\n",
+ " rbvalue = rb_results['r'].values[0]\n",
+ " rbsevalue = rb_results['se_r'].values[0]\n",
+ " num_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={replicated_coeqtls_num}\"\n",
+ " rbse_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"{rbvalue:.2f}\\nN={replicated_coeqtls_num}\"\n",
+ " elif discovery_celltype == 'B':\n",
+ " rb_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " rbse_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " rbpvalue_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " numcoeqtl_df.loc[replication_celltype, discovery_celltype] = replicated_coeqtls_num\n",
+ " rbvalue = rb_results['r'].values[0]\n",
+ " rbsevalue = rb_results['se_r'].values[0]\n",
+ " num_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={replicated_coeqtls_num}\"\n",
+ " rbse_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={replicated_coeqtls_num}\"\n",
+ " else:\n",
+ " rb_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " rbse_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " rbpvalue_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " numcoeqtl_df.loc[replication_celltype, discovery_celltype] = replicated_coeqtls_num\n",
+ " num_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={replicated_coeqtls_num}\"\n",
+ " rbse_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={replicated_coeqtls_num}\"\n",
+ " else:\n",
+ " rb_df.loc[replication_celltype, discovery_celltype] = 1\n",
+ " rbse_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " rbpvalue_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " replicated_coeqtls_num = pd.read_csv(\n",
+ " workdir/f'output/filtered_results/UT_{discovery_celltype}/coeqtls_fullresults_fixed.sig.tsv.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t'\n",
+ " ).shape[0]\n",
+ " numcoeqtl_df.loc[replication_celltype, discovery_celltype] = replicated_coeqtls_num\n",
+ " num_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={replicated_coeqtls_num}\"\n",
+ " rbse_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={replicated_coeqtls_num}\"\n",
+ " \n",
+ "replicated_ratio_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "for discovery_celltype in numcoeqtl_df.columns:\n",
+ " for replication_celltype in numcoeqtl_df.index:\n",
+ " replicated_ratio_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " numcoeqtl_df.loc[replication_celltype, discovery_celltype] / numcoeqtl_df.loc[discovery_celltype, discovery_celltype]\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " CD4T | \n",
+ " CD8T | \n",
+ " monocyte | \n",
+ " DC | \n",
+ " NK | \n",
+ " B | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " CD4T | \n",
+ " 1.000000 | \n",
+ " 0.971596 | \n",
+ " 0.759425 | \n",
+ " 0.773429 | \n",
+ " 0.953264 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " CD8T | \n",
+ " 0.988285 | \n",
+ " 1.000000 | \n",
+ " 0.847118 | \n",
+ " 1.002450 | \n",
+ " 0.966100 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " monocyte | \n",
+ " 0.792142 | \n",
+ " 0.779688 | \n",
+ " 1.000000 | \n",
+ " 0.797139 | \n",
+ " 0.960618 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " DC | \n",
+ " 0.794745 | \n",
+ " 0.815816 | \n",
+ " 0.935905 | \n",
+ " 1.000000 | \n",
+ " 0.853924 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " NK | \n",
+ " 0.925802 | \n",
+ " 0.967842 | \n",
+ " 0.868747 | \n",
+ " NaN | \n",
+ " 1.000000 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " B | \n",
+ " 0.918479 | \n",
+ " 0.952496 | \n",
+ " 0.948709 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " CD4T CD8T monocyte DC NK B\n",
+ "CD4T 1.000000 0.971596 0.759425 0.773429 0.953264 NaN\n",
+ "CD8T 0.988285 1.000000 0.847118 1.002450 0.966100 NaN\n",
+ "monocyte 0.792142 0.779688 1.000000 0.797139 0.960618 NaN\n",
+ "DC 0.794745 0.815816 0.935905 1.000000 0.853924 NaN\n",
+ "NK 0.925802 0.967842 0.868747 NaN 1.000000 NaN\n",
+ "B 0.918479 0.952496 0.948709 NaN NaN 1.0"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rb_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " CD4T | \n",
+ " CD8T | \n",
+ " monocyte | \n",
+ " DC | \n",
+ " NK | \n",
+ " B | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " CD4T | \n",
+ " 0.000000e+00 | \n",
+ " 0.000000e+00 | \n",
+ " 1.126679e-35 | \n",
+ " 2.425843e-03 | \n",
+ " 0.000000e+00 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " CD8T | \n",
+ " 0.000000e+00 | \n",
+ " 0.000000e+00 | \n",
+ " 7.557685e-59 | \n",
+ " 0.000000e+00 | \n",
+ " 0.000000e+00 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " monocyte | \n",
+ " 1.052643e-121 | \n",
+ " 5.216640e-92 | \n",
+ " 0.000000e+00 | \n",
+ " 1.774726e-21 | \n",
+ " 1.393096e-317 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " DC | \n",
+ " 3.609987e-25 | \n",
+ " 4.217830e-39 | \n",
+ " 5.947381e-316 | \n",
+ " 0.000000e+00 | \n",
+ " 4.322965e-05 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " NK | \n",
+ " 2.552726e-264 | \n",
+ " 0.000000e+00 | \n",
+ " 8.365584e-06 | \n",
+ " 0.000000e+00 | \n",
+ " 0.000000e+00 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " B | \n",
+ " 2.320757e-144 | \n",
+ " 1.610287e-212 | \n",
+ " 1.074123e-78 | \n",
+ " 0.000000e+00 | \n",
+ " 0.000000e+00 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " CD4T CD8T monocyte DC \\\n",
+ "CD4T 0.000000e+00 0.000000e+00 1.126679e-35 2.425843e-03 \n",
+ "CD8T 0.000000e+00 0.000000e+00 7.557685e-59 0.000000e+00 \n",
+ "monocyte 1.052643e-121 5.216640e-92 0.000000e+00 1.774726e-21 \n",
+ "DC 3.609987e-25 4.217830e-39 5.947381e-316 0.000000e+00 \n",
+ "NK 2.552726e-264 0.000000e+00 8.365584e-06 0.000000e+00 \n",
+ "B 2.320757e-144 1.610287e-212 1.074123e-78 0.000000e+00 \n",
+ "\n",
+ " NK B \n",
+ "CD4T 0.000000e+00 0.0 \n",
+ "CD8T 0.000000e+00 0.0 \n",
+ "monocyte 1.393096e-317 0.0 \n",
+ "DC 4.322965e-05 0.0 \n",
+ "NK 0.000000e+00 0.0 \n",
+ "B 0.000000e+00 0.0 "
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rbpvalue_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "from matplotlib import cm\n",
+ "from matplotlib.colors import ListedColormap, LinearSegmentedColormap"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "color_dict = {'CD4T': '#2E9D33',\n",
+ " 'CD8T': '#126725',\n",
+ " 'monocyte': '#EDBA1B',\n",
+ " 'NK': '#965EC8',\n",
+ " 'DC': '#E64B50',\n",
+ " 'B': '#009DDB',\n",
+ " 'cMono': 'peru',\n",
+ " 'ncMono': 'y',\n",
+ " 'CD4T_individual_100': '#2E9D33',\n",
+ " 'CD4T_individual_50': '#2E9D33',\n",
+ " 'CD4T_50': '#2E9D33',\n",
+ " 'CD4T_150': '#2E9D33',\n",
+ " 'CD4T_250': '#2E9D33'}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":60: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_xticklabels([\"\"]+col_labels)\n",
+ ":61: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_yticklabels([\"\"]+row_labels)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "matplotlib.rcParams.update({'font.size': 16})\n",
+ "discovery_celltype = 'CD4T'\n",
+ "fig, axes = plt.subplots(1, 6, figsize=(7, 7), sharey=True)\n",
+ "for i, discovery_celltype in enumerate(['CD4T', 'CD8T', 'monocyte', 'DC', 'NK', 'B']):\n",
+ " colors = [\"white\", color_dict[discovery_celltype]]\n",
+ " cmap1 = LinearSegmentedColormap.from_list(\"mycmap\", colors)\n",
+ " im1, bar = heatmap(rb_df[discovery_celltype].values.reshape((6, 1)), \n",
+ " list(rb_df.index), \n",
+ " [discovery_celltype],\n",
+ " cmap=cmap1, ax=axes[i], vmin=0.7, vmax=1)\n",
+ " bar.remove()\n",
+ " _ = annotate_heatmap(im1, \n",
+ " data=rbse_anno_df[discovery_celltype].values.reshape((6, 1)), \n",
+ " valfmt=\"{x:^}\", \n",
+ " textcolors=(\"white\", \"white\"),\n",
+ " threshold=1)\n",
+ " if i > 0:\n",
+ " axes[i].axis('off')\n",
+ "plt.subplots_adjust(wspace=0, hspace=0)\n",
+ "plt.savefig('rb_values.filtered_results.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# cdict = {'red': [[0.0, 0.0, 0.0],\n",
+ "# [0.5, 0.5, 0.5],\n",
+ "# [1.0, 1.0, 1.0]],\n",
+ " \n",
+ "# 'green': [[0.0, 0.0, 0.0],\n",
+ "# [0.5, 0.5, 0.5],\n",
+ "# [1.0, 1.0, 1.0]],\n",
+ " \n",
+ "# 'blue': [[0.0, 0.0, 0.0],\n",
+ "# [0.5, 0.5, 0.5],\n",
+ "# [1.0, 1.0, 1.0]]}\n",
+ "\n",
+ "# cdict['alpha'] = ((0.0, 0.0, 0.0),\n",
+ "# (0.5, 0.5, 0.5),\n",
+ "# (1.0, 1.0, 1.0))\n",
+ "# newcmp = LinearSegmentedColormap('alpha', segmentdata=cdict, N=256)\n",
+ "\n",
+ "c_white = matplotlib.colors.colorConverter.to_rgba('white',alpha = 0)\n",
+ "c_black= matplotlib.colors.colorConverter.to_rgba('black',alpha = 1)\n",
+ "cmap_rb = matplotlib.colors.LinearSegmentedColormap.from_list('rb_cmap',[c_white,c_black],512)\n",
+ "\n",
+ "\n",
+ "\n",
+ "mpl.cm.register_cmap(cmap=cmap_rb, name='alpha')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":62: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_xticklabels([\"\"]+col_labels)\n",
+ ":63: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_yticklabels([\"\"]+row_labels)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVIAAAEWCAYAAAA0HB+VAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABNjklEQVR4nO3dd3hUZfbA8e/JpBBCl2pdBERZBKSIIE1+ShVBQAQEkRZ6EQVsiCyrAoKISNnQi1JsQBCwAFIUparIIitdQJpKTU/O7487MyYQ6kzIBM7nefKQufedew8zkzNvu+8VVcUYY8zVC8rsAIwxJquzRGqMMT6yRGqMMT6yRGqMMT6yRGqMMT6yRGqMMT6yRGqMMT6yRHqdEhHJ7BiMuVFYIr0Oicgt6r7SQkTsPTYmg9kf2XVGRGoDm0Wkj4gUUtUU93aroRqTQSyRXkdExAW8BqwBTgErROQhALVrgY3JMMGZHYDxq1ZAsKo2BxCRhkADESkJnFHV2ZkanTHXKUuk1wkRuQmIBEa5Hz8M5ABiga3ATBE5pqqfp3pOkKfpb4y5epZIrx8dAFHVj939oY8DS4B5qnpERCYApUTkf0AdYK6qnszEeI25boh1nV0fRCQEKKCqh0SkE3A/MFlV14vILcBUoABO/2kRoDTwqqp+lGlBG3OdsMGm64C7iZ4IHHZPd8oJ/AD8112kDVAF2Ae8q6otgOeAiu7n50p9LBvhN+bKWNP+OuDp50zV3zlaRCJU9ayIVAU6At/jNPN3ucvkBWq5f+8jIkeBJar62zUM3Zjrwg3ftBcRCaSpQb7Gc+4Akog8CpQADuI0/ce5t28GhgA7gLFAPJAH2Aj0s0EoYy6f1Ughm4gUBR7AqZEdzsrxnJsAVXUxgIg8CUSKSDbgLuB34AvgJZzkOUpVj4vICuA+YFPq4wTaF44xgeSG7iMVkduBD4A3cfoQ14rIK9djPKo6D3gaKA58CbQEqgG5geXuJFoEqAAccsdTUkT+6X6+JVFjLuCGbdqLSF5gAJAf6K6qiSJSAJgETAc2qOrB6yEe9+CRnNPkvx14FWdAapyqxovIDJwBqTdx5qQ+AYQAvwEdbbqUMem7kWukj+BMWH/XnbTCVfUY0AU4AvwkIstFpGxWj0cdKakXMFHV/Ti136/dSbQWUBKYDLQH7gAGqWplnMtN6557XFsQxRjHjfyHUBH4U1W3AqhqrPvfIzjN3vnAOGC2iIxyz9PM0vGk03+6QlU3ux++CSzAGZQqDvykqivd+/IAuQBEpICIlPIcz6ZKGXNjJ9KqwBYA9wAM7t8rArWBf6vqJziDPrcC917n8bQHRuMMQFYCNrjPXwX4ETghInWARTjTq1aKSEVbrs+YGzuRfgB4alZxqbYPAD5S1YMiEqqqZwEXzpVCGbkc3ZXG84CngIjk8eXE7hH5X1Q13r1pE87c0grAv4HTQFGgOjBTVevi9NtGikiYiOQJ1OlSItJGRKpndhypiUh7ESmX2XEY/7mRE+ka4DER+VhEHhaRgiLSEidh/NtdxjMSdxC4BdKOXrsHbDIjnt+B3CISLiJPA9NFZI6nyX2lUv+f3Mm0H07y7AV8BkwEzgJxOJeaoqozVDUSp9thQerjBUpz372Qy0xguIhMEZHCARBTbmAK0ENEbPrhdeKGTaSqulVVHwBWAd1wEuWzwIuqmiwiYe5Bn9uBzsCHACKSX0QeE5EvgD0i4pcm9hXEcxvOAiULgHJAI5wBoq+BGSJSwpc4PBP6VfU5IFJV31bVGP7uw40/p382JzAn1fNvV1UVEZeI1M7kZDEDeExVq+JM6ZorIsUyMR5w3qtjwDZVTRKRwoFWYzZX7oZNpB6q+i7wJBCG0zdYwL09XkTyAxNwFv/4yd1fOA7nSqEzOFcGHRKRJiLS+xrFMx5n5abtOLVGVdXFqvofd0wlRKSxiPS6yvOniJuqJqTatRxoLCKl3Qnd89nJBQSLSLCIPAKsck/+HwU86E4W17yG6m463+y5IEFVBwGHcb58MqXWLCL3ATfjXLLr6QqpjdNFcq+IhF3rmC4mELtFAtUNn0gBVDVJVb/DuaLnCRH5RkTeBKJxklUfEVmA00/6GvAt8Cfwjar+gXOZ5SPuAZiaGRjPYpxkGSkiLXBqrkVFZL+I/Bunj3UpztzQulcbj3u6lJ6z7X2cZv4EEWmeqk+0IU4tegjQFCdJHAK6AveKSO5UA1LXJHm5z/MxztQxRCS7e9d24EH3/0fd3xeFrnFM7XCmkrlEJB9QBmeO8Fagl4h0dXfZZOrfZqpukREiEhUI3SKB7IadkH8x4lyfnhf4FfgfTu3hR5yFP14BOuFMUp/rnuvpGWn/FKfGswz4l6ru8XM8O4H1OLWYnsAbqvq9iPTDmTg/U1V/93c87tqpJxmGAtlV9YSI5MBp1u/BSfqPqupJEXkXJ+EXAGJUtc+FjpcRRKQ10EhVW4lIsKomubdvB4YCc3H6fx92x/gj8IKq/pWBMbUCmqlqcxEZivPlczvO6/YWkA+ny2a9uu9kIM5c4tiMiukS8S4GhqvqGhEZ4461ZaoBSZOK1UjT4W4qz1LV71T1T1U9oap34FyTvgp4FPjOk0TdWuEk2iY4NdS3MiCedaqajNPsP4CTVAFOAnU9SdTf8aRKoiHu5r5nVkFunEWiD+G+8klEHsOZ2D9RVTurah8RqSQiA91fCBl6uak70U/HqRmn3t4NJ7l/AfwHp3tmnDv+E8CXIlItg2IKw+mvjXRvugdoDtyJkzj343ymfgOOisjTIjIJWCIi92dETJeItzTQAPDU5F/HmRZntdILsFHDy+BOIImqOkJEyuOMpFcVkR/c/YX/xJnX+auqfg987/6Dzqja12Gc6+SbishXODXk91LFmyHxqLPmKUAHcWYLbAZGq+qwVMUicWp8R8W5GV+kO75uwGsi8jjQHUjIoISaA1gNzBeRicA6cW678gbwGM4sg2Scy2K3u58zUEQigaQMiAecAblnVPVPcS4FDsNp5SgQ7e5+qQvchjP17CTOF/YYnPf6mnF3QSzEafF0E5HxOC2aWFXddy1jyUoskV4GTwJxJ4+jQF/gr1SJpS7OMnQr3OWCPQM1GZEsVHWjiHTGGdBpBXzv7sP0yNB4VHW8iMQAX+FMxcJ9nsLAcWCzqsaJSHGcPsGCOIk9EqffMjSjmoiq+ifwsIjUAwbjXF4bA7zkbqZ2wun73umO2dP0/xBIuMBhfY3pOM48YVT1L3FmDtyJ04+cAtRzx3MP0EdVD3iemwmDYq1w+mzHA+NFZBxO3/hKdzx2n690WCK9Aqo6U0S+Bo65m9iISA2c/qN1qrrDXS6jajapY1kPVHcPWHj79q5VPKo6PZ3NR3Ga+Z+7a8WtgJ2q+oC7qeqZSfAxzgr+GUZVlwHLROQ2Vf0t1eBNAeCk50vQ89pkZP9oOiYA4e7E3hbnAot5ODXX+NT9uhnZDXKuVN0ieVNtdgF1VHWJOx5LoumwRHqF3P1ZALgHWx7DGcH3fGNf03U73TWwgIjH/Uf2kojMUNU/RGQrziAYqtrZ3fdWWVV/uBbxuM/rXfHf3VeZiFNLRURcni/Ea0lVx7rPfxPOpcE7gM+B3sD9qvrZtY7JLQfOhSHvi8hUnC/FVrhnOlzrz3ZWYqP2PhCRcJw+t6OZ+OEPmHg8tT79ezGTosD7OM3WfwG7MrtGIyI9cO5h9Zyqfisiea9xbfTceArh1E73isgQIL+q9siseNwx1cV5v7YDP6rqaEuiF2eJ1A88H7JA+bAFYDxDcAZSxqjqjwEQT3OcOwPswrn89evMqJmeS0SaAt1U9ZHMqi2fE082Tbvug7kAS6Qmw6ROBu55rfGBkNg9RORBnL7kgOn3E5GnVXVmZsdhrowlUpOhPKPOgZRAs4JAaU2Yy2OJ1BhjfGRXNhljjI8skRpjjI8skRpjjI8skfqJ+1rtgGHxXFygxQOBF1OgxeMvIjJVRI6KyM8X2C8i8q6I7BSRn9zra1yUJVL/CbQPncVzcYEWDwReTIEWj79Mx1nf4ELq46wOVgLnNZhwqQNaIjXG3FBUdTXOZdQX0hhnbV9VZ4H1PCJS5GLHtGvt/76hnG8HcaaRBcxcMovn4gItHgi8mPwVT1hYWHx8fHy2S5e8MBG5kji28feauQBRqhp1Bc+/BWdtWI8D7m2/p1/cEikA136lsvR55vT269cvkyNxvP322wCsWbMmkyNxVK/u3D4oLi5wrlrMls3JD/3798/kSNL6z3/+k9kh+F1Q0OU1oFNSUuJUtaIPp0ovIVw0kVsiNcZkCVeQSH091QGctSE8bsVZCeuCrI/UGBPwRISgoKDL+vGDRcDT7tH7B3DWr71gsx6sRmqMySL8lCQRkTlALSC/iBzAuZOCZ93cicASnHtW7cS5u0L7Sx3TEqkxJuCJCMHB/klXqtrqEvsVuKI1YS2RGmOyBH/VSDOCJVJjTMDz9JEGKkukxpgswRKpMcb4wGqkxhjjB5ZIjTHGB/4ctc8IgRuZMcakYjVSY4zxUaCsiZEeS6RZzJ9//smSJUu8j0+ePEmVKlWIj49n69atZM+eHYAHH3yQokWLcvDgQVasWIHL5aJBgwbkyZOHuLg4lixZwuOPP+63D2dycjKRkZHkz5+f4cOHs3PnTkaNGkVMTAxFihRh0KBBREREsHXrVkaNGkVoaCivvvoqt956K6dPn+a1115j5MiRPsfTpUsXli5dSoECBdi0aRMAbdq04ddffwXgxIkT5MmTh++//55vv/2WPn36EBoaysyZMylWrBgnTpygbdu2LFq0yC+vzZ9//kl0dLT38cmTJ3nwwQepUKECABs2bGDVqlV0796d7Nmzc/DgQb788ktcLhePPvooefPmJS4ujsWLF9OsWTO/xJSQkEBiYiIAISEhhIaGEhsb671GXVURESIiIkhKSiI+Ph6A8PBwgoKCUFViY2MJDw+/ZsnNBpsuQkQKA+8AlYB4YC/QF/gR+AXIBpwGxqnqjHOeWwn4DngSWAksd+8qDCQDx9yP71fVhAz8b1xT+fLlo02bNoCzOMOkSZMoXrw427Zto3z58lSsmHbRm82bN/Poo49y6tQpfvzxR2rWrMn333/P/fff79c/go8++og77riDs2fPAjBixAi6d+9OuXLl+Oyzz5gzZw6dOnVi7ty5DB06lMOHD7NgwQJ69uzJjBkzaNu2rV/iadu2LV27dqVTp07ebbNnz/b+PnDgQHLnzg3AmDFjmDNnDvv27SMqKorhw4fz5ptvMmDAAL+9Nvny5aNdu3aA835NnDiR4sWLA3Dq1Cn27dtHzpw5veU3btxI48aNOXnyJD/88AMPPfQQ69ato3Llyn6JKTk5mcTERO8XbmxsLMHBwYSHh3vLxMXFec+VmJhIeHg4KSkpJCQkkC1bNuLj4wkNDb3mNcRATqSZFpn7fuefAl+rajFVLQW8BBQCdqnqfap6D9ASeFZE2qd6rgsYDnwOoKp/qGo5VS0HTARGex5fT0n0XL/99hu5c+cmV65cFywTFBREUlISSUlJBAUFceLECc6cOcOtt97qtziOHj3KunXraNiwoXfb/v37KVu2LAAVK1Zk1apVAAQHB5OQkEBcXBzBwcEcPHiQ48ePU65cOb/EUq1aNfLly5fuPlXl448/pkWLFoBTG4uNjSUmJoaQkBB2797NoUOHvMv1+dv+/fvJkyePN5GvXLmSGjVqpElIqd8vl8vlfb9uu+22Cx32iqSkpOByuRARRASXy+WtnYLzGiUlJRESEpJmm6eWmpKSgqpe84Efz2DT5fxkhsyskT4EJLoXCQBAVX8QkX+kLqSqu0WkHzAKmObe3Av4GKcme8PasWMHd999t/fxjz/+yPbt2ylUqBA1atQgW7ZsVKpUia+++org4GDq1avH6tWrqVq1ql/jGDt2LN26dSMmJsa7rWjRoqxdu5bq1avz9ddfc/ToUcBpZr/11luEhYXx8ssvM378eDp27OjXeC7km2++oVChQt4aYf/+/enRowfh4eFMmTKFF198kcGDB2fY+X/55Rfv+7Vz505y5sxJwYIF05SpXLkyX3zxBcHBwTRo0ICvv/6aatWq+S2GoKAg4uPjvWvfehK2R3JycppmdGhoqLeG6qmNhoWF+S2eK409UGVmIi0NbLrMspuBuwFE5BbgcaA2V5lI3Tf1ioSsuwBucnIyu3bt4sEHHwSgTJky3ubft99+y+rVq6lTpw4FCxakVStnjYYDBw6QI0cOAD777DOCgoKoUaMGERERVx3Ht99+S968eSlZsiRbtmzxbn/hhRcYM2YMM2bM4MEHH/TWcEqUKMHEic535w8//ED+/PkBGDx4MMHBwfTo0eOCNUpfzZ8/nyeeeML7uGzZsqxevRqAtWvXUqRIEVSVNm3aEBISwrBhwyhUqJBfzu15v6pXr05iYiLfffddmlg8ChYsyFNPPQU4LY4cOXKgqkRHRxMUFEStWrV8er9cLhehoaHExMR4a6SpnVsbdblc3vMlJSV5a8+xsbEAhIWFXZMEF+h9pIEbWVqpO2PeAQaqavLVHkxVo1S1oqpWjIzMmvf32rt3LwULFvR+yCMiIggKCkJEKF26NIcPH05TXlX5/vvvqVy5Mt999x1VqlThnnvu4YcffvApjq1bt/LNN9/QokULhgwZwubNmxk6dCh33HEHb7/9NpMnT+bhhx/m5ptvPi+emTNn0q5dO6ZNm0aHDh2oU6cOH3/8sU/xXEhSUhILFy6kefPm5+1TVYYNG8aLL77I66+/zqBBg2jVqhXjx4/32/n37Nnjfb9OnDjByZMnmTFjBlFRUZw+fZpZs2Z5+5c9MXnep3Xr1lG1alVKlSrF5s2bfY4lNDSUiIgIsmfPniZBeZr16TWPVZWEhATCwsK8faQhISFpugUymqc74lI/mSEza6TbgPM/1em7D9ju/r0iMNf9guUHGohIkqou8HuEASx1MxHgzJkz3trmrl27uOmmm9KU/+9//0vRokXJli0biYmJ3g+dr38IXbp0oUuXLgBs2bKFuXPnMmjQIP766y/y5s1LSkoKM2fOpHHjxmmet2zZMqpUqULOnDmJj4/3fglk1G1EVqxYwV133ZVu3/Ds2bOpV68eefPmJSYmxrtAcOquCl9t377d+34VKFCAHj3+XqUtKiqKNm3aeAeAALZt28add9553vuVlJTkcywpKSkEBQWRkpJCUlKS97zJyckXXBzZk2A9iUpEvH2n10og10gzM5GuAN4Qkc6qOgm8I/HZUxdy95mOBMYCqGrRVPumA4tvtCSamJjI/v37efjhh73b1qxZw7FjxxARcuXKxf/93/+lKf/f//6Xpk2bAlC+fHmio6O9U6IywldffcWnn34KQI0aNdKcJy4ujmXLljFq1CgAWrRowSuvvEJISIjPfZRPP/00a9as4fjx4xQrVoxBgwbxzDPP8OGHH3oHmVKLiYlh9uzZLF68GIDevXvTqlUrQkNDmTFjxnnlr0ZiYiL79u2jTp06l11+27Zt3tpzxYoVWbRoES6XK82A3tWKi4vzJsCwsLA0I/QXqo16Ru/h70E6IM1of0YK9Ka9XMtvlPNOLnIzTlO9As5d//biTH/6ibTTnyao6rR0nj8dJ5F+lGrba8AZVR15mWFooEz0tZvfXZzd/O7yBVLff7zDp7uIRkREaOoW2MVs3rx5k483v7timTqPVFUPAedXE+CyvuZU9Zl0tr3mW1TGmEAUKBWe9NiVTcaYLCGQm/aWSI0xAS/Q+0gtkRpjsgRLpMYY4yPrIzXGGB/Yws7GGOMH1rQ3xhgfZObln5fDEqkxJkuwGqkxxvjIEqkxxvggvSX/AoklUmNMlmA1UmOM8UGgDzZl6upPAeKGfwGMyUhhYWE+r/6UJ08erVGjxmWVjY6OvrFWfzLGmMtlTfsAN2vWrMwOAXBuJQyBcymcp7WS+l5Mmem+++4DAnM90sutLV0rvt5CJtAEetPeEqkxJuAF+iWigVtXNsaYVPx18zsRqSciO0Rkp4i8kM7+3CISLSI/isg2EWl/qWMGboo3xphU/NFHKiIuYBzwCHAA2CAii1T1v6mK9QD+q6qNRKQAsENE3lfVhAsd1xKpMSbg+XFh5/uBnaq6233cuUBjIHUiVSCnONXbHMCfwEVv32qJ1BiTJfhpsOkW4LdUjw8Alc8p8x6wCDgE5ASeVNWUix3UEqkxJku4ghppfhHZmOpxlKpGuX9PLxufO5e8LvADUBsoBnwpImtU9dSFTmiJ1BgT8K7wWvvjF5mQfwC4LdXjW3Fqnqm1B4apM/9vp4jsAe4G1l/ohDZqb4zJEoKCgi7r5xI2ACVEpKiIhAItcZrxqe0H/g9ARAoBJYHdFzuo1UiNMVmCP/pIVTVJRHoCnwMuYKqqbhORru79E4GhwHQR2YrTFTBQVY9f7LiWSI0xAc+ft2NW1SXAknO2TUz1+yGgzpUc0xKpMSZLCORLRK2P9BLOnj3L2LFjGThwIAMHDuTXX3/lzJkzDB8+nP79+zN8+HDOnj0LwP/+9z9efvllBg8ezJEjR7zPHzFiBNf7KlvJycm0atWK3r17p9k+c+ZMypcvz19//QU414C3aNGCNm3asH//fgBOnz5N9+7d/fIadenShdtvv50KFSp4t7Vp04bKlStTuXJlSpYsSeXKzmyXb7/9lkqVKvHggw+ya9cuAE6cOEGjRo38+n4dPHiQTZs2sWnTJn755RdSUlLYvn07mzdvZvPmzaxfv57NmzcDcPLkSTZt2sSWLVuIjY0FICkpia1bt/otpoSEBM6ePcvZs2dJSHDmmMfGxnq3nTlzxvuZTkpK8m5PSXFmAKkqMTEx1/Qz7RlsupyfzJCpNVIRKQy8A1QC4oG9QF/gR+AXIBtwGhinqjPcz8kNzAZux4l/JE5n8XL3YQsDycAx9+P7L3ZFwqXMnj2be++9l169epGUlER8fDzR0dGUKlWKRo0aER0dzeLFi3nyySdZunQpvXr14vjx4yxfvpzWrVuzcOFCHnvssYD+NvWHOXPmULRoUc6cOePddvjwYb777jsKFy7s3TZr1ixGjhzJoUOH+Oijj+jXrx+TJk2iY8eOfnmN2rZtS9euXenUqZN32+zZs72/Dxw4kNy5cwMwZswY5syZw759+4iKimL48OG8+eabDBgwwG/vV3x8PAcPHqRChQq4XC62b9/OsWPHuOeee7xldu/e7U0ABw8epFSpUsTFxfH7779z5513sn//fm677Ta/xJScnExiYiLZs2cHnAQaHBxMeHi4t0xcXJz3XImJiYSHh5OSkkJCQgLZsmUjPj6e0NDQa/6ZDuTVnzItMvdVA58CX6tqMVUtBbwEFAJ2qep9qnoPzqjas6mud/VcvlUWqAWMAk6rajlVLQdMBEZ7HvuSRGNjY9mxYwc1a9YEIDg4mIiICDZv3kz16tUBqF69Ops2bQLA5XKRkJBAfHw8LpeLI0eO8Ndff3H33XdfbQhZwpEjR1izZg1NmjRJs33UqFH07ds3zR9ccHAwcXFxxMXFERwczG+//cbRo0fT1CB9Ua1aNfLly5fuPlXl448/pkWLFgCEhIQQGxtLTEwMISEh7N69m0OHDnnfW39RVVJSUrz/hoaGptl37NgxChYsCDg1r5SUFFJSUhARYmNjiY+PJ0+ePH6JJSUlBZfL5b0u3eVykZiYmCaepKQkQkJC0mxTVW9sqpopC4j461r7jJCZNdKHgMRzOnl/EJF/pC6kqrtFpB9OwpzGVVy+dbWOHj1Krly5mDRpEvv376do0aK0adOGU6dOeT/YefLk4dQpZ55uo0aNmDZtGqGhoXTp0oU5c+bQrFmzjAgtoIwcOZI+ffoQExPj3bZq1SoKFizIXXfdlaZshw4d+Pe//022bNkYOnQoo0ePpnv37tckzm+++YZChQpRvHhxAPr370+PHj0IDw9nypQpvPjiiwwePNiv5wwLC+PWW29l/fr1BAUFkTdvXvLmzevdf+rUKUJDQ701wttuu41ff/2VoKAgSpYsye7du/nHP/7ht3iCgoKIj4/3NsuTkpLSNIeTk5PTDOyEhoZ6a6ie2mhYWJjf4rlc/hxsygiZmUhLA5sus+xmnAmxcBWXb12t5ORk9u7dS9u2bSlWrBizZ88mOjr6guXvuOMO7x/iL7/8Qp48eVBV3nvvPYKDg2nVqpW3WXm9WL16Nfny5aNUqVJs3OhcTBIbG8uUKVMYN27ceeVLlizJzJkzAdi0aRMFChRAVRk4cCDBwcH069ePm266KUNinT9/Pk888YT3cdmyZVm9ejUAa9eupUiRIqgqbdq0ISQkhGHDhlGoUCGfzpmYmMgff/xBpUqVCA4O5pdffuHo0aPeGujRo0cpUKCAt3yOHDkoV64c4PSXhoWFoaps374dEeHOO+9MU6O9Ui6Xi9DQUGJiYtKd5H5ubdTlchEREeHd56nxefpvw8LCrlmCC+TuscBN8WmlfgU9l2/dDJQD3hORXFd0MJFIEdkoIhujoqIuWC5fvnzky5ePYsWKAVCpUiX27dtHrly5OHHiBOAMTuTKlfb0qsqiRYto0qQJCxYsoGnTplStWpUvvvjiSsLMEn788UdWrVpFw4YNefHFF9m4cSODBg3i4MGDtGzZkoYNG3L06FGeeuopjh//eyqeqjJlyhQ6d+5MVFQUXbt2pUGDBsyZMydD4kxKSmLhwoU0b978vH2qyrBhw3jxxRd5/fXXGTRoEK1atWL8+PE+n/fEiRNky5aN0NBQgoKCuOmmm7wtGFXljz/+SJNIU8fk6Rvdv38/d9xxBwULFuTQoXMvwrlyoaGhREREkD179jQ1PU+zPr1mu6qSkJBAWFiYt480JCQkTbdARvPThPwMkZk10m3A+Z/q9N0HbHf/fsWXb53Lfd2tJ4PqhVbIz5MnD/ny5eP333+nSJEibNu2jZtvvpmbb76ZNWvW0KhRI9asWUP58uXTPG/t2rWULVuWiIgIEhISvH03nhHS60mvXr3o1asXABs3bmTmzJmMHDkyTZmGDRsye/bsNE3a6OhoqlWrRq5cuYiLi/P+EWTU6vcrVqzgrrvu4tZbbz1v3+zZs6lXrx558+YlJibGG0vqroqrFRYWxunTp0lOTiYoKIgTJ06QI0cOAP766y/Cw8PTbSofPXqUfPnyERIS4h0tFxGSk5N9jiklJYWgoCBSUlJISkryDjx5YkwvGXkSrKdWKCLevtNrwW7HfGErgDdEpLOqTgIQkUpA9tSF3H2mI4Gx7k2ey7fWXO7lW75o27YtEyZMIDk5mQIFCtC5c2dSUlIYN24cq1ev5qabbqJnz57e8vHx8axdu5b+/fsDUK9ePcaOHUtwcDDdunXLqDCzlNjYWBYvXuxt+j/11FP079+f4OBg3nzzTZ+O/fTTT7NmzRqOHz9OsWLFGDRoEM888wwffvihd5AptZiYGGbPns3ixYsB6N27N61atSI0NJQZM2b4FAtArly5yJ8/P1u2bEFEyJEjB0WKFAFIM8iUWnJyMkeOHKF06dIA3HLLLWzfvt3bb+qruLg4bwIMCwtLM0J/odqoZ/Qe/h6kA9KM9me0QG7aZ+pdREXkZpzpTxWAOP6e/vQTaac/TVDVaameMx0ogtPkH6aqs1Md8zXgjKqmrRZd2AVrpNea3bPp4uyeTZcvkO7ZFO/w6S6ihQsX1nbt2l1W2REjRtxYdxF1X4p1fjUBLvg1d6nLt1T1Nd8jM8YEErv5nTHG+IFNfzLGGB9ZjdQYY3xgo/bGGOMHViM1xhgfWR+pMcb4wEbtjTHGD6xGaowxPrJEaowxPrBl9Iwxxg+sj9QYY3xkidQYY3xgTfsswLPqUqAItDuOelZdChSeFZcCiWelfXM+f92axGqkxhjjI7tENMD9/PPPmR0CgHchX89dSTOb586egVIT8NTUt2/ffomS147ntsqehbwDxX/+85/MDsGvbEK+Mcb4gSVSY4zxkQ02GWOMj6xGaowxPrA+UmOM8QMbtTfGGB9ZjdQYY3xgTXtjjPEDG7U3xhgfBXKNNHBTvDHGuHkWLbmcn8s4Vj0R2SEiO0XkhQuUqSUiP4jINhFZdaljWo3UGJMl+KNpLyIuYBzwCHAA2CAii1T1v6nK5AHGA/VUdb+IFLxkbD5HdgNITk7miSeeoEePHgCMGjWKRo0a0bRpU/r06cOpU6cA2LJlC02bNqVly5bs378fgFOnTtGlSxe/ruiUnJxM69at6du3L+BcV12/fn1at25N69atWbt2LQA//PADLVu25Omnn+a3334D4PTp0/Ts2TPgVpjyt+TkZJo2bUq3bt0AOHHiBB07dqRevXp07NiRkydPArB582aaNGlCixYt2LdvH+C8Z507d/bLa/Tnn38yY8YM78+7776bZi2FDRs2MHLkSGJiYgA4ePAg06dPZ9asWfz1118AxMXF8dFHH/ntPUtISODs2bOcPXuWhIQEAGJjY73bzpw5w9mzZwFISkrybk9JSQGcNQ9iYmKu+WfIM+B0qZ9LuB/Yqaq7VTUBmAs0PqdMa+ATVd0PoKpHL3XQLJ1IReQZEbk5o88ze/ZsihYt6n1cpUoVPv30Uz755BPuuOMOJk+eDMCMGTMYPXo0vXv3Zt68eYCT5Dp16uTX/p05c+akiQegdevWfPDBB3zwwQdUq1YNgPfff58RI0bQvXt3PvroIwAmT55M+/btA7q/yR9mzZpFsWLFvI8nT57MAw88wLJly3jggQe879n06dN555136Nu3L3PnzgVgwoQJREZG+uU1ypcvH+3ataNdu3a0bduW4OBgihcvDjgJe9++feTMmdNbfuPGjTRu3Jjq1avzww8/ALBu3ToqV67sl3iSk5NJTEwke/bsZM+enaSkJFJSUggPDyciIoKIiAiCg4MJDnYaq4mJiYSHhxMWFuZNuvHx8YSGhl7Tz9DlJlF3TPlFZGOqn8hUh7oF+C3V4wPubandBeQVka9FZJOIPH2p+LJ0IgWeATI0kR4+fJg1a9bQrFkz77aqVat6P2hly5blyJEjAAQHBxMXF0dcXBzBwcH89ttvHD16lEqVKvktniNHjvDNN9/QpEmTS5YNDg4mPj7eG8+BAwc4evSod1Wn69Xhw4dZtWpVmvdsxYoV3tesSZMmLF++HPj7NYqNjSUkJIT9+/f7/T3z2L9/P3ny5CF37twArFy5kho1aqRJSEFBQSQlJZGUlITL5eLEiROcOXOG2267zS8xpKSk4HK5vEnH5XKRmJjo3a+qJCUlERISkmabqiIipKSkoKrez/+1dAWJ9LiqVkz1E5X6MOkc+tyqdTBQAWgI1AUGichdF4vtkolURP4hIr+IyGQR+VlE3heRh0XkGxH5VUTuF5F8IrJARH4Ske9EpIz7ua+JyFR3Zt8tIr1THbef+3g/i0jfVNufdh/nRxGZJSI5RWSPiIS49+cSkb0i8gRQEXjf3SkcLiIVRGSV+1vkcxEpcqn/36WMGDGCZ5999oL9M59++qm3BtipUyf+9a9/MXv2bFq1asW7775Lz549fQ0hjVGjRtG7d+/zagPz58+nZcuWDBkyxNvV8Mwzz/D6668zZ84cWrRowbhx47xN3evZsGHDeP7559O8Z3/88QcFChQAoECBAvz5558AdO7cmcGDBzNr1ixat27NmDFj6NWrV4bE9csvv3D33XcDsHPnTnLmzEnBgmm73ypXrswXX3zBpk2buO+++1izZo338+UPnkTtSY6e3z2Sk5PTrEYfGhpKXFwciYmJhISEEB8f77eFmq+Un5r2B4DU30q3AofSKbNMVc+q6nFgNVD2Yge93K+V4sATQCSwAacPoRrwGPASTlV5i6o2EZHawEygnPu5dwMPATmBHSIyASgDtAcq43xDfO8eGUsAXgYeVNXjIpJPVU+LyNc43w4LgJbAx6r6oYj0AJ5X1Y3uRDsWaKyqx0TkSeB1oMNl/h/Ps2rVKvLly8c///lPNmzYcN7+qKgoXC4Xjz76qPMfvftu3n//fcBpohUoUABV5fnnnyc4OJjnn3+e/PnzX204rFmzhnz58nHPPfewceNG7/bmzZt7uw8mTJjA6NGjGTx4MCVLlmT69OmA0xfoiefFF18kODiYvn37ctNNN111PIHo66+/9r5n69evv2T5e+65x9uk37hxozex9evXj+DgYAYMGODTe+aRnJzMrl27qF69OomJiXz33Xc88cQT55UrWLAgTz31FAC//fYbOXLkQFWJjo4mKCiIWrVqERERcdVxuFwuQkNDiYmJ8dZIUzu3NupyubznS0pK8iaq2NhYwFn9/lrM70wv1qu0ASghIkWBgzj5pPU5ZRYC74lIMBCKk6dGX+ygl/sK7FHVraqaAmwDlqvzNbYV+AdOUp0FoKorgJtEJLf7uZ+parw7sx8FCrnLf+rO+GeAT4DqQG3gI3dZVPVP9zEm4yRe3P9OSyfGkkBp4EsR+QF4Befb5jwiEunpP4mKikqvCOAMHq1cuZK6devSv39/1q9fzwsvOLMlFi5cyKpVqxg2bNh534KqSlRUFF26dGHChAl0796dRx99lA8++OCC57ocP/74I6tXr6ZRo0a8/PLLbNiwgUGDBnHTTTfhcrkICgri8ccfZ9u2befFM2XKFDp16sSkSZPo0qUL9evX9yaQ68nmzZtZuXIlDz/8MM899xzff/89AwYM4KabbuLYsWMAHDt2jHz58qV5nqoyceJEunbtyrhx4+jZsyeNGjVi9uzZfolrz549FCxYkIiICE6cOMHJkyeZMWMGUVFRnD59mlmzZnkHeDzxfPfdd1SpUoV169ZRtWpVSpUqxebNm32OJTQ0lIiICLJnz56m9umpoabXbFdVEhISCAsL8/aRhoSEpOkWyGj+qJGqahLQE/gc2A7MV9VtItJVRLq6y2wHlgE/AeuByap60dXfL7dGGp/q95RUj1Pcx0hKL+Z0npvsLn+h/61wfn8FqvqNu4uhJuC6wH9KgG2qWuWC/4u/jxcFeDKoXmiF/L59+3pHxjds2MD06dMZNmwYa9euZerUqUybNo3w8PDznrdw4UJq1KhB7ty5iYuL885v83yLX62ePXt6uwo2btzI7NmzGTp0KMePH/fWmlauXJlmkAVg8eLFVKtWjVy5chEXF+f944mLi/MpnkDUr18/+vXrB8D69euZNm0aI0aM4K233mLBggV07tyZBQsWULt27TTPW7BgATVr1jzvPfPXa7R9+3Zvs75AgQLeGSDgtGzatGlD9uzZvdu2bdvGnXfeSbZs2UhMTPQmiaSk9P7UrkxKSgpBQUGkpKSQlJTkPW9ycvIF52J6EqwnUYmIt3vgWrmMZvtlUdUlwJJztk085/FbwFuXe0x/9RivBp4ChopILZzO3lMX+Y+vBqaLyDCcBPg40Banaf+piIxW1T/cTXtPrXQmMAcYmuo4p3G6DAB2AAVEpIqqrnM39e9S1bTVMz944403SEhIIDLSGQwsU6YMr776KuA0eRYtWuS91cPTTz/Ns88+S0hICCNGjPB3KACMGTOG//3vf4gIRYoU4eWXX/bui4uLY/HixYwbNw6Ap556igEDBhASEsLrr7+eIfEEos6dO/Pss8/y8ccfU6RIEUaP/rulFhsby8KFC5k0aRIA7dq1o0+fPoSEhDBy5Eifz52YmMi+ffuoU6fOZZfftm0bzZs3B6BixYosWrQIl8tFw4YNfY4nLi7OmwDDwsK8CSoxMfGCtVHP6D1ASEiIt1KQXkUio/grkWYEudQ3ioj8A1isqqXdj6e7H3/k2QfUwGluFwVigEhV/UlEXgPOqOpI93N/Bh5V1b0i0o+/+y8nq+o77jLtgP44tdctqvqMe3thYA9QRFVPuLc1A94AYoEqOM37d4HcOF8S76jqpEu8BheskV5rds+mi7N7Nl2+QLpnU7zDp1u/FitWTC+3ItK8efNNqlrRl/NdqUvWSFV1L07fo+fxMxfYd+6kVlT1tXMepz7O28Db6TxnBjAjnVCq4fSfnkhV9mPg41RlfsBJ6saY60jqvtxAlCUuERWRsUB9oEFmx2KMyRyWSH2kqhkzsc8Yk2UEShdTerJEIjXG3Nguc7J9prFEaozJEiyRGmOMjyyRGmOMj2ywyRhjfGB9pMYY4weWSI0xxkeWSI0xxkeWSI0xxkeWSI0xxgeBfq39JVd/ugHc8C+AMRkpLCzM59WfSpYsqRMnTrx0QaB27dqBt/qTMcb4YsGCBU38cRxr2gc4z21mM1toaCgQePF47pKa2QoVKgQE1h+Up0X3xx9/ZHIkaXnuQX89CaT3/VyWSI0xAc8m5BtjjB8E8mCTJVJjTJZgNVJjjPGRJVJjjPGB9ZEaY4wfWCI1xhgfWSI1xhgf2ai9Mcb4wPpIjTHGDyyRGmOMjwI5kQZup0OAiIyM5NZbb+W+++7zbhs6dChFixalUqVKVKpUiaVLlwLw7bffUqFCBapWrcrOnTsBOHHiBA0bNsRfq2wFWjxxcXHUq1eP2rVrU6NGDUaMGAHAX3/9RYsWLahSpQotWrTgxIkTAKxfv56HHnqIunXrsmfPHgBOnjxJy5Yt/RZTIDl48CCNGzemSpUqPPjgg/znP/8BoGPHjtSqVYtatWpx3333UatWLQC+//57atSowcMPP8zu3bsB5/V54okn/Pb6HDx4kMcff5wHH3yQ6tWrExUVBcDPP/9M/fr1qVmzJm3atOH06dPemGrWrEmdOnXSxNSiRYvr8j27GlkqkYpIsoj8ICLbRORHEeknIkGp9t8vIqtFZIeI/CIik0Ukuy/nbNu2LdHR0edt79WrFxs2bGDDhg3Ur18fgHfeeYe5c+fyr3/9y/vhfOONNxg4cKDfvk0DLZ6wsDA+/vhjVqxYwfLly1m5ciWbNm1i7NixVK9enXXr1lG9enXGjh0LwMSJE5kyZQovvfQS06dPB+Dtt9+md+/eAV3juFoul4t//etfrFu3jmXLljFlyhR27NjBlClT+Prrr/n666959NFHadiwIQDjx49n2rRpvPLKK0ybNg2AkSNH0rdvX7+9PsHBwQwZMoRvvvmGpUuXMnXqVHbs2EG/fv0YNGgQq1atokGDBowbNw6ACRMmMG3atDTv2ahRo/wa0+Xw9JNe6iczZKlECsSqajlV/SfwCNAAGAwgIoWAD4GBqloSuAdYBuT05YTVq1cnb968l1U2JCSEuLg4YmJiCAkJYdeuXRw6dIgaNWr4EkJAxyMiREREAJCYmEhSUhIiwueff06LFi0AaNGiBcuWLQOcP+K4uDhiY2MJCQlh7969HD58mKpVq/otpkBSuHBhypYtC0DOnDm56667+P333737VZWFCxfStGlT4O/Xx/Oe7dmzh99//50HH3zQbzEVKlSIMmXKAJAjRw5vTDt37qRKlSoA1KxZk8WLFwPO5yg2Ntb7nu3Zs+eav2eehZ0v5yczZNk+UlU9KiKRwAYReQ3oAcxQ1XXu/Qp8lFHnnzhxIu+//z4VKlRg+PDh5M2blwEDBtC9e3fCw8OZOnUqL7zwAoMHD86oEAImnuTkZOrUqcOePXto37495cuX59ixY95l7woVKsTx48cB6N27N88//zzZsmXjvffeY8iQIQwcONDvMQWi/fv3s3XrVipUqODdtm7dOgoUKECxYsUA6Nu3L/369SNbtmxMmDCBV199lRdffPGaxHT33XezbNky6tevz6JFizh48CCQ9j0bN24cr732Gi+88EKGxXQhgdxiyWo10jRUdTfO/6EgUBrYdC3OGxkZyfbt29mwYQOFCxf2JoKyZcuyZs0avvjiC/bs2UORIkVQVZ566imeeeaZDFvXM7PjcblcLF++nC1btrBlyxa2b99+wbKlS5dmyZIlfPLJJ+zbt4/ChQujqkRGRtKjRw+OHTvml5gCzZkzZ3jmmWd4/fXXyZnz70bSJ5984q2NAtx77718/vnnLFy4kL1793pfn44dO9K1a1eOHj3q15g6dOjA0KFDyZkzJ2PGjGHq1Kk8/PDDnDlzxrse7b333svSpUv59NNP2bdvH4UKFUJV6dy5M926dfNrTBdjTfuMdcWvnIhEishGEdno6Tu8EoUKFcLlchEUFESHDh3YsGFDmv2qyptvvslLL73E66+/zqBBg2jVqpW3z8nfAiWe3LlzU7VqVVauXEmBAgW8ifrIkSPkz5//vJjeeecdnn32WUaNGkX//v1p1qwZkydP9mtMgSAxMZH27dvTvHlzHn30Ue/2pKQkPvvsMx5//PHznqOqvP322zz//PO89dZbvPDCCzzxxBNMmjTJbzF16NCBZs2aeWMqUaIEH374IV999RVNmzblH//4R7oxPffcc7z11lsMGDCAJ5544pq9Z/5KpCJSzz2OslNELli1FpFK7nGZ5pc6ZpZOpCJyJ5AMHAW2ARUu/gyHqkapakVVrRgZGXnF503dx7Vw4UL++c9/ptk/a9Ys6tevT968eYmJifH23cTExFzxuQI9nuPHj3Py5EkAYmNjWbNmDcWLF6dOnTrMnz8fgPnz51O3bt00z5s3bx4PP/wwefLkITY21htTbGyszzEFElWlT58+3HXXXXTv3j3NvlWrVlG8eHFuvvnm8543d+5cHnnkEe/r4+kj9Md7pqr07duXu+66i27dunm3e1oDKSkpvP3227Rr1y7N8+bNm5cmpqCgIEQkS71nIuICxgH1gVJAKxEpdYFyw4HPL+e4WbaPVEQKABOB91RVReQ9YL2IfKaq37vLtAG+UtXDV3uetm3bsnr1ao4fP86dd97JoEGDWL16NT/++CMiwh133JGmZhcTE8Ps2bP57LPPAOjTpw8tW7YkNDSUmTNn+vJfDsh4jh49Su/evUlOTiYlJYXHHnuMOnXqULFiRSIjI/nggw+45ZZb0tSkYmJimD9/PvPmzQOgS5cudOzYkdDQUCZMmOBzTIHk+++/Z/78+ZQqVco7xenll1/mkUce4dNPP03TrPeIiYlh7ty5fPSR08XfrVs32rdvT0hICFfTgkovpg8//JB77rmHhx56yBvT7t27mTp1KgANGzakVatWaWKaN2+e98uxW7dudOjQgZCQEO+Urozkx7uI3g/sdHcLIiJzgcbAf88p1wv4GKh0WfFlpXlgIpIMbAVCgCRgFvC2qqa491cBRuD0maYAq4FnVfViX+MaaPdICrR47J5NF2b3bLq0jRs31q9fv/4yX45RunRp/fDDDy+rbKlSpS54F1F3M72eqnZyP24LVFbVnqnK3AJ8ANQGpgCLVfWiA9dZqkaqqq5L7F8HVL9G4RhjrqEr+ALNLyIbUz2OUlVPVT69g5xbm3wHZxpl8uWeM0slUmOMuQzHL3Jf+wPAbake3wocOqdMRWCuO4nmBxqISJKqLrjQCS2RGmOyBD916WwASohIUeAg0BJonbqAqhZNdc7pOE37BRc7qCVSY0yW4I9EqqpJItITZzTeBUxV1W0i0tW9f+LVHNcSqTEm4Plzsr2qLgGWnLMt3QSqqs9czjEtkRpjsoRAmq1xLkukxpgswRKpMcb4KJATaZa+RNQYYwKB1UiNMVlCINdILZEaYwKe3UXUGGP8wBKpMcb4yBJpgPOschQoAi0ez6pLgSIQVyy76aabMjuE614gJ1IbtTfGZKgmTZosyOwYMprVSHHuXRMIcuTIAXDN7oFzKQULFgQCbz3SQFpr07PYcKDVllLfF+p64MeFnTNE4EZmjDFZhNVIjTFZQqDV+lOzGqkxxvjIaqTGmCwhkGuklkiNMVmCJVJjjPFRICdS6yM1xhgfWY3UGBPwbNESY4zxg0BOpNa0N8YYH1mN1BiTJQRyjdQSqTEmSwjkRGpN+4s4cOAADRo0oEKFClSqVInx48cD8PLLL1O+fHkeeOABWrVqxYkTJwBYt24dDzzwADVr1mTXrl0AnDhxgiZNmvht6beDBw/y+OOPU61aNWrUqEFUVBQA27Zto0GDBtSsWZM2bdpw+vRpANavX0+tWrWoW7cue/bsAeDkyZM8+eSTfokpLi6OevXqUbt2bWrUqMGIESMA+Ouvv2jRogVVqlShRYsW3tdo/fr1PPTQQ+fF07JlS78vj7djxw7Kly/v/cmTJw9jxozhhRdeoFy5crRr185bdtasWbz77rt+PX+gSkhI4OzZs5w9e5aEhAQAYmNjvdvOnDnD2bNnAUhKSvJu9ywWo6rExMQE5HKGmSXLJVIRUREZlerx8yLymvv310Tkeffv2UTkSxEZfLXnCg4O5o033mDTpk2sWLGCqKgofvnlF2rXrs369ev57rvvKF68OKNGOeGMHTuW2bNnM3jwYCZPngzA8OHDef755/32bRocHMyQIUNYu3YtS5YsYdq0aezYsYN+/frxyiuvsGrVKho0aMC4ceMAmDBhAlOnTuWll15i+vTpALz99tv06dPHLzGFhYXx8ccfs2LFCpYvX87KlSvZtGkTY8eOpXr16qxbt47q1aszduxYACZOnMiUKVPOi6d3795+r3GULFmSzZs3s3nzZjZs2ED27Nlp0qQJ69at44cffiA5OZmtW7cSGxvLzJkz6datm1/PH4iSk5NJTEwke/bsZM+enaSkJFJSUggPDyciIoKIiAiCg4MJDnYaq4mJiYSHhxMWFuZNuvHx8YSGhl7zGqJn5P5SP5khyyVSIB5oKiL5L1RAREKBj4FNqjrkak9UuHBhypUrBzjLkpUsWZJDhw7xf//3f94PWqVKlTh06BAAISEhxMXFERMTQ0hICLt37+b333+nWrVqVxvCeQoVKkSZMmUAZ9m9EiVKcPjwYXbu3EmVKlUAqFmzJp999hngJN7Y2FhiYmIIDg5m7969/P7771StWtUv8YgIERERgPNHl5SUhIjw+eef06JFCwBatGjBsmXLvPHExcURGxtLSEgIe/fu5fDhw36L50KWL19OsWLFyJcvHwkJCaiqN4aRI0fSs2dPQkJCMjSGQJCSkoLL5fImHZfLRWJione/qpKUlJTmtVBVVBURISUlBVX1fv6NIyu+GklAFPAs8HI6+4OBucCvqvqCv066b98+fvrpJypWrJhm+6xZs2jWrBkAzz33HL169SI8PJxJkybx8ssv88orr/grhPPs37+fn3/+mfLly3P33XezbNky6tevT3R0NAcPHgSgT58+PP/882TLlo1x48bx2muv8cILfntZAKeWU6dOHfbs2UP79u0pX748x44d864fWqhQIY4fPw5A7969vfG89957DBkyhIEDB/o1nvTMmzePli1bkjNnTpo2bUqFChWoXbs2uXPnZsOGDQwaNCjDYwgEQUFBxMfHe5vlSUlJuFwu7/7k5OQ0a3+GhoYSFxeHiJAtWzbi4+MJCwu75nEH+jzSrFgjBRgHPCUiudPZNwBIUtW+F3qyiESKyEYR2ejpY7yYM2fO0KZNG4YNG0auXLm829966y2Cg4N58sknAShTpgwrV65kyZIl7Nmzh8KFC6OqtGvXjk6dOvl1weazZ8/SsWNHhg4dSs6cOXnnnXeYNm0ajzzyCGfOnPHerqR06dIsXbqUTz/9lH379nlj6ty5M927d/dLTC6Xi+XLl7Nlyxa2bNnC9u3bL1i2dOnSLFmyhE8++SRNPJGRkfTo0YNjx475HM+5EhISiI6Opnnz5gD079+fzZs3M3LkSF599VWGDBnC5MmTefLJJ3n99df9fv5A4nK5CA0NJSYmhtjY2DRJFDivNupyuYiIiCB79uykpKR4k1lsbCyxsbHXdJFta9r7maqeAmYCvdPZvRaoIiJ3XeT5UapaUVUrRkZGXvRciYmJtGnThhYtWtC4cWPv9vfff5+lS5cyZcqU8948VeWtt95i4MCBDBs2jJdeeoknn3ySCRMmXMH/8uIxdejQgWbNmtGwYUMASpQowfz58/nyyy95/PHHueOOO86LafTo0fTr14+RI0cyYMAAmjdv7u3L9YfcuXNTtWpVVq5cSYECBbwr6x85coT8+dP2xKgq77zzDs8++yyjRo2if//+NGvWzK/xeCxdupT77rvvvHtPbdmyBYC77rqL2bNnM2/ePH7++Wd+/fVXv8cQSEJDQ73JMXXt09OsT6/ZrqokJCQQFhbm7SMNCQlJ0y1wI8uSidTtHaAjEHHO9tVAX2CpiNzsywlUlR49elCyZEl69erl3f7ll18yevRo5s2bR/bs2c973vvvv0/dunXJmzcvMTExBAUFERQURGxsrC/heGN69tlnKVGiBF27dvVu99TkUlJSGD16dJoRaXCatg8//DB58uQhNjbWbzEdP36ckydPAk4tZc2aNRQvXpw6deowf/58AObPn0/dunWvSTzpmTt3Li1btjxvu6c2mpiYSHJyMuA0fWNiYvweQyDx1CJTUlLS1ECTk5O978O5PAnWU2nw/HstR+4DuUaaFftIAVDVP0VkPk4ynXrOvo9FpACwTERqqOqJqznHunXrmDNnDv/85z+9gyGDBw9mwIABxMfHe2uolSpVYsyYMQDExMTwwQcfsHDhQgB69uxJmzZtCA0NZerUqemf6AqsX7+eDz/8kHvuuYfatWsD8NJLL7F7926mTZsGQIMGDWjVqpX3OTExMcybN8+b2Lp27UqHDh0IDQ1l4sSJPsVz9OhRevfuTXJyMikpKTz22GPUqVOHihUrEhkZyQcffMAtt9zCpEmT0sQzf/585s2bB0CXLl3o2LEjoaGhfqu1pz7XV199dd7/c8GCBVSqVImbb3a+ax944AHKli3LvffeS9myZf0aQ6CJi4vzJsCwsDBv8klMTLxgbdQzeg/OoKrnC8+z7UYnWW0umIicUdUc7t8LAXuAEar6mnsa1BlVHene/xpQG6ijqnEXOKTaze/SZze/uzS7+d2lxTuy+XKM++67T1etWnVZZXPnzr1JVSteuqT/ZLkaqSeJun8/AmRP9fi1c8q+BqTZZowx/pblEqkx5sZj05+MMcYP/DXYJCL1RGSHiOwUkfMmVYvIUyLyk/vnWxG5ZKe5JVJjzA1DRFw489DrA6WAViJS6pxie4CaqloGGIpzAdBFWSI1xtxI7gd2qupuVU3AuQqyceoCqvqtqv7lfvgdcOulDmqJ1BiTJfipaX8L8Fuqxwfc2y6kI7D0Uge1wSZjTJZwBYNN+UVkY6rHUarqaZ6nd5B054CKyEM4ifSSqw5ZIjXGXG+OX2Qe6QHgtlSPbwUOnVtIRMoAk4H6qvrHpU5oTXtjzI1kA1BCRIq6l9tsCSxKXUBEbgc+Adqq6v8u56BWIzXGZAn+mEeqqkki0hP4HHABU1V1m4h0de+fCLwK3ASMd58z6VJXSlkiNcbcUFR1CbDknG0TU/3eCeh0Jce0RGqMCXh2ZZMxxlznrEZqjMkSArlGaokUMuUeNBeTN2/ezA4hjdS3VwkEgfgHFWir6pcoUSKzQ0gtsP7AMoA17Y0xxkdWIzXGZAmB2BLxsBqpMcb4yBKpMcb4yJr2xpgswZr2xhhzHbNEaowxPrJEaowxPrI+UmNMlmB9pMYYcx2zRGqMMT6ypr0xJuDZMnpZXOfOnbnlllsoV66cd9vgwYMpX748FStWpEGDBhw65Nzy5dtvv6V8+fJUqVKFnTt3AnDixAkaNmyIarr31/JLPB5vv/02oaGhHD9+/JrF06VLF+644w4qVvx7AfGffvqJWrVqUalSJZo1a8apU6cAWLduHffffz/VqlVj165d3ngee+wxv8VzrqJFi1KmTBnuu+8+KlWqBMDAgQMpW7Ys7dq185abNWsWY8aM8fv54+PjadasGY0aNaJ+/frec/Tp04dGjRrRqFEjatWqRaNGjQDYtGkTjz76KE2bNmXfvn0AnDp1ivbt22fYa2R8d10lUhFJFpEfRORHEdksIlV9PebTTz/N4sWL02x77rnn2Lx5Mxs3bqRBgwa8/vrrAIwePZp58+YxdOhQoqKcmxa+8cYbDBw40G/fpunFA/Dbb7+xfPlybr/9du+2axFP27ZtWbBgQZpt3bt3Z+jQoWzYsIHHHnuM0aNHAzBmzBg++OADhgwZwqRJkwAYNmwY/fv3z9DaxooVK9iyZQsbNmzg5MmTrFu3jh9//JHk5GS2bt1KbGwsM2bMoHv37n4/d2hoKDNnziQ6OppFixaxevVqtmzZwpgxY4iOjiY6Opq6detSp04dAKZMmcJ7771Hv379+OCDDwAYN24cXbt2Dega2Y3uukqkQKyqllPVssCLwJu+HrB69ernLWuXelm5s2fPej/gISEhxMbGEhMTQ3BwMLt27eLgwYPUqFHD1zAuGg/A888/zxtvvJHmj+1axFOtWjXy5cuXZtuvv/5KtWrOHWz/7//+j4ULF54XT0hICLt37+bQoUNUr17db/FcSlBQEAkJCagqsbGxhISE8NZbb9GrVy9CQkL8fj4RISIiAoCkpCSSkpLSvEeqypIlS7w10pCQEOLi4oiLiyM4OJh9+/Zx5MgRKleu7PfYjP9cz32kuYC/MurggwYN4v333ydXrlx8+eWXAAwYMIDu3bsTHh7OtGnTGDhwIK+99lpGheAVHR3NLbfcQtmyZdNsz6x4SpUqxeLFi2nUqBGffPIJBw4cAJxk37NnT8LDw5k8eTIvvfQSr776aobGIiLUrVsXESEyMpLIyEiaNm1K+fLlqV27Nrlz52bjxo0ZGkdycjJNmjRh//79PPXUU2m6ZTZs2ED+/Pn5xz/+AThdJa+88grZsmXjrbfeYvjw4fTt2zfDYstKArlGfr3VSMPdTftfcO5JPTSjTjR06FB2795Nq1atGD9+PADlypVj7dq1fPnll+zZs4ebb74ZVaV169a0a9eOI0eO+D2OmJgYhg0bxuDBg8/blxnxAEycOJGoqCiqVq3K6dOnCQ0NBaBs2bKsWrWKZcuWsXfvXooUKYKq0rZtWzp06JAh8axdu5ZNmzaxZMkSxo8fz+rVqxkwYABbtmxh1KhRDBo0iCFDhjB58mSefPJJ/v3vf/s9BpfLRXR0NGvWrOGnn37if//7+w6/ixcv5tFHH/U+LlWqFB999BGzZ8/mt99+o2DBgqgqffr04bnnnvP2f5vAcr0lUk/T/m6gHjBT0vkaE5FIEdkoIhs9fYdXq2XLlnz66adptqkqb775Ji+99BL//ve/efXVV2ndujXvvfeeT+dKz65du9i7dy8VK1akRIkSHDhwgMqVK3P48OFMiQegZMmSREdH8+2339KiRQuKFi2aZr+qMnz4cF544QXeeOMNXnnlFVq2bOn9QvKnm2++GYCCBQvSpEkT1q9f7923ZcsWAO666y5mzZrFvHnz2LZtW4atdp8rVy4qV67M6tWrAaep/8UXX9CgQYPzyqoq48ePp0ePHowdO5bevXvTuHFjZs6cmSGxGd9cb4nUS1XXAfmBAunsi1LViqpaMTIy8oqPnfoPbfHixZQsWTLN/lmzZlG/fn3y5s1LTEwMQUFBBAUFERsbe8XnupR7772XgwcP8uuvv/Lrr79y66238v3331O4cOFMiQfg6NGjAKSkpDB8+HA6dUp7Z9vZs2dTr169DI/n7NmznD592vv7l19+SenSpb37X331Vf71r3+RmJhIcnIy4PShxsTE+C2GP/74wztrIS4ujm+//ZY777wTwPt7kSJFznveJ598Qq1atcidOzdxcXEEBQUhIhn2nhnfXLd9pCJyN+AC/vDlOG3atGH16tUcP36cokWL8uqrr7J06VL+97//ERQUxO233864ceO85WNiYpg1axZLlji3ze7bty9PPvkkoaGhzJo1y5dQLhhP+/btL1g+o+Np164dq1ev5o8//qB48eK88sornD17lv/85z8ANG7cmKeffjpNPO+//z7R0dEA9O7dm9atWxMSEsKMGTN8jie1I0eO0LRpU8Cp/bVq1Yp69eoBsGDBAipWrOitsT7wwAOUKVOGMmXKnNfX7Itjx44xYMAAUlJSSElJoX79+tSuXRs4v1nvERsby6effsq0adMAaN++PT179iQkJMQ7A8IEFrme5qaJSDKw1fMQeElVP7vE0zQxMTFjA7tMnlHjQIsnUGpB4eHhAAE1n9LTc+SZpxsoAuzmd6iqTyNFFStW1NTdMhfjcrk2qWrFS5f0n+uqRqqqrsyOwRiTMWzU3hhjrmOWSI0xxkeWSI0xxkeWSI0xxkeWSI0xxkeWSI0xxkeWSI0xxkeWSI0xxkeWSI0xxkeWSI0xNxQRqSciO0Rkp4i8kM5+EZF33ft/EpHylzqmJVJjzA1DRFzAOKA+UApoJSKlzilWHyjh/okEJlzquJZIjTE3kvuBnaq6W1UTgLlA43PKNAZmquM7II+InL/WYSqWSI0xWYLnlsyX+rmEW4DfUj0+4N52pWXSuK5Wf7pKkhE3PfNFoMXjWb4uUATiKkDFixfP7BDSCKSlBv1h06ZNn4tI/sssnk1ENqZ6HKWqnlthpPfhOffFupwyaVgiNcYEPFWt56dDHQBuS/X4VuDQVZRJw5r2xpgbyQaghIgUFZFQoCWw6Jwyi4Cn3aP3DwAnVfX3ix3UaqTGmBuGqiaJSE/gc5xbEU1V1W0i0tW9fyKwBGgA7ARigAvfy8fturrViDHGZAZr2htjjI8skRpjjI8skRpjjI8skRpjjI8skRpjjI8skRpjjI8skRpjjI8skRpjjI/+H/2hMnWZs5+gAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "im, bar = heatmap(replicated_ratio_df.values, \n",
+ " list(rb_df.index), \n",
+ " celltypes,\n",
+ " cmap='alpha', \n",
+ " vmin=0, vmax=1)\n",
+ "_ = annotate_heatmap(im, \n",
+ " data=replicated_ratio_df.values, \n",
+ " valfmt=\"{x:.0%}\", \n",
+ " textcolors=(\"white\", \"white\"),\n",
+ " threshold=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 71,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":62: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_xticklabels([\"\"]+col_labels)\n",
+ ":63: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_yticklabels([\"\"]+row_labels)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh4AAAHPCAYAAAAcSdNdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAADR+UlEQVR4nOydd3hUxdeA30nZdJJAKiWEJk3AAgo2EAXBhoWiIFLkQ1FQEBVURBAQBUT9YUVFpAt2FBSsKEVABJTeAqGX9E6y8/1xd9fd7KaQbCrnfZ77bHbuzNw5d2/uPfecM2eU1hpBEARBEITywKOiByAIgiAIwsWDKB6CIAiCIJQbongIgiAIglBuiOIhCIIgCEK5IYqHIAiCIAjlhigegiAIgiCUG6J4CIIgCIJQbojiIQhuRinlWdFjEARBqKyI4iEIbsKqcGit8yp6LIIgCJUVUTwEwX08pJT6Rinlay1QSnlV5IAEQRAqG6J4CIIbUErVBnoBtwOxSqkhSikvrXVuBQ9NEAShUiGKhyCUEqWUAoYAnYADwEjg/4CTSqnudnVQSsn/nCAIFzVKFokThNKhlGoFfA/sAAYCiUA4sAhIBu60j/uwxIKYtfzzCYJwESL+Z0EoBUopb2AUEAm011oft+w6opRaBzwO3KKUigFigLfs6giCIFx0iNlXEErHTUBf4BWtdbxFEbFyM2AC7gTaAS2BnUqpe8p/mIIgCJUDcbUIQglRSgUDnwIttdb1LGXeWuvzSqnhwBTgE6314xb3Sg3gJ+BfrfWDSimltdZ2nx5aa3OFCSQIglAOiKtFEErOzUBXYDCAUspHa52tlKqFEWC6CXgTjNweSqkM4AhwtVLKpLXOsfSjjCraLPEfgiBUd0TxEIQSorX+XCl1l9b6G0vRecvnOCAQWKy1PmDXJBbD5fKl1jpHKdUC6AY0UEqlAtO11onlNHxBEIQKQVwtglACrO4Ru++eFqtGO+BbYBUwXGudbNlvAl4ChmJYSbyAxUAUsAvD6tEEGKm1/rBchREEQShHJLhUEEpAfleI3XTZbhhKxTKr0mGhDfAY8BZGwOlMQANdgBuA7sAsYLRSqmn+40n+D0EQqgtyMxMEN6K1ngRcY+d+QSkVCDwJnAGWATcC7YHBWus/tNZpWuuTwOdAA+A2SzsPu34l6FQQhGqBKB6C4CasioLWek++XbcDfTCsHHuAW4GftNa/WjOaWjiMkXCslqUfs1KqtVLqNfsVb2X9F0EQqjKieAiCmyjEKhEDbMWYehsENAPWWXfaKRJtMDKe/mkpV8DzGAnKblZKXW05jqz/IghClUWCSwWhHFBKBQEZGEGkazEsG7dprc9b9nsAWzDiPh7UWv+jlLoVI1D1HPAXEAqEYLho1pa7EIIgCG5ALB6CUIYopTwsM2BStdZ5FmvFQqApMFgp1Ugp1RlYgGEJeduidHgBrwJxwDBgEPAgsB14TykVVhHyCIIglBbxFV+E5J8KWt2pSHlduV+01v+zJBl7AyOuoyGQBozAmGILRgKyphjKxheWfk4opX7ASMF+ObDa2qc166lkPxUEobIjisdFiCU9tyfgCZyv7kpIZZLXqhhorV9USr0N9ABOAke01tssdWoDY4GlwM/5FIkswBtjBVwb1joW5UNhuFFFAREEodIhMR4XGUqpBsAQoDOQAuQBn2utP6rQgZURlVFei2LgYZf7I//+t4CewH1a61/tysOAzwAfrXUHS5k3MAC4BCNb6gKt9Trrcaq7UikIQtVDYjwuIpRSQzAWKXsKOAbsBg4BU5RS2yxZN6sNlVVebZCXbyotAEqpy4BHgbnAZrtyhWEduR54zVJWHyNe5D3gPgzXzC9KqY+UUgGidAiCUBkRi8dFglKqNcaDbBfGrAmrWd8fY7rncxhvzU9orf+ssIG6iaoqr0XBGAH8Zh2zpbwB8AOwE+gN+AGTMbKhPgx8BWRjLFw3A3hZUq8LglAZEcXjIkEp9QvQCHhEa73Cuny73f4mwJfAWq31w0qphlrrgxU13tJSneS1rPMyDngc6Ka13qCU6oqR6fRDrfUou7o+wB8YbqXuQG7+WA8JQBUEoSIRV8tFgFLqFqAjMAfD9QDgkIRKa70Pw8S/RSkVA8xTSqUrpR4s18G6gaosryv3C9AYQ/GYB1itIFdh/P++bGnnYVmoLhs4AERqrXPsFQy7zKpmpZRnAccSBEEoU0TxuDjoD5wFVmmts10FHVregtdgJKzqjLF8+ypgllJqi1LqynIfdcmpsvK6isvQWu/EkOkNrXWmpfhKDDdSil29PEv+j07AejCyoiqlrlFKTQPeVkpNUkoFW3KKaFE+BEEob0TxqOZY3nK9gQTrbIcCHm7WN2MfjPiHFRhJq9oC/wDfKKVGV/Z1QqqrvFrrhflcQVsxXEkNLfut8rwIhAHfWc7FUxixIf2BSzEWoItXSo2wtNMgq98KglB+VIqbqlB2WMzquUAqGG/ABa31YYkl+D8gGhiktU4CkpRSTwJDgX4Yqbt/LYehl4iLSN7vgL7AE0qp/2EEm3bGWNvlA2A5xsJ0o4E1GAGpADWAXpZ2h7TW38LFvfrtxTbt+GKTV6h8yFtONcbOjL4WuFIpdUURC4y1wYh7eB/jgQuA1vocMBtjrZE3lFIBlfEN+WKSV2u9GWPxuNswLBo/AJOA+cAzgD/wEHAaeExrnW7ZTmBMwf0EOKCUilBKzVNKhVeEHJWE7kqp95RSjSp6IOWEVd6GFT0Q4eKkUt1MBfdi91azACN+YaRSqq59HevDWhmLmI0GEoAPtNZZdnW8LA/jhRjriYRWxjfk8pC3MsREWMegtV6hta6H4U55AiO2Y6DWOhlogKFYrdBax9krTlrrc1rrSVrrXUAT4AGgdTmLUSlQStXAsHoNBfYqpd6vLO61skApFYJh/RqKXcp9QShPRPG4CNBapwBvY8z0WKqU6qGUaqmUigDbg6wzRrbM14D9+dpbrQY+gAnjoVZpKWN5TUqpMKXUlZapq+WOXVyGl+X7p5YYkA12ylcOxmq2v1m+2xSmfMpTGHAGIweIU6yHMvC0/O1dBuJUGJbzcDfG2jeDMaxH7YE4pdR9FTm2ssAi750YrrZMYLdSyruyWfOE6o9ccBcJWuvlGG/AcRiZLj/AyOR5N0aA4ljgT4x04k6pvC0Pn0sxTPfbXOyz/l0pTPZulPcMjvK+hbFC7AKMG/eo/G3Li0JiVzwwfqc44H6llMkqo9W/b/ewqYsRjLvB2txSr71Sqq1dllUT8L6qXtlt62Asxvc78InW+nugG4YbaoxSqjdUq8DbOsDTwEaMYOraWuvzlrgoL7CtEyQIZUp1+YcSioHWOklr3RfDEjATuB/j4XszcAXwiiUGwJVLoSHGm9J3gNXtYM0LkaeUClVKvQlsVkqlKaUuqWi3hJvk/RbL/4lSaihG3MQXGDNh3gJGKKUWKqVCy16i4qGNRegSgA+Ba4CBSqmaSik/q0XEzlXWBvgXqGn5rpRSnYCvgd8spnmAZzHWhIkuFyHKGItiORjDxTTO7rycAGZh5EIZr5QKq4xuxQvFTt7mwJNAMHDUss+ktc5VxlpAR5VSwyv6f1eo5mitZbuIN4wHrPWtPirfPk/LZwDGG34CcGe+OkEYD/WfMFwWBzEUk0jLflNFy1hKee+w2/8dhusi2PLdA0OZOQHcZCnzrmgZ88k0CSNI9lfgXaCOdeyWz/nAr3b1pwBJGMpVeyDc8nuex8iSaq1XqeQswXm5DGNV4A8L2N8SYyXgIRU9VjfKewL42HLdrgJWW/ZZM1jPBc5Zr3mgYUWPu5zPkaroMVwsm1g8LnK0kRviPaAFsFApda31LVcbloxoDPNsX0u93wGUUnWUUo9jPIi7Y2TQnI6hiIzXWp+yBHA+oZR6u7KYq0sg71q75ssxpqNmWOqbgV8AXwwTPcCoyiCvnTXqBYx8H+uATRiJ1axjB0O5WKmUilRKzceY5bMMuFcbMSNnMBKV5QC9lbHwHtou/XxVQynli7EejglDMbPfZ/3d0jGUrQaWOJdKcf2WBDt5fYEJlt8+GogHI2bI4kJ7EMNK9qPlf/dbpdR3lvYXA9bZPo0reiDVnorWfGSrHBvGjWg5RibMxRhBlxMxFlozY1gAfDAevPdgWDd2YUTHB2EEKa4Bjtn16YkRxHkYSAQerWg5L0DeT4Balrq1MRZjm4Oxyu2zlvIQjJgRM8aDGgw3TqWQFyNew9Puu0e+/Y0xFKev+W99l/uAGnZ1brLINw0jR0gW8BEQWNG/YSnOy60WOcYWUqezRe4XLd9rAvdarot3gNeByytalguUd4zle6jlOl9oV2cDxgKEV1i+D7W06YudJYBqahWw3Ne+tPzmeRhT7L0qelzVdavwAchWuTagg+XmuhxjCfk1wHD+M82/jeGCeN76gLIoJKMt/7R9LGX2D7xalv0pGIFt7StazguQtxmGW+YQRrzH2xjm6EOWh3YWhuJSu7LKm1/hsCsPwXA3mC2y3ePit9uNYSm51PK9CRa3kov+Kv2N2vLQXW15yLpUnjCCbZ/HmPnRGmNdnL8s52m7pf1yDKvIIiyut8q45ZM3yK78CPC65e8BFtmewFBWYzBcpl8CNV306VvRcrn5HCnLOcgDBmJYcP/BsA7eX9Hjq45bhQ9Atsq5WW849g8TDMvG80AaRlR8I0t5W2AP8Hsh/XlixA+Y7R50UWU1fjfJ62UZczpwlaVMYfj/t2G8+bauSvICdS2fIRiuMTPwmf1DGEtcDsZquGaMFX5t58TyGQjciGH96pvvGJXyrdjy2z2BsWDgvfn2edj93RrDsjUXI8B4K8Ysobvt6oQBXTAsRT8DzSpavgLkHWX5De+xvwYwFOeXLd9PAD8CDSzfXwWSgWss3/0sso631EsBhle0fG48T3Ut/8+/2V3f4RhuuH3W/33Z3HjOK3oAslXuDWfzfCCG+f13/jNJzrLc3C631PF00U9Ty838Y8tNbLWlzSsVLWMR8v4FfOui3njLzTvQ8l3l21/p5AWuBrYAX1lutOcxppNGWGXnP0uPr+UB8xUQY39uMN6I/7DIE4fhWjoG9Kjo368I+b2AqZZxT8WYXpr/d2sMLMGwBN1jkT8LuL2APjtgWBPGVbR8Bcj7HrA2X7kHRgBxP4zkc7n8Z6lsZ/kt11gUkO8s14EZwwLwHcasmHvLW54yOkeeGDO28oBLrOfN8tnCch28VdHjrG5bhQ9Atqq5YZhwH8B4WzoPrC+kri+Gi+KsnXLihxHMtoRK5HqxG7Oy3JS+Bvbyn6XA+vB92iJPaFWSF7jd8lCZRb4ZSvnqTcRwNeSfxRSJMUNmh+XBHI1hAZqJoYi1rOjfrhjn4G7Lw/UwhgXkRovC0QHDemEGHsYwv58DFhTR330Y8T+V1dITlO97MwxXyusWpWMuRgyLF4bryGqlS7YoGqMwrJo1KmL8ZXxuLseIVTNjxHnZW758MQJwX7N8r5S/b1XcKnwAslXdDeONcTnGjId0jFgHp5sTcIPlITYB8Mm3z68y/0NjzFbZDYyzPHQDMMywR4HvgeiqLm/+8ViUrpcsN93mljLrW+DDlpv0Ov6bMq0wsrseByZVtDwXIPdYDKVyM8Zb/XkMC84Ey/5XLLJa34Q987W3TkMNAuq7OpeVcbMoGYcssu3gv6ngd2G8+U+0nId5rq6RqiBjMc+DL0agdCIwzPJ/noAR43U38DnGYpNdK3qs1W2r8AHIVnU3jKmXZoy3/yjgLhd1QjDemnZi8SFXtQ0j8VIiRvKxXy1KxVGgX3WU1yJHF8tNeDHQ1K58J4abZT2GwvmS3b5/gf9Z/q4SDycMRfJWy9bT8vt5W/b9APxh+dtlgG5V3DCsO1arxkTLAzgUIxB6HRCBYfnYW1V+xxKeh/yzfWphuF3SLf/fWzCCTat0zprKuFXbxZCEcsEbY/rsdACl1NeWTw9tpGFWGOtfdMPI+Hm4wkZaCrTWc5RSizEUrNoYN6Q5GCZalFKe2sgBUi3kBdBar1ZKdcR4AL2ilHoE421YY8x2mImhkE1USg3CMNd78F+OE10R475QtNbpGIHSNpRSXpa8HRpjbR5P7SKtflVFa71fKXUZhuvvO611llLqYYyg2j5a69NKqY1AD4xlA/6puNGWDZZMw6MwXE5vg7F4olLqNQwL3t1AN20sFim4GVVF7g9CJUUpFaC1Tnd1c1ZK1cO4qR/HsA6crZBBuhGrUmX5W9k/YKuLvBYFStnJ2djysPLAsHac1lrfZdkXiRFs+BCGCf9GrfVv+c9NVUQpNR5jWnSs1jqxosdTViil6mOkiP8S+D+tdZJSqj1GAPlQrfXH9td9VcdyfT+OEdPRR2v9uaXc+gLRECNPUUet9e8VONRqS5XNxidUDixvjLhQOrww3qiaAK9W1YdwfuxvvvmUjmojrzYwWxf/01rvt3yaMeIeGiil+iqlfLXWp7TWYzACNAdqrX+z9lFR43cj72Pku3jObs0awOXaPlUWrfVh4BmM6zbJUrwHw91wveV7tZEXI2g8CuP511YpVQcc7mF9MNyIkRUzvOqPWDyEMkEpdSWGj/xT4GmtdUYFD6lMuVjktaTPnoFh4fgUY9ZPnNb6b7s61cHaYX3QPoaxIOB3GDOBzmitTyilvHUVThtfGNbfTyn1BUa6/au11lkVPS53o5S6G2OhR40RTL0LY5bW2xjTja/VWp+usAFWY8TiIZQVLTHWwviwuj6E83FRyKu1ztJaD8dIKV4XIxjvEaXU5XZ1qrTSATarj9Zav4WRRKw98A0wXyn1K0bQYXXnd+ASILaCx1EmaK2/1FrXAWYDL2AsmLgEI0XAC6J0lB1i8RDKDKVUBHCuOgXmFcbFIK/d4nPW+I82GLN89lUHhaMwlFJ3YSiYGcAvWuutFTqgMsaiTP4EzNRaT64OlqyCUEoFAh0x8rbEa62PVfCQqjWieAiCcMFUt5kegmssimYrrfW2ih6LUH0QxUMQBEEQhHJDYjwEQRAEQSg3RPEQBEEQBKHcEMVDEARBEIRyo0orHkqpDkqppUqp40qpHKXUOaXUaqXUAKWUp1Kqk1JK222ZSqmjSqkVSqkhSilTEf1fo5QyW9p6WcoG5uuzoG1CuZwEQRAEQbCglKqrlJqllFqvlMqwPI9ii9nWVyk1XSl1wvK8XK+UusFFPQ+l1LNKqTilVJZSaptS6t7ijrHKKh5KqZHAWow0zWOAmzHWjtgLvIux/LeVxzGWvO6KkQL5OEaSmI1KqfAC+vfGyFx4Kt+u7yx9WbfH8h3Dun1YGvkEQRAEoQQ0BnpjLGx5oSnfPwL+DxiP8Qw9AfxgWdvHnkkYq2+/BXQHNgDLlFK3FusoZbkCXVltGMuOm7GshOlifyOMBY86YWSlu9lFnQ4YKxMuL6CP5zBW25xi6cOrgHoFHqMIGYZW9Hksx9/ropFV5K3e28Uk68Umb3WRFbuVlIEhludTbDHatbHUHWRX5oWRPv8bu7IIIBuYmK/9T8D24oyxqlo8xmIs2f2Mq51a6wNa6+2FdaC1Xo/FMqKUamS/z/L9eYxl38sqLfLQMuq3MnIxyQoib3XmYpIVLi55q4WsuuSL+d2J8bz71K6vXIxsrrcopXwsxbdgZGlekK/9AqCVUqpBUQeqcoqHZeGqTsAqXfr1A6zLYV+br/xd4DOt9ZpS9i8IgiAIVYGWwCHtvOTDDgxFo7FdvWyMFXzz1wNoUdSBvEoxyIoiDPADDruhryOWz2hrgVLqAaAt0MwN/TuglBrKf1r1lUqpiyJ7m7e3N/7+/heFrAD16tXjiiuuuGjkrVu3LpdffvlFIa+vry/BwcEXhawAMTExtG3b9mKRN60sOnXzfX4HRoiAldla69lu6rsmRlxIfhLs9ls/k7TFv1JIvQKpioqHO7GuQKkBlFI1gdeA53QZLBBkuUBmW451sfwz07x584oeQrmyfv36ih5CuZKTk1PRQyg37r///ooeQrmycuXKih5CuaGU2lPRYygGWVrrtmXUt8LyLHRRXpJ6BVIVFY9zGItS1XdDX/Usnycsn5MxZrEsVUqFWMp8LZ/BSqksrXW6G44rCIIgXCR4eLgnqsFsLmn4RrFIAGJclIfa7bd+hrpYNDB/vQKpcoqH1jrXsix1F6WUj9Y6uxTd3Wb5XGv5bAG0wlBu8nMW+Bq4qxTHEwRBEC4yqojisQO4Wynlny/OowWQw38xHTsAH4zZo/vz1QPYWdSBqlxwqYVXgFrAdFc7lVINlFKtC+tAKdUBeBj4Smt90FI8Ergx3/aJZd/NwLhSj1wQBEEQKh/fAN5AL2uBJXFmH4zJHNaX/O8xFJF++do/APyrtT5U1IGqnMUDQGu9Rin1JDBTKdUcmIsRKBoK3IQxd7kvkGxp0lwplYYhbzRGIrH+GJrZ/9n1uzX/sZRSnSx//maZWiQIgiAIxUIp5TaLxwUcs6flzystn92VUmeAM1rr35RS9YEDwEta65fAeP4ppT4F3rAk0DwEDAMaYKdkaK1PK6VeB55VSqUCWzCUk85Aj+KMr0oqHgBa6zeUUhuBUcAMjNkuqcBmDEvGcoxEYwD/s3xmY7hRtmFkHJ2vtb54IuMEQRCEcqe8FQ9gWb7v71g+f8NIR6EAT5y9HoMwkmZOBkIwnpXdtNZb8tV7HmMW0BNAFEaSsd5a6+XFGVyVVTwAtNbrgHWFVPmVC4i0LeAYEzBSwxa0v9THEARBEAR3obUu9JmktY7DxXNLa50JPGnZCmufh6GcTC7J+Kq04iEIgiAIlZmKcLVUdkTxEARBEIQyRBQPR+RsCIIgCIJQbojFQxAEQRDKELF4OCKKhyAIgiCUERLj4YycDUEQBEEQyg2xeAiCIAhCGSIWD0dE8RAEQRCEMkJcLc7I2RAEQRAEodwQi4dQacnJyeHEiROkpqYCEBgYSO3atTGZTBfUVmuNv78/0dHR+Pv72+okJCRw9OjRAvto3rw53t7epRekmBw9epQxY8bw888/o7XmxhtvZNq0adSrV6/QdlOmTOHll192uc/Hx4eEBMdVqo8fP85LL73EDz/8QFJSEtHR0fTs2ZOXXnrJbbIUh6NHj/L888/zyy+/ANCxY0defvnlIuV95ZVXePXVV13u8/Hx4eTJkwAsWrSIxx57rMB+du/eTWRkZAlHf2FkZmaye/duzp07h9aasLAwmjVrhp+fX5FtMzIy2LNnj61tcHAwTZs2JTg42KHer7/+SlZWllP7yy+/vNzkFFwjFg9HRPEQKiVms5mDBw+ilLI9iE6dOsXBgwe55JJLCv1Hzs3NZf/+/Xh6elK3bl08PDw4c+YMBw8epHHjxvj6+gJQo0YNGjVq5NQ+Li4Ok8lUrkpHRkYGt956KyaTidmzZ6OUYuLEiXTv3p0///yTgICAAtsOHDiQLl26OJSlp6dz1113cdtttzmUHz58mJtuuonY2FhmzJhBREQEhw8f5uDBg5QnGRkZ9OjRA5PJxLvvvotSismTJ3PnnXfyxx9/FCpv//79uemmm5z669mzJ927d7eVde3alVWrVjnU01pz//33ExsbW24P47y8PDZt2oSHhwetWrUCYN++fWzcuJFrr70WL6+Cb8M5OTn8+eefeHl50bJlSzw9PYmLi2Pjxo106NCBwMBAh/phYWE0btzYoaywcymUD6J4OCKKh1ApSUhIICcnh6ZNm+Lj4wOAn5+f7a0xPDy8wLbnzp0jNzeXRo0a2doGBgaye/duTp06Rf369QHw8vJyuumnp6eTl5dHaGhoGUnmmo8//phDhw6xdetWmzJ06aWX0rp1az766CMef/zxAtvWqVOHOnXqOJQtWrSI3Nxc+vVzXLn68ccfp3bt2qxcudKmWF1//fVulqZo5s2bR1xcHJs2baJhw4YAtGzZkiuvvJK5c+cWaqlwJe+SJUvIzc3lvvvus5WFhYURFhbmUG/dunUkJCQwduxYN0pTOPHx8WRkZHD99dfblICgoCB+//134uPjadCgQaFtc3JyuOqqq2xta9asyZo1a9i/fz+XXXaZQ31vb29CQkLKShRBcAuihgmVkpSUFPz9/W2KA4DJZCIgIICUlJRC22ZkZODj4+PQ1sPDw9ZWa11g24SEBJRS5X7z/u6777jqqqscLDCxsbF06NCB77777oL7W7hwIREREdx88822soMHD/Ljjz/yyCOPlKs1xxUrV66kbdu2NqUDoH79+lx99dWsWLHigvtbsmQJERERTpYQV/VMJhP33nvvBR+jpJw+fZqQkBAHy4O/vz8hISGcPn260LZJSUn4+/s7tPXy8iI0NJTTp09jNpvLbNyCe7AGl7pjqy5UH0mEakVWVpbNJWKPr6+vSz+2PUoplHJenFEphdaa7Oxsl+3MZjPJyckEBQUVav4uC3bt2kWLFi2cyps3b87u3bsvqK9jx46xZs0a+vTp4yDH+vXrAcNydPvttxMaGkqdOnUYMmQI586dK50AF8ju3btp3ry5U3mzZs3Ys2fPBfV17Ngxfv/9d3r16lXo75aZmclXX33FLbfcQs2aNS94zCUlLS3NySUChhUuLS2t0LYFzYjw8PDAbDaTkZHhUH7mzBlWrVrFDz/8wPr16zl16lTpBi+4BVE8HKk+kgjViry8PDw9PZ3KPT09ycvLK7Stj48P2dnZ5Obm2sq01rabdEHtk5OTMZvN5e5mAUhMTHRpZQkNDSUxMfGC+lq0aBFms9nJzXLixAkAhg0bRpMmTfjyyy+ZNGkSP/zwAz169CjXt+fC5E1KSrqgvj799FPMZrODm8UV3333HampqUXWczfnz593aWHy9vZ2uEZdERAQQHp6Ojk5ObYyrTXJycm2vq1ERETQvHlz2rZtS5s2bfDw8ODvv//m+PHjbpJEENyDxHgI1Y6aNWty9uxZ4uPjqV27Nh4eHpw+fdp283ZlDQHjYejp6UmNGjXKc7g2XI2rMLdQQSxevJg2bdrYAhnz93X99dfz+uuvA9CpUydq1KjBgAEDWL16NbfccksJRl4y3CXvp59+SuvWrbn00ksLrbdkyRLCwsLo2rXrBR+joqhXrx6HDx/mn3/+oXnz5nh4eHDw4EEyMzMBx3OY32IWGRnJ+vXr2bt3L7Vr1y7XcQuOFHTPuVgRi4dQKSnIslGQJcQeHx8fYmJiyMzMZM+ePezatYuMjAxboKErc/z58+dJS0sjNDS0Qm4SISEhLi0bSUlJF2SB2bx5M3v27HGydgA290Lnzp0dyq1xEdu3b7+QIZeKwuS9kPiav/76i71793L//fcXWu/kyZP8+uuvRbpjygJvb28Hy4SV8+fPFzkWf39/WrduTXJyMmvWrOHXX38lKSnJFiBtH8eUH6UUUVFRZGVlFemeFMoOifFwpvpIIlQrfHx8XN4sC4r9yE9wcDDNmzfnkksuoWnTpjRp0gSz2Yy3t7fLPCDWh2BFuFnAiOXYtWuXU/nu3btp1qxZsftZuHAhXl5e9O7d2+UxoOC3r/JUuJo1a+YydmXPnj00bdq02P0sXrwYLy8vevbsWWi9pUuXkpeXV6SCUhYUFMtRUOxHfqKiorjxxhu57rrruOGGG7jmmmvIy8vD19e3WHlAoOx+27lz59qCsfMrkrm5uSilmDBhQqmOMXbsWFq3bk1ISAj+/v40a9aMSZMmOcW32JOUlERUVBRKKX788cdSHV9wP6J4CJWSGjVqkJGR4RAImpOTQ3p6erFdIUopfH198fHx4fz58yQnJ1OrVi2XdZOSki7oRu5ubrvtNjZu3MihQ4dsZYcPH2b9+vXceuutxeojJyeHzz77jFtuucXldOOrrrqKyMhIVq9e7VBu/X7llVeWQoILo3v37mzevJm4uDhb2ZEjR/jzzz8dcnEURk5ODl988QVdunRxmjabnyVLltCyZUsn91N5EBERQXJyssODMiMjg6SkJCIiIorVh1KKwMBA/P39ycrK4uTJk0UmWjObzZw8edL2P1CWJCcnF5jUrbSkpKQwaNAgFi1axPLly+nXrx9TpkwpVIkcM2ZMpXJviMXDkeojiVCtqFWrFiaTicOHD5OcnExycrItsZf9jIScnBy2b9/uEL2vteb48eMkJyeTlpbG2bNn2bdvHz4+Pi4fUBkZGWRlZVWYtQNg0KBB1K9fn969e/Ptt9/y3Xff0bt3b+rWrctDDz1kq3fkyBFq1KjB1KlTnfpYuXIlCQkJLt0sYLiYXnrpJb7//nsef/xxfvzxR2bPns2oUaO44YYb6NSpU1mJ58SDDz5ITEwMffv2ZcWKFaxYsYK+fftSp04dBg4caKt35MgRwsLCmDZtmlMfP/zwA4mJiUVaMbZt28auXbsqxNoBULduXfz8/NiyZQunTp3i9OnT/P333/j6+jooD5mZmfzwww/s37/fVmY2m9m1axenTp3i3LlzNmU0MDDQIf/H8ePH2bp1K8eOHePcuXOcOHGCTZs2kZKSckEWpJLStWtXZs2aZcsa607eeecdRo0axa233spNN93ECy+8wKhRo/jmm284e/asU/21a9eyYMECpkyZ4vaxlARxtTgjwaVCpcTDw4OGDRty/Phx4uPjgf9SpruK8cgflJidnU1SUhJ5eXl4e3tTs2ZNIiIiXP7zWk3EFZl4KSAggBUrVjBmzBiGDBmC1ppOnToxbdo0B3O81pq8vDyXM1AWLlxIzZo1C7UYPPDAA3h4eDBz5kzmz59PaGgo9913HxMnTizXN8SAgAC+/vprnn/+eR555BG01txwww1MnTrVyf1QkLyLFy8mNDS0yIBYqzumV69ebpWhuHh5edGuXTt2795ti6OpVasWzZo1c4jx0FrbNnsyMjI4ceIE58+fx9fXlzp16tCoUSOHa9nf35+cnBz27NnD+fPn8fT0JDg4mCuvvLLQZHvuYty4cXTr1o0pU6Ywa9asMj+e1XKZf7bQ+fPnefjhhxk7dqxDjhihcqFKEkUulB6l1EVz4lu3bl3RQyhXrPkyLhbsp3pWdyrKalJRrFy5stD9c+fOZdCgQezbt48PPviAN954g71791K/fn1yc3Px9vbmxRdftMV5FDV9GAwLgauXi9zcXLKystiwYQMPPvgg3bt356OPPnKoM2XKFD755BP++ecf1q9fz4033sjq1asdEukVcty/tNZti6x4gfj6+uqYmBi39LVv374yGWN5U31sN4IgCEKFMWbMGPz8/Jg4caLL/XFxcXh7exe5uVo/6d9//8Xb25ugoCC6dOlCly5dmD17tkOd/fv3M3nyZN5+++0yj2m5UMTV4oi4WgRBEIRSU7NmTUaPHs3EiRMZM2aMkwJRu3ZtNm3aVGQ/rpSGxo0bs2nTJtLT01m3bh1Tp04lNzeXhQsX2uoMGzaMHj16OC2YWNEUlH32YkYUD0EQBMEtjBo1ilmzZjF+/HgHpQCMtZbyL2rnClexRr6+vrRta3gYOnbsSHR0NIMGDWLEiBG0b9+epUuXsnbtWjZv3mzLfGudwpyenk5ycjLBwcGlE05wG6KGCYIgCG4hMDCQZ599lmXLlrF161aHfaVxteTHqoRYZwDt3LmTzMxMWrZsSWhoKKGhodxxxx0A3HXXXbaEaxWFdf2o0m7VBbF4COVOQkICR48excPDw2Vk/z///ENERARRUVElPsaJEydITU0lJycHrTUmk4mQkBDCw8MdzJ7p6ekkJCTYcoZ4e3u7XLwsMTGRc+fOkZ2djdlsxsvLi8DAQCIjI10mJLMyf/58HnnkEYKDg9mxY4fDlN3c3FyCg4N57rnneP7550ss64oVK1i6dCl///03Bw4c4LrrruP77793qjdr1iyWLl1KXFwc6enp1KlTh9tuu42nn37aIb9J8+bNOXLkiMtjPfTQQ/zvf/+7oPEtWrSIxx57jBo1arBt2zaH2UO5ubmEh4czZsyYUi1Vv3LlSj7//HO2bt3KwYMHueaaa/j2229d1l2/fj0vvvgi//zzDzVq1KBnz56MGzfOLTlcjh49yr///ouXlxcdO3Z0mHVhNptZtWoVjRo1okmTJiU+htaaAwcOcOzYMbKysvDz8yMmJobY2FiHeomJicTHx5OSkkJ6ejo+Pj7lMmX60UcfZebMmYwbN86hvDSulvz89ttvADYlZeDAgU6ybd26lVGjRjFjxgyuvvrqYo6+bBBXiyOieAgVhtls5syZM0RHR5dJ36Ghofj4+KCUIiMjg9OnT5OZmelwg05LSyM9PR0/Pz+UUgUuIJeXl0dgYCDh4eF4enqSnZ3N6dOnSUtL45JLLikyjXtycjIzZ85k0qRJ7hQTgOXLl/PPP//Qrl27QlNjJyYmcuedd9KyZUsCAwPZtm0br7zyCmvWrOGPP/6w3RwXL17sNFPl66+/5o033ih2MjNXpKSk8MYbb5Q6k6UrVqxYwb///kvbtm0LPQf//vsv99xzD507d2bJkiUcPnyY8ePHc+LECebMmeO28eTm5nLw4MEyyaGxY8cOjh07RuPGjQkODiYhIYE9e/aQl5fnYC04d+4ciYmJNhdDcWaUuAMfHx/Gjx/P0KFDHcpNJpPNUlFctm/fzlNPPUWvXr1o2LAh2dnZrFmzhjfffJPu3bvToUMHAGJjY50ULytt2rThuuuuK5EsQtkgiodQYQQGBnL27FnCwsJcrt5ZGurUqePwPSgoyKbo5Obm2qwsERERREZGAkayqvT0dJf95U88FhgYiMlk4tChQ6SlpRXpP77pppt47733eOyxx0plyXHF22+/bVMaCps2OH78eIfvN9xwA/7+/jz++ONs27aNyy+/HMClH37ChAlERkaWKnCvc+fOfPDBBwwbNsx2zt3Fm2++aTsH3bp1K7DeK6+8Qu3atZk7d67tmjOZTAwbNownnniCNm3auGU8tWrV4siRI8TGxrp1hkVmZiZHjx6lUaNGNiUjLCyM3NxcDhw4QL169WwWuEaNGtG4cWPASKJ2oascl4ZBgwYxffp09u3bV6p+IiMjCQsL4+WXX+bkyZP4+/vTsGFDZsyYwZAhQ9w02rJFgkudkbMhVBjWh8/p06fL5XhWZcPeV1oav2lRVg57xowZA8D06dNLfLyCKM1NzZoFtrDFyuLj41mzZg19+vS5IJnzM3r0aABee+21EvdREMU5B+fPn+enn37irrvuclB077rrLkwmEytWrHDbeKxKwYEDB9zWJxiWM8ApKVhYWBhms9khk2d5xAQMHDgQrbVNwbHi5eXF3r170VqXysIVGRnJokWLOHToEJmZmZw7d45Nmzbx2GOPFanQderUCa11sXJ4lDUyndaR6iOJUOXw8vIiLCyMhISEQpNQ2Wd0LGwrqG1eXh6pqamcOXOG0NDQUj08tdaYzWYyMzM5ceIEPj4+BAUFFdkuKiqKhx9+mDlz5hQYPwGGObyorSB3UHHJzc0lIyODjRs3MmXKFDp16lToGiaLFy9Ga11gKvbiEhUVxZAhQ/jkk08q5BwcOnSIrKwspxgeX19fGjRowJ49ey64z4KwrpAcHx9vW8LeFWazucjN/tq2KhP5H0LW76mpqW6TQRDKCnG1CBVKeHg4586d49SpUy4XvcrJyXG5iml+XAWFZmVlsXfvXtv30NBQ6tatW6rx7ty50/bQ8/Pzo2HDhsV+E3nyySeZM2cOL7/8Mu+9957T/sOHD9OiRYsi+4mJiXG5km1xSEtLc3Bz3HzzzSxYsKDQNosXL6ZNmzZceumlJTqmPSNHjmTu3LlMmzaNt956y2n/kSNHiuXuqFevni39eHEpLDW+q9VVS0uDBg2Ij49n//79LhW7jIwM1qxZU2Q/vr6+tsDJgIAAwFjU0H6xROsU0vPnz5d+4IJbEVeLM6J4CBWKl5cX4eHhnDp1ivDwcCfzqZeXl5MZ1xWuzMomk4nGjRtjNpttwaVaa0qTvrhhw4aYzWZbcOnBgwdp3LhxsawoNWvW5PHHH+fll1/mySefdFpLIjo6mt9//73IfgqbRVMU/v7+/P7772RlZbFt2zamTZtGr169+Pbbb126WzZu3MjevXvd5iIKDQ1l+PDhvPrqqzzxxBMOC52BYRX5+eefi+ynJOfAajlwda2UxdIRJpOJ2NhYDhw4QIMGDfD393fY7+vrawuOLAz7h1ZgYCC1atVi//79+Pn5ERISQkJCAocPHwbKx70iXDjyuzgiiodQ4YSFhXH27FlOnTrlpBR4eHiUeJqjh4eH7WYfGBiIl5cXR48epVatWrY3xwvFOpaAgAACAwPZvXs3586dK/by5sOHD+fdd99l8uTJTrMoTCZTsda1Kc1NzMPDgyuuuAKAa665hpYtW9K9e3e+/PJLl4uoLVq0CG9vb7cusDZs2DBmz57N1KlTndJem0ymYi1dX5JzYJ3K7MqykZycXCazq2JjYzly5Aj79+93+m09PDyK5abLL2urVq3Ytm0bf/31F2Ao55dccgk7d+6sdKnCBcEVongIFY6npycRERGcOHHCyR9eGldLfqxKSE5OTokVD3tMJpNtam1xCQwM5KmnnuLZZ59l5MiRDvvKw9WSH6sScvDgQad92dnZfP7559xyyy1uXeE0MDCQUaNGMW7cOEaMGOGwryxdLQ0aNMDHx8fpesrKyiIuLo4ePXpcUH/FwcvLi4YNG7J7924n605JXC3W71dffTVZWVmcP38ef39/W2yHfZ4YofIgrhZHRPEQKgW1atXi7NmznDx50qG8NK6W/FhTKJfGVWFPVlYWeXl5F/yWOXToUGbNmuW0mFZ5uFry88cffwA4PRTByI2RkJBQ6qBSVzz00EO8/fbbTJkyxaG8LF0tJpOJm266ia+++oqxY8faXEtff/012dnZdO/e/YL7LA4xMTHExcU5TS0tiaslf3tfX1+01sTFxREQEGCbpSRUHiTGwxlRPIRKgYeHBxERERw7dsypPL9vvCisM06Cg4MxmUxorUlPT+fs2bMEBQU5WDtyc3NtCsn58+cxm822QD3rjR2M1MzBwcG2hGRZWVmcPXsWb2/vC77Z+/j48OyzzzJ8+HCHcpPJZLNAXAhHjhyxmd0TEhLw8PDgyy+/BODKK68kJiaG5ORk7rrrLvr06UOjRo1QSvHXX38xa9YsWrVq5fJtf9GiRdSqVavQvBglxcfHh2eeecbJ6mMymWz5RC6EI0eO8PfffwOGK8XDw4Ovv/4agMsvv9zmwhs7dixdu3Zl0KBBDBkyhCNHjjB+/Hh69OhRrHVESoKHhweNGjVix44dTuUlWT/kyJEjNhdkTk4Ox44dIzExkXbt2jko4Dk5OSQkJACGkmw2m22KfWBgIIGBgaWQShBKjigeQqWhZs2anDlzptCptcXBy8sLLy8vTp8+TW5uLh4eHphMJqKjo52UhKysLKepndbv9mnb/f39SUxMtI3N29ub4OBgIiIiCs2BURD9+/fnjTfesK01URp+++03HnnkEYeyBx54AID33nuP/v374+vrS9OmTXn33Xc5fvw4Xl5exMTE8PjjjzNs2DAnq82ZM2dYtWoVQ4YMcauFxZ5+/foxa9Yst+S6+OOPP3jsscccygYOHAgYCdb69u0LGPERn332GRMnTqRPnz7UqFGD++67jxdeeKHUYyiMOnXqcOjQITIyMkrdl9aagwcPkpWVhaenJzVr1qR9+/ZO8SKpqalO66VYv5c2bbtwYYjFwxFVFtHcQtEopS6aE1+cgMnqxPr16yt6COVKaRXFqsT9999f0UMoV1auXFnRQyg3lFJ/aa0vLKd7MQgMDNTuyoi7bt26MhljeSNqmCAIgiAI5Ya4WgRBEAShjJDgUmdE8RAEQRCEMkQUD0fkbAiCIAiCUG6IxUMQBEEQyhCxeDgiiocgCIIglBFKKVmrJR+ihgmCIAiCUG6IxUMQBEEQyhBxtTgiiocgCIIglCGieDgiZ0MQBEEQhHJDLB6CIAiCUEZIcKkzVdrioZTqoJRaqpQ6rpTKUUqdU0qtVkoNUEp5KqU6KaW03ZaplDqqlFqhlBqilHJa/Uop5a+UmqiU2mupH6+UmqeUirXsH5ivz4K2CeV9PgRBEITKh4eHh1u24qCUqqeU+kwplayUSlFKfaGUiilm2waWtklKqXSl1C9KKae1YZRScQU89+4qznGqrMVDKTUSmAn8DIwBDgOhQFfgXSAJSLZUfxzYBHgDtYEuwNvAcKVUF631GbuuPwTuAl4ENgMxwETgJ6VUG+A7oINd/SssfVmPYeWoWwQVBEEQhGKglPLHeCZmAwMADUwGflFKtdZapxfSthbwB5AKPAxkAE9a2l6ltd6Vr8kPwIR8ZXuKM84qqXgopW7AUDre0lo/nm/310qpmUAAYF0DfZfWeoNdnU+VUh8BvwBzgDss/foBvYFpWuvpdsc7BawErtVa/wCcsdvnW8AxBEEQBKE8g0v/D2gINNVa7wdQSm0H9mEoEzMLaTsMiAQ62rX9GTiI8fLdO1/9syV95lVVV8tYIAF4xtVOrfUBrfX2wjrQWq/HsIzcrpRqZCn2AjyBlHzVkyyfVfV8CYIgCBWANcbDHVsxuBPYYFUcALTWh4C1QI8i2rYH9uVrmw78jvGcdJuhoso9SJVSnkAnYJXWOquU3a2wfF4LoLVOBeYDjyulblRKBSqlWgLTgW3AT6U8niAIgiCUFS2Bf12U7wBaFNE2D8hxUZ4N+AGN8pXfoZTKUEplK6U2FDe+A6qg4gGEYZyEw27o64jlM9qubBDwJYafLBXjR/QGumitXf0ogiAIglAg5RhcWhNIdFGegBEDWRh7gCaWWA8AlFIewFV2fVtZDowAbgH6AVnAl0qpB4ozyCoZ4+FGrLYrbVc2GXgAeAojWDQGI9B0pVKqY2HBOUUeTKmhwFAwLsSQkJCSdlWl2L69UK9XtWPz5s0VPYRypWPHjhU9hHKjXbt2FT0EoQrixhiPMKWU/Q1mttZ6dr46GmeK46d5D2OSxDyl1OMYwaXPAw0s+822A2g9wqFzpb4ENgBTgQVFHagqKh7ngEygvhv6qmf5PAFgcauMBYZorT+yVlJK/QnsBYYAb5b0YJYLZDaAl5eXq4tDEARBEArirNbaaXqrHYk4WiashOLaEmJDa31QKdUPY5amNc5jC/A6xov4iULa5imllgGvKqWitdYF1oUq6GrRWucCvwJdlFI+pezuNsvnWstnK8un/bRYtNb7MAJMm5fyeIIgCMJFRDkHl+7AiPPITwtgZ1GNtdafA3Us9Rtrra8EAoF4rfWRQhu79iC4pMopHhZeAWphBH06YUmC0rqwDpRSHTCmF32ltT5oKT5p+bwqX91LgBDgWCnGLAiCIFyElGOMxzdAe6VUQ2uBJfnltZZ9RaK1ztNa79JaH1BK1Qb6YMwALRDLjJdewBGt9cnC6kLVdLWgtV6jlHoSmKmUag7MxQgUDQVuwnCJ9OW/BGLNlVJpGPJGYyQZ64+hAf6fXde/Y8xeeU0pFcp/CcTGWfr6pGwlEwRBEIQS8wEwHCOf1TgM68MkIB5431pJKVUfOAC8pLV+yVLmDUwDfsNIKdESeBbDivKaXdv7MabmrrD0Gwk8BlwJ3F+cQVZJxQNAa/2GUmojMAqYgTHbJRVDWXgYI+r2Bkv1/1k+szFiRLZhnKj59jNVLH6qm4DnMIJAXwLOAuuA8cUwNQmCIAiCDaVUuSUQ01qnK6U6Y8RlzMdwf/wEjNRap9kPCyNnlf3ANNAE46U9BCP79hzg5XwzOg8BERgeh5oYQaibgG6WBJtFUmUVDwCt9ToMpaAgfqV40bz2fZ4DRlu24tS/4GMIgiAIFw/FjM9wC5YX5HuLqBNHvueWJX7y9mL0vwHoXIohVtkYD0EQBEEQqiBV2uIhCIIgCJWdclyrpUogiocgCIIglBHlGeNRVZCzIQiCIAhCuSEWD0EQBEEoQ8ozuLQqIIqHIAiCIJQh4mpxRM6GIAiCIAjlhlg8BEEQBKEMEVeLI6J4CIIgCEIZIbNanBHFo4qRl5dHRkYGubm5aK3x9vbG398fT0/PC27r5eWFv78/Xl6Ol4HZbCYjI4Pz58+jtcbT0xM/Pz9MJlNZiSUAp0+f5q233mLz5s1orbnyyisZMWIEkZGRRbY9deoUH330EX///TfJycmEh4dz44030q9fP/z8/Gz1+vTpw8mTzms4TZ48meuvv96t8gj/kZ2dTXx8PCkpKWitqVGjBjExMfj4FL3Adv62AQEB1KtXj4CAAFuds2fPcujQoQL7uOyyy/D29naLLIJQWkTxqEJorUlNTUUpZbvpZGZmkpqaSnBwcKHmPLPZTEpKCkop/P39UUqRlZVFSkoKwcHBNsXFegyz2Wyrl52dTVpaGkFBQXLzKiOysrIYOXIkJpOJZ599FqUUH374ISNHjmTOnDkOykN+MjMzefLJJ8nNzeWhhx4iIiKC3bt38/HHH3P06FEmTJjgUP+qq65i4MCBDmUxMTFlIJUAhsK/Z88ePDw8aNCgAQDHjh1jz549tGzZstCXhtzcXHbt2oWnpyf169fH09OTkydPsnv3blq0aGG7LoKDg2nevLlT+3379uHj4yP/txWMWDwcEcWjCpGdnY3ZbHZQFDw9PUlOTiYrK6vQh1N2drbtTcva1tvbm6SkJDIzMwkMDAQgJyeHvLw8ByXD29ublJQUMjIyCA4OLmMpL06+/fZbTpw4wfz586lbty4AjRo1ol+/fnzzzTf06dOnwLb//vsvR48eZcaMGbRr1w6AK664gtTUVD799FOysrLw9fW11Q8ODqZly5ZlK5Bg48yZM2RnZ9OqVSvb7+Dv78/27ds5c+YMUVFRBbY9ffo058+fp1mzZra2QUFBbN++nWPHjtG4cWPA+B/Nr1ykpqaSm5tL7dq1y0gyobhIjIcjooZVIXJycvDy8nJ4Q/L09MTLy4vz588X2jY3NxcPDw+HtkopvLy8yMnJQWttqwc4uF+UUnh7e5OXl4fZbHanSIKFtWvX0qJFC5vSARAdHc2ll17K2rVrC21r/e39/f0dygMDAzGbzbbfVqgYkpKSCAwMdFD+fHx8CAoKIikpqdC2aWlp+Pr6OrT19PQkKCiI5OTkQn/bs2fPopSiVq1apZZBENyJKB5ViLy8PJdmWU9PT/Ly8ops70rrtpbZKxRKqQI1dKtiIriXuLg4mxnentjYWOLi4gpte+WVV1K3bl3ef/994uLiyMjIYMuWLXz22WfceeedTpawdevW0bVrV26++WaGDRvG77//7k5RhHxkZma6tEb6+vqSmZlZaNuC/heVUpjNZrKysly2M5vNJCYmEhIS4hTDJZQv1uBSd2zVBbkiqxBa6wJvQkW91Xp6enL+/HnMZrPtAtZa2xQJs9mMp6cnnp6eaK2dlBxrPXl7LhtSUlIICgpyKq9RowZpaWmFtvXx8eGtt97ihRdeYMCAAbby2267jZEjRzrU7dChA82aNSM6OprExES+/PJLxo0bx/PPP0/Xrl3dIovgSEEvDF5eXkUq8r6+vqSkpJCbm2tTILTWpKen2/p2RWJiInl5eWLtqCSIq8URUTwuEnx8fMjKyiI9Pd0WNJqZmWmzdFj/MUwmE5mZmaSlpREQEICHhwfZ2dli6SgHXN2ciqPoZWdnM2HCBJKSknj++eeJjIxk165dfPLJJ3h6ejJ69Ghb3fyKyPXXX8+wYcOYPXu2KB6VkPDwcE6dOsXBgweJiYnBw8ODEydOkJ2dXWi7s2fP4uXlRUhISPkMVCiU6mStcAeieFQhCrJsFGQJscfT05PAwEDS09NJTk62lfn6+pKVlWVr7+HhYauXkpJiK/Pz8yMzM1P+gcqIoKAg2/m2JzU11Rb4WxArVqxg69atLFq0iDp16gDQpk0bAgICmDFjBj169LAFIebH09OTTp068f7773Pu3Dl5Qy4DCnKF2lsxCsLX15eGDRty+PBh/vnnH8CI5YmKiuLkyZMuZ6vk5OSQkpJCZGSkvGkLlRJRPKoQBd3ACjLl5sdkMuHt7W2zcnh6epKenu4UdOrt7U1wcLCtnoeHh82XLP7isqGgWI7Dhw8TGxtbaNuDBw8SFBRkUzqsWKdXHj58uEDFQyh7rEp7foqaiWalZs2ahIaG2l4QfH19iYuLw2QyucwDcu7cOQDCwsJKP3ih1BQWM3exIq+vVQiTyURubq6D8pGXl0dubm6x5+krpWyxHGazmZycHJc3L/t6YJjzfXx85B+ojLj22mvZuXMnx48ft5WdOHGCf/75h2uvvbbQtjVr1iQ1NZWjR486lO/cuRMo/AGUm5vLr7/+SmRkpFg7yoiQkBDS0tIcAkGtuXGK6wpRSuHn54evry85OTkkJCQQHh7usu65c+fw8/NzmuVUFsydOxelFCEhISQmJjrsy83NRSnllEfmQhk7diytW7cmJCQEf39/mjVrxqRJk8jIyCiwTVJSElFRUSil+PHHH0t1fHcgwaWOyOtrFcIap5GWlmZ7U7K6P+yn2+Xl5ZGcnIyfn5+tntaajIwMvL29UUqRl5dHZmamzd1iT0ZGBl5eXrZ61htmcd7OhJJx++238+WXX/Lcc88xZMgQlFJ89NFHREREcMcdd9jqnTx5kr59+/Lggw/akoB169aNpUuXMmbMGPr3709ERAR79uxh3rx5NG3alFatWgHw448/snbtWq6++moiIiJswaV79uxh/PjxFSH2RUF4eDinT59m//79NqvUsWPHMJlMDspDdnY227dvp3bt2rZ6ZrOZo0ePEhQUhKenJ5mZmZw4cQI/Pz+X+T/S09PJzMykXr165SOcheTkZF599VVeeeUVt/edkpLCoEGDaNq0KT4+Pqxbt44pU6awefNmvv76a5dtxowZIy9JlRhRPKoQSimCgoLIyMiwzXSwpkwvTmCi2WwmPT0drTUeHh74+Pjg5+fn1Na+nlIKk8mEn59ftdK4Kxt+fn68/vrrvPXWW0yZMsWWMn348OEOb67WGUf2v210dDTvvvsuH3/8MR9++CHJyck2haV///623806k+W9994jJSUFX19fmjVrxvTp07nqqqvKXeaLBU9PT5o2bUp8fDwHDx4EsKVML8pFas0wfO7cOfLy8jCZTISFhREdHe3y/7Gicnd07dqVWbNmMXLkyEITopWEd955x+H7TTfdREZGBq+88gpnz551suitXbuWBQsWMGvWLB566CG3jqWkiBLkiCgeVQxr8qCi6tSsWdOhzKq0FIeighmFsiEyMpJJkyYVWic6OprffvvNqTw2NpaJEycW2rZly5a88cYbpRmiUEJ8fHyKjLPx8fGxZZ61opTikksuKfZx6tevT/369Us0xtIwbtw4unXrxpQpU5g1a1aZH8+qWOV3MZ8/f56HH36YsWPH0rBhwzIfR3GQReKckbMhCIIglIro6GiGDx/O7NmzOXz4cIH1cnNzi9wKyk2Sm5tLWloaP/74IzNnzmTw4MFOSzhMmzaNnJwcnnnmGbfKJ7gXUTwEQRCEUjNmzBj8/PwKtLzFxcXZ1pQpbGvUqJFT23///Rdvb2+CgoLo0qULXbp0Yfbs2Q519u/fz+TJk3n77beLtepveWKd2VLarbogrhZBEASh1NSsWZPRo0czceJExowZ46RA1K5dm02bNhXZjyuloXHjxmzatIn09HTWrVvH1KlTyc3NZeHChbY6w4YNo0ePHnTp0qX0wrgZcbU4IoqHIAiC4BZGjRrFrFmzGD9+vINSAEY6gMsuu6zIPly92fv6+tK2bVsAOnbsSHR0NIMGDWLEiBG0b9+epUuXsnbtWjZv3mxbeM8agG9Nmigra1ceRPGoBGRnZ5Oeno5SiuDgYAftWGtNYmIivr6+pZqXn5GRYVurxX5Wi6+vr9M/+vnz58nMzLTNwzeZTC5nzuTm5pKRkWGrZ51hI9r9f6xcuZJXXnmFwMBAlixZ4hDgm5uby0033cTAgQMZNGhQiY+xdu1afvrpJ/bs2cOxY8do06YNb775pkOdvLw8li1bxoYNG4iLiyMrK4u6dety99130717d4ffbNWqVXz99dfEx8eTkZFBrVq1uPLKKxk4cCARERElHmd14+zZsxw6dAhPT09at27tkFxPa83mzZsdpsaWhKSkJM6dO0d6ejrZ2dkEBQXRrFkzl3VTU1Ntv5mnpye1atWibt26Dr/ttm3byMnJcdk+PDy8yGR1RREYGMizzz7L6NGjefrppx32FbQQYn7q169f5MKIViVk//79tG/fnp07d5KZmUnLli2d6t51110EBwcXuRJwWVKd3CTuQBSPSoTWmqysrDJJ/KO1xsfHBw8PD5RS5Obm2pSL/A/D1NRUmz/Vmu9Da+0w28VsNpOammpLxa61tq3xEhQUJP9o+UhLS2PRokU8/PDDbu/7jz/+YP/+/bRo0aLAh0p2djbz58+na9eu9OzZEz8/PzZs2MD06dM5cuQIw4YNs9VNSUnhiiuu4P777ycwMJAjR44wb948Nm7cyLx588olMVVVIi8vjxMnTpRJ7ozExEQyMjJs/2MFkZGRwZ49ewgODuaSSy4hOzub+Ph4cnJyHGbTNG7c2KmfxMRETp486bZ1XR599FFmzpzJuHHjHMpL42rJj3Vml9WdM3DgQDp16uRQZ+vWrYwaNYoZM2Zw9dVXF3P07kdmtTgjikclwsvLi6ysLHx9fd1+oQYEBDh89/b2tik69ivWWhOSBQYG2qwYSinS09Md1pawpoAODAy0tfXw8CA1NZXz589jMpncOv6qTrt27fjiiy/o2bOn23MsPP3007bfYPjw4S7r+Pj4sHjxYmrUqGEru/LKK0lNTeWLL75g8ODBtht+z549HdpedtllREVF8fTTT7Np0yY6duzo1vFXdWrUqMHp06eJiooqdgbh4hIbG2tT4nft2lVgPWtCskaNGtmuBaUUhw4dIj093fb/n/8+AHD06FHbMgnuwMfHh/HjxzN06FCHcpPJZLNUFJft27fz1FNP0atXLxo2bEh2djZr1qzhzTffpHv37nTo0AEwzlNB1po2bdpw3XXXlUgWoWwQNawSYZ+NtDzIb5XQWtuUBvt9ViXC/m36/PnzeHt7OyhI1u8FvXVfzPTv3x+A+fPnu73v4iipnp6eDkqHlWbNmpGTk2NbOLAgrG1lrR5nateuDeCQ7t5dFMdyaDabSU5OpmbNmg7XQs2aNVFKFepiyM7OJjU11VbXXQwaNIgmTZqUup/IyEjCwsJ4+eWXuf322+nfvz8//fQTM2bM4Msvv3TDSMsHmdXiiNxFKhHW1OdWq0dBWQ2Ls1Q6FL7Mem5uLllZWZhMJtvNyn7xuPz9eHh42ObXa60xm80ux1fQQnYXO7Vq1eLuu+/ms88+47777iswu2Nubm6RfVnX0XEH27ZtIzAw0CnhHBguhLy8POLj43n77beJjY294DfWiwFvb28iIiI4deoUUVFRBboKSvN/WxjZ2dlorZ2WNLDGcRX2IlPaBeUGDhxoS91vj5eXF3v37i1Rn/ZERkayaNGiErXt1KlTsc95WSOuFkdE8ahk+Pr6kp2dTWZmpssMotZ1WIrCw8PDyWebm5vrsPS6yWRyML1aFQ9XNz4PDw/bP7H101U9pVSl+WevbPTt25fly5czd+5cxo4d67T/xIkT3HfffUX2ExUVxaefflrq8WzcuJFffvmFhx56yKUl4+6777Zda02bNmXmzJmVLj9CZSE6OpozZ85w/PhxlwGU1nVYisJkMtGmTZsLOrZVWXX1G3p5eRWqzJ47dw5/f3+J2xHKFVE8KhlWq0dmZiZ5eXlOmrKHh4dLk3lxsJrbtda24FKQFOnlRY0aNejduzeffPIJffv2tZnorYSFhfH+++8X2Y874gji4uJ46aWXuOyyy7j//vtd1pk5cyZZWVkcPnyYhQsXMnr0aGbNmlXs1PsXE15eXkRFRXHs2DGioqKcFl709vamRYsWRfZTnuZ064q5MTEx5XbMi5Hq5iZxB6J4VEKs7pbMzEynYLDSmNmVUra3Ims8hn3QqFXJcWWxsHetWP+JXNWzLiwnuKZXr1588cUXzJkzxynq39vbu8j1PKD0D6fjx48zevRooqOjmTJlSoFxG9axXHrppbZZLt988w39+vUr1fGrK5GRkZw6dYpjx445Jc/y8PAoM6uC9fdzZdnIzc0tcFVp64JyrtxsgnsRV4sjonhUQpRS+Pn5kZGR4fTmVBpXS36sikReXp6D4pE/RsMa02ENMs0f85F/fBKAWDD+/v7069ePd955x8mtUh6ultOnTzNq1Cj8/f2ZPn26y1kOroiOjqZGjRocO3asRMe9GPD09CQ6OtqWS8OesnS1+Pj4oJRyiuUwm81kZ2e7VCzMZjMJCQkEBwe7fSaOIBSFPCEqKT4+Pjarhz2lcbXkx/qGZD/9ztvbm5ycHPz8/Gxv1tZZKvZTZK317KfiWhOUyVTawrnrrrtYunQpH330kUN5WbtakpKSGD16NACvvfbaBeVtOHToEMnJyU7uIcGRiIgITp48ydGjRx3Ky9LV4uHhQXBwMAkJCdSpU8fWR0JCAlprl79zUlISeXl5JQ4qFS4MsQI7IopHJUUpha+vr9Obk727pLhYM4yaTCY8PT1tMR5ZWVm2hZms+Pn5kZKSQlpaGr6+vpjNZjIyMvD29nY4rp+fHzk5ObZ61gRinp6e8gZVBCaTiQEDBjBjxgyHcm9v7wKzUhbGyZMn2b17NwDJycl4eHjw66+/AsZ02aioKLKzs3nqqac4efIkzzzzDGfOnOHMmTO2PmJjY23Wj+HDh3P99dcTExODyWTiwIEDLF26lPDwcG6//fYSSn1x4OHhQZ06dZwyb3p4eBTbumSPNasx/PeikJCQABg5OazBvnXq1GHnzp3s37+fyMhIWwKx0NBQl8c9d+4cXl5ekka8HJAEYs6I4lGJsVo9rLNNSoqHhwceHh62vqz/CP7+/k6zFLy8vAgKCiIjI4PU1FSHlOn5+7TWS0tLc0iZLtp90XTv3p0lS5Y4vRmXhL///ptXXnnFoezFF18EYOzYsXTv3p2EhAT27dsHwOTJk536eOONN7j88ssBaN68OStXruTkyZOA8RZ/0003cd9997ktu2V1JiwsjBMnTpCdnV3qvlJTUzl06JBD2YEDBwBo0KCB7f/X39+fpk2bEh8fz969e/H09CQsLMxluvbz58+TnJxMeHi4PBCFCkHJ1MeKwcvLS18sbxvWN7SLBWs654uFiymTabt27Sp6COXKxo0bK3oI5YZS6i+ttdsT1dSuXVsPGTLELX1NmjSpTMZY3ojFQxAEQRDKELECOyJ2NkEQBEEQyg2xeAiCIAhCGSKxNI6I4iEIgiAIZYRkLnVG1DBBEARBEMoNsXgIgiAIQhkirhZHRPEQBEEQhDJEXC2OiBomCIIgCEK5IRYPQRAEQShDxOLhiCgegiAIglBGyFotzsjZEARBEASh3BCLhyAIgiCUIeJqcUQsHkWglJqglOpc0eMQBEEQqibWJGKl3Yp5rHpKqc+UUslKqRSl1BdKqZhitm1gaZuklEpXSv2ilHJalE4p5aGUelYpFaeUylJKbVNK3Vvc8yGKR9G8CIjiIQiCIFRqlFL+wM9AM2AA0B9oAvyilAooom0t4A/gUuBh4D7Lrl+UUs3zVZ8ETADeAroDG4BlSqlbizNOcbUIgiAIQhlRzsGl/wc0BJpqrfdbjr8d2IehTMwspO0wIBLoaNf2Z+AgMBHobSmLAJ4CXtFaz7C0/UUp1Rh4BVhR1CCLdTYs7gatlGqmlPrBYoI5opQaZNnfXym1WymVZjHNNLJr662UmmwxyeRYPicrpbzt6sRa+n9YKfWSUuqExdSzXClVN99YiuzPUi9AKfWKUuqAUipbKXVSKfW5UipSKXWl5Xg9XMg6Vyl1VCnlqZTSluLnLfW1UmqCXd2OSqmflFKplnPyg1Lq0uKcU0EQBOHioBxdLXcCG6yKA4DW+hCwFnB63uWjPbAvX9t04HfgdqWU1VBxC2ACFuRrvwBopZRqUNQgL1QNWwZ8B9wF/AXMUUq9jKEpjQUGAU2BRXZtPrHsmwfcDnwMjLGU5+dZoDEwGHgC6AAszFenyP6UUiZgNfA4MNdSbziQAIRqrf8CNmFogNi1C8HQ6j7UWudZjo+ljw6W7UNL3duAn4A04AGgLxAE/K6UqudCNkEQBEEoS1oC/7oo3wG0KKJtHpDjojwb8AOsBoWWlrL9+ertsHwWdZwLdrVM11rPA1BKbQbuwHh4N9Bap1jKo4E3lVL1MR7E9wMTtdYTLH2sUkrlAZOUUq9orbfb9X9Ya93X+kUpFQ5MV0rV1loft1gTitPfAxhKQg+t9Td2/X9m9/c7wEdKqfpa68OWsgcxNLkPAbTWGyxa5jGt9YZ85+JN4DettU2LVEr9gmGWGg2MzH/ylFJDgaEAderUYfPmzfmrVEu8vb2LrlSNCAsLq+ghlCtHjx6t6CGUG3379i26kiDko5jWiuIQZnn2WpmttZ5t970mkOiiXQIQWkTfe4AuSqlaWutzYASRAlfZ9W39TNJa63ztE/LVK5ALtXistP6htU4ETmOYdVLs6uy2fNYDbrD87cokA9AxX/l3+b7/Y/m0RuQWt7+uwMl8Skd+lgBJGD4xKw8D32mtC72TKqWaYGh/C5VSXtYNyADW243TAa31bK11W61121q1ahV2CEEQBKGa4OHh4ZYNOGt9hli22S4Ol18hACiO5vMehk4wTynVyGJE+B9gdZ2Y7foq6TGAC1c88mtSOQWUAfjyn+ZzIl+dk5bP/JpRQr7v2XZ92dcvqr9awDEKQWudheGmeciiOFyPYSJ6r7B2FiIsnx8B5/Ntt1uOLwiCIAjlSSKuLQ6huLaE2NBaHwT6AVdiuFGOY3gOXrdUsT53E4BQ5WzGCbXbXyhlPavFOoAo4IBdeZTl81wZ9XcWY0pQUbwLPIkRdHM3EAf8UIx21uM8C/zoYr8rP5kgCIJwkXEBgaHuYAdGDEZ+WgA7i2qstf5cKfUVcAmQo7U+oJR6F4jXWh+xO4YPhtXfPs7DGttR5HHKeo7Pb5bP+/KV97N8rimj/lYBUUqpOwrrTGt9wFL3aaAn8IHW2pyvWg5GYI09ezCUlJZa680utu0IgiAIAuU6q+UboL1SqqHdsWOBay37ikRrnae13mVROmoDfTBe0q18j/Fc7Jev6QPAv5ZZNIVSphYPrfUOpdRiYIIlBmIdhunmBWDxhT6gL6C/BRixG4uVUlOBPzECXW8B3tBa77br9h3gaww3yRwXh90J3KaU+h7DVHXcEuj6GPC1ZQbNUgwrSyRwDXBEa13YfGlBEARBcDcfYMzg/FopNQ4jFmMSEA+8b61kmfxxAHhJa/2SpcwbmIbxgp+CYTl5FsPC8Zq1rdb6tFLqdeBZpVQqsAVDOelM0VN2gfJJIDYAY6bHYGAcht/oVYyEJGXSn9b6vFKqK0bW0aGWz3MYc5nz+5++wwgKXaG1PokzwzECbJZjmJcmAhO01iuUUjcAz2PMgvHDiDXZAHxaQtkEQRCEakZ5JRDTWqcrY4mP14H5GAGfPwEjtdZpdlUV4Imj10NjZDntC4QARzFexl/WWucPH3geI5XEExihDnuA3lrr5cUZZ7EUD8vU1QkuymNdlP2KXXSr1vo8hoIwrpD+43AREZu/r+L2Z6mXhuFCebqwehhamj8FBJVqrddiBNu42rceI5hUEARBEFxSjjEeWGIxCl03xdUzV2udSzGfZ5Y8V5Mt2wVz0aZMV0Z21YYYmuEWrfVPFTwkQRAEQaj2XMyLxL2AkZckGyNxmCAIgiC4FXcFlpan1aSsuWgtHlrrgcDACh6GIAiCUM0px0XiqgRyNgRBEARBKDcuWouHIAiCIJQH1clN4g5E8RAEQRCEMkQUD0dE8RAEQRCEMqK6BYa6A4nxEARBEASh3BDFo4px7NgxhgwZwiWXXEKTJk0YPHgwR48eLbLdjBkziI6OdrnFxsY61D137hyjRo2iZcuWNGjQgFtvvZVffvmljCQqmGPHjjFo0CAaNGhAbGwsAwYMKJasr776KmFhYS63OnXqONRNSEjgueee48orr6Ru3bpcccUVjBkzhrNnz5aVWIKF48ePM3ToUJo3b06zZs0YMmQIx44Vuqi0jWPHjjFy5EiuuuoqGjduzPXXX8+0adPIyMhwqGc2m3nrrbdo3749jRo1okuXLnz33XdlIU6hZGVlsXPnTtauXcvatWvZsWMHWVlZxWqbmZlpa/vHH3+wbds2UlNTXdbNzs5mz549rF+/nt9//50///yTQ4eKXDpDKGOKu+x9UVt1QVwtVYiMjAx69eqFyWTizTffRCnFq6++Ss+ePfn555/x9/cvsG3fvn258cYbnfrr27cvXbt2tZVlZ2fTq1cvEhISeOGFFwgPD2fx4sU8+OCDfPrpp1xzzTVlJl/+sd111134+Pjw9ttvAzB16lTuuusufvvtNwICAgps279/f2666San/nr37k23bt1sZVprHnjgAQ4cOMCYMWO45JJL2Lt3L1OnTmXbtm2sXLlSTKRlRGZmJr1798bHx4fXX38dpRTTpk2jd+/erF69utBrOSMjg/vuu4/c3FyefvppateuzbZt23jttdc4dOgQ777733pW06dP5/333+eZZ56hVatWfPPNNzzyyCPMnTvX6RopK/Ly8ti+fTseHh40bdoUgLi4OLZv386VV16Jp6dngW3Pnz/Ptm3b8PT0pEmTJnh6enL06FG2b9/O5Zdf7nCesrKy2Lp1K76+vjRu3Bhvb2+ysrKKreAIZYfcRxwRxaMKsXDhQg4fPswff/xBgwYNAGjRogXXXHMN8+bN45FHHimwbe3ataldu7ZD2bJly8jNzaV37962suXLl7Nr1y4+//xzm5LRuXNnbrrpJiZNmsTKlSvLQDJn5s+fz+HDh9mwYQMNGxoLLbZs2ZKrrrqKTz75hEcffbTAtq5kXbp0Kbm5ufTp08dWduDAATZu3Mhrr73GgAEDALjuuutQSvH000+zf/9+mjRpUgbSCQsXLuTIkSP89ttvtmu5efPmXH/99SxYsIChQ4cW2HbTpk0cOnSIhQsX0rFjRwCuvfZakpKSeP/998nMzMTPz4+zZ8/y/vvv8+ijj9r+N6699lri4uKYOnVquSkeJ0+eJCsri3bt2uHnZyx0HRAQwKZNmzhx4gR169YtsO3x48fJyclxaBsSEsLGjRuJi4ujRYsWtrr79u3Dx8eH1q1bV6u3Y6H6IVdnFWLVqlVceeWVths1QExMDO3ateOHH3644P6WLVtGeHg4nTp1spVt2bIFX19fOnToYCtTStGxY0e2bt3KiRMnSiVDcfn+++9p27atTekAqF+/PldddVWJlJ8lS5YQERFB586dbWXnz58HICgoyKFucHAwYFhEhLJh9erVXHHFFU7Xctu2bYu8lq2/W2BgoEN5jRo1MJvNtt/t119/JScnh3vuuceh3j333MPu3bs5cuSIO0QpknPnzlGjRg2b4gDg5+dHcHAw586dK7Rtamoqfn5+Dm09PT0JDg4mISHBJmtmZiaJiYnUrl1blI5KiGQudUSu0CrEnj17bKZae5o2bcrevXsvqK/jx4+zdu1a7rnnHry8/jN8eXh44O3t7XSRm0wmAHbv3l2CkV84e/bsoVmzZk7lzZo1K5Gsf/zxB/fee6+DrM2aNaNDhw689tpr/P3336SlpbFlyxZmzJjBzTffzCWXXFJqOQTX7N27t8Bred++fYW2ve6662jQoAEvv/wye/fuJT09nbVr1zJnzhz69+9vcz/s3bsXHx8fB+UGsP2uRR3HXaSnp7t0Hfn7+zvFpORHKeVSkVBKYTabyczMBCAlJQUw/n+3b9/O77//zrp169i9e7dNURMqBkmZ7owoHlWIpKQkQkJCnMpDQkJITk6+oL4+++wzzGazg5sFoHHjxqSmpjo93P/66y/bGMqDxMREl7KGhoZe8BiWLl2K2WzmvvvucyhXSrFkyRIaN25Mly5diI2NpWvXrtSvX5+PP/64FKMXiiIpKclmWbKnONeyr68vX375JVprOnfuTNOmTenTpw833XQTkyf/t1hmUlISNWrUcLphW6+rxMTE0gtSDHJzc/H29nYq9/LyKlIp8PPzIzMz06Ge1toWXJqbmwsYsVlgKFt+fn5ceumlNGjQgISEBP755x+x3gmVClE8qgEluaksW7aMSy+91MFHDHD33XdTq1YtnnjiCXbt2sW5c+d488032bBhA1C+aw640vBLIuunn35Kq1ataNmypdO+UaNGsXnzZmbMmME333zDjBkz2LZtG4MGDcJsNpdo3ELxKOnvm5WVxbBhwzh79ixvvvkmn332GePGjWP58uU8//zzDn256xqqKKKjo9Fas2fPHjIzM8nOzubAgQMFBowGBwfTpEkTQkNDiY6OpnHjxqSlpZWbkiW4Rma1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eTJvv/02Pj4+ZSKj4B4kxkMQBEEoNTVr1mT06NFMnDiRMWPGOCkQtWvXtuUiKQxXSkPjxo3ZtGkT6enprFu3jqlTp5Kbm8vChQttdYYNG0aPHj3KNX6nOBSU9v5iRhQPQRAEwS2MGjWKWbNmMX78eAelAIz1ni677LIi+3DlUvD19aVtWyO0oWPHjkRHRzNo0CBGjBhB+/btWbp0KWvXrmXz5s22xHRpaWmAsVbOhSZZdDfVyU3iDkQNEwRBENxCYGAgzz77LMuWLWPr1q0O+0rjasmPVQnZv38/ADt37iQzM5OWLVsSGhpKaGgod9xxBwB33XUX9evXd6+gQqkQxaMS8OmnnxIdHU3Tpk2d0kjn5uYSHR3NjBkzStx/amoqM2fO5I477rBldLzjjjsKXF7+zz//5I477qBBgwa0bt2aF1980SH5kZXVq1dz55130rx5c5o1a8add97J999/X+R4Fi9eTFhYGA0bNnQpb1hYWKlzAnz//fcMHTqUq666ivDwcO68884C6y5ZsoTOnTsTGxtL06ZNuffee1m/fr1Dncsvv5ywsDCX2+jRo0s11urO0qVLqVu3Li1atHD5e9etW5fXXnutxP2npqby+uuv06NHD9v6Qz169HB5LX7wwQfcdtttXHrppTRq1Ihrr72Wl156yW1rmZw8eZI1a9awdu1apzTpWmvWrFnjkBSvJGitOXz4MH/++Se///47GzdudDmzKDk5mT179rB582bWrFnDn3/+WarjFpdHH32UOnXqMG7cOIdyq6ulqG358uVFHsM628aqpAwcOJBffvnFYbPmfpkxYwbffvutm6W8MCS41BFxtVQiUlJSePvttx0WunIHx44dY+7cufTp04eRI0fi4eHBV199xeDBg3n55ZcZNGiQre7OnTu577776NixI/PmzePIkSNMmjSJkydP8v7779vq/fzzzwwYMIBbb72VJ554AoCFCxcyePBg5s2bV6zpaykpKfzvf/9j/PjxbpUXYOXKlfz777+0bdvWtnKnKz755BNGjx7NwIEDGT9+PBkZGbz77rv07NmTlStX2lLEf/LJJ+Tk5Di0/fbbb3nrrbeKnUn1YiclJYV33nnH7Ynojh07xrx58+jduzdPPPEEHh4efP311wwZMoTJkyczcOBAW92kpCS6d+9O06ZNCQgIYMeOHbzxxhusW7eOFStWuM0Xn5eXx9GjRx1StbuLffv2cerUKWJiYqhRowZJSUkcPHiQvLw8hzf7pKQkkpOTbVlLC5ot4m58fHwYP348Q4cOdSg3mUw2S0Vx2b59O0899RS9evWiYcOGZGdns2bNGt588026d+9Ohw4dAGM9qfwp9K20adOG6667rkSyuIvqpDS4A1E8KhEdO3bko48+4v/+7//cuhhbTEwMGzZscFgX4sYbb+T48eO89dZbDorH9OnTiY6O5oMPPrDl3/D29uaJJ57gsccesz2IP/vsM6Kjo3n//fdtSZA6depEu3bt+Pzzz4uleNx44418+OGHPPzww0RGRrpNXoDXX3/d9hC57bbbCqy3ZMkS2rVr52BRuv7667nkkkv4+uuvbfK6WqNmypQpRERE2BbTEwqnY8eOfPzxxwwZMsTt1/e6devw8/OzlXXq1Injx4/zzjvvOCgeTz/9tEPba665Bj8/P8aOHcu///7rtrWIQkNDOXbsGHXq1LEt5OYOsrKyOHnyJDExMTYlIzQ0lLy8POLj46ldu7bt/9a+zu7du22L45UHgwYNYvr06aVe7ygyMpKwsDBefvllTp48ib+/Pw0bNmTGjBkMGTLETaMVyhtxtVQiRo4cCcCbb77p1n79/f1dLkbVpk0bTp06Zft+/vx5fv31V+644w6HpF933nknJpMJ+4RnOTk5+Pn5OWRe9PT0xN/fv9jLyT/55JMADumw3UVx31xzcnKc1rHw9/fH29u7UDmOHj3KH3/8Qc+ePV1mnxScefzxxwH43//+59Z+rWuY5Kd169YO13dBWNOJW1d4dQfWdWCOHDnitj7BcCsBTivNhoaGYjabSUhIsJWVx1v2wIED0VrTuHFjh3IvLy/27t2L1rpUycMiIyNZtGgRhw4dIjMzk3PnzrFp0yYee+yxIqfMdurUCa11sV6CyhpxtTgiikclIjIyksGDB7NgwQLi4+MLrFeaJDz2bNiwweGGERcXR1ZWFs2aNXOo5+vrS/369R1WE33ggQeIi4vjjTfe4Ny5c5w9e5aZM2dy9OhRBwtKUfI+9NBDzJs3r1zkdcXgwYP57bffWLBgAcnJyZw4cYIxY8bg5eVFv379Cmy3dOlStNYFrgMjOBMREcHAgQNZtGhRodlO3fV7//nnn04PRPtjZGZm8tdffzFz5kyuu+46WrRoUWLZ8mMymahduzYnTpwgKyurwHpa62JtVqwPn/yKtfV7YQunCRWDLBLnjLhaKhmPPfYY8+fPZ+bMmS4tAfHx8Vx11VVF9lO3bt1C58zPnz+fv/76i7feestWZg38czXtLCQkxCEwsFOnTnzyySc89thjtkDQwMBAPvroI9q3b1/k+Kw8/vjjfPLJJ0yfPt3lm/CRI0dsy9QXRr169fj777+LfVwrVuXimWeesVmcIiIi+Oyzzwp8aIGheLRq1cqtD6uLgUcffZSFCxfy+uuvuwwojY+Pt/ntC6Nu3bps2LChwP0LFixgy5YtLq+p9PR0mjZtavvesWNHh/gld1GvXj1OnDjB4cOHHY5nJSsri40bNxbZj4+PD1dffTWAzbKTkpLisJZQSkoKgFNAqyBURkTxqGSEhoby8MMPM3PmTB577DGngKnIyMgCZ6PYU5gZct26dbzwwgv07NmTe++911ZufbMqjmb9119/MXz4cDp37kzPnj1RSrF06VL+7//+j/nz53PttdcW2QcY8j766KNMnz6dESNGOAXjRUVFsXr16iL7KWmmwhUrVjBmzBgGDBhAt27dyMzMZPbs2dx///189dVXNG/e3KnN5s2b2b9/Py+//HKJjnkxExoaytChQ3n99dd59NFHnaY5RkZG8t133xXZT2FxE+vWrePFF1/k3nvv5Z577nHa7+fnx3fffUd2djb//vsvs2bNYuDAgSxZssSt7hZvb2/q1q3L4cOHqVevnpM7yGQycfnllxfZj711IyAggJCQEA4fPoyvr68tuPTYsWOABDFWVuR3cUQUj0rIww8/zJw5c5g+fTpvv/22wz6TycSll15aZB8FXehbt25lwIABXHvttcycOdNhn9XXnX/Ko7XM/q3t+eef55JLLnFYOfLGG2/kzjvvZMKECcVSFqw88sgjfPjhh7zyyitOb54mk4lWrVoV2UdJ/rG11owePZo77rjDQYm48cYb6dChA1OnTmXevHlO7T799FO8vb1dPtSEovm///s/Pv74Y2bMmGFbUMyKyWSiZcuWRfZR2PU9ePBgrrnmmgKnoHt4eNCmTRsArrrqKpo1a0bv3r357rvv6NGjxwVKUzh169bl+PHjHD582MmF6eHhUaIVkJs2bcru3bv5999/ASO2qkGDBuzfv9+tgayC+5DMpY6I4lEJCQgIYMSIEUycOJFhw4Y57CuNq2XXrl3c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RHDkyJFC2545c4YaNWo4tPX29iYyMpL4+HjMZrND/VOnTnHgwAGH31goO9avX0+zZs0c3KHR0dG0bNmSdevWFdo2NzcXwMnCFxgYiNYau0WzhUqM1epR2q26IIpHFWLv3r00bdrUqfySSy5h7969F9TX8ePHWbduHXfffTdeXv8Zvjw9PfH29na6yE0mE2C8mZcH+/fv55JLLnEqb9y4Mfv37y+07TXXXENsbCwzZsxg//79pKens379eubNm8d9991XqJsmKSmJffv20ahRo1LLcCEkJSW5dImEhoaSlJRUaFulFB4ezv/Knp6e5OXlkZqaaiszm82sW7eOVq1aOSgqQtlx+PBhh5cFK7GxsUUqlVdccQV16tThww8/5PDhw2RmZvL333/z5Zdfcvvttzu5adavX8/tt9/OrbfeyogRI1i7dq1bZRFKhigejoirpQpR0MMpJCSE5OTkC+rr888/x2w2O7hZABo2bEhqair79u2jSZMmtnJrUFxRD0F3kZyc7PLBGBwcTEpKSqFtfXx8WLRoESNGjOC2226zlffq1Yvx48cX2nbSpElorRkwYEDJBl5CsrOz8fHxcSo3mUzk5OQU2jY4OJjjx487mN211pw5c8bWt5Xt27eTl5dHq1at3Dh6oTBSU1NdBggHBQU5KIWuMJlMvP7667z00ksMGTLEVt69e3eGDx/uULd9+/Y0bdqUqKgoEhMT+frrr5kwYQJjxozh5ptvdo8wguAGRPGoYrjSektibv3ss8+49NJLnfzBd999NzNnzmTkyJHMmDGDyMhIFixYwJ9//lng8cuKkh4rOzubkSNHcu7cOaZNm0bt2rXZvn07b7/9Np6enkycONFlu/fff59vv/2WKVOmOLh4KjvNmjVj165d/P7771x99dV4eXmxbds20tLSgP/OY0pKCtu3b6dz584OVi6h7Cnp/21OTg5TpkwhKSmJMWPG2IJLFyxYgKenJ0888YStbn5F5Nprr+Xxxx9nzpw5ongIlQq5+1QhgoODSUxMdCpPTk4mODi42P38/fff7N+/3+UDODg4mA8++ICRI0fablaxsbE8+eSTTJ8+ncjIyJILcAHUqFHDpRWnIEuIPZ999hkbN25k9erVxMTEANCuXTuCgoJ44YUXuP/++52myy5evNimcBUW7FdWmEwmB8uElZycHJubqyCCgoK44YYb2LBhA59//jkAtWrVomXLlvz77782c/yGDRuIjo4mPDzcdixr/Ed2djaenp6ikJQBgYGBLi0baWlpBAUFFdp25cqVbNu2jU8++cQWHN66dWsCAgJ4/fXXuf322wt0C3p6enLDDTfw4Ycfcu7cOWrVqlV6YYQSUZ3cJO5A7jJViIJiOfbt2+cyHqIgli1bhpeXF3fffbfL/VdffTXr1q3j0KFDmM1mGjZsyLvvvouvr2+5megbN27Mvn37nMoPHDhA48aNC227Z88egoODbUqHldatW9v6sFc8vvrqKyZOnMjgwYMZNmyYG0Z/4YSEhLh0YxXkXstPbGwsMTExpKSk4OHhQY0aNVi3bh0BAQE2M39ycjJpaWksWrTIqf2iRYto0aIFV199dWlFEfIRGxtLXFycU/nhw4edrtH8HDp0iKCgIKcZadZYryNHjhQaj2S1qsiDT6hMSHBpFaJr165s2bKFw4cP28ri4+PZtGmTQy6OwsjJyeHrr7+mc+fOhb4BKaVo2LAhjRs3JjMzk0WLFnHvvfcSEBBQajmKQ+fOndm2bRvx8fG2sqNHj7JlyxY6d+5caNvw8HCSk5MdzhPAtm3bABysNqtXr+a5556jV69ejBkzxo0SXBgxMTGcOXPG4c04NTWVU6dOFflwsuLh4UFISAg1atQgIyODQ4cOOShYHTt2pFu3bg5bnTp18PHxoVu3bjRv3tztcgnQoUMHdu3a5TAj7OTJk+zYsaPImUU1a9YkNTWVY8eOOZTv3r0boNAEcXl5eaxZs4aIiAhq1qxZCgkKZu7cuSilCAkJcbLG5ubmopRiwoQJpTrG8uXL6du3L5dccgkeHh6FJjL8448/uOaaa/Dz8yMqKoonn3ySzMzMUh3fHUhwqSOieFQh+vXrR7169Rg8eDA//PADq1atYtCgQdSuXdshadDRo0eJiYnh9ddfd+rjxx9/JCkpySmo1J6pU6fy7bffsm7dOhYtWkS3bt3w8vLi2WefLRO5XNG7d2/q1KnDo48+yo8//shPP/3Eo48+SlRUlEOWzWPHjtGiRQveeustW9ndd99NQEAAQ4cO5csvv2TDhg18+OGHvPrqq7Rs2ZIrrrgCgE2bNvHkk0/StGlT7r77brZu3Wrbdu7cWW6ygmHNCgwM5Mcff+Tw4cMcOXKEn376iYCAAIeZTGlpabYsllbMZjN//vknhw8f5vjx4+zcuZNvvvmG0NBQWrZsaasXERFBdHS0w+bn54enpyfR0dEyy6WM6N69O1FRUYwfP55169axbt06XnzxRcLDw7n99ttt9U6dOsUtt9zC/PnzbWVdu3bF39+f559/nlWrVrF161aWLl3K7NmzadKkie33/fnnn5kyZQqrV69m69at/PLLLzz11FPs27fPISi1rEhOTrYl+nM3X331FVu3bqV9+/bUrVu3wHrbt2+nS5cuRERE8O233zJ58mQ+/vhjBg4cWCbjKi7uUjqqk+IhrpYqhL+/P0uXLmXChAk8/vjjaK257rrrmDhxooMlQmtNXl6eU/4GMNwsISEhhQabnTlzhhdffNHmF+7evTujR48mNDS0TORyhb+/P5988glTp07lmWeeQWtNhw4deO6551zKah+oV7duXZYuXcqsWbN44403SExMJDo6mj59+vDII4/Ypp5u2LCBnJwcdu7cyf333+9w/Dp16vDzzz+Xj7AYeTe6devGxo0bbenwa9euzVVXXeWQtdSauyF/YGJKSgoHDx4kJyeHgIAAmjRpQps2bfD09Cw3GQTX+Pn5MX36dN59911effVVtNZcfvnlDBs2zGE6rNbaIc8MQFRUFP/73/+YN28ec+fOJTk5mfDwcG699Vb69u1ru5ajoqJISkpi9uzZpKam4uPjQ9OmTXn55Zdp165dmcvYtWtXZs2axciRI4mKinJr3x988IFNTmtCQFe8+OKL1K1bl2XLltn+Z0wmEwMGDGDMmDG2Fw6h4lGSgKZiaNOmjV65cmVFD6NcsM6uuFh45ZVXKnoI5crHH39c0UMoN1avXl3RQyhXipoNM3fuXAYNGsSaNWvo1q0bgwcPZtasWYDhavH29ubFF18stbvFynXXXYeXlxe//vqrQ/n58+epUaMGTz75JFOmTLGVZ2VlERwczNixYwuczWZFKfWX1rqtWwZqR8uWLfXixYvd0lebNm3KZIzljbhaBEEQhFIRHR3N8OHDmT17tlNslT25ublFbnl5eRd8/AMHDpCVleW0tICvry+NGjUqd9dpfsTV4ogoHoIgCEKpGTNmDH5+fgVaFuLi4vD29i5yK0nW4ISEBACX7uCaNWva9guVA4nxEARBEEpNzZo1GT16NBMnTmTMmDFOCkTt2rXZtGlTkf24yuBbFIVNG64M4QTVyVrhDkTxEARBENzCqFGjmDVrFuPHj2fhwoUO+0wmE5dddlmRfZTkIW2dLuzKspGYmOgwu0uoeETxqKR8+umnPPnkk9SoUYP169c7JJHKzc2lfv36PPnkk4wePbpE/cfHx9O+ffsC97/zzjv06NHD9j0vL485c+awePFi4uLi8PPz49JLL+V///ufW7KZfvHFFzz77LMEBQXx008/OWRizc3NpWXLlgwfPpwRI0aU6jhZWVl88MEHLF++nOPHj1OjRg1atWrFrFmzMJlM5OXlMXfuXH777Tf2799PZmYmsbGx9O3bl3vvvdflYmwXyr59+/jjjz8wmUz07NnT4Q3PbDbzySefcNlll3H55ZeX+Bhms5ldu3axd+9e0tLS8Pb2Jjw8nMsvv9whp8OOHTs4ePAgqamp5Obm4u/vT0xMDK1bt3ZYbl0oHj/88AMzZswgICCA+fPnO2QmzcvLo1u3bvTv358HH3ywxMf48MMP2bhxI6dPnyY3N5eIiAg6d+5Mz549HX6zzz//nJ9//pkTJ06QlZVFeHg4HTp0oG/fvmU2dTowMJBnn32W0aNH8/TTTzvsi4uLc7lYXn7q16/vMuFaYTRq1AgfHx927NjhUJ6VlcXBgwcLTR8glD+ieFRyUlJSeOedd3juuefc2m9ERATffPONU/m0adPYtGkTN9xwg0P5448/zq+//sqIESNo06YNqamprF+/3mWa79KQmprKBx98wFNPPeXWfsGIfP+///s/jh49ytChQ2ncuDEJCQmsXbvWNvU4KyuLd999l7vuuosHH3yQgIAAfvvtN1544QUOHjzo1iRjOTk5/PPPP7Rt6/4g9b///pt//vmHVq1aER0dTXZ2Ntu2beP777+nR48etinJ2dnZ1K9fn5CQELy9vUlISGDr1q2cOHGCO++8U0zEJSQ9PZ1PP/20THJoZGRkcMstt1C3bl28vb3ZuXMnixYtYu/evbz00ku2eqmpqVx33XXExsbi7+/P/v37WbBgAdu2bePtt992ixLtikcffZSZM2cybtw4h/KydLWYTCa6detmSzdgTf3/2WefkZ2dzZ133nnBfboT+T9yRBSPSk7Hjh2ZM2cOQ4YMISIiwm39+vj4cOWVVzqUZWZmsnXrVm6++WaHIK2vv/6a5cuX8+2339rSjoMxd9/dXHfddSxYsIABA/6/vTsPb7LKG///Pkma7vteKIVS9haUrSIOCIqgDjqI6ygD6Fd03Bl9XJ5xGB135YfO4MozM6AiLuCCCwqiKMKwaREopZTSFlq6QKEb3Zvcvz9CMk2Ttmmbpiyf13Xlwp6cc9/nkMr9yVlnExkZ6dZrL126lL179/LVV18RGxtrS586dartv318fFi/fr1dD9O4ceOoqKhg+fLl3H///W7rCYiLi2Pfvn0MHToUPz8/t1zT6sCBA/Tr18/uMw4NDeXTTz8lPz/ftqNpy70NYmNj0ev1bNmyhePHj7e5M6Zo3ahRo1i9ejXXXHON23cNve++++x+HjlyJPX19XzwwQd25za13DhrxIgReHt78/e//53s7OwOHbPQEd7e3ixYsIB58+bZpRuNxk4F2YcOHbIFLMePH0en07Fq1SrAcgaT9UDHJ554gnHjxnH99ddz9913k5eXx//8z/9w7bXXOvxb50ln24oUd5BVLac56+mT//jHP7r9XmvWrOHkyZMO3ZJvv/02F1xwgV3Q0V2sZ6W8+eabbr+2dRfW5kFHS3q93unZKCkpKTQ0NDg9pK+zRowYAVh2XHQ3s9lst/EY0O5hc1bWwKq7vhGfC26++WYAp+fidAfr0El7h/y5mq+r5s6dy4ABA9xyrQ0bNnDddddx3XXXkZmZSUZGhu3nDRs22PKdd955rF27lqKiIq688kr+93//lz/84Q+8/fbbbqmHcB/5l+U0FxUVxdy5c3nvvfcoKChoNZ871sevXLmSiIgIJk2aZEtrbGxk586dDBo0iKeffprk5GQSEhL47W9/y6ZNm9zWTqvIyEhuvvlmPvzwQ4fzKZrraHsLCwspKioiPj6exx9/nJEjR5KSksLs2bPZt29fu/XasWMHQUFBbu2F8fPzY/Dgwezfv7/NTdbMZrNLr+YGDx7MwYMHOXToEA0NDbahMT8/P6fj7GazmaamJo4ePcrOnTuJjY3ttvM9zgVhYWFcddVVrFmzhpKSklbzmUwml16tla2trSUtLY1Vq1Yxbdo0p2cpmUwm6urqyMjI4J133uH8888nMTHRLe2cM2cOmqY5HNxoMBjIyspC07Qubx5mvYezV8tenQkTJrBlyxbq6uooKSnhlVdecXtvYmfIPh72ZKjlDHDXXXexfPlyFi1axKJFixzeb2+iqFXv3r3Ztm2b0/eKiorYvHkzt912m923obKyMhoaGvjoo4/o06cPL730EkajkTfeeINbbrmF1atX2765u8vtt9/Ohx9+yKuvvspzzz3n8H5BQQGXXHJJu9dpvu350aNHAcv2yykpKbz88ss0NDTwj3/8g1mzZvH55587nABq9dNPP/H1119z//33u/2b4vDhw8nKyuLXX391uh10VVWVrVu5LQEBAXY9VSNHjkSv17NhwwbbcsKgoCAuv/xyhzH0xsZGli9fbvu5V69edsGn6JwbbriBr776infffdfpnKXi4mK7M5ZaEx0dbff5gOXU2uZDGVOmTOGBBx5wKFtbW2s3v2H06NH85S9/6UArhDucTUGDO0jgcQYIDQ1l3rx5vPzyy9x111307dvX7v3o6GjWrFnT7nXa6mr/+OOPMZvNDsMs1m/STU1NvPvuu7ZzGC644ALGjRvHG2+84fZhkZCQEObOnctrr73G7bff7nA6a1RUlEsP4+bttbbD19eXN99803ZGRnJyMlOmTOG9995zmIUPkJ2dzYMPPsjYsWO5/fbbu9Isp7y9vRk2bBi//vorKSkpdqsgwNIrMn369Hav03JYJDMzk127djFixAhiYmKor69n9+7drFu3jiuuuMLuW6DBYGD69OmYTCaOHz/O7t27Wb9+PVOnTpXhli4ICgri2muv5d133+WGG25wCGzDw8PtDjdsjbP/b3v16sWrr75q68n44IMPMJlMDgc5ent78+qrr9LY2Eh2djYrVqzgL3/5Cy+++KKc4yN6jAQeZ4h58+axdOlSFi5c6PCPldFodGmdeltR96pVqxg2bJjDdYKDg1FKMWDAALvDn/z9/Rk1ahTp6ekdbIlr5syZw/Lly/nHP/7BwoUL7d4zGo0uHeHevL3WeRsjR460O5grNjaWxMREp8Mt+fn5zJ07l969e/P6669327j4sGHD2LdvH2lpaUycONHuPb1e3+Ehj/r6erZv305ycrLdktzY2FhWrlzJnj17SE1NtaUrpWyTSKOjowkNDeWbb74hLy/PbV3y56qZM2eyevVq3n77bYegwMvLy2GIwlVGo9F2avGIESMICwtj4cKFXH311QwdOtSWT6fT2fIlJyfTr18/HnroITZu3Ci9WqLHSOBxhvD39+eee+7hb3/7m20CplVXh1p+/fVXDhw44HQs1tfXl4SEhFZ3BOyub8T+/v7ccccdPP/889x2221273VmqCU+Ph4fH59W29Eyvbi4mNmzZxMQEMA///lPAgICutCatnl5eTF8+HC2b99OSkqK3XudGWqpqKjAZDI5rEjx9vYmMDCQioqKNq9lLVdZWdmRZggnfH19ufHGG3nrrbccehO7MtTSknWFSmFhoV3g0VY+4Tky1GJPAo8zyOzZs1myZAkvvviiXXpXh1pWrlyJwWBgxowZTt+fNm0aS5cupbCw0NZdfPLkSX755RcuvvjijjWiA37/+9+zdOlSXnnlFbv0zgy1eHl5MXHiRH7++WdqampsQw2FhYXk5ubaBTInTpywTVpbunSpRyZZDh48mPT0dNLS0uzSOzPUYu3ROXbsmN0wVX19PZWVlYSHh7d5reLiYoBu22TqXDN9+nQ+/vhjli1bZpfelaGWlqwro1qbp9QyX1sru4TobhJ4nEG8vb2ZP38+Dz/8sF260Wjs9ATPxsZGVq9ezaRJk1rds+HOO+/k448/5g9/+AMPPPAARqORN998k9raWu65555O3dcVRqORu+++22EynNFodOgZcMV9993Hddddxx133MHcuXOpr6/ntddeIygoiFtuuQWwbCB22223ceTIEZ599lmKi4ttD2KApKSkbun90Ov1nHfeefznP/9xSO/oXhqBgYHEx8eTnp6OUso2x2PPnj2YzWbbHh4NDQ2sW7eOxMRE294Px44dY+/evYSFhdn2RxBdYzQaueWWW3j55Zft0r28vGzDIK7KycnhrbfeYuLEicTExNDY2MiePXv49NNPGTNmjK23o7q6mscee4zJkyfTq1cvlFLs37+fjz/+mMTERKcTmUX3kR4PexJ4nGFuuOEG3njjDXJzc91yvfXr11NWVtbmlsKRkZF8/PHH/O1vf+NPf/oTZrOZUaNG8fHHH3f4H86Ouuaaa/jXv/7V4S2UnUlKSuLtt9/mpZdeYv78+RgMBlJTU3nttddsD/fS0lLbEdrOViK88847dvMj3GnAgAGkp6e7ZYjj4osvJj09nZycHPbu3YuXlxfh4eGMGzfO1lbrniX79u2jpqYGpRQBAQEkJyczdOhQmXzoRlOnTuWjjz5qc4m4K0JDQwkODub999/nxIkTeHt7Exsby7x587j88stt+by8vOjTpw+fffaZbdOtmJgYZs6cyYwZM1ze00V03dm2FNYd1Olwct+5aMSIEdrXX3/d09XwiLb2qDgbPf/88z1dBY9aunRp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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "matplotlib.rcParams.update({'font.size': 16})\n",
+ "fig, ax = plt.subplots(figsize=(8, 7))\n",
+ "im, bar = heatmap(np.flip(rb_df.values, axis=0), \n",
+ " list(rb_df.index)[::-1], \n",
+ " celltypes,\n",
+ " cmap='alpha', \n",
+ " vmin=0.7, vmax=1)\n",
+ "_ = annotate_heatmap(im, \n",
+ " data=np.flip(rbse_anno_df.values, axis=0), \n",
+ " valfmt=\"{x:^}\", \n",
+ " textcolors=(\"white\", \"white\"),\n",
+ " threshold=1)\n",
+ "\n",
+ "plt.savefig('rb_values.filtered_results.varyingalpha.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 74,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":62: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_xticklabels([\"\"]+col_labels)\n",
+ ":63: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_yticklabels([\"\"]+row_labels)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "discovery_celltype = 'CD4T'\n",
+ "fig, axes = plt.subplots(1, 6, figsize=(7, 7), sharey=True)\n",
+ "for i, discovery_celltype in enumerate(['CD4T', 'CD8T', 'monocyte', 'DC', 'NK', 'B']):\n",
+ " colors = [\"white\", color_dict[discovery_celltype]]\n",
+ " cmap1 = LinearSegmentedColormap.from_list(\"mycmap\", colors)\n",
+ " im1, bar = heatmap(np.flip(replicated_ratio_df[discovery_celltype].values.reshape((6, 1)),\n",
+ " axis=0), \n",
+ " list(rb_df.index)[::-1], \n",
+ " [discovery_celltype],\n",
+ " cmap=cmap1, ax=axes[i], vmin=0, vmax=1)\n",
+ " bar.remove()\n",
+ " _ = annotate_heatmap(im1, \n",
+ " data=replicated_ratio_df[discovery_celltype].values.reshape((6, 1)), \n",
+ " valfmt=\"{x:.0%}\", \n",
+ " textcolors=(\"white\", \"white\"),\n",
+ " threshold=1)\n",
+ " if i > 0:\n",
+ " axes[i].axis('off')\n",
+ " \n",
+ "plt.subplots_adjust(wspace=0, hspace=0)\n",
+ "plt.savefig('replicated_ratio.filtered_results.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEoAAADBCAYAAABopyZqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAHyUlEQVR4nO2dfYxcZRXGf8/2w5XyhwWiiUFasIiW+JGgtQaj0oSASVMU8SOauiFKDIkiMfqXsVFSTYwfmJhIrUpAg6FBiDSmsQRpEInGsAroQoB+kIJWU6WAdm2x9PjHe7cZhpl7n51hd+fG80sms/POPffeOX2ec9+Z5txXEUHSzNhCn0BbyESZZKJMMlEmmSiTTJRJ6xIl6XRJ35X0W0nTkkLSSjN2XNI3JB2Q9J9qH+9yYluXKGAV8CHgEHDPLGN/BFwBbALWAweAnZLe0hgZEa16AGMdf38SCGClEffmatvLO8YWA48A25viW6eoiDg+YOgG4L/Ato59HQNuBi6S9LK64NYlagjOBfZFxHTX+BSwlGLpvvw/JeoUSl3r5qmO9/uyuO5NSfP9jXkKONLxemtEbH2J9i1Kjeo13khtogDGxuZPdMePHz8SEW+do90/BZzRY3x5x/t9GbVEzeXup4D3Szqpq06tBp4DdtcF12ZBEmNjY/P2mGO2A0uAD3Z8vsXAh4E7IuJoXXCjoiTLwvOKpMuqP8+rnt8r6SBwMCLulrQC2ANcExHXAETE/ZK2Ad+RtATYB1wJnAl8rOmYI2W9WXBL1+vvVc93A++hFOhFvNgxlwNfBTYDrwAeAC6OiD80HVB1PwUvWrQoxsfHjfN+aZienp6cw2I+FG1V1LzTyhq1EDRNOFNRFakok6xRJmk9k7SeSVrPJBVlkjXKJBVlkjXKpNF6qahCKsokE2WS1jNJRZnk9MAkJ5wmqSiTrFEmaT2TtJ5JWs8kFWWSNcokFWWSNcokvxSbpKJMMlEmaT2TVJRJTg9McsJpkooyyRplkooyyRplktYzSeuZpPVMGrMw8zVmPh4Okl4j6WeSnpH0rKTbJPXqw+sVe2YV+7Skw5J2SbJaSlpVoySdBNwFHAUmKB2dm4Fdkt4UEYdrYk8FfgP8C/gUMA18ropdExEP1x27bV+KrwDOAs6JiN0Akh4EHqN8+G/XxF4JvAp4d0fsXcBe4CuUeyn0pVWKorTk/27mgwJExD5J9wKXUJ+otcBjXbGHJd0DrJe0uGrv70nbatS5wJ97jE9RWl7reJ7SEtvNUeDlwGvrgkftqneapPs6Xnd3qde15C/vMd7JI8CFkk6NiH8CSBoD1nTsuy+jZr1/GI2Ng7bkbwGuAn4s6SpKMf8ipVUWoLbzu23WO0Tvf/nl9FbaCSJiL6V3+DxKR/pfgXcA11abHKiLHzXrNTFFqVPdrAYeagqOiFsl/Rx4HfBcROyRdB3wRETsr4ttm6K2A2slndVxfiuB86v3GomI5yPi4SpJr6a081/XFNeYqBG778EPgMeB2yVdImkDcDvwBPD9mY0krZB0TNKmjrElkq6V9D5J6yR9BriPotJvNR24VRPOat6zjlJXfkIp4r8Cro6If3ds2qudP4CzgY9SWvmfBK4HvhYRvaYNL2DUrnqNVLXkAw3bPE7XlbCaTK4f9LitS9RC0SrrLSSpKJP8hdOkbRPOBSMVZZI1yiQVZZI1yiStZ5LWM0nrmaSiTLJGmeSXYpNUlEnWKJO86pmk9UzSeiZpPZNUlEnWKJNUlEnWKJO0nklazyStZ5KKMskaZZK/R5mkokyyRpnkVc8krWeS1jNJ65mkokyyRpmkokyyRpmkokxat1iqhmvnP0PSjZL2S5qW9KikzZKWNcW2qphruHb+ZcCdlJVlvwTsB95G6VA/m9KO1pe2WW+Ydv7zKQm5KCLuqMZ2SToF+LxevH7xC2hbMR+mnX9p9fxs1/jTlBJUq4i2dYAO085/J0V5X5e0WtLJVe/fZ4EtdbaF0atRc9bOHxFHJL0TuJWS2Bl+CHy66cRGrUbNWTu/pHFgG/BKYCOlmK8BNgHHKLck6UvbatTA7fzAJyirYq+KiD3V2K8lPQNslbQlIh7oFzxqimpimHb+NwKHOpI0w++r5zdQlgzvSdu61Idp5/8bsFzSqq7xt1fPf6nNQ92bIzgzH7idH7iBcu+oHZImJF0g6QvAN4FJ4N6BEzWTrFGZHlSX8HXAo5R2/puAfcC6pnb+qnN9LXA/ZTa/gzKB3QpcGBG192YZtelBI4O281fjD9FwQ61+5H+AmrROUQtF26YHC0bbJpwLRlrPJK1nktYzSUWZZI0ySUWZZI0ySUWZZI0ySeuZpPVM0nom+XuUSSrKJGuUSV71TFJRJlmjTNJ6Jmk9k7SeSSrKJGuUSSrKJGuUSVrPJK1nktYzyd+jTFJRJlmjTPKqZ5KKMskaZZLWM0nrmaT1TBp7YUapxaM6p4G61CV9WVL0eRxpim+VojRElzql0/OXXWPLqrHGhVbbVqMG7lKPiCcp636eQNJGSg5ubDpw2656w3Sp92IC+Duws2nDVrWhMVyXevfnOh24ALipWki1llbVKIZbdL6bjRShNNoOGhI1OTm5U9JpszyBYRhXfTs/DL7ofDcfB/4YEQ86G9cmKiIuHuAE5pJhutRPIGkN8HrgajdmpHxlMNSi8x1MUO518FM3oG2JGnrReUlLgY8AOyLioH3kiGjNgzJB3A38iTId2EC5V8Fe4OSO7VZQFLOpxz4updS5S2dz7FYpapgu9Q4mKFfJX8zm2KqynDTQKkUtJJkok0yUSSbKJBNlkokyyUSZZKJMMlEm/wPf4KV4Rxo9gAAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "import matplotlib as mpl\n",
+ "\n",
+ "fig, ax = plt.subplots(figsize=(0.5, 6))\n",
+ "fig.subplots_adjust(bottom=0.5)\n",
+ "\n",
+ "colors = [\"white\", 'black']\n",
+ "cmap = LinearSegmentedColormap.from_list(\"mycmap\", colors)\n",
+ "norm = mpl.colors.Normalize(vmin=0.7, vmax=1)\n",
+ "\n",
+ "fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),\n",
+ " cax=ax, orientation='vertical')\n",
+ "plt.savefig('colorbar.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, ax = plt.subplots(figsize=(0.5, 6))\n",
+ "fig.subplots_adjust(bottom=0.5)\n",
+ "\n",
+ "colors = [\"white\", 'black']\n",
+ "cmap = LinearSegmentedColormap.from_list(\"mycmap\", colors)\n",
+ "norm = mpl.colors.Normalize(vmin=0, vmax=1)\n",
+ "\n",
+ "fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),\n",
+ " cax=ax, orientation='vertical')\n",
+ "plt.savefig('colorbar.replication_ratio.pdf')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### celltype comparison for unfiltered results"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 75,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# filtered results\n",
+ "unrb_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "unrbse_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "unrbpvalue_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "unnumcoeqtl_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "unanno_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "unnum_anno_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "\n",
+ "for discovery_celltype in celltypes:\n",
+ " for replication_celltype in celltypes:\n",
+ " if discovery_celltype != replication_celltype:\n",
+ " unrb_results = unfiltered_res_df[(unfiltered_res_df['celltype_discovery'] == discovery_celltype) &\n",
+ " (unfiltered_res_df['celltype_replication'] == replication_celltype)]\n",
+ " unreplicated_coeqtls_num = pd.read_csv(\n",
+ " workdir/f'output/unfiltered_results/rb_calculations/discovery_{discovery_celltype}_replication_{replication_celltype}.tsv.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t',\n",
+ " index_col=0\n",
+ " ).shape[0]\n",
+ " if rb_results['r'].values[0] < 10 and discovery_celltype != 'B':\n",
+ " unrb_df.loc[replication_celltype, discovery_celltype] = unrb_results['r'].values[0]\n",
+ " unrbse_df.loc[replication_celltype, discovery_celltype] = unrb_results['se_r'].values[0]\n",
+ " unrbpvalue_df.loc[replication_celltype, discovery_celltype] = unrb_results['p'].values[0]\n",
+ " unnumcoeqtl_df.loc[replication_celltype, discovery_celltype] = unreplicated_coeqtls_num\n",
+ " unrbvalue = unrb_results['r'].values[0]\n",
+ " unrbsevalue = unrb_results['se_r'].values[0]\n",
+ " unnum_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={unreplicated_coeqtls_num}\"\n",
+ " unanno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"{unrbvalue:.2f}\\nN={unreplicated_coeqtls_num}\"\n",
+ " elif discovery_celltype == 'B':\n",
+ " unrb_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " unrbse_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " unrbpvalue_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " unnumcoeqtl_df.loc[replication_celltype, discovery_celltype] = unreplicated_coeqtls_num\n",
+ " unrbvalue = unrb_results['r'].values[0]\n",
+ " unrbsevalue = unrb_results['se_r'].values[0]\n",
+ " unnum_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={unreplicated_coeqtls_num}\"\n",
+ " unanno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={unreplicated_coeqtls_num}\"\n",
+ " else:\n",
+ " unrb_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " unrbse_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " unrbpvalue_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " unnumcoeqtl_df.loc[replication_celltype, discovery_celltype] = unreplicated_coeqtls_num\n",
+ " unnum_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={unreplicated_coeqtls_num}\"\n",
+ " unanno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={unreplicated_coeqtls_num}\"\n",
+ " else:\n",
+ " unrb_df.loc[replication_celltype, discovery_celltype] = 1\n",
+ " unrbse_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " unrbpvalue_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " unreplicated_coeqtls_num = pd.read_csv(\n",
+ " workdir/f'output/unfiltered_results/UT_{discovery_celltype}/coeqtls_fullresults_fixed.sig.tsv.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t'\n",
+ " ).shape[0]\n",
+ " unnumcoeqtl_df.loc[replication_celltype, discovery_celltype] = unreplicated_coeqtls_num\n",
+ " unnum_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={unreplicated_coeqtls_num}\"\n",
+ " unanno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={unreplicated_coeqtls_num}\"\n",
+ " \n",
+ "unreplicated_ratio_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "for discovery_celltype in unnumcoeqtl_df.columns:\n",
+ " for replication_celltype in unnumcoeqtl_df.index:\n",
+ " unreplicated_ratio_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " unnumcoeqtl_df.loc[replication_celltype, discovery_celltype] / unnumcoeqtl_df.loc[discovery_celltype, \n",
+ " discovery_celltype]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 76,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":62: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_xticklabels([\"\"]+col_labels)\n",
+ ":63: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_yticklabels([\"\"]+row_labels)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "matplotlib.rcParams.update({'font.size': 14})\n",
+ "fig, axes = plt.subplots(1, 6, figsize=(7, 7), sharey=True)\n",
+ "for i, discovery_celltype in enumerate(['CD4T', 'CD8T', 'monocyte', 'DC', 'NK', 'B']):\n",
+ " colors = [\"white\", color_dict[discovery_celltype]]\n",
+ " cmap1 = LinearSegmentedColormap.from_list(\"mycmap\", colors)\n",
+ " im1, bar = heatmap(np.flip(unreplicated_ratio_df[discovery_celltype].values.reshape((6, 1)), \n",
+ " axis=0), \n",
+ " list(rb_df.index)[::-1], \n",
+ " [discovery_celltype],\n",
+ " cmap=cmap1, ax=axes[i], vmin=0, vmax=1)\n",
+ " bar.remove()\n",
+ " _ = annotate_heatmap(im1, \n",
+ " data=unreplicated_ratio_df[discovery_celltype].values.reshape((6, 1)), \n",
+ " valfmt=\"{x:.0%}\", \n",
+ " textcolors=(\"white\", \"white\"),\n",
+ " threshold=1)\n",
+ " if i > 0:\n",
+ " axes[i].axis('off')\n",
+ " \n",
+ "plt.subplots_adjust(wspace=0, hspace=0)\n",
+ "plt.savefig('replication_ratio.unfiltered_results.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 77,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":62: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_xticklabels([\"\"]+col_labels)\n",
+ ":63: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_yticklabels([\"\"]+row_labels)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "matplotlib.rcParams.update({'font.size': 14})\n",
+ "discovery_celltype = 'CD4T'\n",
+ "fig, axes = plt.subplots(1, 6, figsize=(7, 7), sharey=True)\n",
+ "for i, discovery_celltype in enumerate(['CD4T', 'CD8T', 'monocyte', 'DC', 'NK', 'B']):\n",
+ " colors = [\"white\", color_dict[discovery_celltype]]\n",
+ " cmap1 = LinearSegmentedColormap.from_list(\"mycmap\", colors)\n",
+ " im1, bar = heatmap(np.flip(unrb_df[discovery_celltype].values.reshape((6, 1)), \n",
+ " axis=0),\n",
+ " list(rb_df.index)[::-1], \n",
+ " [discovery_celltype],\n",
+ " cmap=cmap1, ax=axes[i], vmin=0, vmax=1)\n",
+ " bar.remove()\n",
+ " _ = annotate_heatmap(im1, \n",
+ " data=unanno_df[discovery_celltype].values.reshape((6, 1)), \n",
+ " valfmt=\"{x:^}\", \n",
+ " textcolors=(\"white\", \"white\"),\n",
+ " threshold=1)\n",
+ " if i > 0:\n",
+ " axes[i].axis('off')\n",
+ " \n",
+ "plt.subplots_adjust(wspace=0, hspace=0)\n",
+ "plt.savefig('rb_values.unfiltered_results.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## BIOS replication"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "bios_replication_filtered_df = pd.read_csv(\n",
+ " workdir/'bios/onlyRNAAlignMetrics_rmLLD/filtered_results/replication_summary.csv', \n",
+ " index_col=0\n",
+ ").set_index('celltype')\n",
+ "bios_replication_unfiltered_df = pd.read_csv(\n",
+ " workdir/'bios/onlyRNAAlignMetrics_rmLLD/unfiltered_results/replication_summary.csv', \n",
+ " index_col=0\n",
+ ").set_index('celltype')\n",
+ "color_dict = {'CD4T': '#2E9D33',\n",
+ " 'CD8T': 'darkgreen',\n",
+ " 'monocyte': '#EDBA1B',\n",
+ " 'NK': '#E64B50',\n",
+ " 'DC': '#965EC8',\n",
+ " 'B': '#009DDB',\n",
+ " 'cMono': 'peru',\n",
+ " 'ncMono': 'y',\n",
+ " 'CD4T_individual_100': '#2E9D33',\n",
+ " 'CD4T_individual_50': '#2E9D33',\n",
+ " 'CD4T_50': '#2E9D33',\n",
+ " 'CD4T_150': '#2E9D33',\n",
+ " 'CD4T_250': '#2E9D33'}\n",
+ "\n",
+ "bios_replication_filtered_df['color'] = [color_dict.get(celltype) for celltype in \n",
+ " bios_replication_filtered_df.index]\n",
+ "bios_replication_unfiltered_df['color'] = [color_dict.get(celltype) for celltype in \n",
+ " bios_replication_unfiltered_df.index]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "bios_replication_filtered_df_clean = bios_replication_filtered_df.drop(index=['B'])\n",
+ "bios_replication_filtered_df_clean = bios_replication_filtered_df_clean.drop(columns=['color'])\n",
+ "bios_replication_filtered_df_clean.to_excel(workdir/'output/summary/rb_values_bios_replication_filtered_results.xlsx')\n",
+ "\n",
+ "bios_replication_unfiltered_df_clean = bios_replication_unfiltered_df.drop(index=['B'])\n",
+ "bios_replication_unfiltered_df_clean = bios_replication_unfiltered_df_clean.drop(columns=['color'])\n",
+ "bios_replication_unfiltered_df_clean.to_excel(workdir/'output/summary/rb_values_bios_replication_unfiltered_results.xlsx')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":3: UserWarning: marker is redundantly defined by the 'marker' keyword argument and the fmt string \".\" (-> marker='.'). The keyword argument will take precedence.\n",
+ " ax2.errorbar(y=bios_replication_filtered_df.loc[sorted_celltypes]['r'].values,\n",
+ ":8: UserWarning: marker is redundantly defined by the 'marker' keyword argument and the fmt string \".\" (-> marker='.'). The keyword argument will take precedence.\n",
+ " ax2.errorbar(y=bios_replication_unfiltered_df.loc[sorted_celltypes]['r'].values,\n",
+ ":12: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax2.set_xticklabels(['', 'CD4T', '', 'CD8T', '', 'monocyte', '', 'DC', '', 'NK'])\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sorted_celltypes = ['CD4T', 'CD8T', 'monocyte', 'DC', 'NK']\n",
+ "fig, ax2 = plt.subplots()\n",
+ "ax2.errorbar(y=bios_replication_filtered_df.loc[sorted_celltypes]['r'].values,\n",
+ " x=[ind for ind in range(len(sorted_celltypes))],\n",
+ " yerr=bios_replication_filtered_df.loc[sorted_celltypes]['se_r'].values,\n",
+ " fmt='.', markersize=6, marker='o', color='black', label = 'Filtered results')\n",
+ "bios_replication_unfiltered_df.loc['DC'] = [np.nan, np.nan, np.nan, np.nan]\n",
+ "ax2.errorbar(y=bios_replication_unfiltered_df.loc[sorted_celltypes]['r'].values,\n",
+ " x=[ind+0.05 for ind in range(len(sorted_celltypes))],\n",
+ " yerr=bios_replication_unfiltered_df.loc[sorted_celltypes]['se_r'].values,\n",
+ " fmt='.', markersize=6, marker='o', markerfacecolor='white', color='black', label = 'Unfilter results')\n",
+ "ax2.set_xticklabels(['', 'CD4T', '', 'CD8T', '', 'monocyte', '', 'DC', '', 'NK'])\n",
+ "plt.legend()\n",
+ "plt.ylabel(\"rb (SE)\")\n",
+ "plt.savefig('sf20.comparison_rb_values_bios_replication.pdf')\n",
+ "plt.savefig('sf20.comparison_rb_values_bios_replication.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":14: UserWarning: marker is redundantly defined by the 'marker' keyword argument and the fmt string \".\" (-> marker='.'). The keyword argument will take precedence.\n",
+ " ax.errorbar(y=bios_replication_filtered_df.loc[celltype]['r'],\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# compare between filtered and unfiltered\n",
+ "fig, axes = plt.subplots(1, 5, figsize=(4, 5), sharey=True)\n",
+ "sorted_celltypes = ['CD4T', 'CD8T', 'monocyte', 'DC', 'NK']\n",
+ "# ax1.errorbar(y=bios_replication_filtered_df.loc[sorted_celltypes]['r'].values,\n",
+ "# x=[ind-0.1 for ind in range(len(sorted_celltypes))],\n",
+ "# yerr=bios_replication_filtered_df.loc[sorted_celltypes]['se_r'].values,\n",
+ "# fmt='.', markersize=6, marker='o', \n",
+ "# ecolor=bios_replication_filtered_df.loc[sorted_celltypes]['color'].values,\n",
+ "# color=bios_replication_filtered_df.loc[sorted_celltypes]['color'].values[0])\n",
+ "# ax1.set_xticklabels([\"\"]+sorted_celltypes)\n",
+ "# ax1.plot([0, 5], [0.5, 0.5], linestyle='--', color='black')\n",
+ "for ind, celltype in enumerate(sorted_celltypes):\n",
+ " ax = axes[ind]\n",
+ " ax.errorbar(y=bios_replication_filtered_df.loc[celltype]['r'],\n",
+ " x=[0.4],\n",
+ " yerr=bios_replication_filtered_df.loc[celltype]['se_r'],\n",
+ " fmt='.', markersize=6, marker='o', ecolor='black',\n",
+ " markeredgecolor='black', markerfacecolor='black'\n",
+ " )\n",
+ " ax.set_xlim([0, 1])\n",
+ " ax.spines['bottom'].set_color(bios_replication_filtered_df.loc[celltype]['color'])\n",
+ " ax.spines['top'].set_color(bios_replication_filtered_df.loc[celltype]['color']) \n",
+ " ax.spines['right'].set_color(bios_replication_filtered_df.loc[celltype]['color'])\n",
+ " ax.spines['left'].set_color(bios_replication_filtered_df.loc[celltype]['color'])\n",
+ " ax.set_xticklabels([])\n",
+ " ax.set_xlabel(celltype)\n",
+ " \n",
+ "\n",
+ "plt.savefig('bios_replication.filtered_results.pdf')\n",
+ "plt.savefig('bios_replication.filtered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":14: UserWarning: marker is redundantly defined by the 'marker' keyword argument and the fmt string \".\" (-> marker='.'). The keyword argument will take precedence.\n",
+ " ax.errorbar(y=bios_replication_filtered_df.loc[celltype]['r'],\n",
+ ":20: UserWarning: marker is redundantly defined by the 'marker' keyword argument and the fmt string \".\" (-> marker='.'). The keyword argument will take precedence.\n",
+ " ax.errorbar(y=bios_replication_unfiltered_df.loc[celltype]['r'],\n",
+ "/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/Beeline/miniconda/envs/scpy3.8/lib/python3.8/site-packages/numpy/core/_asarray.py:102: UserWarning: Warning: converting a masked element to nan.\n",
+ " return array(a, dtype, copy=False, order=order)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# compare between filtered and unfiltered\n",
+ "fig, axes = plt.subplots(1, 6, figsize=(12, 6), sharey=True)\n",
+ "sorted_celltypes = ['CD4T', 'CD8T', 'monocyte', 'DC', 'NK', 'B']\n",
+ "# ax1.errorbar(y=bios_replication_filtered_df.loc[sorted_celltypes]['r'].values,\n",
+ "# x=[ind-0.1 for ind in range(len(sorted_celltypes))],\n",
+ "# yerr=bios_replication_filtered_df.loc[sorted_celltypes]['se_r'].values,\n",
+ "# fmt='.', markersize=6, marker='o', \n",
+ "# ecolor=bios_replication_filtered_df.loc[sorted_celltypes]['color'].values,\n",
+ "# color=bios_replication_filtered_df.loc[sorted_celltypes]['color'].values[0])\n",
+ "# ax1.set_xticklabels([\"\"]+sorted_celltypes)\n",
+ "# ax1.plot([0, 5], [0.5, 0.5], linestyle='--', color='black')\n",
+ "for ind, celltype in enumerate(sorted_celltypes):\n",
+ " ax = axes[ind]\n",
+ " ax.errorbar(y=bios_replication_filtered_df.loc[celltype]['r'],\n",
+ " x=[0.4],\n",
+ " yerr=bios_replication_filtered_df.loc[celltype]['se_r'],\n",
+ " fmt='.', markersize=6, marker='o', ecolor='black',\n",
+ " markeredgecolor='black', markerfacecolor='black'\n",
+ " )\n",
+ " ax.errorbar(y=bios_replication_unfiltered_df.loc[celltype]['r'],\n",
+ " x=[0.6],\n",
+ " yerr=bios_replication_unfiltered_df.loc[celltype]['se_r'],\n",
+ " fmt='.', markersize=6, marker='o', ecolor='black',\n",
+ " markeredgecolor='black', markerfacecolor='white')\n",
+ " ax.set_xlim([0, 1])\n",
+ " ax.spines['bottom'].set_color(bios_replication_filtered_df.loc[celltype]['color'])\n",
+ " ax.spines['top'].set_color(bios_replication_filtered_df.loc[celltype]['color']) \n",
+ " ax.spines['right'].set_color(bios_replication_filtered_df.loc[celltype]['color'])\n",
+ " ax.spines['left'].set_color(bios_replication_filtered_df.loc[celltype]['color'])\n",
+ " ax.set_xticklabels([])\n",
+ " ax.set_xlabel(celltype)\n",
+ " \n",
+ "\n",
+ "plt.savefig('bios_replication_comparison.filter_and_unfilter.pdf')\n",
+ "plt.savefig('bios_replication_comparison.filter_and_unfilter.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# compare between filtered and unfiltered\n",
+ "celltypes = ['CD4T', 'CD8T', 'monocyte', 'B', 'NK', 'DC']\n",
+ "fig, axes = plt.subplots(6, 2, figsize=(12, 12), sharex=True)\n",
+ "for i, celltype in enumerate(celltypes):\n",
+ " replication_celltypes = [ct for ct in celltypes]\n",
+ " ax1, ax2 = axes[i, :]\n",
+ " ax1.scatter(x=replication_celltypes,\n",
+ " y=numcoeqtl_df[celltype].loc[replication_celltypes])\n",
+ " ax1.scatter(x=replication_celltypes,\n",
+ " y=unnumcoeqtl_df[celltype].loc[replication_celltypes])\n",
+ " ax2.errorbar(x=replication_celltypes, fmt='.', markersize=12,\n",
+ " y=rb_df[celltype].loc[replication_celltypes],\n",
+ " yerr=rbse_df[celltype].loc[replication_celltypes], label='filtered')\n",
+ " ax2.errorbar(x=replication_celltypes, fmt='.', markersize=12,\n",
+ " y=unrb_df[celltype].loc[replication_celltypes],\n",
+ " yerr=unrbse_df[celltype].loc[replication_celltypes], label='Unfiltered')\n",
+ " ax1.set_ylabel(celltype)\n",
+ "ax2.legend()\n",
+ "\n",
+ "plt.savefig('celltype_rb.comparison_filtered_unfiltered_results.pdf')\n",
+ "plt.savefig('celltype_rb.comparison_filtered_unfiltered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Sub celltypes in monocytes"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " r | \n",
+ " se_r | \n",
+ " p | \n",
+ " celltype_discovery | \n",
+ " celltype_replication | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 | \n",
+ " 0.971431 | \n",
+ " 0.048402 | \n",
+ " 1.351820e-89 | \n",
+ " ncMono | \n",
+ " cMono | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 0.929081 | \n",
+ " 0.088678 | \n",
+ " 1.101982e-25 | \n",
+ " ncMono | \n",
+ " monocyte | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 0.936797 | \n",
+ " 0.025409 | \n",
+ " 1.468276e-297 | \n",
+ " cMono | \n",
+ " ncMono | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 0.999726 | \n",
+ " 0.000613 | \n",
+ " 0.000000e+00 | \n",
+ " cMono | \n",
+ " monocyte | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 0.896203 | \n",
+ " 0.036240 | \n",
+ " 5.115902e-135 | \n",
+ " monocyte | \n",
+ " ncMono | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 0.949824 | \n",
+ " 0.008640 | \n",
+ " 0.000000e+00 | \n",
+ " monocyte | \n",
+ " cMono | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " r se_r p celltype_discovery celltype_replication\n",
+ "1 0.971431 0.048402 1.351820e-89 ncMono cMono\n",
+ "2 0.929081 0.088678 1.101982e-25 ncMono monocyte\n",
+ "3 0.936797 0.025409 1.468276e-297 cMono ncMono\n",
+ "4 0.999726 0.000613 0.000000e+00 cMono monocyte\n",
+ "5 0.896203 0.036240 5.115902e-135 monocyte ncMono\n",
+ "6 0.949824 0.008640 0.000000e+00 monocyte cMono"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "filtered_mono_res_df = pd.read_csv(workdir/'output/filtered_results/rb_calculations/monocyte_subcelltypes/summary.csv', \n",
+ " index_col=0)\n",
+ "filtered_mono_res_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# filtered results\n",
+ "mono_subcelltypes = ['monocyte', 'cMono', 'ncMono']\n",
+ "monorb_df = pd.DataFrame(data=np.zeros((len(mono_subcelltypes), len(mono_subcelltypes))), \n",
+ " columns=mono_subcelltypes, index=mono_subcelltypes)\n",
+ "monorbse_df = pd.DataFrame(data=np.zeros((len(mono_subcelltypes), len(mono_subcelltypes))), \n",
+ " columns=mono_subcelltypes, index=mono_subcelltypes)\n",
+ "monorbpvalue_df = pd.DataFrame(data=np.zeros((len(mono_subcelltypes), len(mono_subcelltypes))), \n",
+ " columns=mono_subcelltypes, index=mono_subcelltypes)\n",
+ "mononumcoeqtl_df = pd.DataFrame(data=np.zeros((len(mono_subcelltypes), len(mono_subcelltypes))), \n",
+ " columns=mono_subcelltypes, index=mono_subcelltypes)\n",
+ "monoanno_df = pd.DataFrame(data=np.zeros((len(mono_subcelltypes), len(mono_subcelltypes))), \n",
+ " columns=mono_subcelltypes, index=mono_subcelltypes)\n",
+ "mononum_anno_df = pd.DataFrame(data=np.zeros((len(mono_subcelltypes), len(mono_subcelltypes))), \n",
+ " columns=mono_subcelltypes, index=mono_subcelltypes)\n",
+ "\n",
+ "for discovery_celltype in mono_subcelltypes:\n",
+ " # replication in other celltypes\n",
+ " for replication_celltype in mono_subcelltypes:\n",
+ " if discovery_celltype != replication_celltype:\n",
+ " monorb_results = filtered_mono_res_df[(filtered_mono_res_df['celltype_discovery'] == discovery_celltype) &\n",
+ " (filtered_mono_res_df['celltype_replication'] == replication_celltype)]\n",
+ " monoreplicated_coeqtls_num = pd.read_csv(\n",
+ " workdir/f'output/filtered_results/rb_calculations/monocyte_subcelltypes/discovery_{discovery_celltype}_replication_{replication_celltype}.tsv.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t',\n",
+ " index_col=0\n",
+ " ).shape[0]\n",
+ " if monorb_results['r'].values[0] < 10:\n",
+ " monorb_df.loc[replication_celltype, discovery_celltype] = monorb_results['r'].values[0]\n",
+ " monorbse_df.loc[replication_celltype, discovery_celltype] = monorb_results['se_r'].values[0]\n",
+ " monorbpvalue_df.loc[replication_celltype, discovery_celltype] = monorb_results['p'].values[0]\n",
+ " mononumcoeqtl_df.loc[replication_celltype, discovery_celltype] = monoreplicated_coeqtls_num\n",
+ " monorbvalue = monorb_results['r'].values[0]\n",
+ " monorbsevalue = monorb_results['se_r'].values[0]\n",
+ " monoanno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"rb={monorbvalue:.2f}\\nN={monoreplicated_coeqtls_num}\"\n",
+ " mononum_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={monoreplicated_coeqtls_num}\"\n",
+ " else:\n",
+ " monorb_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " monorbse_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " monorbpvalue_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " mononumcoeqtl_df.loc[replication_celltype, discovery_celltype] = monoreplicated_coeqtls_num\n",
+ " monoanno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"rb=NA\\nN={monoreplicated_coeqtls_num}\"\n",
+ " mononum_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={monoreplicated_coeqtls_num}\"\n",
+ " else:\n",
+ " monorb_df.loc[replication_celltype, discovery_celltype] = 1\n",
+ " monorbse_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " monorbpvalue_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " monoreplicated_coeqtls_num = pd.read_csv(\n",
+ " workdir/f'output/filtered_results/UT_{discovery_celltype}/coeqtls_fullresults_fixed.sig.tsv.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t'\n",
+ " ).shape[0]\n",
+ " mononumcoeqtl_df.loc[replication_celltype, discovery_celltype] = monoreplicated_coeqtls_num\n",
+ " monoanno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={monoreplicated_coeqtls_num}\"\n",
+ " mononum_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={monoreplicated_coeqtls_num}\"\n",
+ " \n",
+ "monoreplicated_ratio_df = pd.DataFrame(data=np.zeros((len(mono_subcelltypes), len(mono_subcelltypes))), \n",
+ " columns=mono_subcelltypes, index=mono_subcelltypes)\n",
+ "for discovery_celltype in mononumcoeqtl_df.columns:\n",
+ " for replication_celltype in mononumcoeqtl_df.index:\n",
+ " monoreplicated_ratio_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " mononumcoeqtl_df.loc[replication_celltype, discovery_celltype] / mononumcoeqtl_df.loc[discovery_celltype, discovery_celltype]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " monocyte | \n",
+ " cMono | \n",
+ " ncMono | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " monocyte | \n",
+ " 1.000000 | \n",
+ " 1.000000 | \n",
+ " 0.826087 | \n",
+ "
\n",
+ " \n",
+ " cMono | \n",
+ " 0.996441 | \n",
+ " 1.000000 | \n",
+ " 0.826087 | \n",
+ "
\n",
+ " \n",
+ " ncMono | \n",
+ " 0.985765 | \n",
+ " 0.980645 | \n",
+ " 1.000000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " monocyte cMono ncMono\n",
+ "monocyte 1.000000 1.000000 0.826087\n",
+ "cMono 0.996441 1.000000 0.826087\n",
+ "ncMono 0.985765 0.980645 1.000000"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "monoreplicated_ratio_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":60: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_xticklabels([\"\"]+col_labels)\n",
+ ":61: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_yticklabels([\"\"]+row_labels)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, axes = plt.subplots(1, 2, figsize=(10, 5))\n",
+ "ax1, ax2 = axes\n",
+ "\n",
+ "im1, bar = heatmap(monoreplicated_ratio_df.values, \n",
+ " list(monorb_df.index), \n",
+ " list(monorb_df.columns),\n",
+ " cmap=\"viridis\",\n",
+ " ax=ax1)\n",
+ "\n",
+ "\n",
+ "_ = annotate_heatmap(im1, \n",
+ " data=monoreplicated_ratio_df.values, \n",
+ " valfmt=\"{x:.0%}\", \n",
+ " color=\"black\",\n",
+ " threshold=1)\n",
+ "\n",
+ "im2, bar = heatmap(monorb_df.values, \n",
+ " list(monorb_df.index), \n",
+ " list(monorb_df.columns),\n",
+ " cmap=\"viridis\",\n",
+ " ax=ax2)\n",
+ "\n",
+ "\n",
+ "_ = annotate_heatmap(im2, \n",
+ " data=monoanno_df.values, \n",
+ " valfmt=\"{x:^}\", \n",
+ " color=\"black\",\n",
+ " threshold=1)\n",
+ "\n",
+ "plt.savefig('cmono_ncmono_mono.filtered_results.pdf')\n",
+ "plt.savefig('cmono_ncmono_mono.filtered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Non-zero ratio and co-expression mean and variances"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "celltype = 'monocyte'\n",
+ "annotated_coeqtl_df = pd.DataFrame()\n",
+ "for celltype in celltypes:\n",
+ " celltype_annotated_coeqtl_df = pd.read_csv(\n",
+ " workdir/f'output/filtered_results/UT_{celltype}/coeqtls_fullresults_fixed.all.annotated.tsv.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t'\n",
+ " )[['mean_onemillionv2', 'var_onemillionv2', \n",
+ " 'gene2_nonzeroratio_onemillionv2',\n",
+ " 'eqtlgene_nonzeroratio_onemillionv2',\n",
+ " 'gene2_isSig']]\n",
+ " celltype_annotated_coeqtl_df['celltype'] = celltype\n",
+ " annotated_coeqtl_df = pd.concat([annotated_coeqtl_df, \n",
+ " celltype_annotated_coeqtl_df],\n",
+ " axis=0)\n",
+ " \n",
+ "annotated_coeqtl_df_clean = annotated_coeqtl_df.replace([np.inf, -np.inf], np.nan, inplace=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEJCAYAAAB2T0usAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAmNklEQVR4nO3deZhcZZn+8e+dTmMiCWuCIE0S0HYgsjShA+ISmWDYBAEBARkMiwYRZBNnGPWSqIz+ZgCJQAAzDmIwLLIjMMi+ioSsQIjQyCINAZIgIQ2dkOX5/XFOZyrd1emqdJ2q7ur7c119ddU5p049p5d6znnP+z6vIgIzM+vb+lU6ADMzqzwnAzMzczIwMzMnAzMzw8nAzMxwMjAzMzJOBpIGSJouaa6keZJ+kmebvSQtkTQn/fpxljGZmVlH/TPe/3JgbES0SKoFHpP0vxHxl3bbPRoRB2Yci5mZdSLTZBDJiLaW9Glt+tXtUW5DhgyJESNGdHc3ZmZ9ysyZMxdFxNB867K+MkBSDTAT+CQwOSKezLPZnpLmAm8AZ0fEvDz7mQBMABg2bBgzZszIMGozs+oj6dXO1mV+AzkiVkVEA1AH7C5px3abzAKGR8QuwCXArZ3sZ0pENEZE49CheRObmZmtp7L1JoqId4GHgP3aLX8vIlrSx3cBtZKGlCsuMzPLvjfRUEmbpI8HAl8C/tpumy0lKX28exrT4izjMjOztWV9z2Ar4HfpfYN+wB8i4g5J3waIiCuAw4GTJa0EWoGjwqVUzaxIK1asoLm5mWXLllU6lIobMGAAdXV11NbWFvwa9cbP3cbGxvANZDPL9fLLLzN48GA233xz0saGPikiWLx4MUuXLmXbbbdda52kmRHRmO91HoFsZlVh2bJlfT4RAEhi8803L/oKycnAzKpGX08Ebdbn55D5OAOznmbSpEk0NTV1WN7c3AxAXV3dWsvr6+s544wzyhGaWcU4GZilWltbKx2CWcU4GVif09lZ/imnnALA5MmTyxiN9VavvfYa3/jGN3jzzTfp168fEyZM4PTTT+90+x//+MeMGTOGL33pS3nXP//885x00km8++67LF++nC984QtMmTKFGTNmMHXqVC6++OKsDgVwMjAzWy/9+/fnwgsvZNSoUSxdupTddtuNcePGMXLkyLzb//SnP13n/k477TTOPPNMDj74YACeeeYZABobG2lszNsBqKR8A9nMqtbPfvYztt9+e8aNG8fRRx/NBRdcwN/+9jf2228/dtttN77whS/w178m42CPO+44TjvtND772c+y3XbbceONN67Zz/nnn8/o0aPZeeedOffccwHYaqutGDVqFACDBw9mhx124PXXX+80luOOO27NPs855xxGjhzJzjvvzNlnnw3AggUL1rpftdNOOwHw0EMPceCBSVHnhQsXMm7cOEaNGsVJJ53E8OHDWbRoUUl+Vk4GZlaVZsyYwU033cTs2bO5+eab1xS3nDBhApdccgkzZ87kggsu4Dvf+c6a1yxYsIDHHnuMO+64g3POOQeAe+65h6amJqZPn86cOXOYOXMmjzzyyFrv9corrzB79mz22GOPLuN65513uOWWW5g3bx5PP/00P/rRjwA488wzGTt2LPvvvz8XXXQR7777bofX/uQnP2Hs2LHMmjWLQw89lL///e/r++PpwM1EZlaVHnvsMQ4++GAGDhwIwEEHHcSyZcv485//zBFHHLFmu+XLl695fMghh9CvXz9GjhzJW2+9BSTJ4J577mHXXXcFoKWlhaamJsaMGbPm+WGHHcakSZPYaKONuoxro402YsCAAXzzm9/ky1/+8pqz/uOPP559992Xu+++m9tuu41f//rXzJ07t8Mx3XLLLQDst99+bLrppuv74+nAycDMqlK+6gqrV69mk002Yc6cOXlf85GPfKTD6yOCf//3f+ekk07qsP2KFSs47LDDOOaYY/jqV79aUFz9+/dn+vTp3H///Vx33XVceumlPPDAAwB8/OMf54QTTuCEE05gxx135Nlnn+3ymErFzURmVpU+//nP88c//pFly5bR0tLCnXfeyUc/+lG23XZbbrjhBiD5cG1/9t3evvvuy5VXXklLSzJP1+uvv87bb79NRHDiiSeyww47cNZZZxUcV0tLC0uWLOGAAw5g0qRJaxLT3XffzYoVKwB48803Wbx4MVtvvXWHY/rDH/4AJFcs//jHPwp+3674ysDMqtLo0aP5yle+wi677MLw4cNpbGxk4403Ztq0aZx88smcd955rFixgqOOOopddtml0/3ss88+zJ8/nz333BOAQYMG8fvf/54XXniBq6++mp122omGhgYAfv7zn3PAAQesM66lS5dy8MEHs2zZMiKCiy66CEg+3E8//XQGDBgAJDett9xyyzU3uAHOPfdcjj76aK6//nq++MUvstVWWzF48ODu/JjWcKE6s5THGfRu8+fPZ4cddlhrWUtLC4MGDeKDDz5gzJgxTJkyZU0PoN5o+fLl1NTU0L9/f5544glOPvnkTpu88v081lWozlcGZla1JkyYwHPPPceyZcsYP358r04EAH//+9/52te+xurVq9lggw347//+75Lt28nAzKrWNddcU/b3POWUU3j88cfXWnb66adz/PHHd3vf9fX1zJ49u9v7ycfJwMyshHprM6N7E5mZmZOBmZk5GZiZGb5nYGZ9wMmnns5bJSroBvCxIUO4/NJfrXObmpqaNcXmAG699VZGjBiRd9tBgwatGdRWKU4GZlb13lq0iIUbb1+6HS76a5ebDBw4sNMxAD1Rps1EkgZImi5prqR5kn6SZxtJuljSi5KeltS7OwKbmeXR0tLC3nvvzahRo9hpp5247bbbOmyzYMECxowZQ0NDAzvuuCOPPvookIxO3nPPPRk1ahRHHHFEJlcRWd8zWA6MjYhdgAZgP0mfabfN/kB9+jUBuDzjmMzMMtfa2kpDQwMNDQ0ceuihDBgwgFtuuYVZs2bx4IMP8r3vfa9D4blrrrmGfffdlzlz5jB37lwaGhpYtGgR5513Hvfddx+zZs2isbGRX/7ylyWPN9NmokiOtC2F1aZf7etfHAxMTbf9i6RNJG0VEQuyjM3MLEvtm4lWrFjBD37wAx555BH69evH66+/zltvvcWWW265ZpvRo0dzwgknsGLFCg455BAaGhp4+OGHee655/jc5z4HwIcffrimTlIpZX7PQFINMBP4JDA5Ip5st8nWwGs5z5vTZWslA0kTSK4cGDZsWGbxmpllYdq0aSxcuJCZM2dSW1vLiBEjWLZs2VrbjBkzhkceeYQ777yTY489lu9///tsuummjBs3jmuvvTbT+DLvWhoRqyKiAagDdpe0Y7tNlO9lefYzJSIaI6Jx6NChGURqZpadJUuWsMUWW1BbW8uDDz7Iq6++2mGbV199lS222IJvfetbnHjiicyaNYvPfOYzPP7447z44osAfPDBB7zwwgslj69svYki4l1JDwH7AbkzNjQD2+Q8rwPeKFdcZlb9PjZkSEE9gIraX5GOOeYYDjroIBobG2loaGD77Tv2bnrooYc4//zzqa2tZdCgQUydOpWhQ4dy1VVXcfTRR6+Zle28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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(x=annotated_coeqtl_df_clean['celltype'],\n",
+ " y=abs(annotated_coeqtl_df_clean['mean_onemillionv2']),\n",
+ " hue=annotated_coeqtl_df_clean['gene2_isSig'],\n",
+ " fliersize=1,\n",
+ " palette='viridis',\n",
+ " showfliers = False)\n",
+ "# plt.savefig('mean_onemillionv2.filtered_results.pdf')\n",
+ "# plt.savefig('mean_onemillionv2.filtered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 28,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAEGCAYAAACAd+UpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAhX0lEQVR4nO3deXwV9b3/8dcnIRg04EZQayrBXrxKUSOEWrRSC6LW3Vqr/mwFteJVWkBrb22vj4ott97+3HBtSzdFcUXRqrfWFVFqa0kCKqLQusaCBNyIBojkc/+YSRqyzknOnGXyfj4eeSSZ9TM5J5/znc985zvm7oiISDIVZDsAERGJj5K8iEiCKcmLiCSYkryISIIpyYuIJFi/bAfQ2uDBg728vDzbYYiI5JWqqqp17l7a0bycSvLl5eUsWbIk22GIiOQVM3uzs3mxJ3kzewPYAGwBPnX3yrj3KSIigUy15L/i7usytC8REQnpwquISIJloiXvwKNm5sCv3H1OKis3NjZSW1vLxo0b44kujxQXF1NWVkZRUVG2QxGRPJGJJH+wu//TzIYAj5nZK+6+qHmmmU0BpgDsscce7Vaura1l4MCBlJeXY2YZCDc3uTvr16+ntraWYcOGZTscEckTsZdr3P2f4fe1wALgC23mz3H3SnevLC1t3wNo48aN7Lzzzn06wQOYGTvvvLPOaEQkJbEmeTPbzswGNv8MHA681IPtpDu0vKS/g4ikKu5yzS7AgjA59QNud/dHYt6n9GGzZ89m1apVW02rra0FoKysrN3yw4cPZ8aMGZkITSQrYk3y7v4asH+c+xDpTkNDQ7ZDEMmanLrjNVe8/fbbnHHGGaxZs4aCggKmTJnC9OnTO13+xz/+MePGjeOwww7rcP6rr77KueeeywcffMCmTZs45JBDmDNnDkuWLGHu3Llcd911cR1Kn9NRq3zq1KkA3HjjjRmORiT7lOQ70K9fP6666ipGjRrFhg0bGD16NBMnTmTEiBEdLv+Tn/yky+1NmzaNCy64gOOPPx6AF198EYDKykoqK3UDsIjEJ29vhvrpT3/K3nvvzcSJEznttNO48sor+cc//sGRRx7J6NGjOeSQQ3jllVcAmDx5MtOmTeOggw5izz33ZP78+S3bueKKKxgzZgz77bcfl156KQC77bYbo0aNAmDgwIHss88+vPPOO53GMnny5JZtXnzxxYwYMYL99tuPiy66CIDVq1dvVQ/ed999AVi4cCHHHHMMAHV1dUycOJFRo0Zx7rnnMnToUNat003CItI7eZnklyxZwr333ktNTQ333Xdfy6BmU6ZM4frrr6eqqoorr7yS888/v2Wd1atX8+yzz/LQQw9x8cUXA/Doo4+yatUqnn/+eZYuXUpVVRWLFi3aal9vvPEGNTU1HHjggd3G9d5777FgwQKWL1/OCy+8wCWXXALABRdcwPjx4/nqV7/KNddcwwcffNBu3csuu4zx48dTXV3NiSeeyFtvvdXTP4+ISIu8LNc8++yzHH/88QwYMACAY489lo0bN/LnP/+Zk08+uWW5TZs2tfx8wgknUFBQwIgRI3j33XeBIMk/+uijHHDAAQDU19ezatUqxo0b1/L7SSedxOzZsxk0aFC3cQ0aNIji4mK+/e1vc/TRR7e00s8880yOOOIIHnnkER544AF+9atfsWzZsnbHtGDBAgCOPPJIdtxxx57+eUREWuRlknf3dtOamprYYYcdWLp0aYfrbLPNNu3Wd3d++MMfcu6557ZbvrGxkZNOOonTTz+dr33ta5Hi6tevH88//zxPPPEEd955JzfccANPPvkkAJ/5zGc466yzOOussxg5ciQvvbT17QIdHZOISG/lZbnmS1/6Eg8++CAbN26kvr6ehx9+mG233ZZhw4Zxzz33AEHSbNtabuuII47gd7/7HfX19QC88847rF27Fnfn7LPPZp999uHCCy+MHFd9fT0ffvghRx11FLNnz275wHnkkUdobGwEYM2aNaxfv57dd9+93THdfffdQHCG8f7770fer4hIZ/KyJT9mzBiOO+449t9/f4YOHUplZSXbb7898+bN47zzzmPWrFk0NjZy6qmnsv/+nXfTP/zww1mxYgVjx44FoKSkhNtuu42VK1dy6623su+++1JRUQHAz372M4466qgu49qwYQPHH388GzduxN255pprgCBpT58+neLiYiC42Lvrrru2XBgGuPTSSznttNO46667+PKXv8xuu+3GwIEDe/NnEhHBcqlMUFlZ6W2fDLVixQr22WefdsvW19dTUlLCJ598wrhx45gzZ05Lj5h8tGnTJgoLC+nXrx/PPfcc5513Xoelp87+HtI59ZOXpDOzqs4eyJSXLXkIetK8/PLLbNy4kUmTJuV1ggd46623+MY3vkFT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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(x=annotated_coeqtl_df_clean['celltype'], \n",
+ " y=annotated_coeqtl_df_clean['var_onemillionv2'],\n",
+ " hue=annotated_coeqtl_df_clean['gene2_isSig'],\n",
+ " palette='viridis', fliersize=1,\n",
+ " showfliers = False)\n",
+ "# plt.savefig('var_onemillionv2.filtered_results.pdf')\n",
+ "# plt.savefig('var_onemillionv2.filtered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEGCAYAAACHGfl5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAqPklEQVR4nO3deXhU5fn/8fdNCAKCoALWEiFgY/1aFdTgLioWRCtirYranyKouGARq1b71a/aalc3qqJIrWtdUHDBStHWDZfWsqosKohSx5VFUUhYQu7fH+cEJ8mEzEnOzCSTz+u6cmXOmvtkkrnPec5z7sfcHRERadla5ToAERHJPSUDERFRMhARESUDERFByUBERIDWuQ6gIbp06eLFxcW5DkNEpFmZPXv2CnfvmmpZs0wGxcXFzJo1K9dhiIg0K2a2rK5laiYSERElAxERUTIQERGUDEREBCUDEREhw8nAzO42sy/MbH4dy83MbjGzJWb2lpntncl4REQktUxfGdwLDN7C8qOAkvBrFHBHhuMREZEUMvqcgbvPMLPiLawyFLjfgzra/zazzma2o7t/msm4ohg3bhyLFy+uNT+RSFBeXp72ftq1a0dRUVG1eSUlJYwdO7axITZKquOL49igaRxfKlt6T4Em+T5FkS/H15T/9+L4HY8bN45p06bV2kdZWRmVlZVpx9KqVSvat29fbd7RRx8d+fhy/dBZd+CjpOlEOK9WMjCzUQRXD/To0SMrwQEsXryYuQveolXXDtXmV5aVw8ZNae9njW9g5Rcbvt1++ZrYYmyMVMfX2GODpnN8UZJdWVkZQK1liUQi5T9+U/0QrUuUD9Cm4MUXX2T5iuVQWFB9QUUlRBiHZU3ZWpavXvXtjI2bSCQSGXnvmtvvOFmuk4GlmJfyXXb3icBEgNLS0qyOyNOqawfa/6RvrPssmzIv1v01Rj4fX8pk3gZoU1Br3UoP/h3KOlVfVsYGVn6xtPq6TSTZpVLXh9zo0aMBGD9+fBajaaTCglonYo0Vx3sXx+947NixTepkItfJIAHslDRdBHySo1gkT+VzsstnRUVFrGyzISPvXVG32s2aLV2uu5ZOBU4PexXtD6xuSvcLRERaioxeGZjZw8BhQBczSwBXA4UA7j4BmAYcDSwByoARmYxHRERSy3RvolPqWe7A6EzGICIi9ct1M5GIiDQBSgYiIqJkICIiSgYiIoKSgYiIoGQgIiIoGYiICLkvRyEi0qTVVaE0lar1qmoU1acpFTtUMhAR2YLFixcz9823od029a+8fiMAc99bVv+65V83MrJ4KRmIiNSn3TYU9N4v1l1uWvpGrPtrLN0zEBERXRmISNNVuXxNWuXCK78KBpVp1bldWvukW2Mjyz9pJQMzO5JgrIHn3f3DpPkj3f3uDMUmIi1YSUlJ2usuXh3cuC3p1rv+lbtF23dLUW8yMLPfAgcDc4D/NbNx7n5ruPgCQMlARGIXpZdNsxzFrYlJ557BEGCAu48F9gGOMrObw2Wphq0UEZFmJp1k0NrdKwDc/SuC5LCNmT1GMJqsiIg0c+kkg/fN7NCqCXff5O5nAu8C/5OxyEREJGvSSQYnAv+pOdPdr6T6YPYiItJM1ZsM3L3c3cvNbKqZnWpmWyct+ziz4YmISDZEeejsRoJeRQvN7DEzO8HM2mYoLhERyaK0Hzpz95eBl82sABgAnE3QrTSNgh0iuZFIJKhcnd6DS1FULl9DYkMi1n2K5FKkJ5DNrB1Bb6JhwN7AfZkISkREsivtZGBmk4D9gOnAeOAld6/MVGAicSgqKmJlmw20/0nfWPdbNmUeRd2KYt2nSC5FuTK4BzjV3TdlKhgREcmNKPcMppvZgWZWnLydu9+ficBERCR7ojQTPQDsDMwDqq4OHFAyEBFp5qI0E5UCu7m7ZyoYERHJjSjJYD7wHeDTDMUiOaCulyIC0ZJBF4IHzv4DrK+a6e7Hxh6ViIhkVZRkcE2mgpDcUddLEYGITyCb2Q5Av3DWf9z9i8yEJSIi2RSlN9FJwPXASwSD2txqZpe6++R6thsM/AkoAO5y99/XWN4J+CvQI4znBne/J8pBiEjLMW7cOBYvXlxtXtV01YhnyUpKSiKNmtZSRWkmugLoV3U1YGZdgX8CdSaDsI7ReGAgkABmmtlUd1+YtNpoYKG7Dwn3+a6ZPejuGyIei4i0UO3atct1CM1elGTQqkaz0Erqr3q6L7DE3ZcCmNkjwFAgORk40NHMDOgArAIqIsQlIi2IzvIzI0oymG5mzwIPh9PDgGn1bNMd+ChpOkFQ3yjZbcBU4BOgIzAsVc0jMxsFjALo0aNHhLBFRKQ+aY9n4O6XAhOBPYE+wER3v6yezSzVrmpMH0nwVPN3gb7AbWZWqyy2u09091J3L+3atWu6YYuISBoilbB29ynAlAibJKg+NGYRwRVAshHA78Mnm5eY2QfArqQYalNERDKj3mRgZq+6+8Fm9g3Vz+oNcHff0uA2M4ESM+sFfAycDJxaY53/AkcAr4RdV78PLI1wDC1Wql4VEDxVDMEzBMnUq0JE6lJvMnD3g8PvHaPu3N0rzOwC4FmCrqV3u/sCMzs3XD4BuBa418zeJkgwl7n7iqg/S75VXl6e6xBEpJlJ58pguy0td/dV9SyfRo0bzWESqHr9CTCovjiktrrO8qv6Wo8fPz6L0YhIc5bOPYPZBM1Ddd0M7h1rRCIiknXpNBP1ykYgIiKSO+k0E+29peXuPie+cEREJBfSaSa6cQvLHBgQUywiIpIj6TQTHZ6NQEREJHfSaSYa4O4vmNnxqZa7++PxhyUiItmUTjPRocALwJAUyxxQMhARaebSaSa6Ovw+IvPhiIhILkQZ3KYzcDpQnLydu4+JPSoREcmqKIXqpgH/Bt4GapWYFhGR5itKMmjr7j/PWCQiIpIzaY9nADxgZmeb2Y5mtl3VV8YiExGRrIlyZbABuJ5gLOSqUtaqTSQikgeiJIOfA99TeWkRkfwTpZloAVCWqUBERCR3olwZbALmmdmLwPqqmepaKiLS/EVJBk+GXyIikmfSTgbufp+ZtQN6uPu7GYxJRESyLMoTyEOAG4A2QC8z6wv82t2PzVBsInlt3LhxLF68uNq8RCIBQFFRUa31S0pK6hzqVKSxotxAvgbYF/gKwN3nARoFTSRG5eXllJeX5zoMaYGi3DOocPfVZtWGQva6VhaRLUt1lj969GgAxo8fn+VopKWLkgzmm9mpQIGZlQBjgNczE5aIiGRTlGTwM4Knj9cDDwPPAtdmIqimJJFIULl6DWVT5sW638rla0hsSMS6TxGRhorSm6iMIBlckblwREQkF6L0JtoFuITa4xkMiD+spqOoqIiVbTbQ/id9Y91v2ZR5FHWr3WNERCQXojQTPQZMAO4ieBpZRETyRNTeRHdkLBIREcmZKM8ZPG1m52s8AxGR/BPlymB4+P3SpHkaz0BEJA9E6U2kp41FpMnauHEjiUSCdevWxbrfU089lRM2VkDrNrHul4r+tClszaJFi+LdL9C2bVuKioooLCxMe5sovYkKgfOA/uGsl4A73X1jPdsNBv4EFAB3ufvvU6xzGDAOKARWuPuh6cYlIgLBM0EdO3akuLiYGpUSGmXZsmWUrd+AbbV1bPsE8PVrab9VG3r27Bnvft1ZuXIliUSCXr3SP4ePcs/gDmAf4Pbwa59wXp3MrAAYDxwF7AacYma71Vinc7i/Y939B8CJEWISEQFg3bp1bL/99rEmgubIzNh+++0jXyFFuWfQz937JE2/YGZv1rPNvsASd18aBvkIMBRYmLTOqcDj7v5fAHf/IkJMIiKbtfREUKUhv4dII52Z2c7u/n74w3pT//MG3YGPkqYTwH411tkFKDSzl4COwJ/c/f6aOzKzUcAogB49ekQIWyR/pSqDXZeq9aqK4dVHJbNblijJ4FLgRTNbChjQExhRzzap0lPNSqetCZqcjgDaAf8ys3+7+3vVNnKfCEwEKC0tVbVUEYIP+LkL3qJV1w71rlvpGwB484ul9a+7fE2jY8t3n37yMZf//EJWLF+OtWrFSaf8lNNHnlXn+rfcdD2l++7HgQf3T7n83Xff5ZxzzuGrr75i/fr1HHLIIUycOJFZs2Zx//33c8stt2TqUIBovYmeD6uVfp/gQ/4dd988FrKZDXT3f9TYLAHslDRdBHySYp0V7r4WWGtmM4A+wHuISL1ade2QkXIpsmUFrVvziyuv5ge778HaNWv4yZDBHHhIf75XskvK9cf8/NKU8zcvHzOGiy66iKFDhwLw9ttvA1BaWkppaWm8wacQ5QYy7r7e3d9y9zeTE0HoDyk2mQmUmFkvM2sDnAxMrbHOU8AhZtbazNoTNCPF39dKRFqca6+9ll133ZWBAwdyyimncMMNN/D+++8zePBg9tlnHw455BDeeecdAM444wzGjBnDgQceSO/evZk8efLm/fzlrrs48dijGTr4h9x60w0AdOu2Az/YfQ8Atu7QgZ13LuHzzz6rM5ZfXjyWZ6f9DYAbf/9bjjn6KAYPHswll1wCwKefflpthLs99gj2/dJLL3HMMccAsHz5cgYOHMjee+/NOeecQ8+ePVmxYkUsv6sozUT1qdUk5O4VZnYBQbnrAuBud19gZueGyye4+yIzmw68BVQSdD+dH2NcItICzZo1iylTpjB37lwqKirYe++92WeffRg1ahQTJkygpKSEN954g/PPP58XXngBCD6QX331Vd555x2OPfZYTjjhBGbMmMF/l33Io089g7tz/llnMPONf9Nvv/03/6yPP/qIRQvn06fvXvXG9dVXX/LP5/7OM9P+ztZtt6JTp04AXHTRRQwYMIADDzyQQYMGMWLECDp37lxt21/96lcMGDCAX/7yl0yfPp2JEyfG9vuKMxmkbMd392nAtBrzJtSYvh64PsZYRKSFe/XVVxk6dCjt2rUDYMiQIaxbt47XX3+dE0/8tgf7+vXfNnIcd9xxtGrVit12243PP/8cgFdeeYXXXnuN448eBEBZWRnLPvxgczJYu3YtY847m8uv+hUdOnasN64OHTqyVZut+L8rrmDQwB8yYkRw63XEiBEceeSRTJ8+naeeeoo777yTN9+s3mHz1Vdf5YknngBg8ODBbLvttg399dQSZzIQEWky3Gufn1ZWVtK5c2fmzZuXcputttqq1vbuztmjzuHk4WfWWn/jxo1ceO7ZDDnuxwwafHRacbVu3ZpHn3qG11/+J89Nn86kSZM2X5l897vfZeTIkYwcOZLdd9+d+fOrN5KkOqa4RLpnUI8PY9yXiEijHHzwwTz99NOsW7eONWvW8Mwzz9C+fXt69erFY489BgQfrjXPvmvq378/j0+ZzNq1awH4/LNPWbliBe7OlZddTO/vfY8zzjon7bjWrl3LN998w6GHHsZVV121OTFNnz6djRuDgg6fffYZK1eupHv37rWO6dFHHwXgueee48svv0z759anMeUoXgYmVJWjcPfjY4tKRKSR+vXrx7HHHkufPn3o2bMnpaWldOrUiQcffJDzzjuP6667jo0bN3LyySfTp0+fOvfTv39/Fr3zLqccfywA7du354/jbuXDD5Yy9fEp7LLr//DjowYCMPYXl3Po4UdsMa61a9dwwdkjWV9ejhncfPPNQPDhfuGFF9K2bVsArr/+er7zne9svsENcPXVV3PKKacwadIkDj30UHbccUc6ptE0lY4ozUR3ENQOuj2cPi2cV3fHWhGRHLrkkku45pprKCsro3///lx88cX06tWL6dOn11r33nvvrTa9Zs23z1qcNnw4p486v9ryHj2LWfThx2nH8rsbx21+/ehTz9SqTXTTTTdx00031drusMMO47DDDgOgU6dOPPvss7Ru3Zp//etfvPjii9Wathoj0+UocqqupzMTiWAg+uRuXKAnLkXyzahRo1i4cCHr1q1j+PDh7L333rkOqVH++9//ctJJJ1FZWUmbNm3485//HNu+M12OokkqLy/PdQiShlTJvK5E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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(x=annotated_coeqtl_df_clean['celltype'],\n",
+ " y=annotated_coeqtl_df_clean['gene2_nonzeroratio_onemillionv2'],\n",
+ " hue=annotated_coeqtl_df_clean['gene2_isSig'],\n",
+ " palette='viridis', fliersize=1, showfliers = False)\n",
+ "# plt.savefig('gene2_nonzeroratio_onemillionv2.filtered_results.pdf')\n",
+ "# plt.savefig('gene2_nonzeroratio_onemillionv2.filtered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(x=annotated_coeqtl_df_clean['celltype'], \n",
+ " y=annotated_coeqtl_df_clean['eqtlgene_nonzeroratio_onemillionv2'],\n",
+ " hue=annotated_coeqtl_df_clean['gene2_isSig'],\n",
+ " palette='viridis', fliersize=1, showfliers = False)\n",
+ "# plt.savefig('eqtlgene_nonzeroratio_onemillionv2.filtered_results.pdf')\n",
+ "# plt.savefig('eqtlgene_nonzeroratio_onemillionv2.filtered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "##### unfiltered results"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "CD4T\n",
+ "CD8T\n",
+ "monocyte\n",
+ "DC\n",
+ "NK\n",
+ "B\n"
+ ]
+ }
+ ],
+ "source": [
+ "celltype = 'monocyte'\n",
+ "annotated_coeqtl_df = pd.DataFrame()\n",
+ "for celltype in celltypes:\n",
+ " print(celltype)\n",
+ " celltype_annotated_coeqtl_df = pd.read_csv(workdir/f'output/unfiltered_results/UT_{celltype}/coeqtls_fullresults_fixed.all.annotated.tsv.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t')[['mean_onemillionv2', 'var_onemillionv2', \n",
+ " 'gene2_nonzeroratio_onemillionv2',\n",
+ " 'eqtlgene_nonzeroratio_onemillionv2',\n",
+ " 'gene2_isSig']]\n",
+ " celltype_annotated_coeqtl_df['celltype'] = celltype\n",
+ " annotated_coeqtl_df = pd.concat([annotated_coeqtl_df, \n",
+ " celltype_annotated_coeqtl_df],\n",
+ " axis=0)\n",
+ " \n",
+ "annotated_coeqtl_df_clean = annotated_coeqtl_df.replace([np.inf, -np.inf], np.nan, inplace=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEGCAYAAACHGfl5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAlpUlEQVR4nO3deXxU5dn/8c9FEhsU3FiEBiFaXKCoEYOKC/pgEaVVtGrV+lNRW6xVRC32Z7WvSlue+nvqiqBSHh+1KC51wZXHWlfU1lKWoCwucSeCbAWJBAjk+v1xTuIQJsmcZM5MMvm+X695Zeac+5y5zszkXPd9n3PuY+6OiIi0bx2yHYCIiGSfkoGIiCgZiIiIkoGIiKBkICIiQH62A2iOrl27enFxcbbDEBFpU+bOnbvK3bslm9cmk0FxcTFz5szJdhgiIm2KmX3a0Dx1E4mIiJKBiIgoGYiICG30mIGISH3V1dUsXbqUjRs3ZjuUrCssLKRXr14UFBSkvIySgYjkhKVLl9K5c2eKi4sxs2yHkzXuzurVq1m6dCl77bVXysupm0hEcsLGjRvp0qVLu04EAGZGly5dIreQlAxEJGe090RQqzmfg7qJpN2ZNGkS5eXl202vqKgAoKioaJvpffv2ZcyYMRmJTSRblAxEQlVVVdkOQSRrlAyk3Wmolj927FgAJk6cmMlwpI36/PPPOe+881i+fDkdOnRg9OjRdb+hZH7zm98wZMgQvve97yWd/95773HxxRezdu1aNm3axNFHH83UqVOZM2cO06ZN4/bbb49rUwAlAxGRZsnPz+fmm29m4MCBrF+/nkMOOYRhw4bRv3//pOV/97vfNbq+yy+/nCuvvJKRI0cC8M477wBQWlpKaWlpeoNPQgeQRSRn/f73v2f//fdn2LBhnH322dx00018+OGHnHDCCRxyyCEcffTRvPvuuwCMGjWKyy+/nCOOOIK9996bxx57rG49N954I4MGDeLAAw/k+uuvB6Bnz54MHDgQgM6dO9OvX7+6407JjBo1qm6d11xzDf379+fAAw9k3LhxACxbtoxevXrVlT/ggAMAePXVV/nBD34AwMqVKxk2bBgDBw7k4osvpk+fPqxatSotn1WsycDMCs1stpktMLNFZvbbJGXMzG43s3Ize9vMBsYZk4i0D3PmzOHxxx9n/vz5PPHEE3WDW44ePZpJkyYxd+5cbrrpJn7+85/XLbNs2TLeeOMNnn32Wa655hoAXnjhBT744ANmz55NWVkZc+fOZdasWdu81yeffML8+fM57LDDmoxrzZo1zJgxg0WLFvH222/z61//GoArr7ySoUOHcuKJJ3Lrrbeydu3a7Zb97W9/y9ChQ5k3bx6nnnoqn332WXM/nu3E3U20CRjq7pVmVgC8YWb/6+5vJZQ5EdgnfBwG3BX+FRFptjfeeIORI0fSsWNHAE466SQ2btzI3//+d84444y6cps2bap7fsopp9ChQwf69+/Pl19+CQTJ4IUXXuDggw8GoLKykg8++IAhQ4bUvT7ttNO47bbb2HnnnZuMa+edd6awsJCf/OQnfP/736+r9V9wwQUMHz6c559/nqeeeoo//elPLFiwYLttmjFjBgAnnHACu+22W3M/nu3Emgzc3YHK8GVB+PB6xUYC08Kyb5nZrmbW092XxRmbiOS2YJeyrZqaGnbddVfKysqSLvOtb31ru+XdnV/96ldcfPHF25Wvrq7mtNNO45xzzuGHP/xhSnHl5+cze/ZsXnrpJR5++GEmT57Myy+/DMC3v/1tLrzwQi688EIGDBjAwoULm9ymdIn9mIGZ5ZlZGbAC+Ju7/7NekSLg84TXS8NpIiLNdtRRR/HMM8+wceNGKisree6559hxxx3Za6+9ePTRR4Fg51q/9l3f8OHDueeee6isDOq1FRUVrFixAnfnoosuol+/flx11VUpx1VZWcm6desYMWIEt912W11iev7556murgZg+fLlrF69ertrXo466ij+8pe/AEGL5d///nfK79uU2M8mcvetQImZ7QrMMLMB7p6Y7pJdKrdd+jOz0cBogN69e8cRqojkkEGDBnHyySdz0EEH0adPH0pLS9lll12YPn06l1xyCRMmTKC6upqzzjqLgw46qMH1HH/88SxZsoTBgwcD0KlTJx544AHef/997r//fg444ABKSkoA+MMf/sCIESMajWv9+vWMHDmSjRs34u7ceuutQLBzHzt2LIWFhUBw0LpHjx51B7gBrr/+es4++2weeeQRjjnmGHr27Ennzp1b8jHVsTibHdu9mdn1wNfuflPCtD8Br7r7Q+Hr94BjG+smKi0tdd3pTNJN1xm0bUuWLKFfv37bTKusrKRTp05s2LCBIUOGMHXq1LozgNqiTZs2kZeXR35+Pv/4xz+45JJLGuzySvZ5mNlcd096nmqsLQMz6wZUu/taM+sIfA/4r3rFngYuM7OHCQ4cr9PxAhFJh9GjR7N48WI2btzI+eef36YTAcBnn33Gj370I2pqathhhx347//+77StO+5uop7An80sj+D4xF/c/Vkz+xmAu08BZgIjgHJgA3BBzDGJSDvx4IMPZvw9L730Ut58881tpo0dO5YLLmj5rm2fffZh/vz5LV5PMnGfTfQ2cHCS6VMSnjtwaZxxiIhkyh133JHtEJpFVyCLiIiSgYiIKBmIiAgatVRE2oFf/upa/r12XdrWt9uuu/DHG/7QaJm8vLy6weYAnnzySYqLi5OW7dSpU91FbdmiZCAiOe/fa9cx4idXpm19M+++tckyHTt2bPAagNZI3UQiIhlQWVnJcccdx8CBAznggAN46qmntiuzbNkyhgwZQklJCQMGDOD1118HgquTBw8ezMCBAznjjDNiaUUoGYiIxKCqqoqSkhJKSko49dRTKSwsZMaMGcybN49XXnmFX/ziF9sNPPfggw8yfPhwysrKWLBgASUlJaxatYoJEybw4osvMm/ePEpLS7nlllvSHq+6iUREYlC/m6i6upprr72WWbNm0aFDByoqKvjyyy/p0aNHXZlBgwZx4YUXUl1dzSmnnEJJSQmvvfYaixcv5sgjjwRg8+bNdeMkpZOSgYhIBkyfPp2VK1cyd+5cCgoKKC4uZuPGjduUGTJkCLNmzeK5557j3HPP5eqrr2a33XZj2LBhPPTQQ7HGp24iEZEMWLduHd27d6egoIBXXnmFTz/9dLsyn376Kd27d+enP/0pF110EfPmzePwww/nzTffpLy8HIANGzbw/vvvpz0+tQxEJOfttusuKZ0BFGV9UZ1zzjmcdNJJlJaWUlJSwv77779dmVdffZUbb7yRgoICOnXqxLRp0+jWrRv33XcfZ599dt1d2SZMmMC+++7b4u1IlNEhrNNFQ1hLHDSEdduWbMjm9izqENbqJhIRESUDERFRMhAREZQMREQEJQMREUHJQERE0HUGItIOXHbV1axYtSZt6+vedXcm33Jjg/NXr17NcccdB8Dy5cvJy8ujW7duAMyePZsddtghbbGki5KBiOS8FavW8OEex6RvhV++1ujsLl261I1LNH78eDp16sS4cePq5m/ZsoX8/Na1+21d0YiI5KhRo0ax++67M3/+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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(x=annotated_coeqtl_df_clean['celltype'],\n",
+ " y=abs(annotated_coeqtl_df_clean['mean_onemillionv2']),\n",
+ " hue=annotated_coeqtl_df_clean['gene2_isSig'],\n",
+ " fliersize=1,\n",
+ " palette='Paired',\n",
+ " showfliers = False)\n",
+ "plt.savefig('mean_onemillionv2.unfiltered_results.pdf')\n",
+ "plt.savefig('mean_onemillionv2.unfiltered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAEGCAYAAACAd+UpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAiN0lEQVR4nO3deXgV9dn/8fedEE00uAJqgxAttUhRI4ZaXGiLItbdWqv+rHvFx1qhWttHrVfVlqe2dcWtLbVWUVxRtC611gVRu1gSUFEUU1dSkE2QSBIj3L8/ZpIGOEnOSWbOMvm8ritXklnvyZnc53u+8517zN0REZFkKsp1ACIiEh8leRGRBFOSFxFJMCV5EZEEU5IXEUmwPrkOoL1+/fp5ZWVlrsMQESkoNTU1y9y9f6p5eZXkKysrmT17dq7DEBEpKGb2Xkfz1F0jIpJgSvIiIgmmJC8ikmB51ScvIrKhlpYWFi5cSFNTU65DybnS0lIGDhxISUlJ2usoyYtIXlu4cCF9+/alsrISM8t1ODnj7ixfvpyFCxey0047pb2eumtEJK81NTWx7bbb9uoED2BmbLvtthl/olGSF5G819sTfKvu/B3UXSOJcsMNN1BXV7fetPr6egAqKio2Wn7IkCGce+65WYlNJBeU5CXxGhsbcx2CSM4oyUuipGqVT5w4EYDJkydnOxwpUB988AEnn3wyixcvpqioiPHjx7edR6n89Kc/ZfTo0Rx44IEp57/55pucddZZrFy5kubmZvbff3+mTJnC7NmzmTp1Ktdff31ch6IkLyKyoT59+nD11VczYsQIVq9ezV577cXYsWMZNmxYyuV/9rOfdbq9CRMmcN5553HkkUcC8OqrrwJQXV1NdXV1tMFvQBdeRaQg/fznP2fo0KGMHTuWE044gauuuop///vfHHzwwey1117sv//+vPHGGwCceuqpTJgwgX322Yedd96Z6dOnt23nyiuvZOTIkey+++5ceumlAOywww6MGDECgL59+7Lrrru2XdtJ5dRTT23b5oUXXsiwYcPYfffdueCCCwBYtGgRAwcObFt+t912A2DmzJkcdthhACxdupSxY8cyYsQIzjrrLAYPHsyyZct6/HdSkheRgjN79mweeOAB5syZw4MPPthW2HD8+PHccMMN1NTUcNVVV/G9732vbZ1Fixbxwgsv8Oijj3LhhRcC8OSTT/LWW2/x0ksvMXfuXGpqapg1a9Z6+3r33XeZM2cOe++9d5dxrVixghkzZvDaa6/xyiuvcMkllwBw3nnnMWbMGL7xjW9w7bXXsnLlyo3WvfzyyxkzZgy1tbUcffTRvP/++93986xH3TUiUnBeeOEFjjzySMrKygA4/PDDaWpq4m9/+xvHHnts23LNzc1tPx911FEUFRUxbNgwPvzwQyBI8k8++SR77rknAA0NDbz11luMHj267fdjjjmG6667ji222KLLuLbYYgtKS0v57ne/y6GHHtrWSj/ttNMYN24cTzzxBA8//DC/+93vePnllzc6phkzZgBw8MEHs/XWW3f3z7MeJXkRKTjuvtG0devWsdVWWzF37tyU62y66aYbre/uXHTRRZx11lkbLd/S0sIxxxzDiSeeyDe/+c204urTpw8vvfQSTz/9NPfccw833ngjzzzzDACf+9znOP300zn99NMZPnw48+bN6/KYoqDuGhEpOPvttx+PPPIITU1NNDQ08Nhjj7HZZpux0047cf/99wNB0tywtbyhcePGceutt9LQ0AAE91QsWbIEd+eMM85g11135fzzz087roaGBlatWsUhhxzCdddd1/aG88QTT9DS0gLA4sWLWb58+Ub3bey3337cd999QPAJ46OPPkp7v51RS15ECs7IkSM54ogj2GOPPRg8eDDV1dVsueWWTJs2jbPPPptJkybR0tLC8ccfzx577NHhdg466CDmz5/PqFGjACgvL+fOO+9kwYIF3HHHHey2225UVVUB8Itf/IJDDjmk07hWr17NkUceSVNTE+7OtddeCwRJe+LEiZSWlgLBxd7tt9++7cIwwKWXXsoJJ5zAvffey1e/+lV22GEH+vbt25M/EwAW10eE7qiurnY9GUqipnHyhW3+/PnsuuuuG01vaGigvLycNWvWMHr0aKZMmdI2IqYQNTc3U1xcTJ8+ffj73//O2WefnbLrKdXfw8xq3D3lWEy15EWkII0fP57XX3+dpqYmTjnllIJO8ADvv/8+3/72t1m3bh2bbLIJv//97yPZrpK8iBSku+66K+v7POecc3jxxRfXmzZx4kROO+20Hm/7C1/4AnPmzOnxdjakJC8ikqabbrop1yFkTKNrREQSTEleRCTBlORFRBIs9j55M3sXWA2sBT7raJiPiEh3/Piii/lo5arItrf1Vlvy6yt+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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(x=annotated_coeqtl_df_clean['celltype'], \n",
+ " y=annotated_coeqtl_df_clean['var_onemillionv2'],\n",
+ " hue=annotated_coeqtl_df_clean['gene2_isSig'],\n",
+ " palette='Paired', fliersize=1,\n",
+ " showfliers = False)\n",
+ "plt.savefig('var_onemillionv2.unfiltered_results.pdf')\n",
+ "plt.savefig('var_onemillionv2.unfiltered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEGCAYAAACHGfl5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAApOklEQVR4nO3deZyVZf3/8debYRQMFBVcAgX3JRfCIdMMC0NNUyw1Nb+KuKDmQpqW1veXVn7rW2a5S2TumiauFV+03EizlNUUUEe0ZBQFFBRZZPn8/rjvocNwhnNu5iyzvJ+PxzzmnPu+7vt87jlnzue+r+u6r0sRgZmZdWydqh2AmZlVn5OBmZk5GZiZmZOBmZnhZGBmZkDnagewLnr27Bn9+vWrdhhmZm3KxIkT50ZEr3zr2mQy6NevHxMmTKh2GGZmbYqkfzW3ztVEZmbmZGBmZk4GZmZGG20zyGfZsmXMmjWLJUuWVDuUquvSpQt9+vShtra22qGYWRvRbpLBrFmz6N69O/369UNStcOpmohg3rx5zJo1i2222aba4ZhZG1HWaiJJN0l6V9KLzayXpKsl1Ut6QdKAdX2tJUuWsOmmm3boRAAgiU033dRXSGaWSbnbDG4BDl7L+i8DO6Q/I4AbWvJiHT0RNPLfwcyyKms1UUSMl9RvLUWGArdFMo723yX1kLRlRLxdzrisY7vmmmuor69fY3lDQwMAvXv3Xm359ttvzznnnFOR2KzjuOaaaxg3btwayxctWkSWqQUkscEGG6y27OCDD878ma12b6LewJs5z2ely9YgaYSkCZImzJkzpyLBWceyePFiFi9eXO0wzKqi2g3I+eoz8qbEiBgNjAaoq6trFTPyvPnmm5x44onMnj2bTp06MWLECEaOHNls+R/84AcMGjSIL33pS3nXv/zyy5x++unMnz+fpUuX8vnPf57Ro0czYcIEbrvtNq6++upyHUqH0twZU+N7d9VVV1UyHOugzjnnnFZ1xVntZDAL2CrneR/grSrFklnnzp254oorGDBgAB9++CF77bUXQ4YMYdddd81b/kc/+tFa93fuuedy3nnnMXToUAD++c9/AlBXV0ddXV1pgzczy1HtaqKHgRPTXkWfBRaUur3gxz/+MTvvvDNDhgzhuOOO4xe/+AWvvfYaBx98MHvttRef//znmTFjBgAnnXQS5557Lvvuuy/bbrstY8aMWbWfyy+/nIEDB7LHHntwySWXALDlllsyYEDSAap79+7ssssuq+qd8znppJNW7fOiiy5i1113ZY899uCCCy4A4O2336ZPnz6ryu++++4APPnkk3zlK18BYM6cOQwZMoQBAwZw+umn07dvX+bOnVuqP5eZdVBlvTKQ9DvgC0BPSbOAS4BagIgYBYwFDgHqgUXA8FK+/oQJE7jvvvuYPHkyy5cvZ8CAAey1116MGDGCUaNGscMOO/CPf/yDb37zmzz++ONA8oX89NNPM2PGDA4//HCOOuooHn30UV599VWee+45IoLDDz+c8ePHM2jQoFWv9cYbbzB58mT23nvvgnG99957PPDAA8yYMQNJzJ8/H4DzzjuPwYMHs++++3LggQcyfPhwevTosdq2P/zhDxk8eDAXX3wx48aNY/To0SX7e5lZx1Xu3kTHFVgfwFnlev2nn36aoUOH0rVrVwAOO+wwlixZwt/+9jeOPvroVeWWLl266vERRxxBp06d2HXXXXnnnXcAePTRR3n00Uf59Kc/DcDChQt59dVXVyWDhQsXcuSRR3LllVey4YYbFoxrww03pEuXLpx66qkceuihq876hw8fzkEHHcS4ceN46KGH+PWvf83UqVPXOKYHHngASHoMbLzxxuv65zEzW6XabQZlla971sqVK+nRowdTpkzJu83666+/xvYRwcUXX8zpp5++Rvlly5Zx5JFHcvzxx/O1r32tqLg6d+7Mc889x2OPPcbdd9/Ntddeu+rK5JOf/CQnn3wyJ598Mrvtthsvvrj6/XpZupyZmRWr2m0GZbXffvvxhz/8gSVLlrBw4UL+9Kc/scEGG7DNNttw7733AsmXa9Oz76YOOuggbrrpJhYuXAgk/dHfffddIoJTTjmFXXbZhfPPP7/ouBYuXMiCBQs45JBDuPLKK1clpnHjxrFs2TIAZs+ezbx589bo877ffvvx+9//HkiuWN5///2iX9fMrDnt+spg4MCBHH744ey555707duXuro6NtpoI+68807OPPNMLrvsMpYtW8axxx7Lnnvu2ex+DjzwQKZPn84+++wDQLdu3bjjjjt45ZVXuP3229l9993p378/AD/5yU845JBD1hrXhx9+yNChQ1myZAkRwa9+9Ssg+XIfOXIkXbp0AZJG6y222GJVAzfAJZdcwnHHHcc999zD/vvvz5Zb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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(x=annotated_coeqtl_df_clean['celltype'],\n",
+ " y=annotated_coeqtl_df_clean['gene2_nonzeroratio_onemillionv2'],\n",
+ " hue=annotated_coeqtl_df_clean['gene2_isSig'],\n",
+ " palette='Paired', fliersize=1, showfliers = False)\n",
+ "plt.savefig('gene2_nonzeroratio_onemillionv2.unfiltered_results.pdf')\n",
+ "plt.savefig('gene2_nonzeroratio_onemillionv2.unfiltered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEGCAYAAACHGfl5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAp2klEQVR4nO3de5xVddn38c+XAQUERAXSQAXPp5RwyENqpaGkKd6pt5p3glZYHiB9rLR60oo7M7M8S+TjqSgtzTxxE2UhaZZyMuWgkpqAJ8AjAcMA1/PHWsO9GfbM7DWz157T9/167dfsvdZvrX2tPTP7Wmv9TooIzMysc+vS2gGYmVnrczIwMzMnAzMzczIwMzOcDMzMDOja2gE0R79+/WLw4MGtHYaZWbsya9as5RHRv9i6dpkMBg8ezMyZM1s7DDOzdkXSvxpa59tEZmbmZGBmZk4GZmZGO60zKKa2tpYlS5awZs2a1g6l1XXv3p1BgwbRrVu31g7FzNqJDpMMlixZQu/evRk8eDCSWjucVhMRrFixgiVLljBkyJDWDsfM2olcbxNJulXSm5KebWC9JF0naZGkf0ga1tz3WrNmDdttt12nTgQAkthuu+18hWRmmeRdZ3A7MLKR9Z8Cdk8fY4GbW/JmnT0R1PHnYGZZ5XqbKCJmSBrcSJFRwJ2RjKP9N0l9Je0QEa/lGZeZWUtcf/31LFq0aLPlS5cuBWDgwIGbLN9tt9244IILKhJbc7V2a6KBwOKC10vSZZuRNFbSTEkzly1bVpHgzMyyWL16NatXr27tMJqltSuQi93PKDrbTkRMAiYBVFdXt4kZeRYvXsyZZ57J66+/TpcuXRg7dizjx49vsPy3v/1tjjjiCD75yU8WXf/cc89xzjnn8M4771BTU8Phhx/OpEmTmDlzJnfeeSfXXXddXodiZhk0dJZf9/9/7bXXVjKcsmjtZLAE2LHg9SDg1VaKJbOuXbty9dVXM2zYMN5//30OPPBARowYwT777FO0/He/+91G9zdu3DguvPBCRo0aBcAzzzwDQHV1NdXV1eUN3sysQGvfJnoAODNtVXQw8G656wu+973vsddeezFixAhOP/10fvSjH/HPf/6TkSNHcuCBB3L44YezcOFCAMaMGcO4ceM49NBD2WWXXbjnnns27ueqq65i+PDh7L///lx22WUA7LDDDgwbljSA6t27N3vvvffGe4bFjBkzZuM+L7nkEvbZZx/2339/Lr74YgBee+01Bg0atLH8hz70IQCmT5/Opz/9aQCWLVvGiBEjGDZsGOeccw4777wzy5cvL9fHZWadVK5XBpJ+BXwc6CdpCXAZ0A0gIiYCU4BjgUXAKuCscr7/zJkzuffee5kzZw7r1q1j2LBhHHjggYwdO5aJEyey++678/e//51zzz2XP/3pT0DyhfzYY4+xcOFCTjjhBE4++WSmTZvGCy+8wJNPPklEcMIJJzBjxgyOOOKIje/18ssvM2fOHA466KAm43rrrbe47777WLhwIZJ45513ALjwwgs58sgjOfTQQzn66KM566yz6Nu37ybbfuc73+HII4/k0ksvZerUqUyaNKlsn5eZdV55tyY6vYn1AZyX1/s/9thjjBo1ih49egBw/PHHs2bNGv76179yyimnbCxXU1Oz8fmJJ55Ily5d2GeffXjjjTcAmDZtGtOmTePDH/4wACtXruSFF17YmAxWrlzJSSedxDXXXEOfPn2ajKtPnz50796dL3zhCxx33HEbz/rPOussjjnmGKZOncr999/PT3/6U55++unNjum+++4DYOTIkWyzzTbN/XjMzDZq7TqDXCW5ZlMbNmygb9++zJ07t+g2W2655WbbRwSXXnop55xzzmbla2trOemkkzjjjDP4zGc+U1JcXbt25cknn+SRRx7hrrvu4oYbbth4ZfLBD36Qs88+m7PPPpv99tuPZ5/dtL9esWMyM2up1q4zyNVhhx3Ggw8+yJo1a1i5ciUPP/wwPXv2ZMiQIfzmN78Bki/X+mff9R1zzDHceuutrFy5EkjaEr/55ptEBJ///OfZe++9ueiii0qOa+XKlbz77rsce+yxXHPNNRsT09SpU6mtrQXg9ddfZ8WKFZu1Vz7ssMP49a9/DSRXLG+//XbJ72tm1pAOfWUwfPhwTjjhBA444AB23nlnqqur2XrrrZk8eTJf/vKXmTBhArW1tZx22mkccMABDe7n6KOPZsGCBRxyyCEA9OrVi1/84hc8//zz/PznP+dDH/oQQ4cOBeD73/8+xx57bKNxvf/++4waNYo1a9YQEfzkJz8Bki/38ePH0717dyCptN5+++03VnADXHbZZZx++uncfffdfOxjH2OHHXagd+/eLfmYzMxQe7ztUF1dHfVnOluwYAF77733ZmVXrlxJ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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(x=annotated_coeqtl_df_clean['celltype'], \n",
+ " y=annotated_coeqtl_df_clean['eqtlgene_nonzeroratio_onemillionv2'],\n",
+ " hue=annotated_coeqtl_df_clean['gene2_isSig'],\n",
+ " palette='Paired', fliersize=1, showfliers = False)\n",
+ "plt.savefig('eqtlgene_nonzeroratio_onemillionv2.unfiltered_results.pdf')\n",
+ "plt.savefig('eqtlgene_nonzeroratio_onemillionv2.unfiltered_results.png')"
+ ]
+ },
+ {
+ "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.7.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/04_coeqtl_mapping/README.md b/04_coeqtl_mapping/README.md
new file mode 100644
index 0000000..0b4821e
--- /dev/null
+++ b/04_coeqtl_mapping/README.md
@@ -0,0 +1,44 @@
+# 04_coeqtl_mapping
+
+*plot_effect_concordance_across_cohorts.R*: compares effect sizes (Z-scores) calculated in each individual dataset (before the meta-analysis)
+
+*plot_celltype_overlap_upset.R* : upset plot overlap of significant co-eQTLs between cell types
+
+*power_analyis_coeqtls.R* : explores how the number of tests reduce the power to detect co-eQTLs, taking estimates for number of tests based on how many genes are expressed above different cutoffs for Oelen v3 dataset
+
+Rb calculations are these files:
+*prepare_for_rb_calculation.py* : prepare the input files for rb calculation
+*Rb.R* : rb function
+*calculate_rb_for_sc_and_bios.R* : execute rb functions
+*rb_celltypes.ipynb*: examine the rb values for each cell type; also include scripts for examining different characteristics for coeQTLs compared to non-coeQTLs
+
+Co-eQTL pipeline are these files:
+all files in the betaqtl_scripts (incl. templates)
+*individual_networks.py*: make co-expression files for each individual
+*prepare_genelist_and_annotation_for_betaqtl.py*: prepare input files for the qtl mapping pipeline
+*createBatches.sh*: create batches for qtl mapping pipeline
+*submit_process_betaqtl_results.sh*: submit the jobs for concatenating qtl mapping and perform multiple testing procedures
+*concat_betaqtl_results.fixed.py*: concat qtl mapping results
+*screen_permutation_p_values.py*: concat permutation files
+*multipletesting_correction.fixed.py*: perform multiple testing correction
+
+Other co-eQTL analysis:
+*filtering_strategy.py*: filter for gene pairs
+*individual_networks_cmono_ncmono.py*: create co-expression files for each individual for sub cell types in monocytes
+*individual_networks_maxcell.py*: create co-expression files for each individual with a limit of cell number
+*merge_coexpression_for_betaeqtl_maxcell.py*: merge the co-expression files for each individual with a limit of cell number
+*merge_coexpression_for_betaqtl.subsampleindividuals.py*: create co-expression files for each individual with a limit of sample number
+
+BIOS replication are these files:
+*replication_in_bios.py*: perform bios replication
+*select_snps_from_vcf.sh*: select SNP from vcf file
+*examine_bios_replication.ipynb*: examine the bios replication results
+
+Annotating coeQTL results:
+*annotate_coeqtl_files.py*: annotate the coeqtl results for nonzero ratio, mean and var of gene pair
+*collect_nonzeroratio.py*: collect non zero ratio annotation for all genes in all datasets
+
+
+
+
+
diff --git a/04_coeqtl_mapping/Rb.R b/04_coeqtl_mapping/Rb.R
new file mode 100644
index 0000000..eb22df3
--- /dev/null
+++ b/04_coeqtl_mapping/Rb.R
@@ -0,0 +1,70 @@
+
+#' Function for Rb analysis
+#'
+#' @param b1 Beta from first dataset.
+#' @param se1 Standard error of beta from first dataset.
+#' @param b2 Beta from second dataset.
+#' @param se2 Standard error of beta from second dataset.
+#' @param theta Variable representing sample overlap between two datasets. Should be set 0 if no sample overlap.
+#'
+#' @return Data frame with Rb, SE(Rb) and corresponding P-value.
+#' @export
+#'
+#' @note This function is slightly adapted from the script shared by Ting Qi.
+#'
+#' @examples
+calcu_cor_true <- function(b1, se1, b2, se2, theta) {
+ idx <- which(is.infinite(b1) | is.infinite(b2) | is.infinite(se1) | is.infinite(se2))
+ if (length(idx) > 0) {
+ b1 <- b1[-idx]
+ se1 <- se1[-idx]
+ b2 <- b2[-idx]
+ se2 <- se2[-idx]
+ theta <- theta[-idx]
+ }
+
+ var_b1 <- var(b1, na.rm = T) - mean(se1^2, na.rm = T)
+ var_b2 <- var(b2, na.rm = T) - mean(se2^2, na.rm = T)
+ if (var_b1 < 0) {
+ var_b1 <- var(b1, na.rm = T)
+ }
+ if (var_b2 < 0) {
+ var_b2 <- var(b2, na.rm = T)
+ }
+ cov_b1_b2 <- cov(b1, b2, use = "complete.obs") - mean(theta, na.rm = T) * sqrt(mean(se1^2, na.rm = T) * mean(se2^2, na.rm = T))
+ r <- cov_b1_b2 / sqrt(var_b1 * var_b2)
+
+ r_jack <- c()
+ n <- length(b1)
+ for (k in 1:n) {
+ b1_jack <- b1[-k]
+ se1_jack <- se1[-k]
+ var_b1_jack <- var(b1_jack, na.rm = T) - mean(se1_jack^2, na.rm = T)
+ b2_jack <- b2[-k]
+ se2_jack <- se2[-k]
+ var_b2_jack <- var(b2_jack, na.rm = T) - mean(se2_jack^2, na.rm = T)
+ if (var_b1_jack < 0) {
+ var_b1_jack <- var(b1_jack, na.rm = T)
+ }
+ if (var_b2_jack < 0) {
+ var_b2_jack <- var(b2_jack, na.rm = T)
+ }
+ theta_jack <- theta[-k]
+ cov_e1_jack_e2_jack <- mean(theta_jack, na.rm = T) * sqrt(mean(se1_jack^2, na.rm = T) * mean(se2_jack^2, na.rm = T))
+ cov_b1_b2_jack <- cov(b1_jack, b2_jack, use = "complete.obs") - cov_e1_jack_e2_jack
+ r_tmp <- cov_b1_b2_jack / sqrt(var_b1_jack * var_b2_jack)
+ r_jack <- c(r_jack, r_tmp)
+ }
+ r_mean <- mean(r_jack, na.rm = T)
+ idx <- which(is.na(r_jack))
+ if (length(idx) > 0) {
+ se_r <- sqrt((n - 1) / n * sum((r_jack[-idx] - r_mean)^2))
+ } else {
+ se_r <- sqrt((n - 1) / n * sum((r_jack - r_mean)^2))
+ }
+
+ p <- pchisq((r / se_r)**2, df = 1, lower.tail = FALSE)
+
+ res <- cbind(r, se_r, p)
+ return(res)
+}
diff --git a/04_coeqtl_mapping/annotate_coeqtl_files.py b/04_coeqtl_mapping/annotate_coeqtl_files.py
new file mode 100644
index 0000000..5d6e71e
--- /dev/null
+++ b/04_coeqtl_mapping/annotate_coeqtl_files.py
@@ -0,0 +1,84 @@
+import pandas as pd
+from pathlib import Path
+import numpy as np
+import argparse
+
+
+def parse():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--celltype', dest='celltype')
+ parser.add_argument('--networkcelltype', dest='networkcelltype')
+ parser.add_argument('--filtertype', dest='filtertype')
+ return parser
+
+args = parse().parse_args()
+celltype = args.celltype
+filtertype = args.filtertype
+networkcelltype = args.networkcelltype
+# filtertype = 'filtered_results'
+workdir = Path("./coeqtl_mapping/")
+coeqtl_filepath = workdir/f'output/{filtertype}/UT_{celltype}/coeqtls_fullresults_fixed.all.tsv.gz'
+
+def find_gene2(genepair, eqtlgene):
+ gene1, gene2 = genepair.split(';')
+ if gene1 == eqtlgene:
+ return gene2
+ else:
+ return gene1
+
+coeqtl_df = pd.read_csv(coeqtl_filepath, sep='\t', compression='gzip')
+coeqtl_df['gene2'] = [find_gene2(item[0], item[1]) for item in coeqtl_df[['Gene', 'eqtlgene']].values]
+unique_genepairs = list(set(coeqtl_df['Gene']))
+
+
+network_prefix = Path("./coeqtl_mapping/input/individual_networks/UT/")
+def annotate_by_datasets(datasetname, coeqtl_df, unique_genepairs):
+ def read_numpy(prefix):
+ data = np.load(f'{prefix}.npy')
+ columns = [item.strip() for item in open(f'{prefix}.cols.txt', 'r').readlines()]
+ rows = [item.strip() for item in open(f'{prefix}.rows.txt', 'r').readlines()]
+ return pd.DataFrame(data=data, columns=columns, index=rows)
+ print(f"Loading {datasetname}.")
+ network_df = read_numpy(network_prefix / datasetname / f'UT_{networkcelltype}.zscores')
+ individual_ids = network_df.columns.copy()
+ common_genepairs = list(set(unique_genepairs) & set(network_df.index))
+ selected_network_df = network_df.loc[common_genepairs]
+ selected_network_df[f'var_{datasetname}'] = np.nanvar(selected_network_df[individual_ids].values, axis=1)
+ selected_network_df[f'mean_{datasetname}'] = np.nanmean(selected_network_df[individual_ids].values, axis=1)
+ var_mean_dic = selected_network_df[[f'var_{datasetname}', f'mean_{datasetname}']].T.to_dict()
+ get_var = lambda x:var_mean_dic.get(x)[f'var_{datasetname}'] if x in var_mean_dic else np.nan
+ get_mean = lambda x:var_mean_dic.get(x)[f'mean_{datasetname}'] if x in var_mean_dic else np.nan
+ coeqtl_df[f'var_{datasetname}'] = [get_var(genepair) for genepair in coeqtl_df['Gene']]
+ coeqtl_df[f'mean_{datasetname}'] = [get_mean(genepair) for genepair in coeqtl_df['Gene']]
+ return coeqtl_df
+
+for datasetname in ['onemillionv2', 'onemillionv3', 'stemiv2', 'ng']:
+ coeqtl_df = annotate_by_datasets(datasetname, coeqtl_df, unique_genepairs)
+
+
+def annotate_with_nonzero(df, celltype, datasetname, condition='UT'):
+ nonzeroratio_prefix = Path(
+ "./coeqtl_mapping/input/gene_pair_selection/annotations/")
+ nonzeroratio_path = nonzeroratio_prefix/f'{datasetname}.genes_nonzeroratio.tsv'
+ nonzero_df = pd.read_csv(nonzeroratio_path, sep='\t', index_col=0)
+ if condition == 'UT' and datasetname == 'stemiv2':
+ colname = f'{datasetname}_t8w_{celltype}'
+ elif condition == 'UT' and datasetname.startswith('onemillion'):
+ colname = f'{datasetname}_UT_{celltype}'
+ elif condition == 'UT' and datasetname.startswith('ng'):
+ colname = f'{datasetname}_{celltype}'
+ else:
+ raise NotImplementedError(f"{datasetname} {celltype} not understood")
+ nonzero_dict = nonzero_df[colname].T.to_dict()
+ df[f'eqtlgene_nonzeroratio_{datasetname}'] = [nonzero_dict.get(genename) for genename in df['eqtlgene']]
+ df[f'gene2_nonzeroratio_{datasetname}'] = [nonzero_dict.get(genename) for genename in df['gene2']]
+ return df
+
+for datasetname in ['onemillionv2', 'onemillionv3', 'stemiv2', 'ng']:
+ print(datasetname)
+ coeqtl_df = annotate_with_nonzero(coeqtl_df, networkcelltype, datasetname)
+
+
+coeqtl_df.to_csv(workdir/f'output/{filtertype}/UT_{celltype}/coeqtls_fullresults_fixed.all.annotated.tsv.gz',
+ compression='gzip', sep='\t', index=False)
+
diff --git a/04_coeqtl_mapping/betaqtl_scripts/createBatches.py b/04_coeqtl_mapping/betaqtl_scripts/createBatches.py
new file mode 100644
index 0000000..76763b6
--- /dev/null
+++ b/04_coeqtl_mapping/betaqtl_scripts/createBatches.py
@@ -0,0 +1,166 @@
+import gzip
+import sys
+import os
+import glob
+
+if len(sys.argv) < 6:
+ print("Usage: createbatches.py expfile.txt.gz gte.txt genotype.vcf.gz genelist.txt.gz annotation.txt.gz template.sh nrmaxgenesperbatch outdir")
+ sys.exit(0)
+
+expfile = sys.argv[1]
+gte = sys.argv[2]
+genotype = sys.argv[3]
+genelist = sys.argv[4]
+annotation = sys.argv[5]
+template = sys.argv[6]
+nrgenes = int(sys.argv[7])
+out = sys.argv[8]
+condition = sys.argv[9]
+celltype = sys.argv[10]
+
+if not out.endswith("/"):
+ out = out + "/"
+
+def writeJob(exp, gte, gt, template, batchfile, jobfile, outprefix, logprefix, chr, condition, celltype):
+ print("Writing job: "+jobfile)
+ fh = open(template,'r')
+ lines = fh.readlines()
+ fh.close()
+ fho = open(jobfile,'w')
+ for line in lines:
+ line = line.replace("GENOTYPE",gt)
+ line = line.replace("GTE",gte)
+ line = line.replace("EXPRESSION",exp)
+ line = line.replace("CHROM",str(chr))
+ line = line.replace("BATCHFILE",batchfile)
+ line = line.replace("OUTPREFIX",outprefix)
+ line = line.replace("LOGPREFIX",logprefix)
+ line = line.replace("CONDITION", condition)
+ line = line.replace("CELLTYPE", celltype)
+ fho.write(line)
+ fho.close()
+
+def checkDir(path):
+ if os.path.exists(path):
+ # delete contents
+ files = glob.glob(path+"*")
+ for file in files:
+ print("Removing: "+file)
+ os.remove(file)
+ else:
+ print("Creating dir: "+path)
+ os.mkdir(path)
+
+abspath = os.path.abspath(out)
+checkDir(abspath+"/batches/")
+checkDir(abspath+"/output/")
+checkDir(abspath+"/jobs/")
+checkDir(abspath+"/logs/")
+
+# read expression file
+fh = None
+genesinfile=genelist
+print("Reading: "+genesinfile)
+if genesinfile.endswith(".txt.gz"):
+ fh = gzip.open(genesinfile,'rt')
+else:
+ fh = open(genesinfile,'r')
+genesInExp = set()
+fh.readline()
+for line in fh:
+# gene = line.split("\t", maxsplit=1)[0]
+ gene = line.strip()
+ genesInExp.add(gene)
+# print(gene)
+
+fh.close()
+print("{} genes in {}".format(len(genesInExp),expfile))
+
+# read gene set
+geneset = set()
+fh = None
+print("Genelist: "+genelist)
+if genelist.endswith(".txt.gz"):
+ fh = gzip.open(genelist,'rt')
+else:
+ fh = open(genelist,'r')
+for line in fh:
+ gene = line.strip()
+ if gene in genesInExp:
+ geneset.add(line.strip())
+fh.close()
+print("Genes in genelist: {}".format(len(geneset)))
+
+# read annotation
+print("Annotation: "+annotation)
+fh = None
+if annotation.endswith(".txt.gz"):
+ fh = gzip.open(annotation,'rt')
+else:
+ fh = open(annotation,'r')
+fh.readline()
+genesPerChr = {}
+annotread = 0
+for line in fh:
+ elems = line.strip().split("\t")
+ gene = elems[1]
+ if gene in geneset:
+ chr = -1
+ try:
+ chr = int(elems[3])
+ except:
+ print(gene+" has non-numeric chromosome: "+elems[3])
+ if chr < 23 and chr > 0:
+ pos = int(elems[4])
+ chrgenes = genesPerChr.get(chr)
+ if chrgenes is None:
+ chrgenes = []
+ chrgenes.append(gene)
+ genesPerChr[chr] = chrgenes
+ annotread = annotread + 1
+fh.close()
+print("Annotation read for {} genes".format(annotread))
+
+# create batches
+for chr in genesPerChr.keys():
+ bctr = 1
+ chrgenes = genesPerChr.get(chr)
+ gctr = 0
+ bgctr = 0
+ batchname = "chr"+str(chr)+"-batch-"+str(bctr)
+ # write job script for first batch
+ batchfile = abspath+"/batches/"+batchname+".txt"
+ print("Writing batch: "+batchfile)
+ jobfile = abspath+"/jobs/"+batchname+".sh"
+ outprefix = abspath+"/output/"+batchname
+ logprefix = abspath+"/logs/"+batchname
+ print()
+ print("Writing job: "+template+"\n"+batchfile+"\n"+jobfile+"\n"+outprefix+"\n"+str(chr))
+ # exp, gte, gt, template, batchfile, jobfile, outprefix, chr
+ chrgenotype = genotype.replace("CHR",str(chr))
+ writeJob(expfile, gte, chrgenotype, template, batchfile, jobfile, outprefix, logprefix, chr, condition, celltype)
+ bgout = open(batchfile,'w')
+ while gctr < len(chrgenes):
+ bgout.write(chrgenes[gctr]+"\n")
+ bgctr = bgctr + 1
+ if bgctr == nrgenes:
+ # start new batch
+ bgout.close()
+ bctr = bctr + 1
+ # write job script for new batch
+ batchname = "chr"+str(chr)+"-batch-"+str(bctr)
+ batchfile = abspath+"/batches/"+batchname+".txt"
+ print("Writing batch: "+batchfile)
+ jobfile = abspath+"/jobs/"+batchname+".sh"
+ outprefix = abspath+"/output/"+batchname
+ logprefix = abspath+"/logs/"+batchname
+# writeJob(template, batchfile, jobfile, outprefix, chr)
+ writeJob(expfile, gte, chrgenotype, template, batchfile, jobfile, outprefix, logprefix, chr, condition, celltype)
+
+ bgout = open(batchfile,'w')
+ bgctr = 0
+ gctr = gctr + 1
+ # if there are any genes left, close batch
+ if bgctr > 0:
+ bgout.close()
+
diff --git a/04_coeqtl_mapping/betaqtl_scripts/createBatches.sh b/04_coeqtl_mapping/betaqtl_scripts/createBatches.sh
new file mode 100644
index 0000000..ce5ca12
--- /dev/null
+++ b/04_coeqtl_mapping/betaqtl_scripts/createBatches.sh
@@ -0,0 +1,58 @@
+condition=$1
+celltype=$2
+workdir="/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/"
+coexpressionfile=${workdir}/"input/individual_networks/${condition}/${condition}_${celltype}.onemillionv23stemiv2ng.zscores.tsv.gz"
+gtefile=${workdir}/"input/summary/gte-fix.tsv"
+gtfile=${workdir}/"output/genotypevcfs/chrCHR/GenotypeData.bgz.vcf.gz"
+batchsize=100000
+
+genelist=${workdir}/"output/${condition}_${celltype}/genelist.noduplicated.txt"
+geneannotation=${workdir}/"input/summary/${condition}_${celltype}.genepairs.annotation.gene1position.noduplicated.tsv"
+jobtemplatefile=${workdir}/"output/betaqtl_scripts/jobtemplate.noduplicated.sh"
+outputfile=${workdir}/"output/${condition}_${celltype}/noduplicated/"
+mkdir -p ${outputfile}
+python createBatches.py \
+ ${coexpressionfile} \
+ ${gtefile} \
+ ${gtfile} \
+ ${genelist} \
+ ${geneannotation} \
+ ${jobtemplatefile} \
+ ${batchsize} \
+ ${outputfile} \
+ ${condition} \
+ ${celltype}
+
+genelist=${workdir}/"output/${condition}_${celltype}/genelist.duplicatedversion1.txt"
+geneannotation=${workdir}/"input/summary/${condition}_${celltype}.genepairs.annotation.gene1position.duplicatedversion1.tsv"
+jobtemplatefile=${workdir}/"output/betaqtl_scripts/jobtemplate.duplicatedversion1.sh"
+outputfile=${workdir}/"output/${condition}_${celltype}/duplicatedversion1/"
+mkdir -p ${outputfile}
+python createBatches.py \
+ ${coexpressionfile} \
+ ${gtefile} \
+ ${gtfile} \
+ ${genelist} \
+ ${geneannotation} \
+ ${jobtemplatefile} \
+ ${batchsize} \
+ ${outputfile} \
+ ${condition} \
+ ${celltype}
+
+genelist=${workdir}/"output/${condition}_${celltype}/genelist.duplicatedversion2.txt"
+geneannotation=${workdir}/"input/summary/${condition}_${celltype}.genepairs.annotation.gene1position.duplicatedversion2.tsv"
+jobtemplatefile=${workdir}/"output/betaqtl_scripts/jobtemplate.duplicatedversion2.sh"
+outputfile=${workdir}/"output/${condition}_${celltype}/duplicatedversion2"
+mkdir -p ${outputfile}
+python createBatches.py \
+ ${coexpressionfile} \
+ ${gtefile} \
+ ${gtfile} \
+ ${genelist} \
+ ${geneannotation} \
+ ${jobtemplatefile} \
+ ${batchsize} \
+ ${outputfile} \
+ ${condition} \
+ ${celltype}
diff --git a/04_coeqtl_mapping/betaqtl_scripts/jobtemplate.duplicatedversion1.sh b/04_coeqtl_mapping/betaqtl_scripts/jobtemplate.duplicatedversion1.sh
new file mode 100644
index 0000000..cd8864f
--- /dev/null
+++ b/04_coeqtl_mapping/betaqtl_scripts/jobtemplate.duplicatedversion1.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+#SBATCH --ntasks=1
+#SBATCH --time=1:00:00
+#SBATCH --mem=24g
+#SBATCH --cpus-per-task=11
+#SBATCH -o LOGPREFIX.log
+#SBATCH -e LOGPREFIX.err
+
+set -e
+set -u
+
+
+
+
+ml Java/11-LTS
+# ml Java/11.0.2
+
+# CHROM, BATCHFILE, OUTPREFIX
+# EXP, GTE, GENOTYPE
+# CONDITION CELLTYPE
+threads=11
+java -Xmx17g \
+ -Djava.util.concurrent.ForkJoinPool.common.parallelism=$threads \
+ -Dmaximum.threads=$threads -Dthread.pool.size=$threads \
+ -jar /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/BetaQTL-1.0-SNAPSHOT-jar-with-dependencies.jar \
+ -m betaqtl \
+ --maf 0.1\
+ -a /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/summary/CONDITION_CELLTYPE.genepairs.annotation.gene1position.duplicatedversion1.tsv \
+ -e /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/individual_networks/CONDITION/CONDITION_CELLTYPE.onemillionv23stemiv2ng.zscores.tsv.gz \
+ -sgl /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/snp_genepair_selection/CONDITION_CELLTYPE.baseline.duplicatedversion1.tsv \
+ -gl BATCHFILE \
+ -g /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/summary/gte-fix.tsv \
+ -v GENOTYPE \
+ --chr CHROM \
+ -o OUTPREFIX \
+ --perm 100 \
+ --outputall \
+ --snplog \
+ --outputallpermutations
diff --git a/04_coeqtl_mapping/betaqtl_scripts/jobtemplate.duplicatedversion2.sh b/04_coeqtl_mapping/betaqtl_scripts/jobtemplate.duplicatedversion2.sh
new file mode 100644
index 0000000..9792bc9
--- /dev/null
+++ b/04_coeqtl_mapping/betaqtl_scripts/jobtemplate.duplicatedversion2.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+#SBATCH --ntasks=1
+#SBATCH --time=1:00:00
+#SBATCH --mem=24g
+#SBATCH --cpus-per-task=11
+#SBATCH -o LOGPREFIX.log
+#SBATCH -e LOGPREFIX.err
+
+set -e
+set -u
+
+
+
+
+ml Java/11-LTS
+# ml Java/11.0.2
+
+# CHROM, BATCHFILE, OUTPREFIX
+# EXP, GTE, GENOTYPE
+# CONDITION CELLTYPE
+threads=11
+java -Xmx17g \
+ -Djava.util.concurrent.ForkJoinPool.common.parallelism=$threads \
+ -Dmaximum.threads=$threads -Dthread.pool.size=$threads \
+ -jar /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/BetaQTL-1.0-SNAPSHOT-jar-with-dependencies.jar \
+ -m betaqtl \
+ --maf 0.1\
+ -a /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/summary/CONDITION_CELLTYPE.genepairs.annotation.gene1position.duplicatedversion2.tsv \
+ -e /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/individual_networks/CONDITION/CONDITION_CELLTYPE.onemillionv23stemiv2ng.zscores.tsv.gz \
+ -sgl /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/snp_genepair_selection/CONDITION_CELLTYPE.baseline.duplicatedversion2.tsv \
+ -gl BATCHFILE \
+ -g /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/summary/gte-fix.tsv \
+ -v GENOTYPE \
+ --chr CHROM \
+ -o OUTPREFIX \
+ --perm 100 \
+ --outputall \
+ --snplog \
+ --outputallpermutations
diff --git a/04_coeqtl_mapping/betaqtl_scripts/jobtemplate.noduplicated.sh b/04_coeqtl_mapping/betaqtl_scripts/jobtemplate.noduplicated.sh
new file mode 100644
index 0000000..6373cd7
--- /dev/null
+++ b/04_coeqtl_mapping/betaqtl_scripts/jobtemplate.noduplicated.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+#SBATCH --ntasks=1
+#SBATCH --time=1:00:00
+#SBATCH --mem=24g
+#SBATCH --cpus-per-task=11
+#SBATCH -o LOGPREFIX.log
+#SBATCH -e LOGPREFIX.err
+
+set -e
+set -u
+
+
+
+
+ml Java/11-LTS
+
+# CHROM, BATCHFILE, OUTPREFIX
+# EXP, GTE, GENOTYPE
+# CONDITION CELLTYPE
+threads=11
+java -Xmx17g \
+ -Djava.util.concurrent.ForkJoinPool.common.parallelism=$threads \
+ -Dmaximum.threads=$threads -Dthread.pool.size=$threads \
+ -jar /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/BetaQTL-1.0-SNAPSHOT-jar-with-dependencies.jar \
+ -m betaqtl \
+ --maf 0.1 \
+ -a /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/summary/CONDITION_CELLTYPE.genepairs.annotation.gene1position.noduplicated.tsv \
+ -e /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/individual_networks/CONDITION/CONDITION_CELLTYPE.onemillionv23stemiv2ng.zscores.tsv.gz \
+ -sgl /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/snp_genepair_selection/CONDITION_CELLTYPE.baseline.noduplicated.tsv \
+ -gl BATCHFILE \
+ -g /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/summary/gte-fix.tsv \
+ -v GENOTYPE \
+ --chr CHROM \
+ -o OUTPREFIX \
+ --perm 100 \
+ --outputall \
+ --snplog \
+ --outputallpermutations
diff --git a/04_coeqtl_mapping/calculate_rb_for_sc_and_bios.R b/04_coeqtl_mapping/calculate_rb_for_sc_and_bios.R
new file mode 100644
index 0000000..40415e6
--- /dev/null
+++ b/04_coeqtl_mapping/calculate_rb_for_sc_and_bios.R
@@ -0,0 +1,89 @@
+# Title : TODO
+# Objective : TODO
+# Created by: Shuang
+# Created on: 1/19/2022
+
+source("Rb.R")
+library(glue)
+library(data.table)
+
+calculate_rb_bios_replication_summary <- function(biostype, filtertype){
+ print(biostype)
+ print(filtertype)
+ resdf <- c()
+ for ( celltype in c('CD4T', 'CD8T', 'monocyte', 'NK', 'B', 'DC') ){
+ df <- read.csv(glue('./coeqtl_mapping/bios/{biostype}/{filtertype}/UT_{celltype}/replication_parameters.csv'))
+ res <- calcu_cor_true(df$flipped_bios_beta, df$std.err_bios, df$MetaBeta, df$MetaSE, df$theta)
+ res <- cbind(res, celltype)
+ resdf <- rbind(res, resdf)
+ }
+ write.csv(resdf, glue('./coeqtl_mapping/bios/{biostype}/{filtertype}/replication_summary.csv'))
+}
+
+# BIOS replication
+args = commandArgs(trailingOnly=TRUE)
+calculate_rb_bios_replication_summary(args[1], args[2])
+
+
+# coeQTLs
+filtertype = 'filtered_results'
+workdir = './coeqtl_mapping/'
+resdf <- c()
+for ( celltype_discovery in c('CD4T', 'CD8T', 'monocyte', 'NK', 'B', 'DC') ){
+ for ( celltype_replication in c('CD4T', 'CD8T', 'monocyte', 'NK', 'B', 'DC') ){
+ if ( celltype_discovery != celltype_replication ){
+ df <- fread(glue('{workdir}/output/{filtertype}/rb_calculations/discovery_{celltype_discovery}_replication_{celltype_replication}.tsv.gz'))
+ print(c(celltype_discovery, celltype_replication, nrow(df)))
+ if ( nrow(df) < 5 ){
+ resdf <- rbind(resdf, c(NA, NA, 0, celltype_discovery, celltype_replication))
+ }else{
+ res <- calcu_cor_true(df$MetaBeta, df$MetaSE, df$MetaBeta_replication, df$MetaSE_replication, df$theta)
+ res <- cbind(res, celltype_discovery, celltype_replication)
+ resdf <- rbind(res, resdf)
+ }
+ }
+ }
+}
+write.csv(resdf, glue('{workdir}/output/{filtertype}/rb_calculations/summary.csv'))
+
+# coeQTLs monocyte sub celltypes
+filtertype = 'filtered_results'
+workdir = './coeqtl_mapping/'
+resdf <- c()
+for ( celltype_discovery in c('monocyte', 'cMono', 'ncMono') ){
+ for ( celltype_replication in c('monocyte', 'cMono', 'ncMono') ){
+ if ( celltype_discovery != celltype_replication ){
+ df <- fread(glue('{workdir}/output/{filtertype}/rb_calculations/monocyte_subcelltypes/discovery_{celltype_discovery}_replication_{celltype_replication}.tsv.gz'))
+ print(c(celltype_discovery, celltype_replication, nrow(df)))
+ if ( nrow(df) < 5 ){
+ resdf <- rbind(resdf, c(NA, NA, 0, celltype_discovery, celltype_replication))
+ }else{
+ res <- calcu_cor_true(df$MetaBeta, df$MetaSE, df$MetaBeta_replication, df$MetaSE_replication, df$theta)
+ res <- cbind(res, celltype_discovery, celltype_replication)
+ resdf <- rbind(res, resdf)
+ }
+ }
+ }
+}
+write.csv(resdf, glue('{workdir}/output/{filtertype}/rb_calculations/monocyte_subcelltypes/summary.csv'))
+
+
+# eQTLs
+workdir = './coeqtl_mapping/'
+resdf <- c()
+for ( celltype_discovery in c('CD4T', 'CD8T', 'monocyte', 'NK', 'B', 'DC') ){
+ for ( celltype_replication in c('CD4T', 'CD8T', 'monocyte', 'NK', 'B', 'DC') ){
+ if ( celltype_discovery != celltype_replication ){
+ df <- fread(glue('{workdir}/input/snp_selection/rb_calculations/discovery_{celltype_discovery}_replication_{celltype_replication}.tsv.gz'))
+ print(c(celltype_discovery, celltype_replication, nrow(df)))
+ if ( nrow(df) < 5 ){
+ resdf <- rbind(resdf, c(NA, NA, 0, celltype_discovery, celltype_replication))
+ }else{
+ res <- calcu_cor_true(df$metabeta, df$SE, df$metabeta_replication, df$SE_replication, df$theta)
+ res <- cbind(res, celltype_discovery, celltype_replication)
+ resdf <- rbind(res, resdf)
+ }
+ }
+ }
+}
+write.csv(resdf, glue('{workdir}/input/snp_selection/rb_calculations/summary.csv'))
\ No newline at end of file
diff --git a/04_coeqtl_mapping/cell-type_specific_eQTLmapping/template_config.xml b/04_coeqtl_mapping/cell-type_specific_eQTLmapping/template_config.xml
new file mode 100644
index 0000000..6684866
--- /dev/null
+++ b/04_coeqtl_mapping/cell-type_specific_eQTLmapping/template_config.xml
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+ 0.95
+ 0.0001
+ 0.1
+
+
+
+ cis
+ 100000
+ nonparametric
+
+ 10
+ false
+ false
+
+
+
+ fdr
+ 0.05
+ probe-level
+ 10
+
+
+
+
+
+
+ /path/to/SNPconfinement/file.tsv
+ false
+ false
+ false
+
+
+
+
+
+
+ van_der_Wijst
+ /path/to/van_der_Wijst/genome/trityper/
+ /path/to/van_der_Wijst/cell_type_specific_donor_aggregated_matrix/expression.tsv
+ /path_to_snp_annotation_file/singleCell-annotation-stripped.tsv
+ false
+ false
+
+
+ van_Blockland_v2
+ /path/to/van_Blockland_v2/genome/trityper/
+ /path/to/van_Blockland_v2/cell_type_specific_donor_aggregated_matrix/expression.tsv
+ /path_to_snp_annotation_file/singleCell-annotation-stripped.tsv
+ false
+ false
+
+
+ van_Blockland_v3
+ /path/to/van_Blockland_v3/genome/trityper/
+ /path/to/van_Blockland_v3/cell_type_specific_donor_aggregated_matrix/expression.tsv
+ /path_to_snp_annotation_file/singleCell-annotation-stripped.tsv
+ false
+ false
+
+
+ Oelen_v2
+ /path/to/Oelen_v2/genome/trityper/
+ /path/to/Oelen_v2/cell_type_specific_donor_aggregated_matrix/expression.tsv
+ /path_to_snp_annotation_file/singleCell-annotation-stripped.tsv
+ false
+ false
+
+
+ Oelen_v3
+ /path/to/Oelen_v3/genome/trityper/
+ /path/to/Oelen_v3/cell_type_specific_donor_aggregated_matrix/expression.tsv
+ /path_to_snp_annotation_file/singleCell-annotation-stripped.tsv
+ false
+ false
+
+
+
+
diff --git a/04_coeqtl_mapping/cell-type_specific_eQTLmapping/template_job_file.sh b/04_coeqtl_mapping/cell-type_specific_eQTLmapping/template_job_file.sh
new file mode 100644
index 0000000..3c99f30
--- /dev/null
+++ b/04_coeqtl_mapping/cell-type_specific_eQTLmapping/template_job_file.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+#SBATCH --job-name=B_1m_v2
+#SBATCH --output=/groups/umcg-bios/tmp01/projects/1M_cells_scRNAseq/ongoing/GRN_reconstruction/EMP_mapping/B/err/B_1m_v2.out
+#SBATCH --error=/groups/umcg-bios/tmp01/projects/1M_cells_scRNAseq/ongoing/GRN_reconstruction/EMP_mapping/B/err/B_1m_v2.err
+#SBATCH --time=05:59:00
+#SBATCH --cpus-per-task=10
+#SBATCH --mem=64gb
+#SBATCH --nodes=1
+#SBATCH --open-mode=append
+#SBATCH --export=NONE
+#SBATCH --get-user-env=L
+
+set -e
+ml Java/1.8.0_144
+
+java -jar -Xmx40g -Xms20g -XX:StringTableSize=10000019 -XX:MaxPermSize=512m /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/cis_eqtl_single_cell/EMP_mapping_30_11_2021/eqtl-mapping-pipeline-1.4.9a-SNAPSHOT/eqtl-mapping-pipeline.jar --mode metaqtl --settings /groups/umcg-bios/tmp01/projects/1M_cells_scRNAseq/ongoing/GRN_reconstruction/EMP_mapping/B/config/1m_v2.xml
diff --git a/04_coeqtl_mapping/collect_nonzeroratio.py b/04_coeqtl_mapping/collect_nonzeroratio.py
new file mode 100644
index 0000000..b86dc08
--- /dev/null
+++ b/04_coeqtl_mapping/collect_nonzeroratio.py
@@ -0,0 +1,95 @@
+from pathlib import Path
+import numpy as np
+import scanpy as sc
+import re
+import pandas as pd
+
+
+prefix = Path('./seurat_objects')
+data_path_dic = {'onemillionv2':prefix/'1M_v2_mediumQC_ctd_rnanormed_demuxids_20201029.sct.h5ad',
+ 'stemiv2': prefix / 'cardio.integrated.20210301.stemiv2.h5ad',
+ 'onemillionv3': prefix / "1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.SCT.h5ad",
+ 'ng': prefix / 'pilot3_seurat3_200420_sct_azimuth.h5ad'}
+
+
+# extract timepoint from timepoint - stimulation annotation
+def get_time(x):
+ if x == 'UT':
+ return x
+ else:
+ pattern = re.compile(r'\d+h')
+ return re.findall(pattern, x)[0]
+
+
+def count_nonzeroratio(data_sc):
+ df = pd.DataFrame(data=data_sc.X.toarray(),
+ index=data_sc.obs.index,
+ columns=data_sc.var.index)
+ nonzerocounts = np.count_nonzero(df.values, axis=0)/df.shape[0]
+ return nonzerocounts
+
+
+def load_onemillion(data_name, data_sc):
+ var_df = pd.DataFrame(index=data_sc.var.index.values)
+ data_sc.obs['time'] = [get_time(x) for x in data_sc.obs['timepoint']]
+ for condition in data_sc.obs['time'].unique():
+ for celltype in data_sc.obs['cell_type_lowerres'].unique():
+ print(condition, celltype)
+ subset_sc = data_sc[(data_sc.obs['time']==condition) &
+ (data_sc.obs['cell_type_lowerres']==celltype)]
+ var_df[f'{data_name}_{condition}_{celltype}'] = count_nonzeroratio(subset_sc)
+ return var_df
+
+
+def load_ng(data_sc):
+ var_df = pd.DataFrame(index=data_sc.var.index.values)
+ celltype_maping = {'CD4 T': 'CD4T', 'CD8 T': 'CD8T', 'Mono': 'monocyte', 'DC': 'DC', 'NK': 'NK',
+ 'other T': 'otherT', 'other': 'other', 'B': 'B'}
+ data_sc.obs['cell_type_mapped_to_onemillion'] = [celltype_maping.get(name) for name in
+ data_sc.obs['predicted.celltype.l1']]
+ for celltype in data_sc.obs['cell_type_mapped_to_onemillion'].unique():
+ print(celltype)
+ subset_sc = data_sc[(data_sc.obs['cell_type_mapped_to_onemillion']==celltype)]
+ var_df[f'ng_{celltype}'] = count_nonzeroratio(subset_sc)
+ return var_df
+
+
+def load_stemi(dataname, data_sc):
+ var_df = pd.DataFrame(index=data_sc.var.index.values)
+ for condition in data_sc.obs['timepoint.final'].unique():
+ for celltype in data_sc.obs['cell_type_lowerres'].unique():
+ print(condition, celltype)
+ subset_sc = data_sc[(data_sc.obs['timepoint.final']==condition) &
+ (data_sc.obs['cell_type_lowerres']==celltype)]
+ var_df[f'{dataname}_{condition}_{celltype}'] = count_nonzeroratio(subset_sc)
+ return var_df
+
+
+def get_expressed_ratio(datasetname):
+ data_sc = sc.read_h5ad(data_path_dic[datasetname])
+ if datasetname.startswith('onemillion'):
+ var_df = load_onemillion(datasetname, data_sc)
+ elif datasetname.startswith('stemi'):
+ var_df = load_stemi(datasetname, data_sc)
+ else:
+ var_df = load_ng(data_sc)
+ return var_df
+
+
+def calculate_genes_withnonzeroratio(datasetname, savepath):
+ print("Processing ", datasetname)
+ var_df = get_expressed_ratio(datasetname)
+ var_df.to_csv(savepath, sep='\t')
+ return var_df
+
+
+work_dir = Path('/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/')
+nonzero_savepath = work_dir/'coeqtl_mapping/input/gene_pair_selection/annotations/'
+for datasetname in ['stemiv2', 'ng', 'onemillionv2', 'onemillionv3']:
+ print('Processing ', datasetname)
+ savepath = nonzero_savepath/f'{datasetname}.genes_nonzeroratio.tsv'
+ var_df = calculate_genes_withnonzeroratio(datasetname, savepath)
+
+
+
+
diff --git a/04_coeqtl_mapping/concat_all6majorcelltypes_coeqtls.py b/04_coeqtl_mapping/concat_all6majorcelltypes_coeqtls.py
new file mode 100644
index 0000000..a2de1f7
--- /dev/null
+++ b/04_coeqtl_mapping/concat_all6majorcelltypes_coeqtls.py
@@ -0,0 +1,38 @@
+import pandas as pd
+from pathlib import Path
+
+def find_eqtlsnp_gene(snp_genepair, eqtl_snp_gene_set):
+ snp = snp_genepair.split('_')[0]
+ gene1, gene2 = snp_genepair.split('_')[1].split(';')
+ if '_'.join([snp, gene1]) in eqtl_snp_gene_set:
+ return gene1
+ else:
+ return gene2
+
+
+workdir = Path("/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output")
+eqtl_prefix = Path("/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/snp_selection/eqtl")
+writer = pd.ExcelWriter(workdir/'summary/coeQTLs_6majorcelltypes.unfiltered.xlsx', engine='xlsxwriter')
+for celltype in ['CD4T', 'CD8T', 'monocyte', 'B', 'DC', 'NK']:
+ eqtls_path = eqtl_prefix/f'UT_{celltype}_eQTLProbesFDR0.05-ProbeLevel.tsv'
+ eqtl_df = pd.read_csv(eqtls_path, sep='\t')
+ eqtl_df['snp_gene'] = ['_'.join(item) for item in eqtl_df[['SNPName', 'genename']].values]
+ eqtl_snp_gene_set = set(eqtl_df['snp_gene'])
+ df = pd.read_csv(workdir/f'unfiltered_results/UT_{celltype}/coeqtls_fullresults.sig.tsv.gz', sep='\t', compression='gzip')
+ df['eqtlgene'] = [find_eqtlsnp_gene(item, eqtl_snp_gene_set) for item in df['snp_genepair']]
+ print(celltype, df.shape[0], len(df['eqtlgene'].unique()))
+ df.to_excel(writer, sheet_name=celltype)
+writer.save()
+
+
+writer = pd.ExcelWriter(workdir/'summary/coeQTLs_6majorcelltypes.filtered.xlsx', engine='xlsxwriter')
+for celltype in ['CD4T', 'CD8T', 'monocyte', 'B', 'DC', 'NK']:
+ eqtls_path = eqtl_prefix/f'UT_{celltype}_eQTLProbesFDR0.05-ProbeLevel.tsv'
+ eqtl_df = pd.read_csv(eqtls_path, sep='\t')
+ eqtl_df['snp_gene'] = ['_'.join(item) for item in eqtl_df[['SNPName', 'genename']].values]
+ eqtl_snp_gene_set = set(eqtl_df['snp_gene'])
+ df = pd.read_csv(workdir/f'filtered_results/UT_{celltype}/coeqtls_fullresults.sig.tsv.gz', sep='\t', compression='gzip')
+ df['eqtlgene'] = [find_eqtlsnp_gene(item, eqtl_snp_gene_set) for item in df['snp_genepair']]
+ print(celltype, df.shape[0], len(df['eqtlgene'].unique()))
+ df.to_excel(writer, sheet_name=celltype)
+writer.save()
\ No newline at end of file
diff --git a/04_coeqtl_mapping/concat_betaqtl_results.fixed.py b/04_coeqtl_mapping/concat_betaqtl_results.fixed.py
new file mode 100644
index 0000000..7d698f7
--- /dev/null
+++ b/04_coeqtl_mapping/concat_betaqtl_results.fixed.py
@@ -0,0 +1,65 @@
+import pandas as pd
+from pathlib import Path
+import os
+import argparse
+from tqdm import tqdm
+from statsmodels.stats.multitest import multipletests
+
+
+def concat_results(prefix, savepath):
+ concated_df = pd.DataFrame()
+ coeqtl_annotation_path = f'{args.annotation_prefix}.genepairs.annotation.gene1position.noduplicated.tsv'
+ coeqtl_annotation_df = pd.read_csv(coeqtl_annotation_path, sep='\t')
+ coeqtl_annotation_df['chr_pos'] = ['_'.join([str(ele) for ele in item]) for item in
+ coeqtl_annotation_df[['Chr', 'ChrStart', 'ChrEnd']].values]
+ coeqtl_annotation_dict = coeqtl_annotation_df.set_index('ArrayAddress')['chr_pos'].T.to_dict()
+ for filename in tqdm(os.listdir(prefix/'noduplicated/output')):
+ if filename.endswith("-TopEffects.txt"):
+ df = pd.read_csv(prefix/'noduplicated/output'/filename, sep='\t')
+ df['chr_pos'] = [coeqtl_annotation_dict.get(gene) for gene in df['Gene']]
+ concated_df = pd.concat([concated_df, df], axis=0)
+ concated_df['snp_genepair'] = ['_'.join(item) for item in concated_df[['SNP', 'Gene']].values]
+ version1 = pd.DataFrame()
+ coeqtl_annotation_path = f'{args.annotation_prefix}.genepairs.annotation.gene1position.duplicatedversion1.tsv'
+ coeqtl_annotation_df = pd.read_csv(coeqtl_annotation_path, sep='\t')
+ coeqtl_annotation_df['chr_pos'] = ['_'.join([str(ele) for ele in item]) for item in
+ coeqtl_annotation_df[['Chr', 'ChrStart', 'ChrEnd']].values]
+ coeqtl_annotation_dict = coeqtl_annotation_df.set_index('ArrayAddress')['chr_pos'].T.to_dict()
+ for filename in tqdm(os.listdir(prefix/'duplicatedversion1/output')):
+ if filename.endswith("-TopEffects.txt"):
+ df = pd.read_csv(prefix/'duplicatedversion1/output'/filename, sep='\t')
+ df['chr_pos'] = [coeqtl_annotation_dict.get(gene) for gene in df['Gene']]
+ version1 = pd.concat([version1, df], axis=0)
+ version1['snp_genepair'] = ['_'.join(item) for item in version1[['SNP', 'Gene']].values]
+ version2 = pd.DataFrame()
+ coeqtl_annotation_path = f'{args.annotation_prefix}.genepairs.annotation.gene1position.duplicatedversion2.tsv'
+ coeqtl_annotation_df = pd.read_csv(coeqtl_annotation_path, sep='\t')
+ coeqtl_annotation_df['chr_pos'] = ['_'.join([str(ele) for ele in item]) for item in
+ coeqtl_annotation_df[['Chr', 'ChrStart', 'ChrEnd']].values]
+ coeqtl_annotation_dict = coeqtl_annotation_df.set_index('ArrayAddress')['chr_pos'].T.to_dict()
+ for filename in tqdm(os.listdir(prefix/'duplicatedversion2/output')):
+ if filename.endswith("-TopEffects.txt"):
+ df = pd.read_csv(prefix/'duplicatedversion2/output'/filename, sep='\t')
+ df['chr_pos'] = [coeqtl_annotation_dict.get(gene) for gene in df['Gene']]
+ version2 = pd.concat([version2, df], axis=0)
+ version2['snp_genepair'] = ['_'.join(item) for item in version2[['SNP', 'Gene']].values]
+ concated_versions = pd.concat([concated_df, version1, version2], axis=0)
+ concated_versions = concated_versions.sort_values(by=['GeneChr', 'GenePos'])
+ concated_versions = concated_versions.set_index('snp_genepair')
+ # add multiple test significance
+ concated_versions['multipletestP'] = multipletests(concated_versions['BetaAdjustedMetaP'],
+ alpha=0.05, method='fdr_bh',
+ is_sorted=False, returnsorted=False)[1]
+ concated_versions.to_csv(savepath, sep='\t')
+ return concated_versions
+
+def argumentsparser():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--prefix', type=str, dest='prefix')
+ parser.add_argument('--savepath', type=str, dest='savepath')
+ parser.add_argument('--annotation_prefix', type=str, dest='annotation_prefix')
+ return parser
+
+if __name__ == '__main__':
+ args = argumentsparser().parse_args()
+ concat_results(Path(args.prefix), args.savepath)
\ No newline at end of file
diff --git a/04_coeqtl_mapping/examine_bios_replication.ipynb b/04_coeqtl_mapping/examine_bios_replication.ipynb
new file mode 100644
index 0000000..8c5b906
--- /dev/null
+++ b/04_coeqtl_mapping/examine_bios_replication.ipynb
@@ -0,0 +1,1013 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "from scipy.stats import spearmanr\n",
+ "from pathlib import Path\n",
+ "from scipy.stats import t, norm\n",
+ "import seaborn as sns\n",
+ "%matplotlib inline\n",
+ "\n",
+ "def flip_zscore(zscore, coeqtlallele, altaf, altallele):\n",
+ " if not pd.isnull(zscore):\n",
+ " if coeqtlallele == altallele:\n",
+ " coeqtlaf = altaf\n",
+ " else:\n",
+ " coeqtlaf = 1 - altaf\n",
+ " if coeqtlaf > 0.5:\n",
+ " return -zscore\n",
+ " else:\n",
+ " return zscore\n",
+ " else:\n",
+ " return np.nan\n",
+ " \n",
+ "def flip_allele(altaf, altallele, refallele):\n",
+ " if altaf > 0.5:\n",
+ " return refallele\n",
+ " else:\n",
+ " return altallele"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "coeqtl_withbios_prefix = Path(\n",
+ " \"./coeqtl_mapping/output\"\n",
+ ")\n",
+ "filter_type = 'filtered_results'\n",
+ "\n",
+ "def flip_direction(allele1, allele2, zscore2):\n",
+ " if allele1 == allele2:\n",
+ " return zscore2\n",
+ " else:\n",
+ " return -1*zscore2\n",
+ "\n",
+ "\n",
+ "def get_z_score(t_statistic, num):\n",
+ " prob = t.cdf(t_statistic, num - 2)\n",
+ " z_score = norm.ppf(prob)\n",
+ " return z_score"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import seaborn as sns\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "import matplotlib.patches as mpatches"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "color_dict = {'CD4T': '#2E9D33',\n",
+ " 'CD8T': 'darkgreen',\n",
+ " 'monocyte': '#EDBA1B',\n",
+ " 'NK': '#E64B50',\n",
+ " 'DC': '#965EC8',\n",
+ " 'B': '#009DDB',\n",
+ " 'cMono': 'peru',\n",
+ " 'ncMono': 'y',\n",
+ " 'CD4T_individual_100': '#2E9D33',\n",
+ " 'CD4T_individual_50': '#2E9D33',\n",
+ " 'CD4T_50': '#2E9D33',\n",
+ " 'CD4T_150': '#2E9D33',\n",
+ " 'CD4T_250': '#2E9D33'}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "workdir = Path(\"./coeqtl_mapping/\")\n",
+ "bios_replication_filtered_df = pd.read_csv(\n",
+ " workdir/'bios/onlyRNAAlignMetrics_rmLLD/filtered_results/replication_summary.csv', \n",
+ " index_col=0\n",
+ ").set_index('celltype')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "celltype = 'CD4T'\n",
+ "eqtldf = pd.read_csv(\n",
+ " workdir/f'input/snp_selection/eqtl/UT_{celltype}_eQTLProbesFDR0.05-ProbeLevel_withAF.tsv',\n",
+ " sep='\\t'\n",
+ " )\n",
+ "eqtldf['snp_eqtlgene'] = ['_'.join(item) for item in eqtldf[['SNPName', 'genename']].values]\n",
+ "eqtl_allele_af_df = eqtldf.drop_duplicates(subset=['snp_eqtlgene', 'AlleleAssessed', 'AF'])\n",
+ "eqtl_allele_af_dict = eqtl_allele_af_df.set_index('snp_eqtlgene')[['AlleleAssessed', 'AF', 'alt_allele', 'ref_allele']].T.to_dict()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "biostype = 'onlyRNAAlignMetrics_rmLLD'\n",
+ "celltype = 'CD4T'\n",
+ "filter_type = 'filtered_results'\n",
+ "\n",
+ "coeqtl_df = pd.read_csv(\n",
+ " coeqtl_withbios_prefix/filter_type/f'UT_{celltype}/coeqtls_fullresults_fixed.sig.withbios{biostype}.tsv.gz',\n",
+ " compression='gzip', \n",
+ " index_col=0, \n",
+ " sep='\\t')\n",
+ "coeqtl_df = coeqtl_df.dropna(subset=['t_bios'])\n",
+ "coeqtl_df['zscore_bios'] = [get_z_score(item[0], item[1]) for item in \n",
+ " coeqtl_df[['t_bios', \n",
+ " 'num_individuals_bios']].values]\n",
+ "coeqtl_df['flipped_zscore_bios'] = [flip_direction(item[0], item[1], item[2]) for item in \n",
+ " coeqtl_df[['SNPEffectAllele', \n",
+ " 'assessed_allele_bios',\n",
+ " 'zscore_bios']].values]\n",
+ "\n",
+ "isConcordant = lambda x:True if x[0]*x[1] > 0 else False\n",
+ "coeqtl_df['is_concordant'] = [isConcordant(item) for item in \n",
+ " coeqtl_df[['MetaPZ', 'flipped_zscore_bios']].values]\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " snp_genepair | \n",
+ " Gene | \n",
+ " GeneChr | \n",
+ " GenePos | \n",
+ " GeneStrand | \n",
+ " GeneSymbol | \n",
+ " SNP | \n",
+ " SNPChr | \n",
+ " SNPPos | \n",
+ " SNPAlleles | \n",
+ " ... | \n",
+ " gene1_bios | \n",
+ " gene2_bios | \n",
+ " assessed_allele_bios | \n",
+ " num_individuals_bios | \n",
+ " isinteractionterm_bios | \n",
+ " snp_genepair_bios | \n",
+ " corrected_p_bios | \n",
+ " zscore_bios | \n",
+ " flipped_zscore_bios | \n",
+ " is_concordant | \n",
+ "
\n",
+ " \n",
+ " snp_gene1_gene2 | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " rs7605824_SH3YL1_NPM1 | \n",
+ " rs7605824_NPM1;SH3YL1 | \n",
+ " NPM1;SH3YL1 | \n",
+ " 2 | \n",
+ " 217730 | \n",
+ " NaN | \n",
+ " NPM1;SH3YL1 | \n",
+ " rs7605824 | \n",
+ " 2 | \n",
+ " 280819 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SH3YL1 | \n",
+ " NPM1 | \n",
+ " A | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs7605824_NPM1;SH3YL1 | \n",
+ " 0.000000 | \n",
+ " -3.617874 | \n",
+ " -3.617874 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " rs7605824_SH3YL1_CD48 | \n",
+ " rs7605824_CD48;SH3YL1 | \n",
+ " CD48;SH3YL1 | \n",
+ " 2 | \n",
+ " 217730 | \n",
+ " NaN | \n",
+ " CD48;SH3YL1 | \n",
+ " rs7605824 | \n",
+ " 2 | \n",
+ " 280819 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SH3YL1 | \n",
+ " CD48 | \n",
+ " A | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs7605824_CD48;SH3YL1 | \n",
+ " 0.784422 | \n",
+ " -0.446946 | \n",
+ " -0.446946 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " rs7605824_SH3YL1_RPS13 | \n",
+ " rs7605824_RPS13;SH3YL1 | \n",
+ " RPS13;SH3YL1 | \n",
+ " 2 | \n",
+ " 217730 | \n",
+ " NaN | \n",
+ " RPS13;SH3YL1 | \n",
+ " rs7605824 | \n",
+ " 2 | \n",
+ " 280819 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SH3YL1 | \n",
+ " RPS13 | \n",
+ " A | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs7605824_RPS13;SH3YL1 | \n",
+ " 0.000000 | \n",
+ " -3.489377 | \n",
+ " -3.489377 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " rs7605824_SH3YL1_RPL31 | \n",
+ " rs7605824_RPL31;SH3YL1 | \n",
+ " RPL31;SH3YL1 | \n",
+ " 2 | \n",
+ " 217730 | \n",
+ " NaN | \n",
+ " RPL31;SH3YL1 | \n",
+ " rs7605824 | \n",
+ " 2 | \n",
+ " 280819 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SH3YL1 | \n",
+ " RPL31 | \n",
+ " A | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs7605824_RPL31;SH3YL1 | \n",
+ " 0.349601 | \n",
+ " -1.325633 | \n",
+ " -1.325633 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " rs7605824_SH3YL1_RPL3 | \n",
+ " rs7605824_RPL3;SH3YL1 | \n",
+ " RPL3;SH3YL1 | \n",
+ " 2 | \n",
+ " 217730 | \n",
+ " NaN | \n",
+ " RPL3;SH3YL1 | \n",
+ " rs7605824 | \n",
+ " 2 | \n",
+ " 280819 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SH3YL1 | \n",
+ " RPL3 | \n",
+ " A | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs7605824_RPL3;SH3YL1 | \n",
+ " 0.000000 | \n",
+ " -3.854851 | \n",
+ " -3.854851 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " rs4147638_SMDT1_ACTB | \n",
+ " rs4147638_ACTB;SMDT1 | \n",
+ " ACTB;SMDT1 | \n",
+ " 22 | \n",
+ " 42475695 | \n",
+ " NaN | \n",
+ " ACTB;SMDT1 | \n",
+ " rs4147638 | \n",
+ " 22 | \n",
+ " 42487900 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SMDT1 | \n",
+ " ACTB | \n",
+ " G | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs4147638_ACTB;SMDT1 | \n",
+ " 0.000000 | \n",
+ " -3.748326 | \n",
+ " 3.748326 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " rs4147638_SMDT1_RPS25 | \n",
+ " rs4147638_RPS25;SMDT1 | \n",
+ " RPS25;SMDT1 | \n",
+ " 22 | \n",
+ " 42475695 | \n",
+ " NaN | \n",
+ " RPS25;SMDT1 | \n",
+ " rs4147638 | \n",
+ " 22 | \n",
+ " 42487900 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SMDT1 | \n",
+ " RPS25 | \n",
+ " G | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs4147638_RPS25;SMDT1 | \n",
+ " 0.000000 | \n",
+ " 5.773036 | \n",
+ " -5.773036 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " rs4147638_SMDT1_RPS3A | \n",
+ " rs4147638_RPS3A;SMDT1 | \n",
+ " RPS3A;SMDT1 | \n",
+ " 22 | \n",
+ " 42475695 | \n",
+ " NaN | \n",
+ " RPS3A;SMDT1 | \n",
+ " rs4147638 | \n",
+ " 22 | \n",
+ " 42487900 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SMDT1 | \n",
+ " RPS3A | \n",
+ " G | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs4147638_RPS3A;SMDT1 | \n",
+ " 0.000000 | \n",
+ " 4.434777 | \n",
+ " -4.434777 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " rs4147638_SMDT1_RPS18 | \n",
+ " rs4147638_RPS18;SMDT1 | \n",
+ " RPS18;SMDT1 | \n",
+ " 22 | \n",
+ " 42475695 | \n",
+ " NaN | \n",
+ " RPS18;SMDT1 | \n",
+ " rs4147638 | \n",
+ " 22 | \n",
+ " 42487900 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SMDT1 | \n",
+ " RPS18 | \n",
+ " G | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs4147638_RPS18;SMDT1 | \n",
+ " 0.000000 | \n",
+ " 7.128733 | \n",
+ " -7.128733 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " rs4147638_SMDT1_RPL11 | \n",
+ " rs4147638_RPL11;SMDT1 | \n",
+ " RPL11;SMDT1 | \n",
+ " 22 | \n",
+ " 42475695 | \n",
+ " NaN | \n",
+ " RPL11;SMDT1 | \n",
+ " rs4147638 | \n",
+ " 22 | \n",
+ " 42487900 | \n",
+ " G/A | \n",
+ " ... | \n",
+ " SMDT1 | \n",
+ " RPL11 | \n",
+ " G | \n",
+ " 2491.0 | \n",
+ " True | \n",
+ " rs4147638_RPL11;SMDT1 | \n",
+ " 0.000000 | \n",
+ " 5.896748 | \n",
+ " -5.896748 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
497 rows × 55 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " snp_genepair Gene GeneChr \\\n",
+ "snp_gene1_gene2 \n",
+ "rs7605824_SH3YL1_NPM1 rs7605824_NPM1;SH3YL1 NPM1;SH3YL1 2 \n",
+ "rs7605824_SH3YL1_CD48 rs7605824_CD48;SH3YL1 CD48;SH3YL1 2 \n",
+ "rs7605824_SH3YL1_RPS13 rs7605824_RPS13;SH3YL1 RPS13;SH3YL1 2 \n",
+ "rs7605824_SH3YL1_RPL31 rs7605824_RPL31;SH3YL1 RPL31;SH3YL1 2 \n",
+ "rs7605824_SH3YL1_RPL3 rs7605824_RPL3;SH3YL1 RPL3;SH3YL1 2 \n",
+ "... ... ... ... \n",
+ "rs4147638_SMDT1_ACTB rs4147638_ACTB;SMDT1 ACTB;SMDT1 22 \n",
+ "rs4147638_SMDT1_RPS25 rs4147638_RPS25;SMDT1 RPS25;SMDT1 22 \n",
+ "rs4147638_SMDT1_RPS3A rs4147638_RPS3A;SMDT1 RPS3A;SMDT1 22 \n",
+ "rs4147638_SMDT1_RPS18 rs4147638_RPS18;SMDT1 RPS18;SMDT1 22 \n",
+ "rs4147638_SMDT1_RPL11 rs4147638_RPL11;SMDT1 RPL11;SMDT1 22 \n",
+ "\n",
+ " GenePos GeneStrand GeneSymbol SNP SNPChr \\\n",
+ "snp_gene1_gene2 \n",
+ "rs7605824_SH3YL1_NPM1 217730 NaN NPM1;SH3YL1 rs7605824 2 \n",
+ "rs7605824_SH3YL1_CD48 217730 NaN CD48;SH3YL1 rs7605824 2 \n",
+ "rs7605824_SH3YL1_RPS13 217730 NaN RPS13;SH3YL1 rs7605824 2 \n",
+ "rs7605824_SH3YL1_RPL31 217730 NaN RPL31;SH3YL1 rs7605824 2 \n",
+ "rs7605824_SH3YL1_RPL3 217730 NaN RPL3;SH3YL1 rs7605824 2 \n",
+ "... ... ... ... ... ... \n",
+ "rs4147638_SMDT1_ACTB 42475695 NaN ACTB;SMDT1 rs4147638 22 \n",
+ "rs4147638_SMDT1_RPS25 42475695 NaN RPS25;SMDT1 rs4147638 22 \n",
+ "rs4147638_SMDT1_RPS3A 42475695 NaN RPS3A;SMDT1 rs4147638 22 \n",
+ "rs4147638_SMDT1_RPS18 42475695 NaN RPS18;SMDT1 rs4147638 22 \n",
+ "rs4147638_SMDT1_RPL11 42475695 NaN RPL11;SMDT1 rs4147638 22 \n",
+ "\n",
+ " SNPPos SNPAlleles ... gene1_bios gene2_bios \\\n",
+ "snp_gene1_gene2 ... \n",
+ "rs7605824_SH3YL1_NPM1 280819 G/A ... SH3YL1 NPM1 \n",
+ "rs7605824_SH3YL1_CD48 280819 G/A ... SH3YL1 CD48 \n",
+ "rs7605824_SH3YL1_RPS13 280819 G/A ... SH3YL1 RPS13 \n",
+ "rs7605824_SH3YL1_RPL31 280819 G/A ... SH3YL1 RPL31 \n",
+ "rs7605824_SH3YL1_RPL3 280819 G/A ... SH3YL1 RPL3 \n",
+ "... ... ... ... ... ... \n",
+ "rs4147638_SMDT1_ACTB 42487900 G/A ... SMDT1 ACTB \n",
+ "rs4147638_SMDT1_RPS25 42487900 G/A ... SMDT1 RPS25 \n",
+ "rs4147638_SMDT1_RPS3A 42487900 G/A ... SMDT1 RPS3A \n",
+ "rs4147638_SMDT1_RPS18 42487900 G/A ... SMDT1 RPS18 \n",
+ "rs4147638_SMDT1_RPL11 42487900 G/A ... SMDT1 RPL11 \n",
+ "\n",
+ " assessed_allele_bios num_individuals_bios \\\n",
+ "snp_gene1_gene2 \n",
+ "rs7605824_SH3YL1_NPM1 A 2491.0 \n",
+ "rs7605824_SH3YL1_CD48 A 2491.0 \n",
+ "rs7605824_SH3YL1_RPS13 A 2491.0 \n",
+ "rs7605824_SH3YL1_RPL31 A 2491.0 \n",
+ "rs7605824_SH3YL1_RPL3 A 2491.0 \n",
+ "... ... ... \n",
+ "rs4147638_SMDT1_ACTB G 2491.0 \n",
+ "rs4147638_SMDT1_RPS25 G 2491.0 \n",
+ "rs4147638_SMDT1_RPS3A G 2491.0 \n",
+ "rs4147638_SMDT1_RPS18 G 2491.0 \n",
+ "rs4147638_SMDT1_RPL11 G 2491.0 \n",
+ "\n",
+ " isinteractionterm_bios snp_genepair_bios \\\n",
+ "snp_gene1_gene2 \n",
+ "rs7605824_SH3YL1_NPM1 True rs7605824_NPM1;SH3YL1 \n",
+ "rs7605824_SH3YL1_CD48 True rs7605824_CD48;SH3YL1 \n",
+ "rs7605824_SH3YL1_RPS13 True rs7605824_RPS13;SH3YL1 \n",
+ "rs7605824_SH3YL1_RPL31 True rs7605824_RPL31;SH3YL1 \n",
+ "rs7605824_SH3YL1_RPL3 True rs7605824_RPL3;SH3YL1 \n",
+ "... ... ... \n",
+ "rs4147638_SMDT1_ACTB True rs4147638_ACTB;SMDT1 \n",
+ "rs4147638_SMDT1_RPS25 True rs4147638_RPS25;SMDT1 \n",
+ "rs4147638_SMDT1_RPS3A True rs4147638_RPS3A;SMDT1 \n",
+ "rs4147638_SMDT1_RPS18 True rs4147638_RPS18;SMDT1 \n",
+ "rs4147638_SMDT1_RPL11 True rs4147638_RPL11;SMDT1 \n",
+ "\n",
+ " corrected_p_bios zscore_bios flipped_zscore_bios \\\n",
+ "snp_gene1_gene2 \n",
+ "rs7605824_SH3YL1_NPM1 0.000000 -3.617874 -3.617874 \n",
+ "rs7605824_SH3YL1_CD48 0.784422 -0.446946 -0.446946 \n",
+ "rs7605824_SH3YL1_RPS13 0.000000 -3.489377 -3.489377 \n",
+ "rs7605824_SH3YL1_RPL31 0.349601 -1.325633 -1.325633 \n",
+ "rs7605824_SH3YL1_RPL3 0.000000 -3.854851 -3.854851 \n",
+ "... ... ... ... \n",
+ "rs4147638_SMDT1_ACTB 0.000000 -3.748326 3.748326 \n",
+ "rs4147638_SMDT1_RPS25 0.000000 5.773036 -5.773036 \n",
+ "rs4147638_SMDT1_RPS3A 0.000000 4.434777 -4.434777 \n",
+ "rs4147638_SMDT1_RPS18 0.000000 7.128733 -7.128733 \n",
+ "rs4147638_SMDT1_RPL11 0.000000 5.896748 -5.896748 \n",
+ "\n",
+ " is_concordant \n",
+ "snp_gene1_gene2 \n",
+ "rs7605824_SH3YL1_NPM1 True \n",
+ "rs7605824_SH3YL1_CD48 True \n",
+ "rs7605824_SH3YL1_RPS13 True \n",
+ "rs7605824_SH3YL1_RPL31 True \n",
+ "rs7605824_SH3YL1_RPL3 True \n",
+ "... ... \n",
+ "rs4147638_SMDT1_ACTB True \n",
+ "rs4147638_SMDT1_RPS25 True \n",
+ "rs4147638_SMDT1_RPS3A True \n",
+ "rs4147638_SMDT1_RPS18 True \n",
+ "rs4147638_SMDT1_RPL11 True \n",
+ "\n",
+ "[497 rows x 55 columns]"
+ ]
+ },
+ "execution_count": 51,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "coeqtl_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# flip direction according to AF\n",
+ "coeqtl_df['eqtl_effect_allele'] = [eqtl_allele_af_dict.get(eqtl)['AlleleAssessed'] for eqtl in \n",
+ " coeqtl_df['snp_eqtlgene']]\n",
+ "coeqtl_df['eqtl_alt_af'] = [eqtl_allele_af_dict.get(eqtl)['AF'] for eqtl in coeqtl_df['snp_eqtlgene']]\n",
+ "coeqtl_df['eqtl_alt_allele'] = [eqtl_allele_af_dict.get(eqtl)['alt_allele'] for eqtl in \n",
+ " coeqtl_df['snp_eqtlgene']]\n",
+ "coeqtl_df['eqtl_ref_allele'] = [eqtl_allele_af_dict.get(eqtl)['ref_allele'] for eqtl in \n",
+ " coeqtl_df['snp_eqtlgene']]\n",
+ "coeqtl_df[f'MetaPZ_flippedforAF'] = [flip_zscore(zscore, coeqtlallele, altaf, altallele)\n",
+ " for zscore, coeqtlallele, altaf, altallele in\n",
+ " coeqtl_df[[f'MetaPZ',\n",
+ " f'SNPEffectAllele',\n",
+ " 'eqtl_alt_af',\n",
+ " 'eqtl_alt_allele']].values]\n",
+ "coeqtl_df[f'flipped_zscore_bios_flippedforAF'] = [flip_zscore(zscore, coeqtlallele, altaf, altallele)\n",
+ " for zscore, coeqtlallele, altaf, altallele in\n",
+ " coeqtl_df[[f'flipped_zscore_bios',\n",
+ " f'SNPEffectAllele',\n",
+ " 'eqtl_alt_af',\n",
+ " 'eqtl_alt_allele']].values]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "0.9637681159420289\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "Text(3, -5, 'Concordance = 0.96\\nrb = 0.61')"
+ ]
+ },
+ "execution_count": 53,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAATsAAAEvCAYAAAA6m2ZKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABYiklEQVR4nO29eXwUVb73/zmdpLvJHkhYAyQgstkJW3JBCUGQJSwhBBS8uA13xgWHuc9vrs44g4PiyB0d/enoDLnzOMuD+qgkkpUlKBiIwY1EWVpiFDGZAAImkK0D6U53n+ePUGUvVdXV3dVbct6vly9Jd1fV6arT3/M935VQSsFgMBj9HVWgB8BgMBj+gAk7BoMxIGDCjsFgDAiYsGMwGAMCJuwYDMaAgAk7BoMxIAgPxEUTExNpSkpKIC7NYDD6MZ9//nkrpTRJ6L2ACLuUlBTU1dUF4tIMBqMfQwj5l9h7bBvLYDAGBEzYMRiMAQETdgwGY0DAhB2DwRgQMGHHYDAGBEzYMRiMAQETdgwGY0AQkDg7BoPhHvvOVuLPdTtwqfsyhkcNw+ZZj2L5+JxADyukYMKOwQhy9p2txDNHt6PH0gMAuNh9Cc8c3Q4ATOC5AdvGMhhBzp/rdvCCjqPH0oM/1+0I0IhCEybsGIwg51L3ZbdeZwjDhB2DEeQMjxrm1usMYZiwYzCCnM2zHoU2TGv3mjZMi82zHg3QiEIT5qBgMIIczgnBvLHewYQdgxECLB+fw4Sbl7BtLIPBGBAwYcdgMAYETNgxGIwBARN2DAZjQMCEHYPBGBAwb+wAgCWR9w/Yc/QOJuz6OSyJvH/AnqP3KLKNJYTEE0J2E0IaCCFfEULmKHFehvewJPL+gdznuO9sJZYWrsC0f2ZgaeEK7Dtb6c9hBjVKaXavADhAKV1LCFEDiFTovAwvYUnk/QM5z5Fpf9J4rdkRQmIBzAPwDwCglJoope3enpehDCyJvH8g5zkyLV4aJbax4wC0APg/hJDjhJC/E0KiFDgvQwFYEnn/QM5zZFq8NEoIu3AAMwD8D6V0OoBuAE84fogQ8iAhpI4QUtfS0qLAZRlyWD4+B1vnbsGIqOEgIBgRNRxb525h25oQQ85zZFq8NIRS6t0JCBkO4FNKacqNv7MAPEEpXS52zKxZs2hdXZ1X12UwGPY42uyAPu1vIC1uhJDPKaWzhN7z2kFBKb1ECDlHCJlIKf0awEIA9d6el8FguAcrBSWNUt7YzQDeuuGJ/Q7ATxQ6L4PRb/FFkDArBSWOIsKOUnoCgKDqyGAwnNl3thJbP9wGMzUD6AsT2frhNgCBCRMZCNkZLDeWwQgAz3/yAi/oOMzUjOc/ecHvY+FsfRe7L4GC8vF5SgUkB0ugMxN2DEYA6DB1ir7ub2Hgy/g8XwtSd2DCjsEIMvwtDHwZnxdMgc5M2DEYASBeEyf6nr+FgS/j84Ip0JkJOwYjAPxq9mOIUEWIvu9PYeDLLJtgCnRmwo7BCADLx+dgW9ZWqIjwT9CfwsCXWTbBlK7I6tkxGAGCEyZCWQ/+Fga+is8LpkBnJuwYjAASTMLAVwRLoDMTdgxGgAkWYdDfYTY7BoMxIGCaHYPhA/p7+lUofj8m7BgMhenv5dF98f38ITzZNpbBUBh3sgYClTfqzXWVzorwV0oZE3YMhsLIzRoIVN6ot9dVOivCXyllTNgxGAojN2sgUHmj3l5X6ayIi92X3HrdU5iwYzAURm7WQKDyRr29rtJZEWJZJAAU1XKZg4LBUBi5gcLDo4YJai/epIrJMfR7e12lA6Gt1Cr6npKOHa8b7ngCa7jDYCjfIEfu+YKtMc/SwhWSW9YRUcNxYN1eWeeSarjDtrEMRgDgNLAeSw+/jfM2AV+uLc5Xif+eeniFtsW2KLWtZ9tYBsPPOGpWVmrlbV7eCBxXtjhfxrJ5GntnK/TFUKoCDNPsGAw/4ysvrJSX1NdhLp58J9sxiaFkBRgm7BgMP+MrL6yUl9TXYS5iY7/YfclOoNpudZ/88ClBjU5FVIrX1QPYNpbB8Du+8MIC0l7SLdVbBY9xR8BKbYPFvhPwo0eV+zcn4MSco1ZqxYio4YqnjDFhx2D4mc2zHvW6YKeY4BErF+WtgHVlkxP6Thw9lh48+eFTiImIlrTN2eKLfGK2jWUw/Iy33lBP7G/eBgK72gZz30kMK7WKto8UQ+lsEqbZMRgBwJuCnVKCR+qcmjA1f1y8Jg6LUhfhz3U7sKV6q0vvrBw74/LxOfhz3Q6307xURCUaWKxkNgnT7BiMEMNdBwenCdpqVgZTN8q+KZetHcrNh3UVM+eINkyLZ+dtw4io4W5d1xMUE3aEkDBCyHFCiLxQZwaD4RHuJuILaYJmakavtdfuNalto9xtMLedlcp35YhTx/Lbd390IVNSs/tPAF8peD4GY0AjlpHgrmBwZyso9llXdkbbsf65bgfWTMx3qeFFRkTyx/uynSOHIjY7QkgygOUAtgP4pRLnZDAGMnIyEoS8sUJeWqmwEEekto1idkahse45sxcrJ6zA0XNHRa/tKFh93XhIKQfFnwD8CkCM2AcIIQ8CeBAAxowZo9BlGQOV7777DgAwbty4AI/EN7hyQggJBjEBuXLCCuw5s1dW2Mfc0XMVG+vRc0dxYN1e0UR/fzYCBxTYxhJCVgD4gVL6udTnKKWvUUpnUUpnJSUleXtZBqNf40mWhZTQ4baIrthzZq/bKWSuxiq27Z47eq5fS9IrodndBiCXELIMgBZALCHk/1JK71Hg3AyGIMnJyYEegtd4kpEgpQ1JCR1OE5z2zwxQiJd1kxPC4vgdCCGC2RDcWLlz/fHTF9Fu7AAAEBCUfl0GMzUDsN+mA75pGu61Zkcp/Q2lNJlSmgJgPYAqJugYvkatVkOtVgd6GB7jKjDYE++kmCCkoLzmJGfrKNehwX0HoRg5obH2mI38v69brvOCjn/f0oPnP3nBZwULWJwdA0Dgulx5SkdHBzo6OgI9DI+Rm5Eg1zu572wlrpuvi16PExpzR8916SWN08R6/B2AviBhx7G6KuPE0WHq9FnBAkUzKCilRwAcUfKcDN8Tin1Or1y5AgCIi4sL8EjkY7ttFdtKOmYkyLn/QpWHhbC130llOhhM3dh3ttLltcU0QEqp07HeZkIokUnBNDtGwLpcDSQct61ieOKhlKs1AT/a7w6s24uTG+sQp3bW4szULOvZuxPcLOd7hZNwxGuEFy8lPLdM2DEC1uVqICFHIHmaMeDOc4pV20eHdZq6PD6nWGrYxe5LTqaQzbMeRTiR3khGq6Pwq9mP+SyTghUCYPisvhqjj31nKyWDegmIV15Hd4KGr5mv221RvXn2tsHNjufgTCHHL5+UDCy2pcPYqXjnMluYsGMoUl+NIQy3fRXDnc5ZYkjVknOk19prF1riy2ffY+nBuw27ZX/eNlTFF7ZiJuwYPl1NfUWoZOFIbV+VEircc3ryw6cke7ByODpBuHG6++zlOkbkEE7Cfb64sr6xDIYPkQri/e/s3yu6oLgKGOZQQpsEXPd7dYd4TRyqN3zg9XlY31hGv6OtrQ1tbW2BHoZLxGxfI6KGK645y7GzKWmeUNKB1WH8sdaer2I+mbBjhCShIuz8UadN6loRqgjEqWN9UjZJSQcWdy5ftnxkNjsGw4e4sokp2bja37ZXdxwjUtgK/+c/ecGjkvNyYDY7RkgSKiWepISZkIFfG6blG9coLbSUFKxi53TV8NpRkBEQUFDEqWPRazXjmvma4LEEBCc21rocj5TNjml2DIaPcJWGJ5a58vwnL8BoMUmm77kruHyVEugYJiLmtOD6wHJjjlXH4Jr5Ol8a3lXnMZZBwWAEMa7S8MQM/K6S4T2xa7kai1JOASkbJZemdmJjLSIjIp16YLg6r7cwYccISVJSUpCSkhLoYUjiKg3PXW2FO86TXGapsSjpFJBbrcUdTy4BYRkUjIGLShX867SrVCyx7AVtuIYvcil0nJxcZsdtbqw6RnCrODxqmKjw/G317/Db6t8hXhOHX81+TLbAcdzaclqjp30x5MQOyiH4ZwyDIcCVK1f4Mk/BiquwEzEtyFUyvKtqI0Ka2jXzdcFE/Ovm6y6FTruxA0/VPOORpic0lt9W/w7tPR2IUEXIOoeccvJyYJrdAMYX3jl/wRXuHDJkSIBHIg53L5//5AVeq9KGa5w+I3bPxZ6Nq3xWIU2t19qLeE0cKKV2Gp6QBimEY06tXMTS5a5brvMlnaTGoGRMIhN2A5RQLNgZqhgtJv7f7cYOWfdZSgi6iqcTdXwYOzE8aphLz6cYnH3PnQVSyjZnpmYMCh8kKeyUDIJmcXYDFKkQASXyJn1NqMTZucof5UIylFxgpJ6tVJXkEVHDJccap461C4kBfowLFBu/q+9PQEAIESxgoCIqHP/JMdFjBc/HcmMZjshtXMzwDlf3U8l0KA4pW6FUru6BdXvx39m/F7TthZEwEELc9gKLFfjkGB41TLRSi5wKLu7AhN0AROqHxQp2Kouc+6l0CXyp8A85TpPVE/OczklARLebUgKdG4tQ+XfuumIOCKUcExzMZjcAEf1hUSBvaK5/B+Mhwb595ZCbP6q0Ri1m85OTP3v03FGn48zUDBVRCWpbrgQ6NxYpe58/iscyYTcAEf1hEaD7iy5s+3AbkpKSkJWVBZ1O59/B9TO4H/Nvq38n+Tl/atSuKgGLzQ8rtTrlt7ojlLwRwErAhF0/Ra/Xo6amBq2trUhMTLQTXGIBnSOihiP/9nxUVlYiJycHZWVlABCUAq+1tRUAkJiYGOCRCON4/6OiotBt6Rb8rDZMi7yhuSgoKBB8Xv5Gan7Y5rfKEUpS89AWX5Vit4UJu36IXq9HVVUVcnNzMWbMGDQ3N6OiogJAn+CSitMaM2YMWltbkZqairy8PBQVFfHHBROdnX3hE8Eo7Bzvf3V1NdJOTcWn0bWgKntPaJw6Fv8+aj2Mp66LPi9/IzY/8obm4l/vNeLW1sw+wZWRBd148fG5mof+hgm7foLtCqrRaHDXXXchNTUVAJCamorc3FxUVlZCp9PxK+h/H34O3aprdit0Y2MjL0DGjBkDo9GIqqoqAMEn8IKVmpoa5ObmIjU1FXq9Hnq9Hr9e9Ti+NNfjlWN/RktPK4ZohuC/5vwvLB+fg5deegnh4eF48803ee3H9nn5G6FtZd7QXLcFsu19AJznob9hwq4f4LiCbt++3akhDaexcSwfn4Mx15L7jru977jGxkZUVFRgwYIFAIDm5mYkJiYiJycnYBM0FGltbeXvv+0PPhWpWDlhORobG1FUVIQx15Kh1+thtVqxcuVKXojs3r0bERER6OjoQEFBQUC2tI7byoKCAtmCi1t4W1paXM5DudtcJfBa2BFCRgN4A8BwAFYAr1FKX/H2vAz5OK6giYmJaG5u5v8GfhRctnCTqrKyEi0tLdBoNAgPD0dpaSkOHz4Mo9GIpUuXOk1QhjS2999W8HE4asxr1qzhn5XBYEBERARWrVrFC7/i4mIcPHgQkyZNQlNTk6Bg8LXQEPsejvPCduGtrKyUnIf+3uYqodmZAfwXpfQLQkgMgM8JIQcppfUKnJshA8eJmJWVhYqKCqdJxGlstuh0Ouh0Ouzfvx/19fVYs2YNfwznoBASlIEmGKue2AqcoqIiZGRkSC48OTk5eOONN+yeXU1NDdLS0lBZWckLrhkzZuDLL7/EV199henTpyM7O9tOMACQFBpKCEK5C6jtwutqHvp7m+u1sKOUXgRw8ca/uwghXwEYBYAJOz/hOBF1Oh1aWlpQVFQEo9GIxMRELFiwQHICNTU12WkYnINiz549oJQKCspAEmy17IS0lJKSEhgMBpSUlCA/P9/pBz9mzBio1Wq7Z9fS0oLe3l4nAdHe3o777rsPRUVFOHr0KBITE6HT6VBTUwMAokIDkBaEcpG7gNouvI47h6SkJLt5KFdbVApFbXaEkBQA0wF8puR5GT8itEoLTUS9Xo9ly5bJntBiE6+trQ35+fnMXucCIS0lP78vjCcrK0tw4WlsbIRGo7F7dlqtVlBwFRUV8dvfLVu22AlBQoio0BDTnkpLS93S9mwFF3fMhAkTUFNTg9LSUv4c3MJrMBj488fHxyMmJgabNm2yO6dcbVEpFBN2hJBoAMUA/hel1KmsAiHkQQAPAqHTzT3YELNxLFiwAAsWLLCbiK40OUfEJl5SUlJQCroffvgBADB06NAAj6QPKS2Fu39VVVXIycmxcwYtWrQIwI9ChFIqauPjBEFYWJidEIyJiREVGkLj6uzshNVq5cciV9vjTB6A+FycMGEC72CxtTuWlZVBr9fbnd8dc4sSKCLsCCER6BN0b1FKS4Q+Qyl9DcBrQF/VEyWuO9CQsnFs2rTJK6Hk74nnLQaDAUDwCDuhxaK6uhoajQbPPPMMrwmJLUjc/1955RVBwRUfH+/0PDghuGzZMtFnV1NTIzguR5OFu7YyqbmoVqud3svLy3M6v5C26O4i7Q5KeGMJgH8A+IpS+pL3Q2KI4Usbh78nXn/DcbGorq7G8ePHcddddzkJILF7qtfrYTKZUF5e7uSNNRqNmDNnjt2xnPbm6tk5CsK2tjav55HUXBTTToU8t/4KOwGU0exuA3AvAD0h5MSN135LKd2vwLkZNvjSxuHvidcfsVgs2LVrF0wmE7RarWRgtxA1NTVYu3YtDAYDL7g0Gg16enqg0WhQV1eH1NRUdHZ2orq6Gm1tbYiPj+e3h7ae19LSUlRVVcFisaCrq8vOZhgfH+/VPNLr9dBoNILn0Gg0GDRokMvzC22Dy8rKcPDgQRgMBp/MQSW8sUcBEAXGwnCBr7aawZbWE2pw92/16tX8/XMMKQFca0+cthQWFgbA2YtaXFyMN954A1FRUXYhQlIhKOXl5cjLy0NsbCwqKiqQlZUFwFnbc2ce1dTUICMjw+kcxcXFyMjIQFJSksvzC22DOe+/rQMGUG4OsgyKEMJXW81gS+uRQ3h48ExdofuXkJAgqN1ERESIZkXYau5C51yzZg2KiopE7W2AcwjKqlWreJuurX0XAO/NVavVUKlUqKqqsvOsij371tZWZGdnIykpyW4udnd3Izs7mxfW3HsRERFYsWKF3fnEtsHt7e12Dhgl52DwzBiGLGw9Yo54uhX1d7yTEgSTR1/o/mVnZ6O4uNhOAysvL8eyZct4LQuAqHdS7Jn09PRIPitX77W2tvKaaHt7OxISEjB+/HicOXNGtmbPCWXbucilwHHCmnuvsbFRUGDJMckoPQeZsOsn6PV6HDp0CHl5ebyBfN++fbJWan/HO/U3hO5fbGwsLBYLioqK0NPTA61WC51Oh/T0dAAQ1FpsHQoRERGCz0Sr1Qq+HhcXh56eHsnn2NzcjOjoaKetbmFhIdatWydbsxczp+h0OtnbY6FzlJeXY+HChYJjVwIm7EIMMe2tqqoKeXl5dpU21q1b53Kl1uv16O3txRtvvIGEhARkZ2fzmkewhp0AwKVLffXWhg9XtnS3Jwj9cHfv3g21Ws0vPtwz4JwJYloLlxWRmpoqmHkhJlAsFougHa2kpAR33HEHH9cXFhbmtNU1mUxuafZS5hS9Xi/LzOJ4jri4OPT29iI6OhoWi8UnoU9M2AUAT7ebUo6E9vZ2wUobgPhKLXS+4uJimEwmmM1mPhUpGO12165dC/QQeIR+/EKxZrbPgNOyhAp2tra24qGHHsJ7773Ha4YajQaZmZnIzs6GVqt1ysgoLS0VtKMZDAaUlZVBrVZDo9HAYDA4CTZPNHsxc4qUmcXVZ+UKSk9hws7PeOP5dBXI6arShuNKLWYE37NnDx599FHmlXUD7v5wixgXa2a7sEVHR8NoNGLbtm1Qq9WwWq28o8VsNuPAgQM4d+4cNBoNtm/fjsTERD7lr6qqCrW1tXxerGMqIBc8LGRHs431s7WrcUyaNEk0f9e2XJNWq+UFrJwFWq/X4+DBgzAajTCZTIiMjIRarUZHR4fgOdwRlJ7AhJ2f8cbzKSXEoqOj+WBUsZXaUZMQqzfmS49Yf8VxEduxYweqq6uh1+uRm5uLzs5OVFVVYf369XZBx7Z17MrLy3HixAncfffddkKnpaXFZa5zVlYWdu/eDY1Gg/b2dsTHx+PatWvIzMy0m2sZGRlOgk2v12Py5Ml2sX3Lli0D0BfKotPpBIsTAOKLoF6vx4EDBxAREYH169ejs7MThw8fDmh4U/DVyenneOP55ISYLdx2Y9GiRbh+/TqKiorQ0tKCwsJCPqi0sbERu3fvBiEEOTk52LJlC3JychAdHY3q6mqn88XFxbk9toGO7SIWFhaGm266CceOHeNf++ijj3ibalhYGBoaGpCfn8//zYWJEELsXsvNzUVtba2sLV14eDhWrlyJLVu2YOXKlQgPD8eQIUPsPpOdnc0HLW/fvh1FRUXQ6XRYsmQJcnJyEBcXxwtV7js1NDTYfTduXJyZQ+x+aDQarFq1iv/+3L9tz8HV9PMHTLPzM3LsI2I2PVdBxVqt1s4gXlJSgpqaGiQlJQnakPLz8/H222/jxIkT6OrqglqtBqUUlFJs29bXYWzSpElB6ZWNiIgI9BDssF3E9Ho9zpw5Y2f4d1zkxBY9k8nk9JrRaJRl4uCEKWBvkuA8wMCPxR24WDturnHbY6ESTJ4s0I6hMFJxdY4FAnwFE3Z+xpXAkmPTEzLiFhQUOE12rsTQpk2b8MwzzwhWv9BoNHaR/+Xl5TCZTBg0aBBycnJQUlKCyZMn+/EOyWP06NGBHoIdjgHBOp0OtbW1fLkjWzucbSkkx0UvJibG7rxywy+kSnQ1NjaKhoJI2cm4MXriwEhMTITZbOaPEztHQkICf798DRN2fsZVFoQrm57Y5HS1+opV5XCMxl+1ahX27NmD7u5uO4HJkMZ2EeMKcGZkZGDXrl1QqVS8YX/SpEmoqqrCsGHDnGxnJSUlsFqtksJJDDFhEh8fLxoi4ioigPtO7sTP2R574MAB3o582223ORU4qKiowPz581FeXu75jXcDJuwCgNRq6u6WgZu0YkGo3OorpFGKVb9ob28HpdTltQPJxYsXAQAjRowI8Ej6sF3ENBoNcnNzYTAYoFarBWPljh07BovFgj179vAOBavViqlTp3oUfpGSkiIoPCdPnsw7GzjkRgTYLsDt7e1uVb7m3jt48CBfHIHrb8Il+i9YsADR0dF+M5MwYRdkuLNlsJ20nZ2dgisnt/oKaZRi0fjx8fHo7e2VvHaguX79eqCH4AS3iHEmg//9v/8374QA7LV0o9GI++67z+7ec6lVjhV95dDU1ITp06fbPd/p06ejoaHB6bPuRAR4Ew4iFEdXVVWFe++9NyA1E5mwCzLcqWziOGlVKhX27NmDtrY2JCUlCZbNtv0hbdu2zUkb4Gx24eHhTq0VGfJITExEdXW1ZCtBtVqtaD4yl5xv+6wsFguOHj3K/20bM8eVi+eEkT80+EDXTGTCLsiQMyHE+nLqdDpMmTIF27dvR1ZWlsutSlJSElpaWlBeXo6Ojg4+yn7JkiUoKytDZWUlK+DpASkpKTh+/Lho5RONRoOwsDDR9/R6PQC4lWXjakcgtXUFgMOHD4NS6nGfWrlZQb4OHJaCCbsgxFVlEzl9OeVsVbKysrBv3z4+/omDawSTkpLCBJ0HnDlzBvn5+TAYDIK5qjqdDqNHjxY0O2RkZODQoUMwm81Yu3atrABcOfnNUo13VCqV0zjEriWEJ1lBgSgWy4RdiCG3L2dpaanLbZJO19cv1rEUUUVFBTIzM1FbW4vRo0cHpcDTaDSBHoIoXJ6ybV03rpXg4sWL+ftptVqxa9cu9Pb22mnwqamp2LNnjyybmlh+s0qlwqJFi5xi5mzhYvjWr1/vs34UYsI5EMVimbALMeT25RRqtCLkbFi2bBlKSkqcts1TpkzB0aNH/RYD5S6jRo0K9BBEsc1T5rT0V199FTk5OU5loABgy5YtvGAEfvSI2yJkU9Pr9di/f79T+fc1a9Y4CRqxba67FU+EcDeCIFDFYpmwCzJcqfdCDbGjo6OdvHgpKSl2oQKTJk2CXq93cjZwSeaOP8TGxka+FR/DPSwWC79Fte0XUVhYyFcu4bQZjUaD6upqNDQ08M980qRJiI+PtzunUJZNVVUVjEajLEEjtgvwth8F4H7VFDHh2NLSwndi88W2lgm7IEKOei/HW8ulK9lWu+Birrjz2Do5NBoN3njjDT56n4v4Hzt2rJ/vgHwuXLgAIPg0PL1eD4vFgttvvx2lpaWwWq12JoLi4mLU1NQgISEB8+fPx1dffYXjx487xceZTCbJ4GJOO5Ky29oi5vgCvOtHAbjfG0Uqm8KX1XaYsAsi5Kj3cry1Ut3pAWD//v3Q6/Xo6elBdHS0U+jJqlWrcOXKFRw7dgwmk8ljD50vMRqNgR6CIDU1NYiJiUFsbCzCwsKwevVqpy1maWkpwsPDUV5eDrVa7VQlOD8/HxUVFZLPmNOO3BE0Uo4vb8JB3A0pkapS7MtqO0zYBRFybR+u3PdS59Hr9fjqq69w1113obKy0m77yqWLlZaWIiwsTFalY4Y9ra2tWLVqFd59911cv35d8DkYDAb88pe/BADBnOUxY8ago6MDW7duFb2ObR8I4EdBw5VncldYeftcuXPYtnI8ePAgwsLCnOrXOY45IiLCacy+iPtjwi6IEFPv4+LiBCvaunuexMREVFVV8VH9vvTQDVQSExNx5coVWK1W0Tg72y2mp/0/bLWjKVOmIDo62mUTbl/jmNEjVb/OVugVFBTwzhoOX2TuMGEXRAip92VlZTCbzU6T5ty5c2hqahIUgEJ5ktwPoaSkhBdwvvTQDVS4gGKj0Qi1Wi3YYcy2qYxUlWApAp2NIISt+aSgoMAuflNqwfRVP2RHmLALIoQmMKUUa9eutZs0Op3OyahtGw1/5swZuzxJjUbDr6Tl5eXYsWMH2tvbER0djbKyMrsaeO+++65ot/dgypEdNGhQoIcgSFNTE0aNGoXz589j9erV6Ozs5FP4IiMjAcCuqYxer8fQoUPtek0YjUbs37/fZWc4udtPfwXw2u4U3AlH8ZfgZsIuyHCcwJxNx3bCajQap9gqoUbJSUlJ/DFcCtKgQYPsSoG/++67fFWKmJgYWK1WZGZmCkb+L1682P83RIRgqXbiSGtrKzo7O+2cDunp6WhsbOTvMyfYuPxlIc/59OnT7UJUAM/spf4M4LXdKbi7PfdHGpkiZdkJIUsJIV8TQr4lhDyhxDkZfXBJ5Vws3JYtWyRjq7gVlZvk3DF33XUX9Hq9UynwO++8E4QQEEJw7do1GI1GPqGcK91dWVkJg8HA7HUySExMFH0+JpMJEydOhFarRX5+PjZt2oSmpiankuf5+floaGiQXQJdCsdy8d6eTwpuO9rY2MjXr2tsbORbA1RUVCArK0vx68rFa82OEBIGYAeARQDOA6glhFRQSuu9PTejbwI5Rsm7WjWbm5sFw0+kfoSrVq3C4cOHoVKpeC8fJ9y4LlX+Kp8th3PnzgEIvorFWVlZ2Lt3r2gc2fnz5zFs2DCXaVy22z1vq6H4y/7quB3lnCacNzbQNkUltrGZAL6llH4HAISQXQBWAWDCTgF0Op1Tnqur7AhugjlOcikhyTVEEUpeLy4uRkZGBt8cJRgEHldvL9jgqvoKZVDEx8djxowZqK2t5T8vp1qJNxVJPPX2ekogq5q4gnAVaT0+ASFrASyllP70xt/3Avg3SunPxY6ZNWsWraurc+s63333ndNrcXFxGDJkCKxWK5qampzeT0hIQEJCAl8L35EhQ4YgLi4OJpMJ58+fd3o/MTERsbGxMBqNfMS+LUOHDkV0dDSuX7/OV861Zfjw4YiMjMS1a9f4Dva2jBgxAoMGDYLBYMAPP/xg9153dzfq6upw7tw5jB49Gunp6YiPj0d3dzfa29sxZMgQjBs3DhcvXsTHH3+MiRMnYvDgwfyxV69exejRozFu3Di0tbWhra0N7e3tfJVYrVYLANizZw8WLFiA1tZWPmOiu7sbHR0dqKqqQkREBG6++WZMnz4dPT09uHr1KkaOHAmVSoWUlBQAwA8//ACDwWA3/vDwcF7YXrp0yampdUREBK+VXbx40akYp0aj4bMjLly44BREbDKZoFarMW7cOJw7d85J+EVGRmL48OEA+n7cZrPZ7v3o6GgMHToUQJ9TwWq12r0fGxvLCwR3597Vq1fR0NCApqYmxMTEYNGiRdBqtejp6cGVK1dgNptBCEF9fT0MBgNmz57NP5Oenh60trZCpVIhJiYGn332GebOnWt3fHx8PFJTU2XNPb1ez88X23P09PTgzJkzIIRAp9MhLi4OUVFR/PGjRo2CRqNBZ2enoBaYnJzM94C9cuWK0/tjxoxBeHg4P/e6u7v94iQhhHxOKZ0l9J4Smh0ReM1JghJCHgTwIAAnjYNhDyfQ5s2bh5SUFHz33Xf8hL527Ro/cVUqFVJTU2E2m3H58mX+eG7SHjhwADk5OYiNjUVPTw+6u7sRGRnJ/+Dq6uowc+ZMjBw5Eh0dHejp6YFWq0VUVBSioqJw7733oqioCDfffDOAvu5lwapRBQvd3d3o6emB2WxGeHg40tLS+IVFq9ViyJAhaGlpwfnz55GTk4MRI0agvr4eLS0tsFqtIKTv59TQ0ICrV69izpw5TsdfvXpV9njGjx9vd36VSsUXKsjJycGQIUNw/vx5XmDZCjyl6O7uDkiVE0eU0OzmAHiaUrrkxt+/AQBK6R/EjvFEsxtIFBQUCCbmFxYWwmg04sknn7SrkmGxWLB9+3aniHuxkIOCggJ+69ve3o6EhASMHz8ep0+fhlartWuyHBcXB0opWltbER8fD7PZzEf/BxJO2xo3blyAR/IjYp5PW1uVxWLBs88+K1iS/Z133sGgQYPsQoGEjhd61u6MqaioyM4GzF3f05LwUtfm8q8TEhJw++2329mBlb4e4HvNrhbABEJIKoALANYD+HcFzttvcRX3JJXZIFX99qWXXuK3qY6pOdx1CwoK0NLSguvXr9vF6RUWFvJNlm1tda2trbjnnnvsgpyDwVHBxawFE3Jym5ubm0VLshNCnNphCh3vjr3NHUeVq6ZOcragjiFSGRkZeOihh5y0ObGSVb7c6not7CilZkLIzwG8ByAMwD8ppae9Hlk/RU7ck5hRWa1WIzs7WzDaPCMjA6dOncKqVav4KrW253SscOyYExsZGYmVK1c6Ja0XFhbavZaXlxcUaWOcPS6YkPJ8ckHEXFkndzNXuHRBLkDcmzF52tTJ1RZU7LNJSUnQ6XR2glusZJUvt7qKBBVTSvcD2K/EuUIRd1YksdWfa7EHiKfPUEoRGxuLBQsW8N7YuLg4vrFKfHw8PvjgAyxatAiEEJSUlKCqqgoWi8Uu31XoB8BV17WF0yYdX2NpY8KICRGNRoNnn30WCQkJuOmmm/D11187lVAvLS1FTEyM6CKXk5Njp103NDQ4afFCxMXFOZ3TnRQ1dwptuvosN3caGxudmq/7o6Any6Bwga3dQavV8uEe3ARzd0USW/3b29v57aFY+sy5c+f4SWo0GrFq1SocOXIEq1evttt6HjhwwK5/QXl5OXp7eyVzYsWKODqWPw+WtDHOux5Mzi6xRYrr23rw4EF89dVXTvXtAMBsNsNkMjkJoeLiYmRmZjpp13v27MGWLVtczjfbQqLcOU+dOgWz2SwrPctxvtr+HhxDYVzF9DU3NyMiIgKVlZUYNWoU9Ho96urqkJiYKNmJTSmYsJOAE2Q6nQ69vb38JK6uruZzFzm7hNwVSapwoW0JdKF4Je7voqIiREREoLq62mk1XLNmjVP/glWrVqGoqIi/rtCPsqenxylPtri4GL29vR51qPc1jqEkwYDQIsW1s+TaJzoKLq6Eek5ODgoLC516v3Z3dyM7O9vuOtziKKf2m8FgwKpVq+zOefvtt6O8vBy//vWvXX4n2/nqamGX2h5zGRQrVqwAAFRVVTmlyFVXV9vNLaUXVibsJLCtBssJFb1eD71eb/egbO0SgPOKZLvNjY6OFmxwM3/+fJSVlTmVpRbaIi9btgx6vd6uggkH90OwLQl12223oaenh9capkyZgpaWFhQWFsJkMvH1xFQqldMPTaPRuNUJfqBju0i5smEBP84VzmTg2Pu1oKDApX1NSgPiYkVtvZ5cyX052C6MrraaQotoSUkJDAYDH8/JRQMIFZctKipCamqqUyC2Ug4xJuwk4CahrXou1+Mm1a/znXfewZ49e9De3s4LkOjoaLuy1GVlZdi/fz/CwsKcBCOHmKFbo9HY2XjKy8sRERGBUaNG4Z133gEhBCaTCYMGDcKgQYOgVqsRGxvLV1QBfgx1ycnJQXl5uexQB8aPuDNXuOfW3NwMg8HAL3CRkZF8YQCuT4Wjk0JKA/K2fJKttupqqymk2XLFI6qqqvhqL1LRBkKl7JVyVDBhJwE3CW3Vc7keN6l+nbNnz8bx48dx7733OtU547YmeXl5KCoqwpo1a5x+LFwlYaHqJFxql+M2dteuXWhqakJkZKSd/aa0tBQGg8HJYF5SUoK0tDS7TAKGfPR6vaRwsJ0rOp0OJSUlGDx4MHbv3o2IiAi7Z/TOO+84lfQqLy/HqFGjnPrDOqJE+SROW5WjZcop/e6qhJhjpIBSjgom7CTgVkUu3zE3N1fS47Z9+3anySQkHLOzs1FTUyNYltp22xoREYHOzk6nrey1a9ewYcMGvowTt83UaDTo6emxs/FwxwIQDC9ZvXo19uzZw2uUxcXFMBqNMJvN0Ov1OHnyJG9nCSaio6MDPQRR9Ho9Dhw4AK1WK+pdffbZZ/nadbW1tRg5ciS6urr45ti2zyg6Ohq33HKLncBKS0vD/v37ERcX51J4KZWv6o2W6Li996bfsacwYScB93BqamrQ3t7OZzAIue3F6v6LCcekpCRkZWXxnq3q6mpcuHABZ86csZsE7777LiIiIpwcB52dnfwYuSKPOTk5dt2mbLfQb775pmh4ia2xm3NwcMKvpKQE586dCzo7HZfXGowcPHgQERERSEtLE9S8w8PDYbVasXz5cqf7KtSToq2tDXq93kk4mEwmtLa28ouZr5+RUkU2pc4jt9+xJzBh5wJbFZ5Tr/V6vWiDE0ctLCUlRXAVmzBhgpMtj7PN2K7qWq1WMNh3z549SE9PBwC+v+uYMWNEDcqJiYl8QQRXxm5b4Zefn4/CwkI0NTUFXYexYMU2pjEpKclurixduhSxsbF8yIkjQoujVqsVtP0VFRXhscce82uuqVJaoth5fFminQk7mdhuR7kHxeUpuvK+TZgwwWkVk2p3aPtgOW3Mtv0hV72CCwmZNGkSjh07huZm+25TtjajrKwsHDhwwCnmyrEngpDwMxqNyMnJCaoOY1ylEa7ySjBhmwnhOFe4BYoLOXG8l2JhQWIGfV+2HgwEvizRzoSdCzhNjVKKHTt22CUzOwoGKe+bY8KzXNtEfHw83n33XVy4cMEpLsk2JGTUqFF2oSXR0dF2sXXcmN977z2+PLharUZYWJhdTwQh4afVaoPuB+VYkilY0Ov1snp4iNmhhH7sYgHfcsNPQg1f1cRjwk4CIU2tvLwcVqtV0AvmTlVYKUeHbRCv0WhEU1OTYCPloqIiu5AQ2+11YmIiRo4caWdf5Iz6FosFYWFhUKlUsFqt2LVrF3p7exEXF4fe3l474VdcXMy3uetPPyhfwM2XzMxMpwBtVxq0LUIFHMSaSss5X7DjuGvR6XR81omSMGHngKvGNlwYh5AXzJ0EazHbhE6nsxNYS5cuFQ0e7unpsXuN+5FwP7rvvvsOUVFRKC8vR2dnJ9RqNSil2LBhA3/Nt99+G+Hh4bj33nud7JFqtRopKSm4cOEC9Ho9oqOjQ/YH5Q84zd5gMMBkMvEOLY1GA0qp0yKyZMkSWXnVjtqe0KLkuPAqWUHEl9VI9u/fzzdtt921AFBc4DFhZ4OjJrd9+3YnIcN5QYW8YO4YV92xTezfv19UC3SMLhezG65evRrR0dFOqWQWiwUrVqxwarhcXFyM5ORkXL16Ffn5+dizZw8opUGRKhascJ3F3n//fWg0GjvbaElJCR/TGB8fD5Wqr9eV3LxqIW1PbO4oWUHE19VIuGwkoV0LE3Y+xNHm5qipcf0A1q9fL/jg3TWuyrVNcEGntuEuJSUlSElJceoLIWU3fOihh9De3m53bi6diOsmxhXpBIDLly/zDpK2tjbk5+cHhb0OgFMH+WCA6wSn0WicPOj5+fkoLy/Hvffei927d0OtVqOkpAQJCQkwGAxuOxqk5o6cyjpysT0Xp+F1dHRg//79/Di8Qcz54rhrUQIm7GxwtLk5amqHDx922eVcjgBzd1vArXDctkir1WLkyJG4evWq08QTsxu2tLRgx44dTo1bBg8ezOfIJiYmYu7cudDr9ViyZImdk4OzpQQLwbidzsrKQklJCQghgs+go6MDpaWlCA8PF9WUlLCLCs2Bzs5OXLt2zSn3Wu65fKXhiQVec6XolYQJOxscNTmdToeWlhbe60kp9Tq629NJs2zZMtTV1eHJJ59EfX296Dmio6OxY8cOPu82JSUF9fX1iIqKcqpCXFJSgqioKKxbt46v5nLs2DGYTCbU1NTgtttug9FoREVFhU9W2v6GTqdDVVUVCCGimRNarVYyHUoJR4O7OxI55/JVvTmxXQvzxvoYIZubXq/ng4bl5Aa6wnHSGAwGvtBmTU2N5IrrauKVlpaCEMILterqahw/fhxqtRorV67EV199xXej5xr2AMCbb76J6OhoEEJ4wcd5/MLDw6HT6dDQ0ODpbfUJwdiDAgAWLFiAffv2OcUzlpWVQaPRSHrsuTJI3tpFs7Ky7CrryNmRSJ1LrDWnEloot2uxnZfMG+sHXNnclIjutp3s7mp5riaebeQ+0NehKj8/H2+++Sbq6+vR0NBg5/UqLCzk68L19vYKFhAoLS2160nLcA2lFNeuXePjGWNiYmA2m5GTkyOaDsUVtVQigFan0+HgwYN8ZR1vdiQ6nQ7nzp3DqVOnfJbGtWzZMp8IN0eYsHNAyuamRHS37RbD3a0B95qYd9axhwEnWBMTE/Hll1/aeb0MBgO0Wq2d9iFUa62rqwvx8fEoLS11qXky+jT39evX25VpCg//8WfW09MjWM9wxYoVit7XRYsWoaqqCvfee69dvjSHO4KqqalJsMJOSUkJX8IpFGDCzk28je621Q5tjb+2DouWlhbJ6wMQ1DAdI/c5wcoZzm0FYU1NjcutDRfeEuh+n6EE90zDwsL4e8S1T6yqqsLq1avR2dmJPXv28MUpfVEQ1TFtUG7PCbHvlJ2dbZfnm5iYCIPBEFLzgAk7P8NNjtLSUqjValRXVztVtCgpKZGsziqmYZaUlNgJQa6xyvTp050EoZy6fCUlJU5lxIMpZSwYEQssd0zmT09PR2NjI68xc5VrXGnO7njyHcsqeboj4b6T7fm4vq+hBBN2CuLOROSKb9bW1goGVboSKEIaZk1NDSZNmmQ3qUeNGoVjx44hJSXFbnUXy7dUq9V8XT6DwSDY/yAYUsbi4uICPQRBxOy6XK9W2zkSGxsLk8lk1zBJSnP2JvzDmx2JLyuR+BMm7BTCnYloa6s7evSo28ZjMaGalZUlOAaTyYQ777wT7733Hu/1ioiIELQdGY1GPPXUUwCAV1991WdGaW8ZMmRIoIcgiJjWXVNTI6jFl5eXyw4q9ke7QXe+k2NGhy8bXCsBE3YK4c5EtN1CupNPC4gL1XPnzqGpqQkdHR12bvyMjAw0NDSgubnZzuvV2NiI4uJiuwms0+nw5Zdf8ttYo9HolNAeLCs6V/WEC58JJsS0qP379wvmWtvOEamFzp1CE0ojpRn6o8G1EjBhpxCeVjxxd4sgJFR1Op1gj4Kbb74ZDQ0NggbqsrIyUEqdmi9zxvT4+HgsXboUgG9qi3kLV88u2OLsxNDpdLLKekktdO4ujP4iUBqnuzBhpxCeVjzh2hrKbVcoJFS5eDohjYGro3fy5Em7tLA77rgDAHivINcPIT4+HjExMejo6OBDTRxr8TE8Q2yOxMfHi1YvsUWqVaFjw2p/EkiN0x28EnaEkBcArARgAnAWwE8ope0KjCtgyLE9CH3G24onYj0sHBH6wciZbLGxsbBarYiJibHT5qxWK/Ly8hAbG4vS0lJ0d3fDbDYjMTERkyZNcio0wPAcoTnCadhCzZoccZw3XIP27OzsgG4dg1XjdMRbze4ggN9QSs2EkOcB/AaA6zbjQYoc24PYZxYsWGBXOUSpiieOCP1gxCrjchpDdXU1amtr0dvbi7CwMLzxxhtQq9WIiIjAlClT8NFHH/HVTtRqNX7961/b1derqalhwk4BhBa5O+64w617y80b254oQGC3jqHirfVK2FFK37f581MAa70bTmCRY3twVXrd1xPNNqi4vb0darUaKpXKyZHAbW/+8Ic/YNCgQXZpYhUVFRg2bBiamppQW1uLhIQErFq1im8EU19fD51Ox3+vYNuOhDLeBqVzBNPWUYnMIn+gpM1uI4BCBc/nd+RMIDmf8Zcb/r777uMF2O7du/m8WdvtzSuvvILVq1cLOjRsk/65ldi2EQz3vYJtOwIACQkJgR5CQBHbOsbFxaGgoMDvISBKCXFf4lLYEUIOARgu8NYWSmn5jc9sAWAG8JbEeR4E8CAAJ2ERLMixPbj6jD/c8AcPHkR4eDjefPNNfkLPnDkTtbW1oJRi0KBBSEpKQn19Pbq6upzu96lTp5wcGrYFPjnBzW2Rs7KyFBm3kgx0YSdm/zObzUEfAhIoXAo7SukdUu8TQu4HsALAQkoplTjPawBeA4BZs2aJfi6QCE0grqosV/RQrA8sZ5/wtRter9fDarXa1abjJrnjVtVisSAhIcGptplUuZ7m5mbExsaisbGRrysWjD8UrlqLbZL9QEJo60gpxdq1a4PCjheMeOuNXYo+h0Q2pfSaMkMKHI4TKDo6WrCqrFAfWO5YJW0p3Ha4paUFWq2Wb97iGJial5fn1FsiNzcXu3btwsKFC52qLTsKQOBHh0ZJSQm6u7tRWFiItLQ0v5Te8YTm5mYAoRNn5wscF6JnnnkmaOx4wYi3y+JfAGgAHCSEAMCnlNKHvR5VALGdQFIeL7HYM6Xc8Nx2WKfTobe3V7IJ0JgxY5x6S3CNgcrLyxEXF8c3e6GUIi8vz0k7LS4uhkqlwvTp0/HZZ59h3bp1qKiokCxIwJDG3ylUoRICEii89cbepNRAghFPtDSl3PDcdriystJuW+xYdj0rKwvR0dF8kxxAvAz33LlzUVtbK9hgR6VS4Ze//CUsFgtqampgMBjYFsgLApFCFSohIIFiYBo8ZNI2tANLdi1Hq/EKhkcNw+ZZj2KKapLgSmm7ikdHR/OeUU/d8JygdaxsbFt2nUsLM5lMIITwzbXFynAXFRUBAF8A4KGHHuJ/EIsWLQLQpwnExMSgpqbGzlnBcI9ApFCFSghIoGDCToR9ZytxVPsJTEYTAOBi9yVsq/k9Zndn4Gfzfmr3Walera4m2r6zlfhz3Q5c6r7MC9Tl43P4LYljZeO8vDyntDBu9eYmuVgZbqPRiHvvvRdvvfUWni9/ASci9bgedh0J8fEYp70J0Y3RKCsrw8KFC1FeXs62QF4QqDi4YHUoBQNM2Inw57odMFlNdq8ZrSZ8GdcgWbIJkL+K7ztbiWeObkePpa9z18XuS3jm6HYAP25JdDqdU2VjW8aMGQO96TQq6w/ikvYyhk8chptbx6O5uRn11gZekEaHR8M40ojiqgpEj45Gj7UHZtrn0WyztOOp6meQbZ6LidMm4r++/DVaRrXiwAcf4L7JG7y7kT4iWEs8cTD7WfDBhJ0Il7ovC75+1XTV6TVPV/E/1+3gBR1Hj6UHf67bgQPr9gLoE6Tt7e0oKipCRESE0w/ozWNv4fjgkzB3WwD0CcwrUVdx+b3folH7LxhvCOwucxdwoxqSwWJwGotFZcHn0cfx0b8+6TuGAN2kG/+n+Q2MPjsay8fnSH4XfxOsxTs5mP0s+GDCToThUcNwsfuS4Osc3Bb04qhL+HDXx/j/Zv8nLxTkrOJiAvVi9yXsO1uJ5bocpwKJjj+g107/A2aVxe54k9WEb9Rn+ZpvcukwdgLE/jVO+AabsDOZ+oS4Wq0O8EiEYfaz4IMJOxE2z3rUbosJANowLTbPehSAwxaUAC3GVmyr+T2sVituCZ8iuorb2ugIIRCLw+a2s7ZCRugH1K3tFjzeCvcEHQAnQcchJpQDyfnz5wEEd5wds58FF0zYQdxJAEDydcctqNFqwvbDz+E+892Cq7ijjU4i4YTXqITGYBvjV1G4X1ADdRdtmBbacA3ajR1O79lqswxGqDLghZ2Uk2D5+BzR7ZuYttMT3oNNDwoHHAsJSCm4sYiNDRDWQOUSp45Fp6kLw6OGYe7ouTjYeNDpM7baLIMRygRfAX8/I+UkkEJM25HSgtzVwFRE5XJsy8fnYOvcLRgRNRwEBCOihGo2CGMr6Pac2euk1cWpY7F17pags9cxGJ4w4IWdmIbmyk61edaj0IZp7V6T0oL2nRXvsTkobJDTa9owLaxU2O7mOLbl43NwYN1enNhYiwPr9soWeBQUF7sv4d2G3YKaYWREJBN0jH7DgBd2nmhogLBGJaUFSWmKvdZep9dWTlghKrRcjU1IEHtCMDomOBITE1nMGsMtBrzNzpXXVQopm54jUoKDC+615ei5ox6PzdG5EquOASEEHcZOUMivrhXMjonY2NhAD4FHysHFCB4GvLBz5XVVCrG4PTEudV/2amxCgnjf2Ur8tvp3sq4f7I4Jo9EIANBoNAEdhysHFyN4IFLhD75i1qxZtK6uzu/X9RZvVnDHHwXQJ1A0YWp0mDqdPj8iajifRaHU2F15beM1cegwdoaEdvLdd98BCHyc3dLCFYKLmNLPjyEPQsjnlNJZQu8NeM1OLt6u4GJaGgCPt9HuICfsZVD4IFRv+EDR6/Z3PHVwMfwPE3YykQpRkasBSdn4fL2NlvPjYz9Q95GTVsgIDpiwk4kvV3B3HB2eIsdmyH6g7uONg4vhXwZ86IlcPA1RCRY2z3oUEaoI0ffZD9Qz3A1BYgQO5qCQiZiDIZQm9rz/u0DQGaIiKjw7b1vIfA8AMBj6ylRFR0cHeCSMYII5KBTAXyEqrvDGIywk6ADASq0hJegAJuQY7sOEnRv4w7Ymxb6zldj64TY+CPli9yVs/XAbPzZXqIhKMAVNRULPmnH9+nUAwKBBzql2DIYQoTfLBzDPf/KCU7aFmZrx/CcvyDpeLNfWSq1YWrgC0/6ZgaWFKyTzeIOFixcv4uLFi4EeBiOEYJpdCCG2DRV73RZXAozz1LIMAEZ/hWl2AwRXJatskVPiisEINZiwCyGESkFJvW6Lu/GALMCY0d9gwi6E0IQLN5cRe90Wd+MBQyV+kMGQCxN2IUSHUcRmJ/K6Le7WuJs7eq7szwaC4cOHY/hw+VWZGQxFhB0h5DFCCCWEsGqKPsSbLA4u0j9eI6/f6tFzR90am7+JjIxEZGRkoIfBCCG8FnaEkNEAFgFo9n44DCncLQXvyPLxOaje8AH+O/v3Lu18XO/aYOXatWu4du1aoIfBCCGU0OxeBvArwI0SuAyPUCoPc/n4HHx6fw1ObqyT7FfxVM0zQSvwLl26hEuXvG8h6e41169fj/Hjx2PKlClYtmwZvvnmG7+OQYj58+cjFNIvX3/9dUyYMAETJkzA66+/LviZf/3rX1i4cCHS0tIwf/58vj8w0Nd4fvHixZg8eTKmTJmCpqYmt67vVZwdISQXwAVK6UlCRDos//jZBwE8CABjxozx5rIDGqWzOKRaMfZae/HHT19k8Xbo6/G7evVq3H///di1axcA4MSJE7h8+TJuvvlmv43DbDYjPDz0wmOvXr2Kbdu2oa6uDoQQzJw5E7m5uUhISLD73GOPPYb77rsP999/P6qqqvCb3/wGb775JgDgvvvuw5YtW7Bo0SIYDAaoVO7pai4/TQg5RAj5UuC/VQC2ANgq50KU0tcopbMopbOSkpLcGiTDdywfn4OVE1aIvi/UNHsgcvjwYURERODhhx/mX5s2bRqysrJAKcXjjz+OW265BTqdDoWFhQCAI0eOYP78+Vi7di0mTZqEDRs28I3Ra2trceuttyI9PR2ZmZno6upCT08PfvKTn0Cn02H69Ok4fPgwAGDnzp248847sXLlSixevBjXr1/H+vXrkZaWhnXr1vGpcwDwyCOPYNasWZg6dSqeeuop/vWUlBQ89dRTmDFjBnQ6HRoaGgD0FVTgrpmWlobi4mIAwPvvv485c+ZgxowZuPPOO/nCC57y3nvvYdGiRRg8eDASEhKwaNEiHDhwwOlz9fX1WLhwIQDg9ttvR3l5Of+62WzGokWLAPTlRrtrs3W5RFBK7xB6nRCiA5AKgNPqkgF8QQjJpJT6d3/B8Jh9Zyux5wwrH+6KL7/8EjNnzhR8r6SkBCdOnMDJkyfR2tqKjIwMzJs3DwBw/PhxnD59GiNHjsRtt92Gjz76CJmZmVi3bh0KCwuRkZGBzs5ODBo0CK+88goAQK/Xo6GhAYsXL+a3yZ988glOnTqFwYMH46WXXkJkZCROnTqFU6dOYcaMGfxYtm/fjsGDB8NisWDhwoU4deoU0tLSAPR1ZPviiy9QUFCAF198EX//+9/x+9//HnFxcdDr9QCAtrY2tLa24tlnn8WhQ4cQFRWF559/Hi+99BK2brXXa1544QW89dZbTvdj3rx5ePXVV+1eu3DhAkaPHs3/nZycjAsXLjgdm56ejuLiYvznf/4nSktL0dXVhStXruCbb75BfHw88vPz0djYiDvuuAPPPfccwsLCpB+cDR7rw5RSPYCh3N+EkCYAsyilrZ6ek+F/XJVrj1MHTxevYOXo0aO4++67ERYWhmHDhiE7Oxu1tbWIjY1FZmYmkpOTAfRpgk1NTYiLi8OIESOQkZEB4MdOaUePHsXmzZsBAJMmTcLYsWN5YcdpRQDw4Ycf4he/+AUAIC0tjRdmAFBUVITXXnsNZrMZFy9eRH19Pf9+fn4+AGDmzJkoKSkBABw6dIjflgNAQkIC9u7di/r6etx2220AAJPJhDlz5jh978cffxyPP/64rHskVEpOyPT14osv4uc//zl27tyJefPmYdSoUQgPD4fZbEZNTQ2OHz+OMWPGYN26ddi5cyf+4z/+Q9b1AZYbO6DZd7ZSsnpxOAnHr+fIm8z+ZsSIEX693tSpU7F7927B96RqQtp2PwsLC4PZbAalVPCHLnWeqKgou7+Fjm9sbMSLL76I2tpaJCQk4IEHHkBPz48LGTcWbhzcNR3PRSnFokWL8M4774iOB3BPs0tOTsaRI0f4v8+fP4/58+c7HTty5EheEBsMBhQXFyMuLg7JycmYPn0632ApLy8Pn376qVvCTrGgYkppCtPqQgeuGKkYKqLCM/OeClrnxKBBg/xa3mnBggUwGo3429/+xr9WW1uL6upqzJs3D4WFhbBYLGhpacGHH36IzMxM0XNNmjQJ33//PWprawEAXV1dMJvNmDdvHi88vvnmGzQ3N2PixIlOx9t+7ssvv8SpU6cAAJ2dnYiKikJcXBwuX76MykrXnvTFixfjL3/5C/93W1sbZs+ejY8++gjffvstgL4wHyGv8+OPP44TJ044/eco6ABgyZIleP/999HW1oa2tja8//77WLJkidPnWltbYbX2Vef5wx/+gI0bNwIAMjIy0NbWhpaWFgBAVVUVpkyZ4vL72cIyKAYoUttXFYK/crHBYPDaaO4OhBCUlpbi4MGDGD9+PKZOnYqnn34aI0eOxOrVq5GWlob09HQsWLAAf/zjHyWzO9RqNQoLC7F582akp6dj0aJF6OnpwaZNm2CxWKDT6fhtmlBf3EceeQQGgwFpaWn44x//yAvW9PR0TJ8+HVOnTsXGjRv5bagUTz75JNra2nDLLbcgPT0dhw8fRlJSEnbu3Im7774baWlpmD17Nu/Q8JTBgwfjd7/7HTIyMpCRkYGtW7fy2/KtW7eioqICQJ9TZ+LEibj55ptx+fJlbNmyBUCfNvriiy9i4cKF0Ol0oJTiZz/7mVtjYGXZByjT/pkBKhIaSUBwYmOtn0fkHsHSN5YRXEiVZWea3QBFKsWMggZtMDGD4SlM2A1QXKWYPXN0OxN4jH4FE3YDlOXjc5A5QtyIzgp4usYXTX8OHDiAiRMn4qabbsJzzz0n+rkjR45g2rRpmDp1KrKzs/nXN27ciKFDh+KWW25RfGyhDhN2A5i/5RTgzklrRd9nBTyFoZTyHkMlsVgsePTRR1FZWYn6+nq88847qK+vd/pce3s7Nm3ahIqKCpw+fRrvvvsu/94DDzwgmJnAYMJuwPPkrU+IFgMI5gKeo0aNwqhRo/x2vaamJkyePBmbNm3CjBkzcO7cOQDAf/3Xf2HGjBlYuHAhHxbhKceOHcNNN92EcePGQa1WY/369Xy6lC1vv/028vPz+RzzoUP52H7MmzeP93Iy7GHCjuF16ahAoNFoBMMyfMnXX3+N++67D8ePH8fYsWPR3d2NGTNm4IsvvkB2dja2bdvmdMxbb72FadOmOf23dq2zRi03peqbb75BW1sb5s+fj5kzZ+KNN95Q9ov2U1gGBSNoGoC7Q2dnX3VmLtXKH4wdOxazZ8/m/1apVFi3bh0A4J577uHTsWzZsGEDNmzYIOv8clOqzGYzPv/8c3zwwQe4fv065syZg9mzZ/u1+koowoQdA0DgG4C7S2trX7KOP4WdY8qWI0KC6a233sILLzj39b3pppuc0s+Sk5P57THQl1I1cuRIp2OTk5ORmJiIqKgoREVFYd68eTh58iQTdi5g21gGw0OsVisvsN5++23Mnevct2PDhg2CKVVCebYZGRk4c+YMGhsbYTKZsGvXLuTm5jp9btWqVaipqYHZbMa1a9fw2WefYfLkycp/wX4G0+wYDA+JiorC6dOnMXPmTMTFxfF17DwlPDwcf/nLX7BkyRJYLBZs3LgRU6dOBQD89a9/BQA8/PDDmDx5MpYuXYq0tDSoVCr89Kc/5UNN7r77bhw5cgStra1ITk7Gtm3b3EqW78+wdDFGSMLSxRhCsHQxBoMx4GHbWEZIwhXEZDDkwoTdAGff2cqQCjnhUKvVgR4CI8Rgwm4AwxXw5OraXey+xBf0DHaB19HR1wgoLk5e028Gg9nsBjBCBTxDpQDAlStXcOXKlUAPgxFCMM2uHyJ3ayqW6M8KADD6I0yz62dwW9OL3ZdAQfmtqVBtOrFE/2AuAMBgeAoTdv0Md7amoVgAgMHwFLaN7We4szUNxQIADIanMGHXzxgeNUywF6zY1jTUCgBwcLXcGAy5sG1sP8Pdrem+s5VYWrgC0/6ZgaWFK0Km70R4eDjCw9lazZAPmy39DHe2pqEcZ9fW1gYASEhICMj1e3t7cf78efT0CPfeZfgWrVaL5ORkREREyD6GFQIYoOw7W4knP3wKVurcS2FE1HAcWLc3AKOST6ALATQ2NiImJgZDhgwRrGPH8B2UUly5cgVdXV1ITU21e8+nhQAIIZsJIV8TQk4TQv7o7fkYvofT6IQEHcDi7OTQ09PDBF2AIIRgyJAhbmvVXm1jCSG3A1gFII1SaiSEDHV1DCPwCIWn2MLi7OTBBF3g8OTee6vZPQLgOUqpEQAopT94eT6GHxDy1nKwOLvQwdO+tX/961+9atKzbNkytLe3AwBeffVVTJ48GRs2bEBFRYVkr1tPKCsrE2wn6QneOihuBpBFCNkOoAfAY5TSWu+HxfAlBAQUwrZa2wDkYHdSMDzj4Ycf9ur4/fv38/8uKChAZWUlbzsTKiPvDWVlZVixYgWmTJni9blcanaEkEOEkC8F/luFPmGZAGA2gMcBFBER/ZIQ8iAhpI4QUudtf02Gd4gJOg6pFLNgISUlBSkpKYEehmz0ej0KCgrwzDPPoKCgAHq9XrFzHzlyBPPnz8fatWsxadIkbNiwge9U9sQTT2DKlClIS0vDY489BgB4+umn8eKLLwIAamtrkZaWhjlz5uDxxx/ny7vv3LkT+fn5WLp0KSZMmIBf/epX/PVSUlLQ2tqKhx9+GN999x1yc3Px8ssvY+fOnfj5z38OALh8+TJWr16N9PR0pKen4+OPPwYA5OXlYebMmZg6dSpee+01/pzR0dHYsmUL0tPTMXv2bFy+fBkff/wxKioq8Pjjj2PatGk4e/asV/fJpWZHKb1D7D1CyCMASmjfnT1GCLECSATgJM0opa8BeA3o88Z6PGKGX+A0vGDV7lSq0AkR1ev1qKqqQm5uLsaMGYPm5mZUVFQAAHQ6nSLXOH78OE6fPo2RI0fitttuw0cffYQpU6agtLQUDQ0NIITwW09bfvKTn+C1117DrbfeiieeeMLuvRMnTuD48ePQaDSYOHEiNm/ebNfX9q9//SsOHDiAw4cPIzExETt37uTf+8UvfoHs7GyUlpbCYrHAYDAAAP75z39i8ODBuH79OjIyMrBmzRoMGTIE3d3dmD17NrZv345f/epX+Nvf/oYnn3wSubm5WLFihWCfXXfxdsaUAVgAAISQmwGoAbR6eU6GwjgGDg9yCDoWI5i9sqFU4qmmpga5ublITU1FWFgYUlNTkZubi5qaGsWukZmZieTkZKhUKkybNg1NTU2IjY2FVqvFT3/6U5SUlCAyMtLumPb2dnR1deHWW28FAPz7v/+73fsLFy5EXFwctFotpkyZgn/961+yx1NVVYVHHnkEABAWFsbXHXz11Vd57e3cuXM4c+YMgL5irCtWrAAAzJw5E01NTR7dBym8FXb/BDCOEPIlgF0A7qeBCNxjiCJUBcVMLSBw7c0KZq9sR0cHX8Az2GltbXVKbxszZgzf+1YJNBoN/++wsDCYzWaEh4fj2LFjWLNmDcrKyrB06VK7Y1z9VIXO6Q1HjhzBoUOH8Mknn+DkyZOYPn06Hz4SERHBe1iVuJYQXgk7SqmJUnoPpfQWSukMSmmVUgNjKINQmEmvtRdxmliMiBoOAoI4dSwiVPaR6MwrqxyJiYlobm62e625uRmJiYk+va7BYEBHRweWLVuGP/3pTzhx4oTd+wkJCYiJicGnn34KANi1a5di1164cCH+53/+BwBgsVjQ2dmJjo4OJCQkIDIyEg0NDfx1pYiJiUFXV5ciYwodwwfDI8S2oh3GThxYtxcnNtbiw3uqsC1rKy/8RkQNx9a5W4LWXhdqZGVloaKiAo2NjbBYLGhsbERFRQWysrJ8et2uri6sWLECaWlpyM7Oxssvv+z0mX/84x948MEHMWfOHFBKFStz/8orr+Dw4cPQ6XSYOXMmTp8+jaVLl8JsNiMtLQ2/+93vMHv2bJfnWb9+PV544QVMnz7dawcFSxfr5ywtXCEYVxcKKWFSBDpd7KuvvsLkyZNlf16v16Ompgatra1ITExEVlaWYs4JbzAYDHy83nPPPYeLFy/ilVdeCfCo5CH0DKTSxVghgH7O5lmP2iX7A2yLGgh0Ol1QCDdH9u3bhz/84Q8wm80YO3asnUe1v8GEXT+nvxboDJRG199Yt24d1q1bF+hh+AUm7AYAoVqgk8FQEuagYDAYAwIm7BgMxoCACTsGgzEgYMKOwQhRtm/fjqlTpyItLQ3Tpk3DZ599hp/+9Kcel0T6/vvv7XJQ7777bqSlpeHll1/G1q1bcejQIaWGDgD405/+hGvXril6TimYg4LBCEE++eQT7N27F1988QU0Gg1aW1thMpnw97//3eNzjhw5Ert37wYAXLp0CR9//LFb+bDu8qc//Qn33HOPU86ur2CaHYPhB5Tu4nbx4kUkJiby+auJiYkYOXIk5s+fDy5g/x//+AduvvlmzJ8/Hz/72c/48ksPPPAAfvGLX+DWW2/FuHHjeAHX1NTEl3havHgxfvjhB0ybNg01NTV44IEH+M/V1tbi1ltvRXp6OjIzM9HV1YWmpiZkZWVhxowZmDFjBl/SSaz81Kuvvorvv/8et99+O26//Xav7oVsKKV+/2/mzJmUEVzs/XY/XbJrOU3/xyy6ZNdyuvfb/YEeUlBTX18v+7N7v91PM3feRtP+MZP/L3PnbV7d466uLpqenk4nTJhAH3nkEXrkyBFKKaXZ2dm0traWXrhwgY4dO5ZeuXKFmkwmOnfuXProo49SSim9//776dq1a6nFYqGnT5+m48ePp5RS2tjYSKdOner0b+6Yd999lxqNRpqamkqPHTtGKaW0o6OD9vb20u7ubnr9+nVKKaXffPMN5X7jhw8fprGxsfTcuXPUYrHQ2bNn05qaGkoppWPHjqUtLS0e3wOhZwCgjorIHabZMQQrowR78c5QQqgYg21FaE+Ijo7G559/jtdeew1JSUlYt26dXfbDsWPHkJ2djcGDByMiIgJ33nmn3fF5eXlQqVSYMmUKLl+WX8rr66+/xogRI5CRkQEAiI2NRXh4OHp7e/Gzn/0MOp0Od955p53dUKj8VCBgNjuG5I+RBSN7j1gxBm/rBYaFhWH+/PmYP38+dDodXn/9df496kb5JleftYVSKtjs5uWXX8awYcNw8uRJWK1WaLU/1kxUulSUpzDNjuGzHyOjD7G6gN7UC/z666/5wpdAX1XhsWPH8n9nZmaiuroabW1tMJvNKC4u9vhatkyaNAnff/89amv7Ws10dXXBbDajo6MDI0aMgEqlwptvvgmLxeLyXEqWb5IDE3YMn/wYGT+yedaj0DpUh/a2GIPBYMD999/P95eor6/H008/zb8/atQo/Pa3v8W//du/4Y477sCUKVMUKd+kVqtRWFiIzZs3Iz09HYsWLUJPTw82bdqE119/HbNnz8Y333yDqKgol+d68MEHkZOT4zcHBSvxxOBtdo6VUVhNO3HcLfG072yl34sxcOWbzGYzVq9ejY0bN2L16tU+vaY/YSWeGG7TXyujBBOBKMbw9NNP49ChQ+jp6cHixYuRl5fn1+sHG0zYMQCwyij9Ea5dIqMPZrNjMBgDAibsGAwPCYS9m9GHJ/eeCTsGwwO0Wi2uXLnCBF4AoJTiypUrdrF8cmA2OwbDA5KTk3H+/Hm0tLQEeigDEq1Wi+TkZLeOYcKOwfCAiIgIpKamBnoYDDdg21gGgzEgYMKOwWAMCJiwYzAYA4KApIsRQloAuFsCNRFAqw+G4ytCbbxA6I051MYLhN6YQ228YymlSUJvBETYeQIhpE4s5y0YCbXxAqE35lAbLxB6Yw618UrBtrEMBmNAwIQdg8EYEISSsHst0ANwk1AbLxB6Yw618QKhN+ZQG68oIWOzYzAYDG8IJc2OwWAwPCaohR0h5E5CyGlCiJUQMsvm9RRCyHVCyIkb//01kOO0RWzMN977DSHkW0LI14SQJYEaoxiEkKcJIRds7uuyQI9JDELI0hv38VtCyBOBHo8rCCFNhBD9jfsalGW6CSH/JIT8QAj50ua1wYSQg4SQMzf+nxDIMXpDUAs7AF8CyAfwocB7Zyml027897CfxyWF4JgJIVMArAcwFcBSAAWEkDD/D88lL9vc1/2BHowQN+7bDgA5AKYAuPvG/Q12br9xX4M1lGMn+uamLU8A+IBSOgHABzf+DkmCWthRSr+ilH4d6HG4g8SYVwHYRSk1UkobAXwLINO/o+s3ZAL4llL6HaXUBGAX+u4vwwsopR8CuOrw8ioAXI/G1wHk+XNMShLUws4FqYSQ44SQakJIVqAHI4NRAM7Z/H3+xmvBxs8JIadubGmCdcsSKvfSFgrgfULI54SQBwM9GDcYRim9CAA3/j80wOPxmICXeCKEHAIwXOCtLZTScpHDLgIYQym9QgiZCaCMEDKVUtrps4Ha4OGYnTsL9/0A/IrU2AH8D4Dfo29cvwfw/wPY6L/RySYo7qWb3EYp/Z4QMhTAQUJIww1NiuEnAi7sKKV3eHCMEYDxxr8/J4ScBXAzAL8Yfj0ZM/q0j9E2fycD+F6ZEclH7tgJIX8DsNfHw/GUoLiX7kAp/f7G/38ghJSibyseCsLuMiFkBKX0IiFkBIAfAj0gTwnJbSwhJIkz7hNCxgGYAOC7wI7KJRUA1hNCNISQVPSN+ViAx2THjcnMsRp9zpZgpBbABEJIKiFEjT7HT0WAxyQKISSKEBLD/RvAYgTvvXWkAsD9N/59PwCxnUvwQykN2v/Q94M7jz4t7jKA9268vgbAaQAnAXwBYGWgx+pqzDfe2wLgLICvAeQEeqwCY38TgB7AKfRN8hGBHpPEWJcB+ObG/dwS6PG4GOu4G3P15I15G5TjBfAO+kxEvTfm8H8AGII+L+yZG/8fHOhxevofy6BgMBgDgpDcxjIYDIa7MGHHYDAGBEzYMRiMAQETdgwGY0DAhB2DwRgQMGHHYDAGBEzYMRiMAQETdgwGY0Dw/wDCOqoT17PBEwAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "coeqtl_sig = coeqtl_df[coeqtl_df['corrected_p_bios']<=0.05]\n",
+ "coeqtl_nonsig = coeqtl_df[coeqtl_df['corrected_p_bios']>0.05]\n",
+ "plt.figure(figsize=(5, 5))\n",
+ "plt.scatter(coeqtl_nonsig['MetaPZ_flippedforAF'], \n",
+ " coeqtl_nonsig['flipped_zscore_bios_flippedforAF'], \n",
+ " label='Insignificant',\n",
+ " edgecolor='gray',\n",
+ " facecolor='white', alpha=1)\n",
+ "plt.scatter(coeqtl_sig['MetaPZ_flippedforAF'],\n",
+ " coeqtl_sig['flipped_zscore_bios_flippedforAF'], \n",
+ " label='Significant',\n",
+ " edgecolor=color_dict[celltype],\n",
+ " facecolor=color_dict[celltype], alpha=1)\n",
+ "plt.plot([-15, 12], [0, 0], linestyle='--', color='lightgray')\n",
+ "plt.plot([0, 0], [-6.5, 4], linestyle='--', color='lightgray')\n",
+ "plt.legend()\n",
+ "\n",
+ "concordance_rate = coeqtl_sig[coeqtl_sig['is_concordant']].shape[0] / coeqtl_sig.shape[0]\n",
+ "print(concordance_rate)\n",
+ "\n",
+ "celltype_rb = bios_replication_filtered_df.loc[celltype]['r']\n",
+ "plt.text(3, -5, f'Concordance = {concordance_rate:.2f}\\nrb = {celltype_rb:.2f}')\n",
+ "\n",
+ "# plt.savefig('bios_replication.cd4t.filtered_results.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 62,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "def plot_ci_manual(t, s_err, n, x, x2, y2, ax=None):\n",
+ " \"\"\"Return an axes of confidence bands using a simple approach.\n",
+ " \n",
+ " Notes\n",
+ " -----\n",
+ " .. math:: \\left| \\: \\hat{\\mu}_{y|x0} - \\mu_{y|x0} \\: \\right| \\; \\leq \\; T_{n-2}^{.975} \\; \\hat{\\sigma} \\; \\sqrt{\\frac{1}{n}+\\frac{(x_0-\\bar{x})^2}{\\sum_{i=1}^n{(x_i-\\bar{x})^2}}}\n",
+ " .. math:: \\hat{\\sigma} = \\sqrt{\\sum_{i=1}^n{\\frac{(y_i-\\hat{y})^2}{n-2}}}\n",
+ " \n",
+ " References\n",
+ " ----------\n",
+ " .. [1] M. Duarte. \"Curve fitting,\" Jupyter Notebook.\n",
+ " http://nbviewer.ipython.org/github/demotu/BMC/blob/master/notebooks/CurveFitting.ipynb\n",
+ " \n",
+ " \"\"\"\n",
+ " if ax is None:\n",
+ " ax = plt.gca()\n",
+ " \n",
+ " ci = t * s_err * np.sqrt(1/n + (x2 - np.mean(x))**2 / np.sum((x - np.mean(x))**2))\n",
+ " ax.fill_between(x2, y2 + ci, y2 - ci, alpha=0.1, color='gray')\n",
+ " return ax\n",
+ "\n",
+ "from scipy import stats\n",
+ "def equation(a, b):\n",
+ " \"\"\"Return a 1D polynomial.\"\"\"\n",
+ " return np.polyval(a, b) \n",
+ "\n",
+ "x=coeqtl_df['MetaPZ_flippedforAF']\n",
+ "y=coeqtl_df['flipped_zscore_bios_flippedforAF']\n",
+ "\n",
+ "p, cov = np.polyfit(x, y, 1, cov=True) # parameters and covariance from of the fit of 1-D polynom.\n",
+ "y_model = equation(p, x) \n",
+ "# Statistics\n",
+ "n = y.size # number of observations\n",
+ "m = p.size # number of parameters\n",
+ "dof = n - m # degrees of freedom\n",
+ "t = stats.t.ppf(0.975, n - m) # used for CI and PI bands\n",
+ "# Estimates of Error in Data/Model\n",
+ "resid = y - y_model \n",
+ "chi2 = np.sum((resid / y_model)**2) # chi-squared; estimates error in data\n",
+ "chi2_red = chi2 / dof # reduced chi-squared; measures goodness of fit\n",
+ "s_err = np.sqrt(np.sum(resid**2) / dof) # standard deviation of the error\n",
+ "\n",
+ "# Plotting --------------------------------------------------------------------\n",
+ "fig, ax = plt.subplots(figsize=(5, 5))\n",
+ "# Data\n",
+ "ax.scatter(\n",
+ " x, y\n",
+ ")\n",
+ "\n",
+ "\n",
+ "# Fit\n",
+ "ax.plot(x, y_model, \"-\", color=\"0.1\", linewidth=1.5, alpha=0.5, label=\"Fit\") \n",
+ "\n",
+ "x2 = np.linspace(np.min(x), np.max(x), 100)\n",
+ "y2 = equation(p, x2)\n",
+ "\n",
+ "# Confidence Interval (select one)\n",
+ "plot_ci_manual(t, s_err, n, x, x2, y2, ax=ax)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":19: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " coeqtl_sig['celltype'] = celltype\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 46,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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119/ffJxW7du5ayzzmLdunWcfvrp9Pf3c+DAAc455xw2bNjAhg0beP755wF46qmn2LJlC+95z3tYvnw573//+9Fa86//+q8cO3aMt7/97bz97W8/6WtcsGABt956K29729u4//77+eEPf8imTZtYt24df/mXf8ng4CDPP/88Dz74IJ/73OdYv349b7311rB2/v73v+fUU09lzZo1fPjDHyYYDGb9vv7mN7/hQx/6EEopzjzzTHp7e2lrazvpce985ztRSqGU4vTTT+fIkSMAKKXo7+9Ha43P56O+vh6bTbbjigLkG5NGxhur4+TnRQJmz53dCcF+83H+2RDN/j4YC4lNxY1N0WiUz33uc3z7298edrvb7UYpBcDAwEDy/0JMFxKbSrPfVOqxSQZ3U1Gispy/F3TMfAz0mtsLMcl79y6++GIOHz7M0qVLufHGG3n66adPesyxY8f42te+xosvvsjjjz/Orl27ht3f1tbGc889x8MPP8wXvvCFk57/4IMPsnjxYl577TXOOeec5O2hUIhrrrmG733ve2zbto0nnngCl8vFjBkzePzxx3nllVe47777uPnmm5PPefXVV/nud7/Lzp072bdvH3/84x+5+eabmTVrFk8++SRPPvlk2q/T6XTy3HPPce211/Lud7+brVu3sm3bNlasWMFdd93FWWedxRVXXMF3vvMdXnvtNRYvXpx8biAQ4Prrr+e+++7j9ddfJxKJ8B//8R+ASUF48MEHT3q9o0ePMnfuUCd6zpw5HD16NNOPgXA4zD333MMll1wCwCc/+UlaW1uZNWsWa9as4Xvf+x4Wi4QGUYB8YlK6eNN3FE4cGP48qx0aToEF58Dyy8xHm3NCz7qT2FTc2PRv//ZvXHHFFbS0tJx0369+9SuWL1/OZZddxn/913+l/bqEKFcSm0qz3wSlHZukBzcVjdcB5ZO8d8/tdvPyyy9z55130tTUxDXXXMNPfvKTYY/585//zHnnnUd9fT12u52rr7562P1XXnklFouFlStX0tHRkfdr7969m5aWFjZt2gRATU0NNpuNcDjMxz72MdasWcPVV189LJ/79NNPZ86cOVgsFtavX8+BAwfyeq1rrrkm+f8dO3ZwzjnnsGbNGn7605/yxhtv5GznwoULWbp0KQDXXXcdzzzzDAC33norV1xxxUnPMavzw2WbRbrxxhs599xzk0H8scceY/369Rw7dozXXnuNT37yk/T19WV8vhAnyScmpYs3dQuhZtbw553zOQj1w5uPw66HzccT+wufvCqAxKbixaZjx45x//33c9NNN6V93auuuopdu3bx61//mn/4h3/I/gUKMZEmMdMpQWJTafaboLRjk+ReTVXjcUC597CZQU/lrJnQqnRWq5UtW7awZcsW1qxZw913383111+fvD/dGy5VIjUhn8em0lqnfePefvvtNDc3s23bNmKxGE6nM+1rWa1WIpFIXq9VVVWV/P/111/Pr3/9a9atW8dPfvITnnrqqZztLNScOXM4fHjoZ3bkyJFk2sZIX/3qV+nq6uI///M/k7f9+Mc/5gtf+AJKKZYsWcLChQvZtWsXp59+esFtEdNYrpiUKd70HYW3f3HotvYdQPy9mnw7THzKi8Smp3K2s1D5xKZXX32VvXv3smTJEgAGBwdZsmQJe/fuHfa4c889l7feeovu7m4aGxsLbosQY5LIPHDWDs90Gs3EeoEkNj2Vs52FGmu/KVUpxiZZuZvOxnPvXh52797Nm2++mfz8tddeY/78+cMec/rpp/P0009z4sQJIpEIv/zlL8fltZcvX86xY8fYunUrAP39/UQiEbxeLy0tLVgsFu655x6i0WjOa1VXV9Pf35/X6/b399PS0kI4HOanP/1pzmssX76cAwcOJDs299xzD+edd17W17jiiiv47//+b7TWvPjii3g8nrTpTT/60Y947LHH+NnPfjYs7XLevHn8/ve/B6Cjo4Pdu3ezaNGivL4+IfKWb7xpfQjqFsApF8GKvzAf6xZMaDVgiU3Fi02XXXYZ7e3tHDhwgAMHDlBZWZl8jb179yY7bq+88gqhUIiGhoa8vj4hxlWRqpRLbCrNflOpxyYZ3E1n47V3L08+n4/rrruOlStXsnbtWnbu3Mktt9wy7DGzZ8/mS1/6EmeccQYXXnghK1euxOPxjPm1KyoquO+++7jppptYt24dF110EYFAgBtvvJG7776bM888kz179gybPcrkhhtu4NJLL027MXikr33ta5xxxhlcdNFFLF++PHn7tddey3e+8x1OPfVU3nrrreTtTqeTH//4x1x99dWsWbMGi8XCxz/+cSBz7vg73/lOFi1axJIlS/jYxz7GD37wg2H3HTt2DICPf/zjdHR0sHnzZtavX8+tt94KwD/8wz/w/PPPs2bNGi644AK+9a1vlczskygj+cYb72GzopdqgjMKJDYVNzZl8stf/pLVq1ezfv16/vZv/5b77ruv5AoXiGmiCHEJJDYVOzZl6jeVemxSo1nOLJaNGzfqRGUgMU7ad5iZJ+9hM4O+4vIJTzHIxefz4Xa7iUQiXHXVVXz4wx/mqquuKmqbxMRRSr2std5Y7HaMhcSmPKWLNzD8Nl8nWCvMzHiCv9d8npq+WQQSm6YfiU8CMHvsEnEooUTiEkhsmo6yxSbZczfdjcfevXF2yy238MQTTxAIBLj44ou58sori90kIcR4GBlv0u1j6TuG2Wy30MyMB/rMCt+GDxalyakkNgkxTa243MQqKLm4BBKbxHAyuBMl57bbbit2E4QQkyF1H4uvE7p3w0A32F1msNd31KzmbfhgSUxCSWwSYppKVAROzTIokbgEEpvEcDK4E0IIURyJCpq+TjjyZ3Oouase/MchPDgpleiEECIvJZjpJEQ6UlBFTKr29nauvfZaFi9ezMqVK3nnO9/Jnj17it0stmzZQinvSXjqqad4/vnnk5/fcccd/Pd///eor/fNb36TJUuWsGzZMh577LG0j9m2bRubN29mzZo1XH755cPOvtu+fTubN29m1apVrFmzhkAgMOq2iGkm9ayoEwfg+H6zYmd1gN0J0RBUNU5KJbphzZLYNCqlFJtCoRB//dd/zZo1a1i3bl3OEupCTAUSm0anGLHptdde48wzz2T9+vVs3LiRP//5zwAcOHAAl8vF+vXrWb9+fbLgy0SRlTsxabTWXHXVVVx33XXce++9gHkjdHR0JA+fnAyRSASbrfR+9bO166mnnsLtdnPWWWcBjCkw7Ny5k3vvvZc33niDY8eOceGFF7Jnzx6sVuuwx330ox/ltttu47zzzuO//uu/+M53vsPXvvY1IpEIH/jAB7jnnntYt24dPT092O32UbdHTCMj99iFg3DElNmmugXCAYgEoGXdpFSiS5DYlN1UiU0//OEPAXj99dfp7Ozk0ksvZevWrcNKmAsxlUhsyq7UYtPnP/95vvKVr3DppZfyv//7v3z+859PTjItXryY1157bdRtKIREPDFpnnzySex2+7A32Pr16znnnHPQWvO5z32O1atXs2bNGu677z7AvDm3bNnCe97zHpYvX8773//+5NkiW7du5ayzzmLdunWcfvrp9Pf3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SzZu3Mh///d/N2jdlXAIdWreaKsrrppJ6kc/+hHXXXddo95n48aNPP/882zYsIG///3v3HzzzUFnu5oxYwYPPvggn3/+ORMmTGDevHkALF26lLKyMj7//HNWr17N008/HfJaNiLxSLmpbtHKTa1ateL++++vtxXiwQcfZPTo0WzdupXRo0fz4IMPAqHnNpFEodxUt3g7b5o9ezb33nsva9as4b777mP27Nn+OK+99lqeeuopNmzYwPLly2nRokWjYgmFijuJmmXLltGiRQv/LEYA2dnZjBgxAjPjjjvuYMCAAWRkZPgX2F6+fDmjRo3immuuoW/fvvzgBz/wr2mSm5vL8OHDycrKIicnh6KiIkpLS7n++uvJyMhg4MCBLFu2DIBFixYxceJExo0bx6WXXkpJSQmTJ08mMzOTSZMmUVJS4o9p5syZDB48mPT0dO69917/9jPPPJN7772XQYMGkZGRwRdffAF4A5l975mZmemfhvjtt99m2LBhDBo0iIkTJ1JcXHzcdzJq1CjuuusuRo4cyaOPPsprr73G+eefz8CBAxkzZgzffvsteXl5PPXUU8yfP5/s7GxWrlzJnDlz/CdAvitFmZmZTJgwodpV7GBeeeUVJk+eTHJyMr169aJ3797Vri75bN68mYsuugiAsWPH+j+Xc45Dhw5RUVFBSUkJLVu21PTkktCUm+IjN7Vp04YLL7yw2rpZwbzyyitMnToV8BYsfvnll/3bQ8ltIolCuSk+clOoucU55+/lVFhY6F877+233yYzM5OsrCwATjvtNJKSkup8zxNiZgnzc95555kkrkcffdR+8pOfBH3uz3/+s40ZM8YqKips586d1qNHD8vPz7dly5ZZ+/btbfv27Xb06FEbOnSorVy50srKyqxXr162atUqMzMrLCy0I0eO2COPPGLTpk0zM7NNmzZZjx49rKSkxBYuXGinn3667d2718zMfvWrX9n1119vZmZr1661pKQky83NNTPz71NRUWEjR460tWvXmplZz5497bHHHjMzsyeeeMKmT59uZmazZ8+2H//4x/7Psm/fPtu9e7eNGDHCiouLzczswQcftP/8z/887nOPHDnSZs6cWe21x44dMzOzZ5991m6//XYzM7v33ntt3rx5/v0CH2dkZNjy5cvNzOzuu+/2x/Lkk0/ak08+edx73nLLLbZkyRL/4xtuuMGWLl163H7Dhg2zl19+2f99tW3b1szMysvLbdKkSZaammqtW7e2p59++rjXNgTwqcVBfjmRH+WmxKbcFB+5yWfhwoV2yy231Pp8SkpKtcennnqqmYWe2xpC+UliSbkpPnJTqLll48aN1qNHD0tLS7Pu3btbXl6emZnNnz/frr32Wrv00ktt4MCB9tBDDx332oaqKzfFZEIV51w28BTQCqgAbjYzXV47iX3wwQdMmTKFpKQkunTpwsiRI8nNzaV9+/bk5OSQlpYGeFes8vLy/AtODhkyBMDfcvTBBx8wa9YswFvYsmfPnv6+6WPHjqVjx44AvP/++9x2220AZGZmkpmZ6Y/lxRdf5JlnnqGiooKCggI2btzof/673/0uAOeddx5//etfAXj33Xd5/vnn/a/v0KEDr7/+Ohs3buSCCy4AoLy8nGHDhgX97JMmTfLf37FjB5MmTaKgoIDy8nJ69epV5/dWWFjIgQMH/At2Tp06lYkTJwJUu9IXyMsJ1Tnnjtv2+9//nttuu4377ruP8ePH07JlSwBWrVpFUlIS+fn57N+/nxEjRjBmzBgtfC5NknKTJxq56USFmttEmgLlJk88nTc9+eSTzJ8/n+9973u8+OKLTJ8+nXfffZeKigo++OADcnNzad26NaNHj+a8885j9OjRdcbaWLHqlvkw8J9mlg3cU/lYmrj09HRWr14d9Llg/zg+ycnJ/vtJSUlUVFRgZkH/seo6Ts2FNoO9/quvvuKRRx7hvffeY926dVx55ZXVBr36YvHF4XvPmscyM8aOHcuaNWtYs2YNGzduZMGCBfXGNWvWLG699VY+//xznn766YgMuE1LS2P79u3+xzt27PB3HQjUt29f3n77bVavXs2UKVM4++yzAfjjH//IZZddRosWLejcuTMXXHBBXA+qFqmPclN85KZQdenShYKCAgAKCgro3LkzEHpuE0kUyk3xkZtCzS2LFy/2F7MTJ070d91MS0tj5MiRpKam0rp1a6644go+++yzsMfpE6vizgDfIJ0UID9GcUgUXXLJJZSVlfHss8/6t+Xm5rJixQouuugiXnjhBY4ePcru3bt5//33ycnJqfVYffv2JT8/n9zcXACKioqoqKjgoosu4rnnngNgy5YtfP3115x77rnHvT5wv/Xr17Nu3ToADh48SJs2bUhJSeHbb7/lzTffrPdzXXrp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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# withbiostechnicalandcelltypePICs\n",
+ "sig_df = pd.DataFrame()\n",
+ "fig, axes = plt.subplots(2, 3, figsize=(15, 10), sharex=True, sharey=True)\n",
+ "celltypes = ['CD4T', 'CD8T', 'monocyte', 'NK', 'B', 'DC']\n",
+ "for i in range(2):\n",
+ " for j in range(3):\n",
+ " celltype = celltypes[i*3+j]\n",
+ " coeqtl_df = pd.read_csv(\n",
+ " coeqtl_withbios_prefix/filter_type/f'UT_{celltype}/coeqtls_fullresults_fixed.sig.withbiosonlyRNAAlignMetrics_rmLLD.tsv.gz',\n",
+ " compression='gzip', index_col=0, sep='\\t')\n",
+ " coeqtl_df['zscore_bios'] = [get_z_score(item[0], item[1]) for item in \n",
+ " coeqtl_df[['t_bios', \n",
+ " 'num_individuals_bios']].values]\n",
+ " coeqtl_df['flipped_zscore_bios'] = [flip_direction(item[0], item[1], item[2]) for item in \n",
+ " coeqtl_df[['SNPEffectAllele', \n",
+ " 'assessed_allele_bios',\n",
+ " 'zscore_bios']].values]\n",
+ " # flip the direction according to AF\n",
+ " coeqtl_df['eqtl_effect_allele'] = [eqtl_allele_af_dict.get(eqtl)['AlleleAssessed'] for eqtl in \n",
+ " coeqtl_df['snp_eqtlgene']]\n",
+ " coeqtl_df['eqtl_alt_af'] = [eqtl_allele_af_dict.get(eqtl)['AF'] for eqtl in coeqtl_df['snp_eqtlgene']]\n",
+ " coeqtl_df['eqtl_alt_allele'] = [eqtl_allele_af_dict.get(eqtl)['alt_allele'] for eqtl in \n",
+ " coeqtl_df['snp_eqtlgene']]\n",
+ " coeqtl_df['eqtl_ref_allele'] = [eqtl_allele_af_dict.get(eqtl)['ref_allele'] for eqtl in \n",
+ " coeqtl_df['snp_eqtlgene']]\n",
+ " coeqtl_df[f'MetaPZ_flippedforAF'] = [flip_zscore(zscore, coeqtlallele, altaf, altallele)\n",
+ " for zscore, coeqtlallele, altaf, altallele in\n",
+ " coeqtl_df[[f'MetaPZ',\n",
+ " f'SNPEffectAllele',\n",
+ " 'eqtl_alt_af',\n",
+ " 'eqtl_alt_allele']].values]\n",
+ " coeqtl_df[f'flipped_zscore_bios_flippedforAF'] = [flip_zscore(zscore, coeqtlallele, altaf, altallele)\n",
+ " for zscore, coeqtlallele, altaf, altallele in\n",
+ " coeqtl_df[[f'flipped_zscore_bios',\n",
+ " f'SNPEffectAllele',\n",
+ " 'eqtl_alt_af',\n",
+ " 'eqtl_alt_allele']].values]\n",
+ " ## end flip\n",
+ " coeqtl_sig = coeqtl_df[coeqtl_df['corrected_p_bios']<=0.05]\n",
+ " coeqtl_sig['celltype'] = celltype\n",
+ " sig_df = pd.concat([coeqtl_sig, sig_df], axis=0)\n",
+ " significant_ratio = coeqtl_sig.shape[0] / coeqtl_df.shape[0]\n",
+ " coeqtl_sig_samedirection = coeqtl_sig[((coeqtl_sig['MetaPZ']>0) & (coeqtl_sig['flipped_zscore_bios']>0)) | \n",
+ " ((coeqtl_sig['MetaPZ']<0) & (coeqtl_sig['flipped_zscore_bios']<0))]\n",
+ " consistent_ratio = coeqtl_sig_samedirection.shape[0] / coeqtl_sig.shape[0]\n",
+ " # draw\n",
+ " ax = axes[i][j]\n",
+ " ax.scatter(coeqtl_df['MetaPZ'][coeqtl_df['corrected_p_bios']>0.05], \n",
+ " coeqtl_df['flipped_zscore_bios'][coeqtl_df['corrected_p_bios']>0.05], alpha=0.5,\n",
+ " label='Non-sig')\n",
+ " ax.scatter(coeqtl_df['MetaPZ'][coeqtl_df['corrected_p_bios']<=0.05],\n",
+ " coeqtl_df['flipped_zscore_bios'][coeqtl_df['corrected_p_bios']<=0.05], alpha=0.5,\n",
+ " label='Sig')\n",
+ " ax.set_xlabel('single cell')\n",
+ " ax.set_ylabel('BIOS')\n",
+ " ax.set_title(celltype)\n",
+ " ax.text(-2, -8, \n",
+ " f'Significant ratio: {significant_ratio:.2f}\\nConcordance ratio: {consistent_ratio:.2f}')\n",
+ "ax.legend(loc='upper left')\n",
+ " \n",
+ "# plt.savefig('bios_replication.filtered_results.scatterplots.pdf')\n",
+ "# plt.savefig('bios_replication.filtered_results.scatterplots.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":19: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame.\n",
+ "Try using .loc[row_indexer,col_indexer] = value instead\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " coeqtl_sig['celltype'] = celltype\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# unfiltered results \n",
+ "# withbiosonlyRNAAlignMetrics_rmLLD\n",
+ "sig_df = pd.DataFrame()\n",
+ "fig, axes = plt.subplots(2, 3, figsize=(15, 10), sharex=True, sharey=True)\n",
+ "celltypes = ['CD4T', 'CD8T', 'monocyte', 'NK', 'B', 'DC']\n",
+ "for i in range(2):\n",
+ " for j in range(3):\n",
+ " celltype = celltypes[i*3+j]\n",
+ " coeqtl_df = pd.read_csv(\n",
+ " coeqtl_withbios_prefix/'unfiltered_results'/f'UT_{celltype}/coeqtls_fullresults_fixed.sig.withbiosonlyRNAAlignMetrics_rmLLD.tsv.gz',\n",
+ " compression='gzip', index_col=0, sep='\\t')\n",
+ " coeqtl_df['zscore_bios'] = [get_z_score(item[0], item[1]) for item in \n",
+ " coeqtl_df[['t_bios', \n",
+ " 'num_individuals_bios']].values]\n",
+ " coeqtl_df['flipped_zscore_bios'] = [flip_direction(item[0], item[1], item[2]) for item in \n",
+ " coeqtl_df[['SNPEffectAllele', \n",
+ " 'assessed_allele_bios',\n",
+ " 'zscore_bios']].values]\n",
+ " coeqtl_sig = coeqtl_df[coeqtl_df['corrected_p_bios']<=0.05]\n",
+ " coeqtl_sig['celltype'] = celltype\n",
+ " sig_df = pd.concat([coeqtl_sig, sig_df], axis=0)\n",
+ " # draw\n",
+ " ax = axes[i][j]\n",
+ " ax.scatter(coeqtl_df['MetaPZ'][coeqtl_df['corrected_p_bios']>0.05], \n",
+ " coeqtl_df['flipped_zscore_bios'][coeqtl_df['corrected_p_bios']>0.05], alpha=0.5,\n",
+ " label='Non-sig')\n",
+ " ax.scatter(coeqtl_df['MetaPZ'][coeqtl_df['corrected_p_bios']<=0.05],\n",
+ " coeqtl_df['flipped_zscore_bios'][coeqtl_df['corrected_p_bios']<=0.05], alpha=0.5,\n",
+ " label='Sig')\n",
+ " ax.set_xlabel('single cell')\n",
+ " ax.set_ylabel('BIOS')\n",
+ " ax.set_title(celltype)\n",
+ "ax.legend(loc='upper left')\n",
+ "# plt.savefig('bios_replication.unfiltered_results.scatterplots.pdf')\n",
+ "# plt.savefig('bios_replication.unfiltered_results.scatterplots.png', dpi=300)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "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.7.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/04_coeqtl_mapping/filtering_strategy.py b/04_coeqtl_mapping/filtering_strategy.py
new file mode 100644
index 0000000..f901ab4
--- /dev/null
+++ b/04_coeqtl_mapping/filtering_strategy.py
@@ -0,0 +1,56 @@
+import pandas as pd
+import numpy as np
+from pathlib import Path
+import argparse
+from scipy.stats import norm
+from time import time
+
+
+sig_thres_zscore = norm.ppf(1-0.025)
+individual_network_prefix = Path("./input/individual_networks")
+saveprefix = Path("./input/gene_pair_selection/annotations/")
+def read_numpy(prefix):
+ data = np.load(f'{prefix}.npy')
+ rows = [item.strip() for item in open(f'{prefix}.rows.txt', 'r').readlines()]
+ cols = [item.strip() for item in open(f'{prefix}.cols.txt', 'r').readlines()]
+ return pd.DataFrame(data=data, columns=cols, index=rows)
+
+
+def merge_datasets(celltype, condition):
+ res_df = pd.DataFrame()
+ for datasetname in ['stemiv2', 'onemillionv2', 'onemillionv3', 'ng']:
+ data_path = individual_network_prefix / condition / datasetname / f'{condition}_{celltype}.zscores'
+ startime = time()
+ df = read_numpy(data_path)
+ res_df = pd.concat([res_df, df], axis=1)
+ print(f'Merged {datasetname}, it took', time() - startime)
+ return res_df
+
+
+def calculate_significance_freq(zscore_df, thres=sig_thres_zscore):
+ freqs = (abs(zscore_df.values) > thres).sum(axis=1)
+ assert len(freqs) == zscore_df.shape[0]
+ return freqs
+
+
+def parse():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--celltype', dest='celltype')
+ parser.add_argument('--condition', dest='condition')
+ return parser
+
+
+def main():
+ args = parse().parse_args()
+ celltype, condition = args.celltype, args.condition
+ celltype_condition_df = merge_datasets(celltype, condition)
+ celltype_condition_df['sig_count'] = calculate_significance_freq(celltype_condition_df)
+ celltype_condition_df['sig_freq'] = [item/celltype_condition_df.shape[1] for item in celltype_condition_df['sig_count']]
+ print(celltype, celltype_condition_df[celltype_condition_df['sig_freq']>=0.1].shape)
+ celltype_condition_df[['sig_count', 'sig_freq']].to_csv(saveprefix/f'{condition}_{celltype}.significance_frequency.tsv',
+ sep='\t')
+ return celltype_condition_df
+
+
+if __name__ == '__main__':
+ _ = main()
\ No newline at end of file
diff --git a/04_coeqtl_mapping/individual_networks.py b/04_coeqtl_mapping/individual_networks.py
new file mode 100644
index 0000000..82dd60a
--- /dev/null
+++ b/04_coeqtl_mapping/individual_networks.py
@@ -0,0 +1,270 @@
+import os
+import re
+from itertools import combinations
+from pathlib import Path
+
+import numpy as np
+import pandas as pd
+import scanpy as sc
+from scipy.stats import spearmanr
+from scipy.stats import t, norm
+from tqdm import tqdm
+import argparse
+from scipy.stats import rankdata
+from collections import namedtuple
+
+
+def get_time(x):
+ if x == 'UT':
+ return x
+ else:
+ pattern = re.compile(r'\d+h')
+ return re.findall(pattern, x)[0]
+
+class DATASET:
+ def __init__(self, datasetname):
+ self.name = datasetname
+ self.path_prefix = Path("./seurat_objects")
+ self.information = self.get_information()
+ def get_information(self):
+ if self.name == 'onemillionv2':
+ self.path = '1M_v2_mediumQC_ctd_rnanormed_demuxids_20201029.sct.h5ad'
+ self.individual_id_col = 'assignment'
+ self.timepoint_id_col = 'time'
+ self.celltype_id = 'cell_type_lowerres'
+ self.chosen_condition = {'UT': 'UT',
+ 'stimulated': '3h'}
+ elif self.name == 'onemillionv3':
+ self.path = '1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.SCT.h5ad'
+ self.individual_id_col = 'assignment'
+ self.timepoint_id_col = 'time'
+ self.celltype_id = 'cell_type_lowerres'
+ self.chosen_condition = {'UT': 'UT',
+ 'stimulated': '3h'}
+ elif self.name == 'stemiv2':
+ self.path = 'cardio.integrated.20210301.stemiv2.h5ad'
+ self.individual_id_col = 'assignment.final'
+ self.timepoint_id_col = 'timepoint.final'
+ self.celltype_id = 'cell_type_lowerres'
+ self.chosen_condition = {'UT': 't8w',
+ 'stimulated': 'Baseline'}
+ elif self.name == 'ng':
+ self.path = 'pilot3_seurat3_200420_sct_azimuth.h5ad'
+ self.individual_id_col = 'snumber'
+ self.celltype_id = 'cell_type_mapped_to_onemillion'
+ else:
+ raise IOError("Dataset name not understood.")
+
+ def load_dataset(self):
+ self.get_information()
+ print(f'Loading dataset {self.name} from {self.path_prefix} {self.path}')
+ self.data_sc = sc.read_h5ad(self.path_prefix / self.path)
+ if self.name.startswith('onemillion'):
+ self.data_sc.obs['time'] = [get_time(item) for item in self.data_sc.obs['timepoint']]
+ elif self.name == 'ng':
+ celltype_maping = {'CD4 T': 'CD4T', 'CD8 T': 'CD8T', 'Mono': 'monocyte', 'DC': 'DC', 'NK': 'NK',
+ 'other T': 'otherT', 'other': 'other', 'B': 'B'}
+ self.data_sc.obs['cell_type_mapped_to_onemillion'] = [celltype_maping.get(name) for name in
+ self.data_sc.obs['predicted.celltype.l1']]
+
+
+def corr_to_z(coef, num):
+ t_statistic = coef * np.sqrt((num - 2) / (1 - coef ** 2))
+ prob = t.cdf(t_statistic, num - 2)
+ z_score = norm.ppf(prob)
+ positive_coef_probs = 1 - prob
+ positive_coef_probs[coef < 0] = 0
+ negative_coef_probs = prob
+ negative_coef_probs[coef > 0] = 0
+ probs = negative_coef_probs + positive_coef_probs
+ return z_score, probs
+
+
+# def z_to_corr(z, num):
+# prob = norm.cdf(z)
+# t_statistic = t.ppf(prob, num - 2)
+# corr = t_statistic / np.sqrt(num - 2 + t_statistic ** 2)
+# return corr
+
+
+def save_numpy(data_df, prefix):
+ np.save(f'{prefix}.npy', data_df.values)
+ with open(f'{prefix}.cols.txt', 'w') as f:
+ f.write('\n'.join(data_df.columns))
+ with open(f'{prefix}.rows.txt', 'w') as f:
+ f.write('\n'.join(data_df.index))
+ return None
+
+def _contains_nan(a, nan_policy='propagate'):
+ '''
+ From scipy: https://github.com/scipy/scipy/blob/v1.7.1/scipy/stats/stats.py#L4343-L4525
+ '''
+ policies = ['propagate', 'raise', 'omit']
+ if nan_policy not in policies:
+ raise ValueError("nan_policy must be one of {%s}" %
+ ', '.join("'%s'" % s for s in policies))
+ try:
+ with np.errstate(invalid='ignore'):
+ contains_nan = np.isnan(np.sum(a))
+ except TypeError:
+ try:
+ contains_nan = np.nan in set(a.ravel())
+ except TypeError:
+ contains_nan = False
+ nan_policy = 'omit'
+
+ if contains_nan and nan_policy == 'raise':
+ raise ValueError("The input contains nan values")
+
+ return contains_nan, nan_policy
+
+
+def _chk_asarray(a, axis):
+ '''
+ From scipy: https://github.com/scipy/scipy/blob/v1.7.1/scipy/stats/stats.py#L4343-L4525
+ '''
+ if axis is None:
+ a = np.ravel(a)
+ outaxis = 0
+ else:
+ a = np.asarray(a)
+ outaxis = axis
+
+ if a.ndim == 0:
+ a = np.atleast_1d(a)
+
+ return a, outaxis
+
+
+def spearmanr_withnan(a, axis=0, nan_policy='propagate'):
+ '''
+ Modified from scipy: https://github.com/scipy/scipy/blob/v1.7.1/scipy/stats/stats.py#L4343-L4525
+ '''
+ SpearmanrResult = namedtuple('SpearmanrResult', ('correlation', 'pvalue'))
+ if axis is not None and axis > 1:
+ raise ValueError("spearmanr only handles 1-D or 2-D arrays, supplied axis argument {}, "
+ "please use only values 0, 1 or None for axis".format(axis))
+ a, axisout = _chk_asarray(a, axis)
+ if a.ndim > 2:
+ raise ValueError("spearmanr only handles 1-D or 2-D arrays")
+ n_vars = a.shape[1 - axisout]
+ n_obs = a.shape[axisout]
+ if n_obs <= 1:
+ # Handle empty arrays or single observations.
+ return SpearmanrResult(np.nan, np.nan)
+ a_contains_nan, nan_policy = _contains_nan(a, nan_policy)
+ variable_has_nan = np.zeros(n_vars, dtype=bool)
+ if a_contains_nan:
+ if nan_policy == 'propagate':
+ if a.ndim == 1 or n_vars <= 2:
+ return SpearmanrResult(np.nan, np.nan)
+ else:
+ variable_has_nan = np.isnan(a).sum(axis=axisout)
+ a_ranked = np.apply_along_axis(rankdata, axisout, a)
+ rs = np.corrcoef(a_ranked, rowvar=axisout)
+ dof = n_obs - 2 # degrees of freedom
+ # rs can have elements equal to 1, so avoid zero division warnings
+ with np.errstate(divide='ignore'):
+ t_ = rs * np.sqrt((dof/((rs+1.0)*(1.0-rs))).clip(0))
+ prob = 2 * t.sf(np.abs(t_), dof)
+ # For backwards compatibility, return scalars when comparing 2 columns
+ if rs.shape == (2, 2):
+ return SpearmanrResult(rs[1, 0], prob[1, 0])
+ else:
+ rs[variable_has_nan, :] = np.nan
+ rs[:, variable_has_nan] = np.nan
+ return SpearmanrResult(rs, prob)
+
+
+def get_individual_networks_selected_genepairs(data_sc, individual_colname, selected_genepairs):
+ data_df = pd.DataFrame(data=data_sc.X.toarray(),
+ index=data_sc.obs.index,
+ columns=data_sc.var.index)
+ selected_genes = list(set([ele for item in selected_genepairs for ele in item.split(';')]) & set(data_sc.var.index))
+ selected_genes_sorted_genepairs = [';'.join(sorted(item)) for item in combinations(selected_genes, 2)]
+ common_genepairs = list(set(selected_genes_sorted_genepairs) & set(selected_genepairs))
+ coef_df = pd.DataFrame(index=common_genepairs)
+ coef_p_df = pd.DataFrame(index=common_genepairs)
+ zscore_df = pd.DataFrame(index=common_genepairs)
+ zscore_p_df = pd.DataFrame(index=common_genepairs)
+ data_selected_df = data_df[selected_genes]
+ print(f"Begin calculating networks for {len(data_sc.obs[individual_colname].unique())} individuals")
+ for ind_id in tqdm(data_sc.obs[individual_colname].unique()):
+ cell_num = data_sc.obs[data_sc.obs[individual_colname] == ind_id].shape[0]
+ if cell_num > 10:
+ individual_df = data_selected_df.loc[data_sc.obs[individual_colname] == ind_id]
+ individual_coefs, individual_coef_ps = spearmanr_withnan(individual_df.values, axis=0)
+ try:
+ individual_coefs_flatten = pd.DataFrame(data=individual_coefs[np.triu_indices_from(individual_coefs, 1)],
+ index=selected_genes_sorted_genepairs).loc[common_genepairs]
+ individual_coef_ps_flatten = pd.DataFrame(data=individual_coef_ps[np.triu_indices_from(individual_coefs, 1)],
+ index=selected_genes_sorted_genepairs).loc[common_genepairs]
+ individual_zscores_flatten, individual_zscore_ps_flatten = corr_to_z(individual_coefs_flatten, cell_num)
+ coef_df[ind_id] = individual_coefs_flatten
+ coef_p_df[ind_id] = individual_coef_ps_flatten
+ zscore_df[ind_id] = individual_zscores_flatten
+ zscore_p_df[ind_id] = individual_zscore_ps_flatten
+ except:
+ continue
+ else:
+ print("Deleted this individual because of low cell number", cell_num)
+ return coef_df, coef_p_df, zscore_df, zscore_p_df
+
+
+def get_individual_networks_given_celltype_condition_datasetname(celltype, datasetname, condition='UT'):
+ # load the data and data information
+ dataset = DATASET(datasetname)
+ dataset.load_dataset()
+ print(f"{datasetname} loaded.")
+ # calculate the individual network for specific condition and celltype
+ print(datasetname, celltype, condition)
+ work_prefix = Path('/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing')
+ selected_genepairs_path = work_prefix / 'coeqtl_mapping/input/snp_genepair_selection' / f'{condition}_{celltype}.baseline.tsv'
+ selected_genepairs = pd.read_csv(selected_genepairs_path, sep='\t')['genepair_sorted'].values
+ if datasetname == 'ng':
+ data_selected = dataset.data_sc[(dataset.data_sc.obs[dataset.celltype_id] == celltype)]
+ else:
+ data_selected = dataset.data_sc[(dataset.data_sc.obs[dataset.celltype_id] == celltype) &
+ (dataset.data_sc.obs[dataset.timepoint_id_col] == dataset.chosen_condition[condition])]
+ individual_coefs_df, individual_coefs_p_df, individual_zscores_df, individual_zscores_p_df = get_individual_networks_selected_genepairs(
+ data_selected,
+ dataset.individual_id_col,
+ selected_genepairs
+ )
+ print(individual_coefs_df.head())
+ save_prefix = Path('/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input')
+ if not os.path.exists(save_prefix / 'individual_networks' / condition / datasetname):
+ os.mkdir(save_prefix / 'individual_networks' / condition / datasetname)
+ ## not saving the coefficients
+ # save_numpy(individual_coefs_df,
+ # save_prefix / 'individual_networks' / condition / datasetname / f'{condition}_{celltype}.coefs')
+ # save_numpy(individual_coefs_p_df,
+ # save_prefix / 'individual_networks' / condition / datasetname / f'{condition}_{celltype}.coef_ps')
+ save_numpy(individual_zscores_df,
+ save_prefix / 'individual_networks' / condition / datasetname / f'{condition}_{celltype}.zscores')
+ save_numpy(individual_zscores_p_df,
+ save_prefix / 'individual_networks' / condition / datasetname / f'{condition}_{celltype}.zscore_ps')
+ print("Saved ")
+ return individual_coefs_df, individual_coefs_p_df, individual_zscores_df, individual_zscores_p_df
+
+
+def argumentsparser():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--datasetname', type=str, dest='datasetname')
+ parser.add_argument('--celltype', type=str, dest='celltype')
+ parser.add_argument('--condition', type=str, dest='condition')
+ parser.add_argument('--nonzeroratio', type=float, dest='nonzeroratio')
+ return parser
+
+def run_get_individual_networks_given_celltype_condition_datasetname():
+ args = argumentsparser().parse_args()
+ print(f"Starting to calculate individual network for {args.datasetname}, {args.celltype}, {args.condition}, "
+ f"for genes {args.nonzeroratio}.")
+ _ = get_individual_networks_given_celltype_condition_datasetname(celltype=args.celltype,
+ condition=args.condition,
+ datasetname=args.datasetname)
+ return None
+
+
+if __name__ == '__main__':
+ run_get_individual_networks_given_celltype_condition_datasetname()
diff --git a/04_coeqtl_mapping/individual_networks_cmono_ncmono.py b/04_coeqtl_mapping/individual_networks_cmono_ncmono.py
new file mode 100644
index 0000000..e01e855
--- /dev/null
+++ b/04_coeqtl_mapping/individual_networks_cmono_ncmono.py
@@ -0,0 +1,309 @@
+import argparse
+import os
+import re
+from collections import namedtuple
+from itertools import combinations
+from pathlib import Path
+
+import numpy as np
+import pandas as pd
+import scanpy as sc
+from scipy.stats import rankdata
+from scipy.stats import t, norm
+from tqdm import tqdm
+
+
+def get_time(x):
+ if x == 'UT':
+ return x
+ else:
+ pattern = re.compile(r'\d+h')
+ return re.findall(pattern, x)[0]
+
+
+class DATASET:
+ def __init__(self, datasetname):
+ self.name = datasetname
+ self.path_prefix = Path(
+ "./seurat_objects")
+ self.information = self.get_information()
+ def get_information(self):
+ if self.name == 'onemillionv2':
+ self.path = '1M_v2_mediumQC_ctd_rnanormed_demuxids_20201029.sct.h5ad'
+ self.individual_id_col = 'assignment'
+ self.timepoint_id_col = 'time'
+ self.celltype_id = 'cell_type_lowerres'
+ self.chosen_condition = {'UT': 'UT',
+ 'stimulated': '3h'}
+ elif self.name == 'onemillionv3':
+ self.path = '1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.SCT.h5ad'
+ self.individual_id_col = 'assignment'
+ self.timepoint_id_col = 'time'
+ self.celltype_id = 'cell_type_lowerres'
+ self.chosen_condition = {'UT': 'UT',
+ 'stimulated': '3h'}
+ elif self.name == 'stemiv2':
+ self.path = 'cardio.integrated.20210301.stemiv2.h5ad'
+ self.individual_id_col = 'assignment.final'
+ self.timepoint_id_col = 'timepoint.final'
+ self.celltype_id = 'cell_type_lowerres'
+ self.chosen_condition = {'UT': 't8w',
+ 'stimulated': 'Baseline'}
+ elif self.name == 'ng':
+ self.path = 'pilot3_seurat3_200420_sct_azimuth.h5ad'
+ self.individual_id_col = 'snumber'
+ self.celltype_id = 'cell_type_mapped_to_onemillion'
+ else:
+ raise IOError("Dataset name not understood.")
+ def load_dataset(self):
+ self.get_information()
+ print(f'Loading dataset {self.name} from {self.path_prefix} {self.path}')
+ self.data_sc = sc.read_h5ad(self.path_prefix / self.path)
+ if self.name.startswith('onemillion'):
+ self.data_sc.obs['time'] = [get_time(item) for item in self.data_sc.obs['timepoint']]
+ elif self.name == 'ng':
+ celltype_maping = {'CD4 T': 'CD4T', 'CD8 T': 'CD8T', 'Mono': 'monocyte', 'DC': 'DC', 'NK': 'NK',
+ 'other T': 'otherT', 'other': 'other', 'B': 'B'}
+ self.data_sc.obs['cell_type_mapped_to_onemillion'] = [celltype_maping.get(name) for name in
+ self.data_sc.obs['predicted.celltype.l1']]
+ def get_cMono_ncMono(self):
+ def tell_cmono_foronemillion(x):
+ if x == 'mono 1' or x == 'mono 3' or x == 'mono 4':
+ return 'cMono'
+ elif x == 'mono 2':
+ return 'ncMono'
+ if self.name.startswith('onemillion'):
+ self.data_sc.obs['sub_monocytes'] = [tell_cmono_foronemillion(x) for x in
+ self.data_sc.obs['cell_type']]
+ self.cmono = self.data_sc[self.data_sc.obs['sub_monocytes'] == 'cMono']
+ self.ncmono = self.data_sc[self.data_sc.obs['sub_monocytes'] == 'ncMono']
+ elif self.name.startswith('stemi'):
+ self.cmono = self.data_sc[self.data_sc.obs['cell_type'] == 'cMono']
+ self.ncmono = self.data_sc[self.data_sc.obs['cell_type'] == 'ncMono']
+ elif self.name == 'ng':
+ self.cmono = self.data_sc[self.data_sc.obs['predicted.celltype.l2'] == 'CD14 Mono']
+ self.ncmono = self.data_sc[self.data_sc.obs['predicted.celltype.l2'] == 'CD16 Mono']
+ else:
+ raise IOError("Dataset name not understood.")
+
+
+
+def save_numpy(data_df, prefix):
+ np.save(f'{prefix}.npy', data_df.values)
+ with open(f'{prefix}.cols.txt', 'w') as f:
+ f.write('\n'.join(data_df.columns))
+ with open(f'{prefix}.rows.txt', 'w') as f:
+ f.write('\n'.join(data_df.index))
+ return None
+
+
+def corr_to_z(coef, num):
+ t_statistic = coef * np.sqrt((num - 2) / (1 - coef ** 2))
+ prob = t.cdf(t_statistic, num - 2)
+ z_score = norm.ppf(prob)
+ positive_coef_probs = 1 - prob
+ positive_coef_probs[coef < 0] = 0
+ negative_coef_probs = prob
+ negative_coef_probs[coef > 0] = 0
+ probs = negative_coef_probs + positive_coef_probs
+ return z_score, probs
+
+
+def _contains_nan(a, nan_policy='propagate'):
+ policies = ['propagate', 'raise', 'omit']
+ if nan_policy not in policies:
+ raise ValueError("nan_policy must be one of {%s}" %
+ ', '.join("'%s'" % s for s in policies))
+ try:
+ with np.errstate(invalid='ignore'):
+ contains_nan = np.isnan(np.sum(a))
+ except TypeError:
+ try:
+ contains_nan = np.nan in set(a.ravel())
+ except TypeError:
+ contains_nan = False
+ nan_policy = 'omit'
+ if contains_nan and nan_policy == 'raise':
+ raise ValueError("The input contains nan values")
+ return contains_nan, nan_policy
+
+
+def _chk_asarray(a, axis):
+ if axis is None:
+ a = np.ravel(a)
+ outaxis = 0
+ else:
+ a = np.asarray(a)
+ outaxis = axis
+ if a.ndim == 0:
+ a = np.atleast_1d(a)
+ return a, outaxis
+
+
+def spearmanr_withnan(a, axis=0, nan_policy='propagate'):
+ SpearmanrResult = namedtuple('SpearmanrResult', ('correlation', 'pvalue'))
+ if axis is not None and axis > 1:
+ raise ValueError("spearmanr only handles 1-D or 2-D arrays, supplied axis argument {}, "
+ "please use only values 0, 1 or None for axis".format(axis))
+ a, axisout = _chk_asarray(a, axis)
+ if a.ndim > 2:
+ raise ValueError("spearmanr only handles 1-D or 2-D arrays")
+ n_vars = a.shape[1 - axisout]
+ n_obs = a.shape[axisout]
+ if n_obs <= 1:
+ # Handle empty arrays or single observations.
+ return SpearmanrResult(np.nan, np.nan)
+ a_contains_nan, nan_policy = _contains_nan(a, nan_policy)
+ variable_has_nan = np.zeros(n_vars, dtype=bool)
+ if a_contains_nan:
+ if nan_policy == 'propagate':
+ if a.ndim == 1 or n_vars <= 2:
+ return SpearmanrResult(np.nan, np.nan)
+ else:
+ variable_has_nan = np.isnan(a).sum(axis=axisout)
+ a_ranked = np.apply_along_axis(rankdata, axisout, a)
+ rs = np.corrcoef(a_ranked, rowvar=axisout)
+ dof = n_obs - 2 # degrees of freedom
+ # rs can have elements equal to 1, so avoid zero division warnings
+ with np.errstate(divide='ignore'):
+ t_ = rs * np.sqrt((dof / ((rs + 1.0) * (1.0 - rs))).clip(0))
+ prob = 2 * t.sf(np.abs(t_), dof)
+ # For backwards compatibility, return scalars when comparing 2 columns
+ if rs.shape == (2, 2):
+ return SpearmanrResult(rs[1, 0], prob[1, 0])
+ else:
+ rs[variable_has_nan, :] = np.nan
+ rs[:, variable_has_nan] = np.nan
+ return SpearmanrResult(rs, prob)
+
+
+def get_individual_networks_selected_genepairs(data_sc, individual_colname, selected_genepairs):
+ data_df = pd.DataFrame(data=data_sc.X.toarray(),
+ index=data_sc.obs.index,
+ columns=data_sc.var.index)
+ selected_genes = list(set([ele for item in selected_genepairs for ele in item.split(';')]) & set(data_sc.var.index))
+ selected_genes_sorted_genepairs = [';'.join(sorted(item)) for item in combinations(selected_genes, 2)]
+ common_genepairs = list(set(selected_genes_sorted_genepairs) & set(selected_genepairs))
+ coef_df = pd.DataFrame(index=common_genepairs)
+ coef_p_df = pd.DataFrame(index=common_genepairs)
+ zscore_df = pd.DataFrame(index=common_genepairs)
+ zscore_p_df = pd.DataFrame(index=common_genepairs)
+ data_selected_df = data_df[selected_genes]
+ print(f"Begin calculating networks for {len(data_sc.obs[individual_colname].unique())} individuals")
+ for ind_id in tqdm(data_sc.obs[individual_colname].unique()):
+ cell_num = data_sc.obs[data_sc.obs[individual_colname] == ind_id].shape[0]
+ if cell_num > 10:
+ individual_df = data_selected_df.loc[data_sc.obs[individual_colname] == ind_id]
+ individual_coefs, individual_coef_ps = spearmanr_withnan(individual_df.values, axis=0)
+ try:
+ individual_coefs_flatten = \
+ pd.DataFrame(data=individual_coefs[np.triu_indices_from(individual_coefs, 1)],
+ index=selected_genes_sorted_genepairs).loc[common_genepairs]
+ individual_coef_ps_flatten = \
+ pd.DataFrame(data=individual_coef_ps[np.triu_indices_from(individual_coefs, 1)],
+ index=selected_genes_sorted_genepairs).loc[common_genepairs]
+ individual_zscores_flatten, individual_zscore_ps_flatten = corr_to_z(individual_coefs_flatten, cell_num)
+ coef_df[ind_id] = individual_coefs_flatten
+ coef_p_df[ind_id] = individual_coef_ps_flatten
+ zscore_df[ind_id] = individual_zscores_flatten
+ zscore_p_df[ind_id] = individual_zscore_ps_flatten
+ except:
+ continue
+ else:
+ print("Deleted this individual because of low cell number", cell_num)
+ return coef_df, coef_p_df, zscore_df, zscore_p_df
+
+
+def get_individual_networks_UT_subcelltypesMonocytes(celltype, datasetname, condition='UT'):
+ # load the data and data information
+ dataset = DATASET(datasetname)
+ dataset.load_dataset()
+ dataset.get_cMono_ncMono()
+ print(f"{datasetname} loaded.")
+ # calculate the individual network for specific condition and celltype
+ print(datasetname, celltype, condition)
+ work_prefix = Path('./')
+ selected_genepairs_path = work_prefix / 'coeqtl_mapping/input/snp_genepair_selection' / f'{condition}_monocyte_{datasetname}.baseline.tsv'
+ selected_genepairs = pd.read_csv(selected_genepairs_path, sep='\t')['genepair_sorted'].values
+ if celltype == 'cMono':
+ data_celltype = dataset.cmono
+ elif celltype == 'ncMono':
+ data_celltype = dataset.ncmono
+ else:
+ raise IOError("Celltype not understood. select from cMono or ncMono.")
+ if datasetname == 'ng':
+ data_selected = data_celltype
+ else:
+ data_selected = data_celltype[
+ data_celltype.obs[dataset.timepoint_id_col] == dataset.chosen_condition[condition]]
+ individual_coefs_df, individual_coefs_p_df, individual_zscores_df, individual_zscores_p_df = get_individual_networks_selected_genepairs(
+ data_selected,
+ dataset.individual_id_col,
+ selected_genepairs
+ )
+ print(individual_coefs_df.head())
+ save_prefix = Path('./coeqtl_mapping/input')
+ if not os.path.exists(save_prefix / 'individual_networks' / condition / datasetname):
+ os.mkdir(save_prefix / 'individual_networks' / condition / datasetname)
+ # save_numpy(individual_coefs_df,
+ # save_prefix / 'individual_networks' / condition / datasetname / f'{condition}_{celltype}.coefs')
+ # save_numpy(individual_coefs_p_df,
+ # save_prefix / 'individual_networks' / condition / datasetname / f'{condition}_{celltype}.coef_ps')
+ save_numpy(individual_zscores_df,
+ save_prefix / 'individual_networks' / condition / datasetname / f'{condition}_{celltype}.zscores')
+ save_numpy(individual_zscores_p_df,
+ save_prefix / 'individual_networks' / condition / datasetname / f'{condition}_{celltype}.zscore_ps')
+ print("Saved.")
+ return individual_coefs_df, individual_coefs_p_df, individual_zscores_df, individual_zscores_p_df
+
+
+def argumentsparser():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--datasetname', type=str, dest='datasetname')
+ parser.add_argument('--celltype', type=str, dest='celltype')
+ parser.add_argument('--condition', type=str, dest='condition')
+ return parser
+
+
+def run_get_individual_networks_given_celltype_condition_datasetname():
+ args = argumentsparser().parse_args()
+ print(f"Starting to calculate individual network for {args.datasetname}, {args.celltype}, {args.condition}.")
+ _ = get_individual_networks_UT_subcelltypesMonocytes(celltype=args.celltype,
+ condition=args.condition,
+ datasetname=args.datasetname)
+ return None
+
+
+if __name__ == '__main__':
+ run_get_individual_networks_given_celltype_condition_datasetname()
+
+
+# dataset = DATASET('stemiv2')
+# dataset.load_dataset()
+# dataset.get_cMono_ncMono()
+# celldf = dataset.data_sc.obs
+# cellnum = celldf[(celldf[dataset.celltype_id]=='CD4T') & (celldf[dataset.timepoint_id_col]==dataset.chosen_condition['UT'])][dataset.individual_id_col].value_counts()
+# print('CD4T, ', cellnum[cellnum>10].mean())
+# cellnum = celldf[(celldf[dataset.celltype_id]=='CD8T') & (celldf[dataset.timepoint_id_col]==dataset.chosen_condition['UT'])][dataset.individual_id_col].value_counts()
+# print('CD8T, ', cellnum[cellnum>10].mean())
+# cellnum = celldf[(celldf[dataset.celltype_id]=='monocyte') & (celldf[dataset.timepoint_id_col]==dataset.chosen_condition['UT'])][dataset.individual_id_col].value_counts()
+# print('Monocyte, ', cellnum[cellnum>10].mean())
+# cellnum = dataset.cmono.obs[dataset.cmono.obs[dataset.timepoint_id_col]==dataset.chosen_condition['UT']][dataset.individual_id_col].value_counts()
+# print('cMono, ', cellnum[cellnum>10].mean())
+# cellnum = dataset.ncmono.obs[dataset.ncmono.obs[dataset.timepoint_id_col]==dataset.chosen_condition['UT']][dataset.individual_id_col].value_counts()
+# print('ncMono, ', cellnum[cellnum>10].mean())
+#
+# dataset = DATASET('ng')
+# dataset.load_dataset()
+# dataset.get_cMono_ncMono()
+# celldf = dataset.data_sc.obs
+# cellnum = celldf[(celldf[dataset.celltype_id]=='CD4T')][dataset.individual_id_col].value_counts()
+# print('CD4T, ', cellnum[cellnum>10].mean())
+# cellnum = celldf[(celldf[dataset.celltype_id]=='CD8T')][dataset.individual_id_col].value_counts()
+# print('CD8T, ', cellnum[cellnum>10].mean())
+# cellnum = celldf[(celldf[dataset.celltype_id]=='monocyte') ][dataset.individual_id_col].value_counts()
+# print('Monocyte, ', cellnum[cellnum>10].mean())
+# cellnum = dataset.cmono.obs[dataset.individual_id_col].value_counts()
+# print('cMono, ', cellnum[cellnum>10].mean())
+# cellnum = dataset.ncmono.obs[dataset.individual_id_col].value_counts()
+# print('ncMono, ', cellnum[cellnum>10].mean())
\ No newline at end of file
diff --git a/04_coeqtl_mapping/individual_networks_maxcell.py b/04_coeqtl_mapping/individual_networks_maxcell.py
new file mode 100644
index 0000000..72566f6
--- /dev/null
+++ b/04_coeqtl_mapping/individual_networks_maxcell.py
@@ -0,0 +1,315 @@
+import os
+import re
+from itertools import combinations
+from pathlib import Path
+
+import numpy as np
+import pandas as pd
+import scanpy as sc
+from scipy.stats import spearmanr
+from scipy.stats import t, norm
+from tqdm import tqdm
+import argparse
+from scipy.stats import rankdata
+from collections import namedtuple
+
+
+def get_time(x):
+ if x == 'UT':
+ return x
+ else:
+ pattern = re.compile(r'\d+h')
+ return re.findall(pattern, x)[0]
+
+
+class DATASET:
+ def __init__(self, datasetname):
+ self.name = datasetname
+ self.path_prefix = Path("./seurat_objects")
+ self.information = self.get_information()
+ def get_information(self):
+ if self.name == 'onemillionv2':
+ self.path = '1M_v2_mediumQC_ctd_rnanormed_demuxids_20201029.sct.h5ad'
+ self.individual_id_col = 'assignment'
+ self.timepoint_id_col = 'time'
+ self.celltype_id = 'cell_type_lowerres'
+ self.chosen_condition = {'UT': 'UT',
+ 'stimulated': '3h'}
+ elif self.name == 'onemillionv3':
+ self.path = '1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.SCT.h5ad'
+ self.individual_id_col = 'assignment'
+ self.timepoint_id_col = 'time'
+ self.celltype_id = 'cell_type_lowerres'
+ self.chosen_condition = {'UT': 'UT',
+ 'stimulated': '3h'}
+ elif self.name == 'stemiv2':
+ self.path = 'cardio.integrated.20210301.stemiv2.h5ad'
+ self.individual_id_col = 'assignment.final'
+ self.timepoint_id_col = 'timepoint.final'
+ self.celltype_id = 'cell_type_lowerres'
+ self.chosen_condition = {'UT': 't8w',
+ 'stimulated': 'Baseline'}
+ elif self.name == 'ng':
+ self.path = 'pilot3_seurat3_200420_sct_azimuth.h5ad'
+ self.individual_id_col = 'snumber'
+ self.celltype_id = 'cell_type_mapped_to_onemillion'
+ else:
+ raise IOError("Dataset name not understood.")
+ def load_dataset(self):
+ self.get_information()
+ print(f'Loading dataset {self.name} from {self.path_prefix} {self.path}')
+ self.data_sc = sc.read_h5ad(self.path_prefix / self.path)
+ if self.name.startswith('onemillion'):
+ self.data_sc.obs['time'] = [get_time(item) for item in self.data_sc.obs['timepoint']]
+ elif self.name == 'ng':
+ celltype_maping = {'CD4 T': 'CD4T', 'CD8 T': 'CD8T', 'Mono': 'monocyte', 'DC': 'DC', 'NK': 'NK',
+ 'other T': 'otherT', 'other': 'other', 'B': 'B'}
+ self.data_sc.obs['cell_type_mapped_to_onemillion'] = [celltype_maping.get(name) for name in
+ self.data_sc.obs['predicted.celltype.l1']]
+
+
+
+def select_gene_nonzeroratio(df, ratio):
+ nonzerocounts = np.count_nonzero(df.values, axis=0) / df.shape[0]
+ selected_genes = df.columns[nonzerocounts > ratio]
+ return selected_genes
+
+
+def corr_to_z(coef, num):
+ t_statistic = coef * np.sqrt((num - 2) / (1 - coef ** 2))
+ prob = t.cdf(t_statistic, num - 2)
+ z_score = norm.ppf(prob)
+ positive_coef_probs = 1 - prob
+ positive_coef_probs[coef < 0] = 0
+ negative_coef_probs = prob
+ negative_coef_probs[coef > 0] = 0
+ probs = negative_coef_probs + positive_coef_probs
+ return z_score, probs
+
+
+def z_to_corr(z, num):
+ prob = norm.cdf(z)
+ t_statistic = t.ppf(prob, num - 2)
+ corr = t_statistic / np.sqrt(num - 2 + t_statistic ** 2)
+ return corr
+
+
+def get_om_name(filename):
+ pattern = re.compile(r'LLDeep_\d\d\d\d')
+ return re.findall(pattern, filename)[0]
+
+
+def get_stemi_name(filename):
+ pattern = re.compile(r'TEST_\d.')
+ return re.findall(pattern, filename)[0]
+
+
+def save_numpy(data_df, prefix):
+ np.save(f'{prefix}.npy', data_df.values)
+ with open(f'{prefix}.cols.txt', 'w') as f:
+ f.write('\n'.join(data_df.columns))
+ with open(f'{prefix}.rows.txt', 'w') as f:
+ f.write('\n'.join(data_df.index))
+ return None
+
+def _contains_nan(a, nan_policy='propagate'):
+ policies = ['propagate', 'raise', 'omit']
+ if nan_policy not in policies:
+ raise ValueError("nan_policy must be one of {%s}" %
+ ', '.join("'%s'" % s for s in policies))
+ try:
+ with np.errstate(invalid='ignore'):
+ contains_nan = np.isnan(np.sum(a))
+ except TypeError:
+ try:
+ contains_nan = np.nan in set(a.ravel())
+ except TypeError:
+ contains_nan = False
+ nan_policy = 'omit'
+ if contains_nan and nan_policy == 'raise':
+ raise ValueError("The input contains nan values")
+ return contains_nan, nan_policy
+
+
+def _chk_asarray(a, axis):
+ if axis is None:
+ a = np.ravel(a)
+ outaxis = 0
+ else:
+ a = np.asarray(a)
+ outaxis = axis
+ if a.ndim == 0:
+ a = np.atleast_1d(a)
+ return a, outaxis
+
+
+def spearmanr_withnan(a, axis=0, nan_policy='propagate'):
+ SpearmanrResult = namedtuple('SpearmanrResult', ('correlation', 'pvalue'))
+ if axis is not None and axis > 1:
+ raise ValueError("spearmanr only handles 1-D or 2-D arrays, supplied axis argument {}, "
+ "please use only values 0, 1 or None for axis".format(axis))
+ a, axisout = _chk_asarray(a, axis)
+ if a.ndim > 2:
+ raise ValueError("spearmanr only handles 1-D or 2-D arrays")
+ n_vars = a.shape[1 - axisout]
+ n_obs = a.shape[axisout]
+ if n_obs <= 1:
+ # Handle empty arrays or single observations.
+ return SpearmanrResult(np.nan, np.nan)
+ a_contains_nan, nan_policy = _contains_nan(a, nan_policy)
+ variable_has_nan = np.zeros(n_vars, dtype=bool)
+ if a_contains_nan:
+ if nan_policy == 'propagate':
+ if a.ndim == 1 or n_vars <= 2:
+ return SpearmanrResult(np.nan, np.nan)
+ else:
+ variable_has_nan = np.isnan(a).sum(axis=axisout)
+ a_ranked = np.apply_along_axis(rankdata, axisout, a)
+ rs = np.corrcoef(a_ranked, rowvar=axisout)
+ dof = n_obs - 2 # degrees of freedom
+ # rs can have elements equal to 1, so avoid zero division warnings
+ with np.errstate(divide='ignore'):
+ t_ = rs * np.sqrt((dof/((rs+1.0)*(1.0-rs))).clip(0))
+ prob = 2 * t.sf(np.abs(t_), dof)
+ # For backwards compatibility, return scalars when comparing 2 columns
+ if rs.shape == (2, 2):
+ return SpearmanrResult(rs[1, 0], prob[1, 0])
+ else:
+ rs[variable_has_nan, :] = np.nan
+ rs[:, variable_has_nan] = np.nan
+ return SpearmanrResult(rs, prob)
+
+def read_numpy(prefix):
+ data = np.load(f'{prefix}.npy')
+ columns = [item.strip() for item in open(f'{prefix}.rows.txt', 'r').readlines()]
+ return pd.DataFrame(data=data, columns=columns, index=columns)
+
+
+def read_all_files(prefix, genepairs):
+ res_df = pd.DataFrame(index=genepairs)
+ for filename in os.listdir(prefix):
+ if filename.endswith('_coefs.npy'):
+ data = np.load(f'{prefix}/{filename}')
+ if len(data.shape) > 1:
+ data_uppertria = data[np.triu_indices_from(data, 1)]
+ individual_id = get_stemi_name(filename)
+ res_df[individual_id] = data_uppertria
+ return res_df
+
+
+def get_unique_genepairs(genepair_list, sep=';'):
+ unique_pairs = set()
+ for genepair in genepair_list:
+ reverse_genepair = sep.join(genepair.split(sep))
+ if genepair in unique_pairs or reverse_genepair in unique_pairs:
+ continue
+ else:
+ unique_pairs.add(genepair)
+ return unique_pairs
+
+
+def get_genes(genepair_list, sep=';'):
+ genes = list(set([gene for genepair in genepair_list for gene in genepair.split(sep)]))
+ return genes
+
+
+def get_genepairs(genelist_path):
+ genelist = [item.strip() for item in open(genelist_path, 'r').readlines()]
+ genepairs = [';'.join(sorted(item)) for item in combinations(genelist, 2)]
+ return genelist, genepairs
+
+
+def get_individual_networks_selected_genepairs(data_sc, individual_colname, selected_genepairs, maxcell):
+ data_df = pd.DataFrame(data=data_sc.X.toarray(),
+ index=data_sc.obs.index,
+ columns=data_sc.var.index)
+ selected_genes = list(set([ele for item in selected_genepairs
+ for ele in item.split(';')]) & set(data_sc.var.index))
+ selected_genes_sorted_genepairs = [';'.join(sorted(item)) for item in combinations(selected_genes, 2)]
+ common_genepairs = list(set(selected_genes_sorted_genepairs) & set(selected_genepairs))
+ coef_df = pd.DataFrame(index=common_genepairs)
+ coef_p_df = pd.DataFrame(index=common_genepairs)
+ zscore_df = pd.DataFrame(index=common_genepairs)
+ zscore_p_df = pd.DataFrame(index=common_genepairs)
+ data_selected_df = data_df[selected_genes]
+ print(f"Begin calculating networks for {len(data_sc.obs[individual_colname].unique())} individuals.")
+ for ind_id in tqdm(data_sc.obs[individual_colname].unique()):
+ cell_num = data_sc.obs[data_sc.obs[individual_colname] == ind_id].shape[0]
+ if cell_num > 10:
+ if maxcell>0 and cell_num >= maxcell:
+ individual_df = data_selected_df.loc[data_sc.obs[individual_colname] == ind_id].sample(maxcell, random_state=5)
+ cell_num = maxcell
+ else:
+ individual_df = data_selected_df.loc[data_sc.obs[individual_colname] == ind_id]
+ # individual_df = data_selected_df.loc[data_sc.obs[individual_colname] == ind_id]
+ individual_coefs, individual_coef_ps = spearmanr_withnan(individual_df.values, axis=0)
+ try:
+ individual_coefs_flatten = pd.DataFrame(data=individual_coefs[np.triu_indices_from(individual_coefs, 1)],
+ index=selected_genes_sorted_genepairs).loc[common_genepairs]
+ individual_coef_ps_flatten = pd.DataFrame(data=individual_coef_ps[np.triu_indices_from(individual_coefs, 1)],
+ index=selected_genes_sorted_genepairs).loc[common_genepairs]
+ individual_zscores_flatten, individual_zscore_ps_flatten = corr_to_z(individual_coefs_flatten.values,
+ cell_num)
+ coef_df[ind_id] = individual_coefs_flatten
+ coef_p_df[ind_id] = individual_coef_ps_flatten
+ zscore_df[ind_id] = individual_zscores_flatten
+ zscore_p_df[ind_id] = individual_zscore_ps_flatten
+ except:
+ continue
+ else:
+ print("Deleted this individual because of low cell number", cell_num)
+ return coef_df, coef_p_df, zscore_df, zscore_p_df
+
+
+def get_individual_networks_given_celltype_condition_datasetname(celltype, datasetname, condition='UT', maxcell=-1):
+ # load the data and data information
+ dataset = DATASET(datasetname)
+ dataset.load_dataset()
+ print(f"{datasetname} loaded.")
+ # calculate the individual network for specific condition and celltype
+ print(datasetname, celltype, condition)
+ work_prefix = Path('./')
+ selected_genepairs_path = work_prefix / f'coeqtl_mapping/input/snp_genepair_selection/{condition}_{celltype}_{datasetname}.baseline.tsv'
+ selected_genepairs = pd.read_csv(selected_genepairs_path, sep='\t')['genepair_sorted'].values
+ if datasetname == 'ng':
+ data_selected = dataset.data_sc[(dataset.data_sc.obs[dataset.celltype_id] == celltype)]
+ else:
+ data_selected = dataset.data_sc[(dataset.data_sc.obs[dataset.celltype_id] == celltype) &
+ (dataset.data_sc.obs[dataset.timepoint_id_col] == dataset.chosen_condition[condition])]
+ individual_coefs_df, individual_coefs_p_df, individual_zscores_df, individual_zscores_p_df = \
+ get_individual_networks_selected_genepairs(
+ data_selected,
+ dataset.individual_id_col,
+ selected_genepairs,
+ maxcell
+ )
+ print(individual_coefs_df.head())
+ save_prefix = Path('./coeqtl_mapping/input')
+ if not os.path.exists(save_prefix / 'individual_networks' / condition / datasetname):
+ os.mkdir(save_prefix / 'individual_networks' / condition / datasetname)
+ save_numpy(individual_zscores_df,
+ save_prefix / 'individual_networks' / condition / datasetname / f'{condition}_{celltype}.max{maxcell}cells.zscores')
+ print("Saved ")
+ return individual_coefs_df, individual_coefs_p_df, individual_zscores_df, individual_zscores_p_df
+
+
+def argumentsparser():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--datasetname', type=str, dest='datasetname')
+ parser.add_argument('--celltype', type=str, dest='celltype')
+ parser.add_argument('--condition', type=str, dest='condition')
+ parser.add_argument('--maxcell', type=float, dest='maxcell')
+ return parser
+
+def run_get_individual_networks_given_celltype_condition_datasetname():
+ args = argumentsparser().parse_args()
+ print(f"Starting to calculate individual network for {args.datasetname}, {args.celltype}, {args.condition}, "
+ f"for max cell number {args.maxcell}.")
+ _ = get_individual_networks_given_celltype_condition_datasetname(celltype=args.celltype,
+ condition=args.condition,
+ datasetname=args.datasetname,
+ maxcell=int(args.maxcell))
+ return None
+
+if __name__ == '__main__':
+ run_get_individual_networks_given_celltype_condition_datasetname()
\ No newline at end of file
diff --git a/04_coeqtl_mapping/launch_sbatch_files.sh b/04_coeqtl_mapping/launch_sbatch_files.sh
new file mode 100644
index 0000000..27633da
--- /dev/null
+++ b/04_coeqtl_mapping/launch_sbatch_files.sh
@@ -0,0 +1,48 @@
+# Calculate individual networks
+working_dir=/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping
+condition='UT'
+for celltype in 'CD4T' 'CD8T' 'B' 'NK' 'DC'
+do
+for dataset in 'stemiv2' 'onemillionv2' 'onemillionv3' 'ng'
+do
+ echo ${dataset}_${condition}_${celltype}
+ sbatch --parsable --job-name ${dataset}_${condition}_${celltype} \
+ --output ${working_dir}/input/individual_networks/logs/${dataset}_${condition}_${celltype}.out \
+ --error ${working_dir}/input/individual_networks/logs/${dataset}_${condition}_${celltype}.err \
+ ${working_dir}/input/individual_networks/submit_individual_networks.sh ${dataset} ${celltype} ${condition}
+done
+done # decided not to save into tsv after saving in numpy
+
+# merge individual networks and create gene list and annotation file for betaqtl
+for celltype in 'CD4T' 'CD8T' 'B' 'NK' 'DC'
+do
+ echo ${condition}_${celltype}
+ sbatch --parsable --job-name merge_${condition}_${celltype} \
+ --output ${working_dir}/input/individual_networks/logs/merge_${condition}_${celltype}.out \
+ --error ${working_dir}/input/individual_networks/logs/merge_${condition}_${celltype}.err \
+ ${working_dir}/input/individual_networks/submit_merge_coexpression.sh ${celltype} ${condition}
+done
+
+
+# rsync the betaqtl_scripts to gearshift: /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output/${condition}_${celltype}
+# make batches for betaqtl
+for celltype in 'CD4T' 'CD8T' 'B' 'NK' 'DC'
+do
+cd ${working_dir}/output/${condition}_${celltype} ||exit
+./createBatches.sh ${condition} ${celltype}
+# submit betaqtl jobs
+./suball.sh ${working_dir}/output/${condition}_${celltype}/noduplicated/jobs
+./suball.sh ${working_dir}/output/${condition}_${celltype}/duplicatedversion1/jobs
+./suball.sh ${working_dir}/output/${condition}_${celltype}/duplicatedversion2/jobs
+done
+
+# concate and process output from betaqtl
+for celltype in 'CD4T' 'CD8T' 'B' 'NK' 'DC'
+do
+ cd ${working_dir}/output/${condition}_${celltype} ||exit
+ echo ${condition}_${celltype}
+ sbatch --parsable --job-name process_betaqtl_results_${condition}_${celltype} \
+ --output ${working_dir}/input/individual_networks/logs/process_betaqtl_results_${condition}_${celltype}.out \
+ --error ${working_dir}/input/individual_networks/logs/process_betaqtl_results_${condition}_${celltype}.err \
+ ${working_dir}/output/submit_process_betaqtl_results.sh ${condition} ${celltype}
+done
\ No newline at end of file
diff --git a/04_coeqtl_mapping/merge_coexpression_for_betaeqtl.py b/04_coeqtl_mapping/merge_coexpression_for_betaeqtl.py
new file mode 100644
index 0000000..e1bb6fd
--- /dev/null
+++ b/04_coeqtl_mapping/merge_coexpression_for_betaeqtl.py
@@ -0,0 +1,40 @@
+import pandas as pd
+from pathlib import Path
+import numpy as np
+import argparse
+
+
+def read_numpy(prefix):
+ data = np.load(f'{prefix}.npy')
+ columns = [item.strip() for item in open(f'{prefix}.cols.txt', 'r').readlines()]
+ rows = [item.strip() for item in open(f'{prefix}.rows.txt', 'r').readlines()]
+ return pd.DataFrame(data=data, columns=columns, index=rows)
+
+
+def concat_numpy_files(celltype, condition, res_prefix):
+ allres = pd.DataFrame()
+ for dataset in ['onemillionv2', 'onemillionv3', 'stemiv2', 'ng']:
+ if condition =='stimulated' and dataset == 'ng':
+ continue
+ else:
+ numpyfile_path = res_prefix/condition/dataset/f'{condition}_{celltype}.zscores'
+ df = read_numpy(numpyfile_path)
+ allres = pd.concat([df, allres], axis=1)
+ print(f'Adding {dataset}, it has shape:', allres.shape)
+ allres.to_csv(res_prefix/condition/f'{condition}_{celltype}.onemillionv23stemiv2ng.zscores.tsv', sep='\t')
+ return allres
+
+
+def argumentsparser():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--celltype', type=str, dest='celltype')
+ parser.add_argument('--condition', type=str, dest='condition')
+ return parser
+
+
+workdir = Path("/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping")
+res_prefix = workdir/'input/individual_networks/'
+
+args = argumentsparser().parse_args()
+celltype, condition = args.celltype, args.condition
+_ = concat_numpy_files(celltype, condition, res_prefix)
\ No newline at end of file
diff --git a/04_coeqtl_mapping/merge_coexpression_for_betaeqtl_maxcell.py b/04_coeqtl_mapping/merge_coexpression_for_betaeqtl_maxcell.py
new file mode 100644
index 0000000..319f6a2
--- /dev/null
+++ b/04_coeqtl_mapping/merge_coexpression_for_betaeqtl_maxcell.py
@@ -0,0 +1,42 @@
+import pandas as pd
+from pathlib import Path
+import numpy as np
+import argparse
+
+
+def read_numpy(prefix):
+ data = np.load(f'{prefix}.npy')
+ columns = [item.strip() for item in open(f'{prefix}.cols.txt', 'r').readlines()]
+ rows = [item.strip() for item in open(f'{prefix}.rows.txt', 'r').readlines()]
+ return pd.DataFrame(data=data, columns=columns, index=rows)
+
+
+def concat_numpy_files(celltype, condition, res_prefix, maxcell):
+ allres = pd.DataFrame()
+ for dataset in ['onemillionv2', 'onemillionv3', 'stemiv2', 'ng']:
+ if condition =='stimulated' and dataset == 'ng':
+ continue
+ else:
+ numpyfile_path = res_prefix/condition/dataset/f'{condition}_{celltype}.max{maxcell}cells.zscores'
+ df = read_numpy(numpyfile_path)
+ allres = pd.concat([df, allres], axis=1, join='outer')
+ print(f'Adding {dataset}, it has shape:', allres.shape)
+ allres.to_csv(res_prefix/condition/f'{condition}_{celltype}.max{maxcell}cells.onemillionv23stemiv2ng.zscores.tsv.gz',
+ compression='gzip', sep='\t')
+ return allres
+
+
+def argumentsparser():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--celltype', type=str, dest='celltype')
+ parser.add_argument('--condition', type=str, dest='condition')
+ parser.add_argument('--maxcell', type=str, dest='maxcell')
+ return parser
+
+
+workdir = Path("./coeqtl_mapping")
+res_prefix = workdir/'input/individual_networks/'
+
+args = argumentsparser().parse_args()
+celltype, condition, maxcell = args.celltype, args.condition, int(args.maxcell)
+_ = concat_numpy_files(celltype, condition, res_prefix, maxcell)
diff --git a/04_coeqtl_mapping/merge_coexpression_for_betaqtl.subsampleindividuals.py b/04_coeqtl_mapping/merge_coexpression_for_betaqtl.subsampleindividuals.py
new file mode 100644
index 0000000..d0e2dc0
--- /dev/null
+++ b/04_coeqtl_mapping/merge_coexpression_for_betaqtl.subsampleindividuals.py
@@ -0,0 +1,44 @@
+import pandas as pd
+from pathlib import Path
+import numpy as np
+import argparse
+
+
+def read_numpy(prefix):
+ data = np.load(f'{prefix}.npy')
+ columns = [item.strip() for item in open(f'{prefix}.cols.txt', 'r').readlines()]
+ rows = [item.strip() for item in open(f'{prefix}.rows.txt', 'r').readlines()]
+ return pd.DataFrame(data=data, columns=columns, index=rows)
+
+
+def concat_numpy_files(celltype, condition, res_prefix, num):
+ allres = pd.DataFrame()
+ for dataset in ['onemillionv2', 'onemillionv3', 'stemiv2', 'ng']:
+ if condition =='stimulated' and dataset == 'ng':
+ continue
+ else:
+ numpyfile_path = res_prefix/condition/dataset/f'{condition}_{celltype}.zscores'
+ df = read_numpy(numpyfile_path)
+ allres = pd.concat([df, allres], axis=1, join='outer')
+ print(f'Adding {dataset}, it has shape:', allres.shape)
+ allres.sample(num, axis=1).to_csv(res_prefix/condition/f'{condition}_{celltype}.onemillionv23stemiv2ng.{num}randompeople.zscores.tsv.gz',
+ sep='\t', compression='gzip')
+ # allres.sample(50).to_csv(res_prefix / condition / f'{condition}_{celltype}.onemillionv23stemiv2ng.50randompeople.zscores.tsv.gz',
+ # sep='\t', compression='gzip')
+ return allres
+
+
+def argumentsparser():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--celltype', type=str, dest='celltype')
+ parser.add_argument('--condition', type=str, dest='condition')
+ parser.add_argument('--num', type=str, dest='num')
+ return parser
+
+
+workdir = Path("./coeqtl_mapping")
+res_prefix = workdir/'input/individual_networks/'
+
+args = argumentsparser().parse_args()
+celltype, condition, number = args.celltype, args.condition, int(args.num)
+_ = concat_numpy_files(celltype, condition, res_prefix, number)
\ No newline at end of file
diff --git a/04_coeqtl_mapping/multipletesting_correction.fixed.py b/04_coeqtl_mapping/multipletesting_correction.fixed.py
new file mode 100644
index 0000000..bf7a9c4
--- /dev/null
+++ b/04_coeqtl_mapping/multipletesting_correction.fixed.py
@@ -0,0 +1,129 @@
+import pandas as pd
+from statsmodels.stats.multitest import multipletests
+import numpy as np
+import argparse
+from scipy.optimize import minimize
+from scipy.stats import beta
+from scipy import special
+from pathlib import Path
+
+
+def read_numpy(prefix):
+ data = np.load(f'{prefix}.npy')
+ columns = [f'perm{item.strip()}' for item in open(f'{prefix}.cols.txt', 'r').readlines()]
+ rows = [item.strip() for item in open(f'{prefix}.rows.txt', 'r').readlines()]
+ return pd.DataFrame(data=data, columns=columns, index=rows)
+
+
+def beta_distribution_mle_function(x, p):
+ k, n = x
+ ll = (k - 1) * np.sum(np.log(p)) + (n - 1) * np.sum(np.log(1 - p)) - np.size(p) * special.betaln(k, n)
+ return -1 * ll
+
+
+def beta_distribution_initial_guess(x):
+ """
+ https://stats.stackexchange.com/questions/13245/which-is-a-good-tool-to-compute-parameters-for-a-beta-distribution
+ """
+ mean = np.mean(x)
+ var = np.var(x)
+ a = mean * ((mean * (1 - mean) / var) - 1)
+ b = (1 - mean) * ((mean * (1 - mean) / var) - 1)
+ return a, b
+
+
+def fit_beta_distribution(p, a_bnd=(0.1, 10), b_bnd=(1, 1000000)):
+ a, b = beta_distribution_initial_guess(p)
+ x0 = np.array([min(max(a, a_bnd[0]), a_bnd[1]), min(max(b, b_bnd[0]), b_bnd[1])])
+ res = minimize(beta_distribution_mle_function,
+ x0=x0,
+ args=(p, ),
+ method='nelder-mead',
+ bounds=(a_bnd, b_bnd),
+ options={"maxiter": 10000, "disp": True})
+ return res.x, res.nfev, res.nit
+
+
+def arguments():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--permutation_pvalue_path', dest='permutation_pvalue_path')
+ parser.add_argument('--coeqtl_path', dest='coeqtl_path')
+ parser.add_argument('--eqtl_path', dest='eqtl_path')
+ parser.add_argument('--save_prefix', dest='saveprefix')
+ return parser
+
+
+def find_eqtlsnp_gene(snp, genepair, eqtl_snp_gene_set):
+ gene1, gene2 = genepair.split(';')
+ if '_'.join([snp, gene1]) in eqtl_snp_gene_set:
+ return '_'.join([snp, gene1])
+ else:
+ return '_'.join([snp, gene2])
+
+
+def find_eqtl_gene(coeqtl_chrpos, annotation_dict):
+ annotation_eqtlgene = annotation_dict.get(coeqtl_chrpos)
+ return annotation_eqtlgene
+
+def main():
+ args = arguments().parse_args()
+ coeqtl_path = args.coeqtl_path
+ eqtls_path = args.eqtl_path
+ saveprefix = args.saveprefix
+ permutation_pvalue_path = args.permutation_pvalue_path
+ permutation_cols = [f'Perm{ind}' for ind in range(0, 100)]
+ permutation_pvalues_df = pd.read_csv(permutation_pvalue_path, sep='\t',
+ compression='gzip', index_col=0)
+ eqtl_df = pd.read_csv(eqtls_path, sep='\t')
+ eqtl_df['chr_pos'] = ['_'.join([str(ele) for ele in item]) for item in eqtl_df[['ProbeChr', 'ProbeCenterChrPos']].values]
+ eqtl_snp_gene_set = set(['_'.join(item) for item in eqtl_df[['SNPName', 'genename']].values])
+ annotation_path = '/groups/umcg-bios/tmp01/projects/1M_cells_scRNAseq/ongoing/eQTL_mapping/probeannotation/singleCell-annotation-stripped.tsv'
+ mappingdic = pd.read_csv('/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/resources/features_v3_reformated_names.tsv',
+ sep='\t', names=['geneid', 'genename']).set_index('geneid')['genename'].T.to_dict()
+ annotation_df = pd.read_csv(annotation_path, sep='\t')
+ annotation_df['chr_pos'] = ['_'.join([str(ele) for ele in item]) for item in annotation_df[['Chr', 'ChrStart', 'ChrEnd']].values]
+ annotation_df['genename'] = [mappingdic.get(ensemblid) for ensemblid in annotation_df['Ensembl']]
+ annotation_dict = annotation_df.set_index('chr_pos')['genename'].T.to_dict()
+ # eqtl_df['snp_gene'] = ['_'.join(item) for item in eqtl_df[['SNPName', 'genename']].values]
+ # eqtl_snp_gene_set = set(eqtl_df['snp_gene'])
+ coeqtls = pd.read_csv(coeqtl_path, sep='\t', index_col=0, compression='gzip')
+ coeqtls['eqtlgene'] = [find_eqtl_gene(chr_pos, annotation_dict) for (chr_pos) in coeqtls['chr_pos']]
+ coeqtls['snp_eqtlgene'] = ['_'.join(item) for item in coeqtls[['SNP', 'eqtlgene']].values]
+ coeqtls_lowest_nominalP = coeqtls.sort_values(by='MetaP', ascending=True).drop_duplicates(subset=['snp_eqtlgene'])
+ coeqtls_lowest_nominalP_dict = coeqtls_lowest_nominalP.set_index('snp_eqtlgene')['MetaP'].T.to_dict()
+ permutation_pvalues_df['SNP'] = [item.split('_')[0] for item in permutation_pvalues_df.index]
+ permutation_pvalues_df['nominalP'] = [coeqtls_lowest_nominalP_dict.get(snp) for snp in
+ permutation_pvalues_df.index]
+ permutation_pvalues_df = permutation_pvalues_df.dropna(subset=['nominalP'])
+ permutation_pvalues_df['beta_shape1'], permutation_pvalues_df['beta_shape2'] = \
+ zip(*[fit_beta_distribution(x)[0] for x in permutation_pvalues_df[permutation_cols].values])
+ permutation_pvalues_df['pval_beta'] = [1-beta.sf(x[0], x[1], x[2]) for x in
+ permutation_pvalues_df[['nominalP', 'beta_shape1', 'beta_shape2']].values]
+ assert permutation_pvalues_df['pval_beta'].isnull().sum() == 0
+ # over all eqtls, perform BH-FDR
+ permutation_pvalues_df['qval'] = multipletests(permutation_pvalues_df['pval_beta'].values, method='fdr_bh')[1]
+ permutation_pvalues_df.to_csv(f'{saveprefix}.eqtls_betaadjustedPs.tsv.gz', sep='\t', compression='gzip')
+ ub = permutation_pvalues_df[permutation_pvalues_df['qval']>=0.05].sort_values(by=['pval_beta'], ascending=True)['pval_beta'].values[0]
+ lb = permutation_pvalues_df[permutation_pvalues_df['qval']<=0.05].sort_values(by=['pval_beta'], ascending=False)['pval_beta'].values[0]
+ pthreshold = (ub + lb) / 2
+ print('Minimum p-value threshold', pthreshold)
+ permutation_pvalues_df['threshold_per_betadistribution'] = [beta.ppf(pthreshold, x[0], x[1]) for x in
+ permutation_pvalues_df[['beta_shape1', 'beta_shape2']].values]
+ permutation_pvalue_threshold_dict = permutation_pvalues_df.T.to_dict()
+ coeqtls['snp_beta_shape1'] = [permutation_pvalue_threshold_dict.get(snp)['beta_shape1'] for snp in coeqtls['snp_eqtlgene'].values]
+ coeqtls['snp_beta_shape2'] = [permutation_pvalue_threshold_dict.get(snp)['beta_shape2'] for snp in coeqtls['snp_eqtlgene']]
+ coeqtls['snp_pvalbeta'] = [permutation_pvalue_threshold_dict.get(snp)['pval_beta'] for snp in coeqtls['snp_eqtlgene']]
+ coeqtls['snp_qval'] = [permutation_pvalue_threshold_dict.get(snp)['qval'] for snp in coeqtls['snp_eqtlgene']]
+ coeqtls['gene2_pthreshold'] = [permutation_pvalue_threshold_dict.get(snp)['threshold_per_betadistribution']
+ for snp in coeqtls['snp_eqtlgene']]
+ issig = lambda x:True if x[0] <= x[1] else False
+ coeqtls['gene2_isSig'] = [issig(item) for item in coeqtls[['MetaP', 'gene2_pthreshold']].values]
+ significant_coeqtls = coeqtls[(coeqtls['snp_qval']<=0.05) & (coeqtls['gene2_isSig'])]
+ print('Significant results:', significant_coeqtls.shape[0])
+ coeqtls.to_csv(f'{saveprefix}.all.tsv.gz', sep='\t', compression='gzip')
+ significant_coeqtls.to_csv(f'{saveprefix}.sig.tsv.gz', sep='\t', compression='gzip')
+ return coeqtls
+
+
+if __name__ == '__main__':
+ _ = main()
diff --git a/04_coeqtl_mapping/plot_celltype_overlap_upset.R b/04_coeqtl_mapping/plot_celltype_overlap_upset.R
new file mode 100644
index 0000000..8e5cd48
--- /dev/null
+++ b/04_coeqtl_mapping/plot_celltype_overlap_upset.R
@@ -0,0 +1,46 @@
+# ------------------------------------------------------------------------------
+# Generate an upset plot of overlap between cell types
+# Input: significant co-eQTL results per cell type
+# Output: upset plot
+# ------------------------------------------------------------------------------
+
+library(data.table)
+library(UpSetR)
+
+coeqtls_mono<-fread("coeqtl_mapping/output/filtered_results/UT_monocyte/coeqtls_fullresults_fixed.sig.tsv.gz")
+coeqtls_cd4t<-fread("coeqtl_mapping/output/filtered_results/UT_CD4T/coeqtls_fullresults_fixed.sig.tsv.gz")
+coeqtls_cd8t<-fread("coeqtl_mapping/output/filtered_results/UT_CD8T/coeqtls_fullresults_fixed.sig.tsv.gz")
+coeqtls_nk<-fread("coeqtl_mapping/output/filtered_results/UT_NK/coeqtls_fullresults_fixed.sig.tsv.gz")
+coeqtls_dc<-fread("coeqtl_mapping/output/filtered_results/UT_DC/coeqtls_fullresults_fixed.sig.tsv.gz")
+coeqtls_b<-fread("coeqtl_mapping/output/filtered_results/UT_B/coeqtls_fullresults_fixed.sig.tsv.gz")
+
+pdf(paste0(outdir, "grn_plot_snp_gene_gene.pdf"))
+
+upset(fromList(list(Monocyte = coeqtls_mono$snp_genepair,
+ `CD4+ T` = coeqtls_cd4t$snp_genepair,
+ `CD8+ T` = coeqtls_cd8t$snp_genepair,
+ NK = coeqtls_nk$snp_genepair,
+ DC = coeqtls_dc$snp_genepair,
+ B = coeqtls_b$snp_genepair)),
+ set_size.show = T,set_size.scale_max = 600,
+ mainbar.y.label = "SNP-Gene-Gene",
+ nintersects = 40, nsets = 10,
+ text.scale = 1.5)
+
+dev.off()
+
+#Identify all elements that are in at least four of the six cell types
+all_coeqtls<-c(unique(coeqtls_mono$snp_genepair),
+ unique(coeqtls_cd4t$snp_genepair),
+ unique(coeqtls_cd8t$snp_genepair),
+ unique(coeqtls_nk$snp_genepair),
+ unique(coeqtls_dc$snp_genepair),
+ unique(coeqtls_b$snp_genepair))
+
+occurrence<-data.frame(table(all_coeqtls))
+
+#Show all coeQTLs part of at least three different cell types:
+most_occ<-occurrence[occurrence$Freq > 2,]
+#How many of the frequent coeQTls are associated with the RPS26 locus:
+mean(startsWith(as.character(most_occ$all_coeqtls),"rs1131017"))
+
diff --git a/04_coeqtl_mapping/plot_co-eQTL.R b/04_coeqtl_mapping/plot_co-eQTL.R
new file mode 100644
index 0000000..0357de4
--- /dev/null
+++ b/04_coeqtl_mapping/plot_co-eQTL.R
@@ -0,0 +1,152 @@
+############################################################################################################################
+# Code Author: Dylan de Vries
+# Name: plot_co-eQTL.R
+# Function: Plot co-eQTLs
+############################################################################################################################
+#
+# Libraries
+#
+############################################################################################################################
+library(data.table)
+library(ggplot2)
+library(ggbeeswarm)
+library(gridExtra)
+
+############################################################################################################################
+#
+# Functions
+#
+############################################################################################################################
+# Name: get.expression.data
+# Function: Get the expression data and calculate the co-expression for plotting purposes
+# Input:
+# Name Type Description
+# sample character sample name
+# cell.type character cell type to get the data for
+# gene1 character first gene to get data for
+# gene2 character second gene to get data for
+# genotype character the genotype of the co-eQTL for this sample
+#
+# Output:
+# A list with two data frames of one sample. The first is for making the boxplots and the second for the personalized expression regression plot
+get.expression.data <- function(sample, cell.type, gene1, gene2, genotype){
+ sample.gene1.expression <- data@assays$SCT@data[gene1, rownames(data@meta.data[data@meta.data$cell_type_lowerres == cell.type & data@meta.data$assignment == sample,])]
+ sample.gene2.expression <- data@assays$SCT@data[gene2, rownames(data@meta.data[data@meta.data$cell_type_lowerres == cell.type & data@meta.data$assignment == sample,])]
+
+ sample.co.expression <- cor(sample.gene1.expression, sample.gene2.expression, method="spearman")
+ expr.plot.data <- data.frame(gene1.expression=sample.gene1.expression, gene2.expression=sample.gene2.expression, sample=sample, genotype=genotype)
+ plot.data <- list(sample.co.expression, expr.plot.data)
+ return(plot.data)
+}
+
+# Name: prepare.plot.data
+# Function: Combine the data of all samples into data.frames
+# Input:
+# Name Type Description
+# gene1 character first gene to get data for
+# gene2 character second gene to get data for
+# SNP.name character the rs-ID for the co-eQTL SNP
+# cell.type character cell type to get the data for
+#
+# Output:
+# A list with two data frames. The first is for making the boxplots and the second for the personalized expression regression plot
+prepare.plot.data <- function(gene1, gene2, SNP.name, cell.type){
+ co.expressions <- c()
+ genotypes <- c()
+ expr.plot.data <- data.frame(gene1.expression=numeric(0), gene2.expression=numeric(0), sample=character(0), genotype=character(0))
+ for (sample in samples){
+ genotypes <- c(genotypes, genotypes_all[SNP.name, sample])
+ plot.data <- get.expression.data(sample, cell.type, gene1, gene2, genotypes_all[SNP.name, sample])
+ expr.plot.data <- rbind(expr.plot.data, plot.data[[2]])
+ co.expressions <- c(co.expressions, plot.data[[1]])
+ }
+ plot.data <- data.frame(co.expression=co.expressions, sample=samples, genotype=genotypes)
+ combined.plot.data <- list(plot.data, expr.plot.data)
+ return(combined.plot.data)
+}
+
+# Name: plot.co.eQTL.boxplot
+# Function: Make a plot for the co-eQTL
+# Input:
+# Name Type Description
+# plot.data data.frame the data for the boxplot
+# expr.plot.data data.frame the data for the expression regression plot
+# gene1 character first gene to get data for
+# gene2 character second gene to get data for
+# SNP.name character the rs-ID for the co-eQTL SNP
+# cell.type character cell type to get the data for
+# meta.z numeric meta z-score
+# QTL.type character indicates whether it's amongst the strongest, middle or weakest co-eQTLs
+# QTL.type.index character the index of the co-eQTL within its type
+#
+# Output:
+# A list with two data frames. The first is for making the boxplots and the second for the personalized expression regression plot
+plot.co.eQTL.boxplot <- function(plot.data, expr.plot.data, gene1, gene2, SNP.name, cell.type, meta.z, QTL.type, QTL.type.index){
+ genotype.colors <- c("#57a350", "#fd7600", "#383bfe", "white")
+ names(genotype.colors) <- c("0/0", "0/1", "1/1", "white")
+
+ sample.color <- c(colorRampPalette(c("#9efc95", "#57a350"))(length(which(plot.data$genotype=="0/0"))),
+ colorRampPalette(c("#fabb84", "#fd7600"))(length(which(plot.data$genotype=="0/1"))),
+ colorRampPalette(c("#acadfc", "#383bfe"))(length(which(plot.data$genotype=="1/1"))))
+ names(sample.color) <- c(as.character(plot.data$sample[plot.data$genotype == "0/0"]), as.character(plot.data$sample[plot.data$genotype == "0/1"]), as.character(plot.data$sample[plot.data$genotype == "1/1"]))
+
+ expr.plot <- ggplot(expr.plot.data, aes(x=gene1.expression, y=gene2.expression, fill=sample, color=sample)) + geom_point(size=0.5) +
+ geom_smooth(method = "lm", fullrange = T, se=F) +
+ scale_fill_manual(values=sample.color) +
+ scale_color_manual(values=sample.color) +
+ xlab(paste0(gene1, " expression")) +
+ ylab(paste0(gene2, " expression")) +
+ ggtitle(paste0(SNP.name, " effect on ", gene1, " - ", gene2, "\nco-expression")) +
+ guides(fill=FALSE, color=FALSE) +
+ theme(axis.text.x = element_text(angle = 90, hjust = 1, size=7), panel.border = element_rect(color="black", fill=NA, size=1.1), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank(), strip.background = element_rect(colour="white", fill="white"))
+
+ box.plot <- ggplot(plot.data) + geom_boxplot(aes(x=genotype, y=co.expression, fill=genotype), outlier.shape=NA, alpha=0.6) +
+ geom_quasirandom(aes(x=genotype, y=co.expression, color=genotype, fill="white"), pch=21, size=2, alpha=1, dodge.width=0.4, alpha=0.6) +
+ scale_fill_manual(values=genotype.colors) +
+ scale_color_manual(values=genotype.colors) +
+ xlab("Genotype") +
+ ylab(paste0(gene1, " - ", gene2, " co-expression")) +
+ ggtitle(paste0(SNP.name, " co-eQTL\n", QTL.type, " ", QTL.type.index)) +
+ guides(fill=FALSE, color=FALSE) +
+ theme(axis.text.x = element_text(angle = 90, hjust = 1, size=7), panel.border = element_rect(color="black", fill=NA, size=1.1), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank(), strip.background = element_rect(colour="white", fill="white"))
+
+ pdf(paste0("/groups/umcg-bios/tmp01/projects/1M_cells_scRNAseq/ongoing/co-eQTLs/plots/", cell.type, "/", cell.type, "_co-eQTL_", SNP.name, "_", gene1, "-", gene2, ".pdf"))
+ grid.arrange(expr.plot, box.plot, ncol=2)
+ dev.off()
+}
+
+############################################################################################################################
+#
+# Main code
+#
+############################################################################################################################
+data <- readRDS("/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/seurat_objects/1M_v2_mediumQC_ctd_rnanormed_demuxids_20201029.rds")
+vcf <- fread('/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/genotypes/LL_trityper_plink_converted.vcf.gz')
+target.QTLs <- read.table("/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output/filtered_results/UT_monocyte/coeqtls_fullresults.sig.tsv.gz", header=T, sep="\t", stringsAsFactors=F)
+target.QTLs <- target.QTLs[order(abs(target.QTLs$MetaPZ), decreasing=T),]
+genotypes_all <- as.data.frame(vcf[, 10:ncol(vcf)])
+rownames(genotypes_all) <- vcf$ID
+
+#Get the 10 strongest, 10 middling and 10 weakest of the input co-eQTLs
+QTL.selection <- target.QTLs[c(1:10, floor(nrow(target.QTLs)/2):(floor(nrow(target.QTLs)/2)+10), (nrow(target.QTLs)-10):nrow(target.QTLs)),]
+samples <- unique(data@meta.data$assignment)
+
+for (QTL.index in 1:nrow(QTL.selection)){
+ print(QTL.index)
+ if (QTL.index <= 10){
+ type <- "strong"
+ QTL.type.index <- QTL.index
+ } else if (QTL.index <= 20){
+ type <- "medium"
+ QTL.type.index <- QTL.index - 10
+ } else {
+ type <- "poor"
+ QTL.type.index <- QTL.index - 20
+ }
+ genes <- unlist(strsplit(QTL.selection$Gene[QTL.index], ";"))
+ combined.plot.data <- prepare.plot.data(genes[1], genes[2], QTL.selection$SNP[QTL.index], "monocyte")
+ plot.data <- combined.plot.data[[1]]
+ expr.plot.data <- combined.plot.data[[2]]
+
+ plot.co.eQTL.boxplot(plot.data, expr.plot.data, genes[1], genes[2], QTL.selection$SNP[QTL.index], "monocyte", QTL.selection$MetaPZ[QTL.index], type, QTL.type.index)
+}
diff --git a/04_coeqtl_mapping/plot_effect_concordance_across_cohorts.R b/04_coeqtl_mapping/plot_effect_concordance_across_cohorts.R
new file mode 100644
index 0000000..b876047
--- /dev/null
+++ b/04_coeqtl_mapping/plot_effect_concordance_across_cohorts.R
@@ -0,0 +1,73 @@
+################################################################################
+# Compare effect sizes (Z-scores) calculated in each individual dataset
+# (before the meta-analysis)
+# Input: coeqtls results of the respective cell type
+# Output: pairwise plot showing the differences for each combination of cohorts
+################################################################################
+
+library(GGally) #to generate pairwise comparison plots
+library(viridis)
+
+coeqtl_dir<-"coeqtl_mapping/output/filtered_results/"
+plot_dir<-"coeqtl_interpretation/plots_filtered/"
+
+cell_type<-"CD4T"
+
+# Load current set of coeQTL
+coeqtls<-fread(paste0(coeqtl_dir,"UT_",
+ cell_type,"/coeqtls_fullresults.all.tsv.gz"))
+coeqtls$gene1<-gsub(";.*","",coeqtls$Gene)
+coeqtls$gene2<-gsub(".*;","",coeqtls$Gene)
+
+# Gene 1 and 2 should be ordered alphabetically, but there is an issue regarding
+# small and capital letters (so order them again!)
+coeqtls$swap<-ifelse(coeqtls$gene1 > coeqtls$gene2,coeqtls$gene1,coeqtls$gene2)
+coeqtls$gene1<-ifelse(coeqtls$gene1 > coeqtls$gene2,coeqtls$gene2,coeqtls$gene1)
+coeqtls$gene2<-coeqtls$swap
+coeqtls$swap<-NULL
+
+# Filter for significant coeQTLs
+sign_coeqtls<-coeqtls[coeqtls$gene2_isSig == "TRUE" &
+ coeqtls$snp_qval <= 0.05,]
+
+print(paste(nrow(sign_coeqtls),"significant coeQTLs from",
+ nrow(coeqtls),"pairs"))
+print(paste("CoeQTLs consisting of:",
+ length(unique(sign_coeqtls$GeneSymbol)), "unique gene pairs from",
+ length(unique(c(sign_coeqtls$gene1,sign_coeqtls$gene2))),"unique genes",
+ "and",length(unique(sign_coeqtls$SNP)),"unique SNPs"))
+
+# Check Z score distribution
+z_scores<-strsplit(sign_coeqtls$`DatasetZScores(ng;onemillionv2;onemillionv3;stemiv2)`,
+ split=";")
+z_scores<-matrix(as.numeric(unlist(z_scores)),ncol=4,byrow=TRUE)
+z_scores<-as.data.frame(z_scores)
+colnames(z_scores)<-c("ng","onemillionv2","onemillionv3","stemiv2")
+z_scores$coeqtl<-sign_coeqtls$snp_genepair
+z_scores$meta_z<-sign_coeqtls$MetaPZ
+
+#Flip the Z-scores so that AF is always representing the minor allele
+z_scores$AF<-sign_coeqtls$SNPEffectAlleleFreq
+for(colN in c("ng","onemillionv2","onemillionv3","stemiv2","meta_z")){
+ z_scores[,colN]<-ifelse(z_scores$AF>=0.5,z_scores[,colN]*(-1),z_scores[,colN])
+}
+
+#Rename Z score columns
+colnames(z_scores)[1:4]<-c("van der Wijst","Oelen (v2)","Oelen (v3)", "van Blokland (v2)")
+z_scores<-z_scores[,c("Oelen (v2)","Oelen (v3)", "van Blokland (v2)",
+ "van der Wijst","coeqtl","meta_z","AF")]
+#Plot comparison of Z scores between cohorts
+lowerfun <- function(data,mapping){
+ ggplot(data = data, mapping = mapping)+
+ geom_bin2d()+
+ scale_fill_viridis("Density",breaks=c(2,7),labels = c("Low", "High"))+
+ geom_hline(yintercept=0)+geom_vline(xintercept=0)
+}
+
+g<-ggpairs(z_scores[1:4],
+ lower=list(continuous=wrap(lowerfun)),
+ legend=c(2,1))+
+ theme(legend.position = "bottom")
+ggsave(g,file=paste0(plot_dir,cell_type,
+ "_zscore_dist_cohorts.pdf"),
+ height=6,width=6)
\ No newline at end of file
diff --git a/04_coeqtl_mapping/plot_example_imputed_zero.ipynb b/04_coeqtl_mapping/plot_example_imputed_zero.ipynb
new file mode 100644
index 0000000..fc28e77
--- /dev/null
+++ b/04_coeqtl_mapping/plot_example_imputed_zero.ipynb
@@ -0,0 +1,571 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "import os\n",
+ "import re\n",
+ "from pathlib import Path\n",
+ "\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import scanpy as sc\n",
+ "from scipy.stats import spearmanr, pearsonr\n",
+ "from scipy.stats import t, norm\n",
+ "from tqdm import tqdm\n",
+ "\n",
+ "\n",
+ "def get_time(x):\n",
+ " if x == 'UT':\n",
+ " return x\n",
+ " else:\n",
+ " pattern = re.compile(r'\\d+h')\n",
+ " return re.findall(pattern, x)[0]\n",
+ "\n",
+ "\n",
+ "class DATASET:\n",
+ " def __init__(self, datasetname):\n",
+ " self.name = datasetname\n",
+ " self.path_prefix = Path(\"./seurat_objects\")\n",
+ " self.information = self.get_information()\n",
+ " def get_information(self):\n",
+ " if self.name == 'onemillionv2':\n",
+ " self.path = '1M_v2_mediumQC_ctd_rnanormed_demuxids_20201029.sct.h5ad'\n",
+ " self.individual_id_col = 'assignment'\n",
+ " self.timepoint_id_col = 'time'\n",
+ " self.celltype_id = 'cell_type_lowerres'\n",
+ " self.chosen_condition = {'UT': 'UT',\n",
+ " 'stimulated': '3h'}\n",
+ " elif self.name == 'onemillionv3':\n",
+ " self.path = '1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.SCT.h5ad'\n",
+ " self.individual_id_col = 'assignment'\n",
+ " self.timepoint_id_col = 'time'\n",
+ " self.celltype_id = 'cell_type_lowerres'\n",
+ " self.chosen_condition = {'UT': 'UT',\n",
+ " 'stimulated': '3h'}\n",
+ " elif self.name == 'stemiv2':\n",
+ " self.path = 'cardio.integrated.20210301.stemiv2.h5ad'\n",
+ " self.individual_id_col = 'assignment.final'\n",
+ " self.timepoint_id_col = 'timepoint.final'\n",
+ " self.celltype_id = 'cell_type_lowerres'\n",
+ " self.chosen_condition = {'UT': 't8w',\n",
+ " 'stimulated': 'Baseline'}\n",
+ " elif self.name == 'ng':\n",
+ " self.path = 'pilot3_seurat3_200420_sct_azimuth.h5ad'\n",
+ " self.individual_id_col = 'snumber'\n",
+ " self.celltype_id = 'cell_type_mapped_to_onemillion'\n",
+ " else:\n",
+ " raise IOError(\"Dataset name not understood.\")\n",
+ " def load_dataset(self):\n",
+ " self.get_information()\n",
+ " print(f'Loading dataset {self.name} from {self.path_prefix} {self.path}')\n",
+ " self.data_sc = sc.read_h5ad(self.path_prefix / self.path)\n",
+ " if self.name.startswith('onemillion'):\n",
+ " self.data_sc.obs['time'] = [get_time(item) for item in self.data_sc.obs['timepoint']]\n",
+ " elif self.name == 'ng':\n",
+ " celltype_maping = {'CD4 T': 'CD4T', 'CD8 T': 'CD8T', 'Mono': 'monocyte', 'DC': 'DC', 'NK': 'NK',\n",
+ " 'other T': 'otherT', 'other': 'other', 'B': 'B'}\n",
+ " self.data_sc.obs['cell_type_mapped_to_onemillion'] = [celltype_maping.get(name) for name in\n",
+ " self.data_sc.obs['predicted.celltype.l1']]\n",
+ " def get_cMono_ncMono(self):\n",
+ " def tell_cmono_foronemillion(x):\n",
+ " if x == 'mono 1' or x == 'mono 3' or x == 'mono 4':\n",
+ " return 'cMono'\n",
+ " elif x == 'mono 2':\n",
+ " return 'ncMono'\n",
+ " if self.name.startswith('onemillion'):\n",
+ " self.data_sc.obs['sub_monocytes'] = [tell_cmono_foronemillion(x) for x in\n",
+ " self.data_sc.obs['cell_type']]\n",
+ " self.cmono = self.data_sc[self.data_sc.obs['sub_monocytes'] == 'cMono']\n",
+ " self.ncmono = self.data_sc[self.data_sc.obs['sub_monocytes'] == 'ncMono']\n",
+ " elif self.name.startswith('stemi'):\n",
+ " self.cmono = self.data_sc[self.data_sc.obs['cell_type'] == 'cMono']\n",
+ " self.ncmono = self.data_sc[self.data_sc.obs['cell_type'] == 'ncMono']\n",
+ " elif self.name == 'ng':\n",
+ " self.cmono = self.data_sc[self.data_sc.obs['predicted.celltype.l2'] == 'CD14 Mono']\n",
+ " self.ncmono = self.data_sc[self.data_sc.obs['predicted.celltype.l2'] == 'CD16 Mono']\n",
+ " else:\n",
+ " raise IOError(\"Dataset name not understood.\")\n",
+ "\n",
+ "example_savedir = Path(\n",
+ " \"/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output/examples\"\n",
+ ")\n",
+ "\n",
+ "import subprocess\n",
+ "bashfile_path = '/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/bios/select_snps_from_vcf.sh'\n",
+ "def get_snps_from_vcffile(bashfile_path, vcf_path, snps_path, savepath):\n",
+ " response = subprocess.run([bashfile_path, vcf_path, snps_path, savepath])\n",
+ " print(response)\n",
+ " return None\n",
+ "\n",
+ "# sample id mapping\n",
+ "gtefile = pd.read_csv(\n",
+ " '/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/summary/gte-fix.tsv',\n",
+ " sep='\\t'\n",
+ ")\n",
+ "gte_dict = gtefile.set_index(\"expressionsampleID\")[\"genotypesampleID\"].T.to_dict()\n",
+ "\n",
+ "\n",
+ "def corr_to_z(coef, num):\n",
+ " t_statistic = coef * np.sqrt((num - 2) / (1 - coef ** 2))\n",
+ " prob = t.cdf(t_statistic, num - 2)\n",
+ " z_score = norm.ppf(prob)\n",
+ " positive_coef_probs = 1 - prob\n",
+ " positive_coef_probs[coef < 0] = 0\n",
+ " negative_coef_probs = prob\n",
+ " negative_coef_probs[coef > 0] = 0\n",
+ " probs = negative_coef_probs + positive_coef_probs\n",
+ " return z_score, probs\n",
+ "\n",
+ "\n",
+ "def get_individual_networks_selected_genepairs(data_df, data_sc, individual_colname, genepair, fillna=False):\n",
+ "# data_df = pd.DataFrame(data=data_sc.X.toarray(),\n",
+ "# index=data_sc.obs.index,\n",
+ "# columns=data_sc.var.index)\n",
+ " gene1, gene2 = genepair.split(';')\n",
+ " sorted_genepair = [';'.join(sorted([gene1, gene2]))]\n",
+ " coef_df = pd.DataFrame(index=sorted_genepair)\n",
+ " coef_p_df = pd.DataFrame(index=sorted_genepair)\n",
+ " zscore_df = pd.DataFrame(index=sorted_genepair)\n",
+ " zscore_p_df = pd.DataFrame(index=sorted_genepair)\n",
+ " data_selected_df = data_df[[gene1, gene2]]\n",
+ " print(\n",
+ " f\"Calculating networks for {len(data_sc.obs[individual_colname].unique())} individuals and;\\n{genepair}\"\n",
+ " )\n",
+ " for ind_id in tqdm(data_sc.obs[individual_colname].unique()):\n",
+ " cell_num = data_sc.obs[data_sc.obs[individual_colname] == ind_id].shape[0]\n",
+ " if cell_num > 10:\n",
+ " individual_df = data_selected_df.loc[data_sc.obs[individual_colname] == ind_id]\n",
+ " individual_coefs, individual_coef_ps = spearmanr(individual_df.values, axis=0)\n",
+ " if data_selected_df.shape[1] == 2:\n",
+ " individual_coefs_flatten = pd.DataFrame(data = [individual_coefs],\n",
+ " index = sorted_genepair)\n",
+ " individual_coef_ps_flatten = \\\n",
+ " pd.DataFrame(data=[individual_coef_ps],\n",
+ " index=sorted_genepair)\n",
+ " else:\n",
+ " individual_coefs_flatten = pd.DataFrame(\n",
+ " data=individual_coefs[np.triu_indices_from(individual_coefs, 1)],\n",
+ " index=sorted_genepair).loc[sorted_genepair]\n",
+ " individual_coef_ps_flatten = \\\n",
+ " pd.DataFrame(data=individual_coef_ps[np.triu_indices_from(individual_coefs, 1)],\n",
+ " index=sorted_genepair).loc[sorted_genepair]\n",
+ " coef_df[ind_id] = individual_coefs_flatten\n",
+ " coef_p_df[ind_id] = individual_coef_ps_flatten\n",
+ " try:\n",
+ " individual_zscores_flatten, individual_zscore_ps_flatten = corr_to_z(\n",
+ " individual_coefs_flatten.values,\n",
+ " cell_num\n",
+ " )\n",
+ " zscore_df[ind_id] = individual_zscores_flatten\n",
+ " zscore_p_df[ind_id] = individual_zscore_ps_flatten\n",
+ " except:\n",
+ " continue\n",
+ " else:\n",
+ " print(\"Deleted this individual because of low cell number\", cell_num)\n",
+ " if fillna:\n",
+ " zscore_df = zscore_df.fillna(0)\n",
+ " return data_selected_df, zscore_df, zscore_p_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Loading dataset onemillionv2 from /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/seurat_objects 1M_v2_mediumQC_ctd_rnanormed_demuxids_20201029.sct.h5ad\n"
+ ]
+ }
+ ],
+ "source": [
+ "datasetname = 'onemillionv2'\n",
+ "dataset = DATASET(datasetname)\n",
+ "dataset.load_dataset()\n",
+ "data_sc = dataset.data_sc"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "CompletedProcess(args=['/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/bios/select_snps_from_vcf.sh', '/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output/genotypevcfs/chr1/GenotypeData.vcf.gz', PosixPath('/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output/examples/snplist.rs221045'), PosixPath('/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output/examples/rs221045.vcf')], returncode=0)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " #CHROM | \n",
+ " POS | \n",
+ " ID | \n",
+ " REF | \n",
+ " ALT | \n",
+ " QUAL | \n",
+ " FILTER | \n",
+ " INFO | \n",
+ " FORMAT | \n",
+ " 1_LLDeep_1191 | \n",
+ " ... | \n",
+ " s21 | \n",
+ " s43 | \n",
+ " s24 | \n",
+ " s23 | \n",
+ " s45 | \n",
+ " s26 | \n",
+ " s25 | \n",
+ " s28 | \n",
+ " s27 | \n",
+ " s29 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 16530049 | \n",
+ " rs221045 | \n",
+ " T | \n",
+ " C | \n",
+ " . | \n",
+ " . | \n",
+ " . | \n",
+ " GT:DS | \n",
+ " 0/0:0.03 | \n",
+ " ... | \n",
+ " 0/1:1.0 | \n",
+ " 0/0:0.010000000000000009 | \n",
+ " 0/1:1.0 | \n",
+ " 0/0:0.0 | \n",
+ " 0/0:0.0 | \n",
+ " 1/1:2.0 | \n",
+ " 0/0:0.0 | \n",
+ " 0/1:1.0 | \n",
+ " 0/0:0.0 | \n",
+ " 0/1:1.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
1 rows × 182 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT 1_LLDeep_1191 \\\n",
+ "0 1 16530049 rs221045 T C . . . GT:DS 0/0:0.03 \n",
+ "\n",
+ " ... s21 s43 s24 s23 s45 s26 \\\n",
+ "0 ... 0/1:1.0 0/0:0.010000000000000009 0/1:1.0 0/0:0.0 0/0:0.0 1/1:2.0 \n",
+ "\n",
+ " s25 s28 s27 s29 \n",
+ "0 0/0:0.0 0/1:1.0 0/0:0.0 0/1:1.0 \n",
+ "\n",
+ "[1 rows x 182 columns]"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "celltype = 'monocyte'\n",
+ "snp_id = 'rs221045'\n",
+ "chromosome = '1'\n",
+ "snp_vcf_path = example_savedir/f'{snp_id}.vcf'\n",
+ "with open(example_savedir/f'snplist.{snp_id}', 'w') as f:\n",
+ " f.write(f'{snp_id}\\n')\n",
+ "vcf_path = f'/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output/genotypevcfs/chr{chromosome}/GenotypeData.vcf.gz'\n",
+ "get_snps_from_vcffile(bashfile_path, vcf_path, example_savedir/f'snplist.{snp_id}', snp_vcf_path)\n",
+ "gt = pd.read_csv(snp_vcf_path, sep='\\t', skiprows=6)\n",
+ "gt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Calculating networks for 72 individuals and;\n",
+ "AC005076.5;ARHGEF19\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/72 [00:00, ?it/s]/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/Beeline/miniconda/envs/scpy3.8/lib/python3.8/site-packages/scipy/stats/stats.py:4264: SpearmanRConstantInputWarning: An input array is constant; the correlation coefficent is not defined.\n",
+ " warnings.warn(SpearmanRConstantInputWarning())\n",
+ "100%|██████████| 72/72 [00:00<00:00, 210.51it/s]\n",
+ "/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/Beeline/miniconda/envs/scpy3.8/lib/python3.8/site-packages/seaborn/categorical.py:1296: UserWarning: 42.5% of the points cannot be placed; you may want to decrease the size of the markers or use stripplot.\n",
+ " warnings.warn(msg, UserWarning)\n",
+ "/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/Beeline/miniconda/envs/scpy3.8/lib/python3.8/site-packages/seaborn/categorical.py:1296: UserWarning: 7.1% of the points cannot be placed; you may want to decrease the size of the markers or use stripplot.\n",
+ " warnings.warn(msg, UserWarning)\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Not Imputed SpearmanrResult(correlation=-0.028018282506059713, pvalue=0.8942369051146191)\n",
+ "Imputed SpearmanrResult(correlation=-0.24638574744096847, pvalue=0.03833253459364005)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmkAAAFNCAYAAABbpPhvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAACfvklEQVR4nOydd3hTZdvAfyez6d67lNFS9kY2KAgoQ8SJ+vm+6Kso4sa99x6v8oqICu49QERkCgjKBtl7QxfdTdvM8/2RNm1o0zZtkybt87suLpIznufOac6d+9zPPSRZlmUEAoFAIBAIBF6ForkFEAgEAoFAIBBURxhpAoFAIBAIBF6IMNIEAoFAIBAIvBBhpAkEAoFAIBB4IcJIEwgEAoFAIPBChJEmEAgEAoFA4IUII00AQFpaGidOnGhuMVoEjzzyCG+//XZziyEQCJywceNGhg8f3txitBhGjhzJX3/91dxitEiEkdaENNcX9aeffuK6667z+LwNZdGiRVx00UX06tWLO+64g/z8/BqPy8nJ4f7772fo0KH07duXKVOm8M8//9j3b9y4kU6dOtG7d2/7v59//tlDn6J5qO+1Azh9+jQ33ngjPXv25JJLLnH4bm7YsIGJEyfSr18/BgwYwIwZM8jMzLTvz8/P595772XAgAEMGDCAmTNnUlxcDEBubi5TpkxhwIAB9OvXj2uvvZatW7e67TMLGsbIkSMZPHgwJSUl9m3ff/89N954Y73Ov/HGG/n++++d7j99+jRpaWmYzeZGy+oqvvQgJMsyr7/+uv1eeu2116itPOnff//NJZdcQs+ePbnxxhs5c+aMfd8nn3zCqFGj6NOnD0OHDuWll15qluvvKVy9dr/99huXXnopvXv3Zty4caxYscK+r7CwkIcffphBgwYxaNAgZs2aVeMYmzZtIi0tzeH7tXr1aq677jr69evHkCFDeOKJJ+z60N0II03gErIsY7VaG3z+oUOHeOqpp3jttddYv349Op2OZ599tsZjS0pK6N69Oz/99BObNm1i8uTJTJs2Db1ebz8mOjqa7du32/9Nnjy5wbJ5O65cO4CZM2fSpUsXNm7cyH333cfdd99Nbm4uACkpKXz00Uds2bKFP//8k+TkZJ5++mn7uf/9738pLCxk5cqVrFixgpycHLtSCwgI4KWXXuLvv/9m8+bN3HrrrUyfPr1F/1j4KhaLhc8++6y5xfBpGvu9/vbbb1mxYgULFy7kl19+YfXq1XzzzTc1Hpubm8udd97JPffcw6ZNm+jWrRv33Xefff/IkSP5+eef2bZtG7/++iv79+/n888/b5R83owr1y4zM5OHHnqIRx55hG3btvHQQw8xc+ZMcnJyAHj55ZcpLS1l1apVfP/99yxcuJAff/zRYQyTycSLL75Iz549HbYXFRUxffp0/vzzT3777TcyMjJ47bXX3POhz0MYaW7ip59+YsqUKbz00kv069ePUaNGsW3bNn766SdGjBjBoEGDHLw+jzzyCE899RQ33XQTvXv35v/+7//sT1A1PbFWPOUeOXKEp59+mh07dtC7d2/69esHgNFo5NVXX+XCCy9k8ODBPPXUU5SVldnP/+ijjxg6dChDhw7lhx9+qPWz3Hjjjbz99ttMmTKFnj17curUqQZfl0WLFjFy5Ej69+9PQEAA99xzD8uXL6/xqSQpKYmbbrqJ6OholEol1157LSaTiWPHjtVrrrlz53Lbbbc53T9y5Eg++OADxo0bR//+/Xn00UcxGAwAXHrppfzxxx/2Y81mMwMGDGDPnj0A3H333QwZMoS+fftyww03cOjQoRrnqMnLWXVpua6/U1VcuXbHjh1jz5493HXXXfj5+TF27Fg6duzI0qVLAYiMjCQmJsZ+vFKp5OTJk/b3p0+fZtSoUQQGBhIUFMTo0aM5fPgwAFqtlvbt26NQKJBlGYVCQUFBAQUFBU6vtaB5+M9//sO8efMoLCyscf+2bdu48sor6du3L1deeSXbtm0D4O2332bLli0899xz9O7dm+eee67OuR555BGeeeYZbrnlFnr37s2UKVPIzs7mxRdfpH///lxyySXs3bvXfnxt919t9823337LokWL+Pjjj+nduze33347YPuRvuuuuxg4cCAjR450ME7Lysp45JFH6N+/P+PGjWPXrl21fpa0tDS+/PJLxowZw5gxY+r87LWxYMECbr75ZmJjY4mJieGmm25y6vFfvnw5qampXHrppWi1Wu666y7279/PkSNHAGjTpg3BwcEA9nuvapjKbbfdxty5c2scu+J35Ntvv7Xr/nnz5gG2a9ejRw8Hz/zevXsZMGAAJpOJkydP8q9//cvBs+7sO3W+l/P8peXa/k6NuXYZGRkEBQUxYsQIJEniwgsvRKfT2fXaqlWruOWW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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# genepair = 'RP1-29C18.10;ZNF501'\n",
+ "# genepair = 'CCDC15;UNC5B'\n",
+ "# genepair = 'GSTM3;RP1-29C18.10'\n",
+ "# genepair = 'MMEL1;SARS2'\n",
+ "genepair = 'AC005076.5;ARHGEF19'\n",
+ "gene1, gene2 = genepair.split(';')\n",
+ "\n",
+ "if datasetname == 'ng':\n",
+ " ut_celltype = data_sc[data_sc.obs[dataset.celltype_id]==celltype]\n",
+ "else:\n",
+ " ut_celltype = data_sc[(data_sc.obs[dataset.celltype_id]==celltype) &\n",
+ " (data_sc.obs[dataset.timepoint_id_col]==dataset.chosen_condition['UT'])]\n",
+ "\n",
+ "ut_celltype_df = pd.DataFrame(data=ut_celltype.X.toarray(),\n",
+ " columns=ut_celltype.var.index,\n",
+ " index=ut_celltype.obs.index)\n",
+ "selected_expression_df, ut_zscore_df, ut_zscore_p_df = get_individual_networks_selected_genepairs(\n",
+ " data_df = ut_celltype_df,\n",
+ " data_sc = ut_celltype,\n",
+ " individual_colname = dataset.individual_id_col,\n",
+ " genepair = genepair,\n",
+ " fillna=False\n",
+ ")\n",
+ "\n",
+ "ut_t = ut_zscore_df.T\n",
+ "ut_t['gt_sampleid'] = [gte_dict.get(name) for name in ut_t.index]\n",
+ "ut_t = ut_t.set_index('gt_sampleid')\n",
+ "common_individuals = list(set(gt.columns) & set(ut_t.index))\n",
+ "gt_t = gt[common_individuals].T\n",
+ "gt_t['genotype'] = [item.split(':')[0].count('1') for item in gt_t[0]]\n",
+ "concat_df = pd.concat([gt_t, ut_t], axis=1).replace([np.inf, -np.inf], np.nan).dropna()\n",
+ "print('Not Imputed', spearmanr(concat_df['genotype'], concat_df[genepair]))\n",
+ "\n",
+ "ut_t_imputed = ut_zscore_df.fillna(0).T\n",
+ "ut_t_imputed['gt_sampleid'] = [gte_dict.get(name) for name in ut_t_imputed.index]\n",
+ "ut_t_imputed = ut_t_imputed.set_index('gt_sampleid')\n",
+ "common_individuals_imputed = list(set(gt.columns) & set(ut_t_imputed.index))\n",
+ "gt_t_imputed = gt[common_individuals_imputed].T\n",
+ "gt_t_imputed['genotype'] = [item.split(':')[0].count('1') for item in gt_t_imputed[0]]\n",
+ "concat_imputed_df = pd.concat([gt_t_imputed, ut_t_imputed], axis=1).replace([np.inf, -np.inf], np.nan).dropna()\n",
+ "print('Imputed', spearmanr(concat_imputed_df['genotype'], concat_imputed_df[genepair]))\n",
+ "\n",
+ "# dosage_dict = gt_t['genotype'].T.to_dict()\n",
+ "# selected_expression_df_withsample = pd.concat([selected_expression_df,\n",
+ "# ut_celltype.obs[[dataset.individual_id_col]]],\n",
+ "# axis=1)\n",
+ "# selected_expression_df_withsample['gt_sampleid'] = [gte_dict.get(name) for name in\n",
+ "# selected_expression_df_withsample[dataset.individual_id_col]]\n",
+ "# selected_expression_df_withsample['genotype'] = [dosage_dict.get(gt_sampleid) for gt_sampleid in\n",
+ "# selected_expression_df_withsample['gt_sampleid']]\n",
+ "\n",
+ "sns.set_style('white')\n",
+ "refallele = gt['REF'].values[0]\n",
+ "altallele = gt['ALT'].values[0]\n",
+ "snp_name = f'{snp_id}_{altallele}'\n",
+ "\n",
+ "_, axes = plt.subplots(1, 2, figsize=(10, 5), sharey=True)\n",
+ "ax1, ax2 = axes\n",
+ "\n",
+ "im_coef, im_p = spearmanr(concat_imputed_df['genotype'], concat_imputed_df[genepair])\n",
+ "sns.violinplot(x=concat_imputed_df['genotype'], \n",
+ " y=concat_imputed_df[genepair], \n",
+ " ax=ax1,\n",
+ " inner=None)\n",
+ "sns.swarmplot(x=concat_imputed_df['genotype'], \n",
+ " y=concat_imputed_df[genepair], \n",
+ " ax=ax1,\n",
+ " color='black')\n",
+ "ax1.set_title(f'Imputed r={im_coef:.2f}; pvalue {im_p:.4f}')\n",
+ "# ax1.set_xticklabels([f'{refallele}{refallele}', \n",
+ "# f'{refallele}{altallele}',\n",
+ "# f'{altallele}{altallele}'])\n",
+ "ax1.set_xlabel(snp_id)\n",
+ "\n",
+ "coef, p = spearmanr(concat_df['genotype'], concat_df[genepair])\n",
+ "sns.violinplot(x=concat_df['genotype'], \n",
+ " y=concat_df[genepair], \n",
+ " ax=ax2,\n",
+ " inner=None)\n",
+ "sns.swarmplot(x=concat_df['genotype'], \n",
+ " y=concat_df[genepair], \n",
+ " ax=ax2,\n",
+ " color='black')\n",
+ "ax2.set_xlabel('')\n",
+ "ax2.set_title(f'Not Imputed r={coef:.2f}; pvalue {p:.4f}')\n",
+ "# ax2.set_xticklabels([f'{refallele}{refallele}', \n",
+ "# f'{refallele}{altallele}',\n",
+ "# f'{altallele}{altallele}'])\n",
+ "ax2.set_xlabel(snp_id)\n",
+ "plt.savefig(example_savedir/f'{snp_name}_ref{refallele}_alt{altallele}_{gene1}_{gene2}.{celltype}_{datasetname}.full.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/Beeline/miniconda/envs/scpy3.8/lib/python3.8/site-packages/seaborn/categorical.py:1296: UserWarning: 42.5% of the points cannot be placed; you may want to decrease the size of the markers or use stripplot.\n",
+ " warnings.warn(msg, UserWarning)\n",
+ "/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/Beeline/miniconda/envs/scpy3.8/lib/python3.8/site-packages/seaborn/categorical.py:1296: UserWarning: 7.1% of the points cannot be placed; you may want to decrease the size of the markers or use stripplot.\n",
+ " warnings.warn(msg, UserWarning)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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jSlTpvDiiy9ar69VqxaRkZHs2rWL7777jhMnTvDBBx/c8bncatiwYVSuXBlfX19eeOEF62sUFhbG1q1byczMBCyFWZ8+fazXDRw4EC8vL3Q6nfVTcmpq6l099p1+Tre7m9cuPT0917ne3t4251apUoWDBw+yb98+XnrpJZtPnQ8++CAGg8H6iVuj0fDkk0/a3G/NmjUcOnSIjz/+mBYtWtzVcxclZ8KECfz444/W5vMcf/zxB9WrV6dfv35otVr69OlDrVq1bGqe71a3bt1o2LAhrq6udOvWDVdXV/r162ctA0+dOmVzfn7vv7v1119/WZsfdTodVatWZfDgwdbka/369YwZMwZfX18qV65cqH6A4eHh+Pr64ubmBlh+3/Mr8wpK4DIyMmw+SHl7e5ORkZFnX67CvMfDwsI4fPgwGzZsYMiQIXf9wWncuHF4eHhQt25dBgwYYP2gGhYWZv1eURTWrVtn/TBevXp1OnTogE6no3z58owYMYI///zzrh4X7vxzut3dvHYajYa+ffvyyiuv0KhRI15++WVmzJiBh4cHAJ06dSIiIoK0tDT++ecffv31V2v5DjBz5kxeeuklPD09C3wOu3fvJjIykgkTJtz1878X2hJ5FJHLrW+snEIgICDAus/V1dXmjVmpUiXr956envj4+BAbG3vXb9CEhAQyMzMZMGCAdd+tfddiY2Np2LCh9VhQUNAd71m5cuW7igHg4MGDPP/884AlWVi7di0eHh65mvzS0tIKfNNkZWUxZswYmjRpYtMkWqFCBSpUqABYmltfffVVRo8eXajmnhy3Pq8qVaoQGxsLWAqs2rVrs23bNh5++GG2bt1q/dRuMpmYO3cu//vf/0hISECttnxGSkxMzFX4FuROP6fb3c1r5+npWehzfX196d+/P3379mXHjh1otVpeeukl6tWrxxdffIGiKMyePZtXX32Vzz77zOZaV1dX+vTpQ8+ePalfv77Np2VROjzwwAM89NBDREREULt2bev+2NhYqlSpYnNulSpVbAaz3K3by7xbyzs3NzebGnLI//13t6Kjo4mNjbV2IQHL+zRnOzY2Ntdj3cm9lHkLFiyw1vqHhYVZE4hby/m0tDQ8PDxQqVS5rs/rPZ6enp7n+7ZGjRrUqVOHd955h88//7zQMd76vIKCgvj7778B6NGjB++++y4xMTH8888/qFQq6+sXHx/PzJkzOXjwIOnp6SiKYm3KvRt3+jnd7m5euz179jBnzhy+//57GjRowPHjxxk7diwLFy6kfv36TJs2jXfffZcePXrg6+tL7969rR8Ytm7dSnp6Or169Sow/qNHj/Lyyy/z3//+l5o1a971878XksA5iOvXr1u/T09PJzk5mcDAQFxdXQFLIpPzaeTGjRvWc2//Zfbz88PNzY21a9fa9HPKERgYaFOzd/Xq1TvGdvtjTJ8+Pd+atpxkrWXLlrn6CdSpU4fTp09bty9fvozBYKBGjRp53kuv1zNu3DgqVqx4x8RMpVIVOEIpL7e/DoGBgdbtPn368Pvvv2M2mwkJCbE23a5Zs4YtW7awePFigoODSU1NpVWrVnk+tru7u02ftlt/bnf6Od3ubl67kJAQLl++TFpamvV35vTp0za1iLcymUzEx8eTlpaGr68vZ86c4e2337Z+eh06dGiuGrhbGY1GLl++LAlcKTVhwgT69+/PyJEjrfsCAwNzvfevXbuWq6m8OOX3/ivofQO5y6PKlSsTHBxs0wR4qwoVKnDt2jXq1KmT63Hzc/tj9O7dO9+yMidZGzNmjLVPXo6c923jxo0By/swJ47b1alTx6aPV0ZGBpcuXcq3uc5oNNq04hTGtWvXrIn8ra95uXLl6NChA+vXr+f8+fP07t3b+hp8/PHHqFQqfvvtN/z8/Ni8eXO+5fHtP7u4uDjr93f6Od3ubl67U6dO0bJlSxo1agRA48aNady4MXv27KF+/fr4+vry8ccfW8//5JNPrPfdu3cvx48fp0OHDoBl0IJGo+Hvv//myy+/BCx9Al944QVmzZpFu3btChV/UZAmVAexfft2Dh48iF6v57PPPqNJkyZUrlyZ8uXLU7FiRVavXo3JZGLFihU2Awn8/f2JiYlBr9cDoFarGTRoELNmzbKOwImJibH2M3j00UdZtWoVUVFRZGZm3tWntxwzZsywGf1561dBzSBhYWFs27aNgwcPkpGRwWeffUa3bt1sqslzGAwGJkyYgKurK7Nnz7bWdOXYv38/V69eRVEUrl27xpw5c+jatav1+Lx58+7YVLJkyRKuX79OUlKStUN1jl69erF7925+/vlnm8QnPT0dnU6Hn58fmZmZfPLJJ/neP6fPxqlTp8jOzrbpN3Knn9P9vHY1a9akfv36zJ8/n+zsbDZt2sSZM2fo0aMHABs3buT8+fOYzWYSEhJ4//33efDBB/H19QUs/UmWL19OVlYWWVlZLF261NqX5OjRo9bf06ysLCIiIoiLi7MWhqL0qV69Or169bIZsdilSxcuXrzImjVrMBqNrFu3jqioKB566CHA0lpwPwOWCiO/919B7xuwlHlXrlyxbjdu3BgvLy8iIiLIysrCZDLx999/c+zYMcAyKCkiIoLk5GSuX79+TyM3165dm2+ZV9CHy759+7J48WJiYmKIiYlh8eLF+Y6W79atG2fPnmXDhg1kZ2czf/586tata024li9fbi0roqKiiIiIsEkmnn766Tv2Tfviiy/IzMzk7NmzrFy50qbMCwsLY/Xq1WzYsMGmL3N6ejoeHh6UK1eOmJgYvv7663zvX79+fbZv305SUhI3btzgu+++sx6708/pfl67Ro0acfDgQWsz/cmTJzl06JC13Lp06RKJiYmYTCa2b9/O0qVLeeGFFwB46aWX2LBhA5GRkURGRhIaGsqgQYOsfTb//vtvRo0axZtvvkloaGiBr29RkwTOQfTp04f58+dbRzt+9NFH1mPvvvsu33zzDW3atCEqKopmzZpZj7Vt25aQkBA6duxImzZtAHj11VepXr06gwcPpnnz5gwfPtw6erNLly48++yzPPvss3Tr1o22bduW2HPMqfJ/5ZVXaN++Penp6TbTV0yfPt3aYfrIkSNs27aN3bt306pVK+tcbzkDNU6ePMkTTzxB06ZNGTJkCA888ABvvPGG9V7Xrl2jefPmBcbTp08fRo4cySOPPELVqlWtb2iw1FDkDA65tZDr168fVapUoVOnTvTu3ZumTZvme/+aNWsybtw4hg8fTvfu3XP1FSvo53Q/rx1YPmEeP36cVq1aMWfOHP773/9Svnx5wJIojho1iubNmxMWFoZarbZJ5GfNmkV0dDRdunShc+fOXL582dq/UK/XM2PGDNq0aUPnzp3ZsWMHERERhapFFPYzbtw4myZMPz8/FixYwOLFi2nTpg1ff/01CxYssP6OPPPMM2zYsIFWrVoxc+bMYokpv/ffnd43AwcOJCoqipYtWzJ27Fg0Gg1ffvklp0+fpmvXrrRt29Zmrq4XX3yRKlWq0LVrV0aOHEnfvn2L5fnkZciQITz88MOEhYURFhZGly5dbAYe9O7dm99++w2A8uXLM2/ePObOnUurVq04duyY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jdRsMg2mMttfuTDuaRSqjJ4qei4uLmzbto0PPviA6Ohohg0bxuDBg+0dlkPz9vbmt99+IzU1FXd3d7TagqfIcNNpqOLiRlKGnuQ7rLFaFqlUKmr4e1LD3xM3Fw3ebrLu6t1y5nJ15syZBAQEsHnzZpo2bcprr71m75Ac3ksvvcQLL7yAwWDA09PT3uEUm4xsIylZRjL1Rqlluwv5/kW7fPkyY8aMyfU9SNNecalRowYLFiywdxhO5caNG6xdu5bg4GC6du16xz+SKpUKP09XPFy1JKYbpEARRcqZy1WNRsPLL79sM3BI3B+TycTGjRtJSkoiLCwMHx8fe4dUpPRGM0kZetKzpZy9F/kmcF988YX1+5EjR9ocu31biNLor7/+omPHjqSkpADwxBNP8MsvvxTqWlethko+GtKzjSRlGMg2Sod9cf+kXBWFZTabeeSRR/jjjz8AqFSpEvv376datWr2DawIKIpCSqahTM7NWZTyTeBat25dknEIUeTmzJljTd4Ali5dyvTp020GMtyJp6sWD52G1CyDjH4S903KVVFYW7dutSZvANevX+fLL7/k/ffft19QRSDLYCIhTU+WfCi+b/kOYti8eTM//fSTdXvQoEF07dqVrl278r///a9EghPifqSnpxdq352oVCrKueuo4utOORmtKu6DlKuisIqq/CoNTGaF1GwDMclZXEvOlOStiOSbwH399deEhoZat/V6PStWrOCHH37g559/LpHghLgfY8aMQa3+91e8devWtGzZ8p7vp9WoCfB2pWI5N1w0ksaJuyflqiisHj16EBISYt12c3Pjueees2NEd8dsVkjLNhCbksWVxAxupGSTrjfKqNIilG8TqsFgoHLlytbtFi1a4Ofnh5+f333P7ZOUlMSkSZOIjo4mKCiITz/9NM/Oma+99hp//PEH/v7+/P7773d9vSjbHnnkEfbs2cOyZcsIDg5m1KhRRTLSz8NVi06rJi5NT4beWASRirKiOMtV4Vzc3NzYu3cvCxcuJCkpiaeffpqGDRvaO6w7ytKbSM02klGGFpW3l3xr4G7tOwQwffp06/cJCQn39aARERG0a9eOjRs30q5dOyIiIvI8b8CAAXz99df3fL0Qbdq04eOPP2bSpEl4e3sX2X21GjWVfNyo4OWKVpZyEIVUnOWqcD4BAQHWJRZLe/KWZTBx/WYTaWqW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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "_, axes = plt.subplots(1, 2, figsize=(10, 5), sharey=True)\n",
+ "ax1, ax2 = axes\n",
+ "\n",
+ "im_coef, im_p = spearmanr(concat_imputed_df['genotype'], concat_imputed_df[genepair])\n",
+ "# sns.violinplot(x=concat_imputed_df['genotype'], \n",
+ "# y=concat_imputed_df[genepair], \n",
+ "# ax=ax1,\n",
+ "# inner=None)\n",
+ "sns.swarmplot(x=concat_imputed_df['genotype'], \n",
+ " y=concat_imputed_df[genepair], \n",
+ " ax=ax1,\n",
+ " color='black')\n",
+ "sns.regplot(x=concat_imputed_df['genotype'], \n",
+ " y=concat_imputed_df[genepair], \n",
+ " ax=ax1, scatter=False)\n",
+ "ax1.set_title(f'Imputed r={im_coef:.2f}; pvalue {im_p:.4f}')\n",
+ "ax1.set_xticklabels([f'{refallele}{refallele}', \n",
+ " f'{refallele}{altallele}',\n",
+ " f'{altallele}{altallele}'])\n",
+ "ax1.set_xlabel(snp_id)\n",
+ "\n",
+ "coef, p = spearmanr(concat_df['genotype'], concat_df[genepair])\n",
+ "# sns.violinplot(x=concat_df['genotype'], \n",
+ "# y=concat_df[genepair], \n",
+ "# ax=ax2,\n",
+ "# inner=None)\n",
+ "sns.swarmplot(x=concat_df['genotype'], \n",
+ " y=concat_df[genepair], \n",
+ " ax=ax2,\n",
+ " color='black')\n",
+ "sns.regplot(x=concat_df['genotype'], \n",
+ " y=concat_df[genepair], \n",
+ " ax=ax2, scatter=False)\n",
+ "ax2.set_xlabel('')\n",
+ "ax2.set_title(f'Not Imputed r={coef:.2f}; pvalue {p:.4f}')\n",
+ "ax2.set_xticklabels([f'{refallele}{refallele}', \n",
+ " f'{refallele}{altallele}',\n",
+ " f'{altallele}{altallele}'])\n",
+ "ax2.set_xlabel(snp_id)\n",
+ "plt.savefig(example_savedir/f'{snp_name}_ref{refallele}_alt{altallele}_{gene1}_{gene2}.{celltype}_{datasetname}.full.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 112,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "PosixPath('/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output/examples/rs221045_C_refT_altC_AC005076.5_ARHGEF19.monocyte_onemillionv2.full.pdf')"
+ ]
+ },
+ "execution_count": 112,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "example_savedir/f'{snp_name}_ref{refallele}_alt{altallele}_{gene1}_{gene2}.{celltype}_{datasetname}.full.pdf'"
+ ]
+ },
+ {
+ "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.7.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/04_coeqtl_mapping/power_analysis_coeqtls.R b/04_coeqtl_mapping/power_analysis_coeqtls.R
new file mode 100644
index 0000000..ff2e515
--- /dev/null
+++ b/04_coeqtl_mapping/power_analysis_coeqtls.R
@@ -0,0 +1,79 @@
+################################################################################
+# Evaluate how number of triplets decreases the power to detect
+# co-expression QTLs by calculating the power dependent on the sample size
+# (N=173), heritability (Rsq: 0.1-0.3), Bonferroni multiple testing correction,
+# and different number of tests
+# The number of tests is estimated based on different expression cutoffs for
+# the Oelen v3 dataset, assuming that all pairwise combinations are tested for
+# all genes above the respective cutoff and one SNP per pair
+# Input: Seurat object with data from Oelen v3
+# Output: line plot visualizing power for different number of tests
+################################################################################
+
+library(Seurat)
+library(scPower)
+library(ggplot2)
+
+theme_set(theme_bw())
+
+################################################################################
+# Getting expression distribution for Oelen v3 dataset
+################################################################################
+
+#Load complete seurat object
+seurat<-readRDS("seurat_objects/1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.rds")
+
+#Filter for monocytes and UT timepoint
+seurat<-seurat[,seurat$cell_type_lowerres == "monocyte"]
+seurat<-seurat[,seurat$timepoint == "UT"]
+
+#Calculate for each gene the non-zero ratio
+nonzero_ratio<-rowMeans(as.matrix(seurat@assays$SCT@counts)>0)
+
+#Get cumulative ratio
+thresholds<-seq(0,1,0.05)
+num_genes<-sapply(thresholds,function(i)sum(nonzero_ratio>i))
+
+#Save results in a file
+nonzero_count<-data.frame(nonzero_ratio=thresholds,num_genes)
+
+################################################################################
+# Performing power calculation
+################################################################################
+
+#Samples in meta-analysis
+nSamples<-173
+
+bonfLevel<-function(nTests){
+ return(0.05/nTests)
+}
+
+#Test different heritabilities
+Rsq<-seq(0.1,0.3,0.05)
+
+#Number tests
+nonzero_count$genepairs<-nonzero_count$num_genes*(nonzero_count$num_genes-1)/2
+
+res<-NULL
+for(her in Rsq){
+ for(i in 1:(nrow(nonzero_count)-1)){
+ res<-rbind(res,
+ data.frame(her,
+ numTests=nonzero_count$genepairs[i],
+ cutoff=nonzero_count$nonzero_ratio[i],
+ power=scPower:::power.eqtl.ftest(her,
+ bonfLevel(nonzero_count$genepairs[i]),
+ nSamples)))
+ }
+}
+
+#Plot results
+g<-ggplot(res,aes(x=numTests,y=power,color=as.factor(her)))+
+ geom_line()+
+ scale_color_discrete("Heritability")+
+ scale_x_log10()+
+ xlab("Number tests")+ylab("Power")
+print(g)
+ggsave(g,file="power_calculation/power_effect_nonzeroratio.png",
+ height=5,width=6)
+
diff --git a/04_coeqtl_mapping/prepare_for_rb_calculation.py b/04_coeqtl_mapping/prepare_for_rb_calculation.py
new file mode 100644
index 0000000..9eaf191
--- /dev/null
+++ b/04_coeqtl_mapping/prepare_for_rb_calculation.py
@@ -0,0 +1,307 @@
+import pandas as pd
+import numpy as np
+from pathlib import Path
+from scipy.stats import pearsonr
+import argparse
+
+
+def argumentsparser():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--filtertype', type=str, dest='filtertype')
+ return parser
+
+def prepare_for_rb_BIOS_replication(celltype, filtertype, bios_replication_type='onlyRNAAlignMetrics'):
+ '''
+ Rb Calculation preparation for BIOS replication
+ '''
+ workdir = Path("./coeqtl_mapping")
+ coeqtl_path = workdir/f'output/{filtertype}/UT_{celltype}/coeqtls_fullresults_fixed.sig.withbios{bios_replication_type}.tsv.gz'
+ coeqtl_df = pd.read_csv(coeqtl_path, sep='\t', compression='gzip')
+ coeqtl_df['theta'] = 0
+ def flip_direction(allele1, allele2, coef2):
+ if allele1 == allele2:
+ return coef2
+ else:
+ return -1*coef2
+ coeqtl_df['flipped_bios_beta'] = [flip_direction(item[0],
+ item[1],
+ item[2]) for item in
+ coeqtl_df[['SNPEffectAllele',
+ 'assessed_allele_bios',
+ 'coef_bios']].values]
+ coeqtl_df[['snp_genepair', 'snp_eqtlgene',
+ 'flipped_bios_beta', 'std err_bios',
+ 'MetaBeta', 'MetaSE', 'theta']].dropna().to_csv(
+ workdir/f'bios/{bios_replication_type}/{filtertype}/UT_{celltype}/replication_parameters.csv'
+ )
+ return coeqtl_df
+
+
+def find_gene2(genepair, eqtlgene):
+ gene1, gene2 = genepair.split(';')
+ if gene1 == eqtlgene:
+ return gene2
+ else:
+ return gene1
+
+
+def flip_direction(df, flipcol, allele1_col, allele2_col):
+ df = df.rename({flipcol: f'{flipcol}_ori'}, axis=1)
+ def flip(x1, x2, x3):
+ if not pd.isnull(x1):
+ if x2 == x3:
+ return x1
+ else:
+ return -x1
+ else:
+ return x1
+ df[f'{flipcol}'] = [flip(score, allele1, allele2) for (score, allele1,allele2)
+ in df[[f'{flipcol}_ori', allele1_col, allele2_col]].values]
+ return df
+
+
+# coeQTLs
+args = argumentsparser().parse_args()
+filtertype = args.filtertype
+workdir = Path("/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping")
+celltypes = ['CD4T', 'CD8T', 'monocyte', 'DC', 'B', 'NK']
+for celltype_replication in celltypes:
+ print(f"Discovery: {celltype_replication}")
+ replication_coeqtl_path = workdir / f'output/{filtertype}/UT_{celltype_replication}/coeqtls_fullresults_fixed.all.tsv.gz'
+ replication_coeqtl_df = pd.read_csv(replication_coeqtl_path, sep='\t', compression='gzip')
+ replication_coeqtl_df['gene2'] = [find_gene2(x[0], x[1]) for x in
+ replication_coeqtl_df[['Gene',
+ 'eqtlgene']].values]
+ replication_coeqtl_df['snp_eqtlgene_gene2'] = ['_'.join([item[0], item[1]]) for item in
+ replication_coeqtl_df[['snp_eqtlgene',
+ 'gene2']].values]
+ replication_coeqtl_df = replication_coeqtl_df.set_index('snp_eqtlgene_gene2')
+ replication_coexpression_df = pd.read_csv(workdir/f'input/individual_networks/UT/UT_{celltype_replication}.sigcoeQTLs.tsv.gz',
+ compression='gzip', sep='\t', index_col=0)
+ for celltype_discovery in celltypes:
+ if celltype_replication != celltype_discovery:
+ print(f"Replication: {celltype_discovery}")
+ discovery_coeqtl_path = workdir / f'output/{filtertype}/UT_{celltype_discovery}/coeqtls_fullresults_fixed.sig.tsv.gz'
+ discovery_coeqtl_df = pd.read_csv(discovery_coeqtl_path, sep='\t', compression='gzip')
+ discovery_coeqtl_df['gene2'] = [find_gene2(x[0], x[1]) for x in
+ discovery_coeqtl_df[['Gene',
+ 'eqtlgene']].values]
+ discovery_coeqtl_df['snp_eqtlgene_gene2'] = ['_'.join([item[0], item[1]]) for item in
+ discovery_coeqtl_df[['snp_eqtlgene',
+ 'gene2']].values]
+ discovery_coeqtl_df = discovery_coeqtl_df.set_index('snp_eqtlgene_gene2')
+ tested_coeqtls = list(set(replication_coeqtl_df.index) & set(discovery_coeqtl_df.index))
+ merged_coeqtl_df = pd.concat([replication_coeqtl_df.loc[tested_coeqtls],
+ discovery_coeqtl_df.loc[tested_coeqtls].add_suffix('_replication')], # todo: here is wrong.. should be discovery
+ axis=1)
+ merged_coeqtl_df = flip_direction(merged_coeqtl_df,
+ 'MetaBeta_replication',
+ 'SNPEffectAllele',
+ 'SNPEffectAllele_replication') # MetaBeta, MetaSE, MetaBeta_replication, MetaSE_replication
+ disovery_coexpression_df = pd.read_csv(
+ workdir / f'input/individual_networks/UT/UT_{celltype_discovery}.sigcoeQTLs.tsv.gz',
+ compression='gzip', sep='\t', index_col=0)
+ # find overlapping individuals
+ tested_genepairs = list(merged_coeqtl_df['Gene'].unique())
+ tested_coexpression_discovery_df = disovery_coexpression_df.loc[tested_genepairs]
+ tested_coexpression_discovery_df.replace([np.inf, -np.inf], np.nan, inplace=True)
+ tested_coexpression_replication_df = replication_coexpression_df.loc[tested_genepairs]
+ tested_coexpression_replication_df.replace([np.inf, -np.inf], np.nan, inplace=True)
+ other_col_dict = {genepair:np.nan for genepair in tested_genepairs}
+ for genepair in tested_genepairs:
+ tested_coexpression_discovery_genepair_nonan = tested_coexpression_discovery_df.loc[genepair].dropna()
+ tested_coexpression_replication_genepair_nonan = tested_coexpression_replication_df.loc[genepair].dropna()
+ common_individuals = list(set(tested_coexpression_discovery_genepair_nonan.index) & set(tested_coexpression_replication_genepair_nonan.index))
+ num_common = len(common_individuals)
+ num_discovery = tested_coexpression_discovery_genepair_nonan.shape[0]
+ num_replication = tested_coexpression_replication_genepair_nonan.shape[0]
+ rho = pearsonr(tested_coexpression_discovery_genepair_nonan[common_individuals],
+ tested_coexpression_replication_genepair_nonan[common_individuals])[0]
+ other_col_dict[genepair] = rho * num_common / np.sqrt(num_discovery * num_replication)
+ merged_coeqtl_df['theta'] = [other_col_dict.get(genepair) for genepair in merged_coeqtl_df['Gene']]
+ merged_coeqtl_df[['MetaBeta',
+ 'MetaBeta_replication',
+ 'MetaSE',
+ 'MetaSE_replication',
+ 'theta']].to_csv(workdir/f'output/{filtertype}/rb_calculations/discovery_{celltype_discovery}_replication_{celltype_replication}.tsv.gz',
+ sep='\t',
+ compression='gzip')
+ else:
+ continue
+
+
+# cmono ncmono and monocyte
+filtertype = 'filtered_results'
+workdir = Path("./coeqtl_mapping")
+celltypes = ['monocyte', 'cMono', 'ncMono']
+for celltype_replication in celltypes:
+ print(f"Discovery: {celltype_replication}")
+ replication_coeqtl_path = workdir / f'output/{filtertype}/UT_{celltype_replication}/coeqtls_fullresults_fixed.all.tsv.gz'
+ replication_coeqtl_df = pd.read_csv(replication_coeqtl_path, sep='\t', compression='gzip')
+ replication_coeqtl_df['gene2'] = [find_gene2(x[0], x[1]) for x in
+ replication_coeqtl_df[['Gene',
+ 'eqtlgene']].values]
+ replication_coeqtl_df['snp_eqtlgene_gene2'] = ['_'.join([item[0], item[1]]) for item in
+ replication_coeqtl_df[['snp_eqtlgene',
+ 'gene2']].values]
+ replication_coeqtl_df = replication_coeqtl_df.set_index('snp_eqtlgene_gene2')
+ replication_coexpression_df = pd.read_csv(workdir/f'input/individual_networks/UT/monocyte_subcelltypes/UT_{celltype_replication}.sigcoeQTLs.tsv.gz',
+ compression='gzip', sep='\t', index_col=0)
+ for celltype_discovery in celltypes:
+ if celltype_replication != celltype_discovery:
+ print(f"Replication: {celltype_discovery}")
+ discovery_coeqtl_path = workdir / f'output/{filtertype}/UT_{celltype_discovery}/coeqtls_fullresults_fixed.sig.tsv.gz'
+ discovery_coeqtl_df = pd.read_csv(discovery_coeqtl_path, sep='\t', compression='gzip')
+ discovery_coeqtl_df['gene2'] = [find_gene2(x[0], x[1]) for x in
+ discovery_coeqtl_df[['Gene',
+ 'eqtlgene']].values]
+ discovery_coeqtl_df['snp_eqtlgene_gene2'] = ['_'.join([item[0], item[1]]) for item in
+ discovery_coeqtl_df[['snp_eqtlgene',
+ 'gene2']].values]
+ discovery_coeqtl_df = discovery_coeqtl_df.set_index('snp_eqtlgene_gene2')
+ tested_coeqtls = list(set(replication_coeqtl_df.index) & set(discovery_coeqtl_df.index))
+ merged_coeqtl_df = pd.concat([replication_coeqtl_df.loc[tested_coeqtls],
+ discovery_coeqtl_df.loc[tested_coeqtls].add_suffix('_replication')], # todo: also here it is wrong...
+ axis=1)
+ merged_coeqtl_df = flip_direction(merged_coeqtl_df,
+ 'MetaBeta_replication',
+ 'SNPEffectAllele',
+ 'SNPEffectAllele_replication') # MetaBeta, MetaSE, MetaBeta_replication, MetaSE_replication
+ disovery_coexpression_df = pd.read_csv(
+ workdir / f'input/individual_networks/UT/monocyte_subcelltypes/UT_{celltype_discovery}.sigcoeQTLs.tsv.gz',
+ compression='gzip', sep='\t', index_col=0)
+ # find overlapping individuals
+ tested_genepairs = list(merged_coeqtl_df['Gene'].unique())
+ tested_coexpression_discovery_df = disovery_coexpression_df.loc[tested_genepairs]
+ tested_coexpression_discovery_df.replace([np.inf, -np.inf], np.nan, inplace=True)
+ tested_coexpression_replication_df = replication_coexpression_df.loc[tested_genepairs]
+ tested_coexpression_replication_df.replace([np.inf, -np.inf], np.nan, inplace=True)
+ other_col_dict = {genepair:np.nan for genepair in tested_genepairs}
+ for genepair in tested_genepairs:
+ tested_coexpression_discovery_genepair_nonan = tested_coexpression_discovery_df.loc[genepair].dropna()
+ tested_coexpression_replication_genepair_nonan = tested_coexpression_replication_df.loc[genepair].dropna()
+ common_individuals = list(set(tested_coexpression_discovery_genepair_nonan.index) & set(tested_coexpression_replication_genepair_nonan.index))
+ num_common = len(common_individuals)
+ num_discovery = tested_coexpression_discovery_genepair_nonan.shape[0]
+ num_replication = tested_coexpression_replication_genepair_nonan.shape[0]
+ rho = pearsonr(tested_coexpression_discovery_genepair_nonan[common_individuals],
+ tested_coexpression_replication_genepair_nonan[common_individuals])[0]
+ other_col_dict[genepair] = rho * num_common / np.sqrt(num_discovery * num_replication)
+ merged_coeqtl_df['theta'] = [other_col_dict.get(genepair) for genepair in merged_coeqtl_df['Gene']]
+ merged_coeqtl_df[['MetaBeta',
+ 'MetaBeta_replication',
+ 'MetaSE',
+ 'MetaSE_replication',
+ 'theta']].to_csv(workdir/f'output/{filtertype}/rb_calculations/monocyte_subcelltypes/discovery_{celltype_discovery}_replication_{celltype_replication}.tsv.gz',
+ sep='\t',
+ compression='gzip')
+ else:
+ continue
+
+
+# eQTLs
+workdir = Path("./cis_eqtl_single_cell/EMP_mapping_1_12_2021_perm1000/output/")
+celltypes = ['CD4T', 'CD8T', 'monocyte', 'DC', 'B', 'NK']
+genename_dict = pd.read_csv('/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/resources/features_v3_reformated_names.tsv',
+ sep='\t', names=['ensemblid', 'genename']).set_index('ensemblid')['genename'].T.to_dict()
+
+def read_alldataset_celltype_expression_df(celltype):
+ expression_prefix = Path('./expression_files/sources_for_coeqtl')
+ df = pd.DataFrame()
+ for datasetname in ['1m_v2', '1m_v3', 'NG', 't8w']:
+ dataset_df = pd.read_csv(expression_prefix/f'{datasetname}/{celltype}_expression.tsv', sep='\t', index_col=0)
+ dataset_df['genename'] = [genename_dict.get(geneid) for geneid in dataset_df.index]
+ dataset_df = dataset_df.dropna(subset=['genename']).set_index('genename')
+ df = pd.concat([df, dataset_df], axis=1)
+ return df
+
+for celltype_replication in celltypes:
+ print(f"Discovery: {celltype_replication}")
+ replication_coeqtl_path = workdir / f'{celltype_replication}/eQTLsFDR-ProbeLevel.txt.gz'
+ replication_coeqtl_df = pd.read_csv(replication_coeqtl_path, sep='\t', compression='gzip')
+ replication_coeqtl_df['genename'] = [genename_dict.get(ensemblid) for ensemblid in replication_coeqtl_df['ProbeName']]
+ replication_coeqtl_df['snp_gene'] = ['_'.join(item) for item in replication_coeqtl_df[['SNPName', 'genename']].values]
+ replication_coeqtl_df = replication_coeqtl_df.set_index('snp_gene')
+ replication_coeqtl_df['metabeta'] = [float(item.split(' (')[0]) for item in replication_coeqtl_df['Meta-Beta (SE)']]
+ replication_coeqtl_df['SE'] = [float(item.split(' (')[1][:-2]) for item in replication_coeqtl_df['Meta-Beta (SE)']]
+ replication_coexpression_df = read_alldataset_celltype_expression_df(celltype_replication)
+ for celltype_discovery in celltypes:
+ if celltype_replication != celltype_discovery:
+ print(f"Replication: {celltype_discovery}")
+ discovery_coeqtl_path = workdir / f'{celltype_discovery}/eQTLsFDR0.05-ProbeLevel.txt.gz'
+ discovery_coeqtl_df = pd.read_csv(discovery_coeqtl_path, sep='\t', compression='gzip')
+ discovery_coeqtl_df['genename'] = [genename_dict.get(ensemblid) for ensemblid in
+ discovery_coeqtl_df['ProbeName']]
+ discovery_coeqtl_df['snp_gene'] = ['_'.join(item) for item in
+ discovery_coeqtl_df[['SNPName', 'genename']].values]
+ discovery_coeqtl_df = discovery_coeqtl_df.set_index('snp_gene')
+ discovery_coeqtl_df['metabeta'] = [float(item.split(' (')[0]) for item in discovery_coeqtl_df['Meta-Beta (SE)']]
+ discovery_coeqtl_df['SE'] = [float(item.split(' (')[1][:-2]) for item in discovery_coeqtl_df['Meta-Beta (SE)']]
+ tested_eqtls = list(set(replication_coeqtl_df.index) & set(discovery_coeqtl_df.index))
+ merged_coeqtl_df = pd.concat([replication_coeqtl_df.loc[tested_eqtls],
+ discovery_coeqtl_df.loc[tested_eqtls].add_suffix('_replication')], # todo here it is wrong...
+ axis=1)
+ merged_coeqtl_df = flip_direction(merged_coeqtl_df,
+ 'metabeta_replication',
+ 'AlleleAssessed',
+ 'AlleleAssessed_replication')
+ discovery_coexpression_df = read_alldataset_celltype_expression_df(celltype_discovery)
+ # find overlapping individuals
+ tested_genepairs = list(merged_coeqtl_df['genename'].unique())
+ tested_coexpression_discovery_df = discovery_coexpression_df.loc[tested_genepairs]
+ tested_coexpression_discovery_df.replace([np.inf, -np.inf], np.nan, inplace=True)
+ tested_coexpression_replication_df = replication_coexpression_df.loc[tested_genepairs]
+ tested_coexpression_replication_df.replace([np.inf, -np.inf], np.nan, inplace=True)
+ other_col_dict = {genepair:np.nan for genepair in tested_genepairs}
+ for genepair in tested_genepairs:
+ tested_coexpression_discovery_genepair_nonan = tested_coexpression_discovery_df.loc[genepair].dropna()
+ tested_coexpression_replication_genepair_nonan = tested_coexpression_replication_df.loc[genepair].dropna()
+ common_individuals = list(set(tested_coexpression_discovery_genepair_nonan.index) & set(tested_coexpression_replication_genepair_nonan.index))
+ num_common = len(common_individuals)
+ num_discovery = tested_coexpression_discovery_genepair_nonan.shape[0]
+ num_replication = tested_coexpression_replication_genepair_nonan.shape[0]
+ rho = pearsonr(tested_coexpression_discovery_genepair_nonan[common_individuals],
+ tested_coexpression_replication_genepair_nonan[common_individuals])[0]
+ other_col_dict[genepair] = rho * num_common / np.sqrt(num_discovery * num_replication)
+ merged_coeqtl_df['theta'] = [other_col_dict.get(genepair) for genepair in merged_coeqtl_df['genename']]
+ merged_coeqtl_df[['metabeta',
+ 'metabeta_replication',
+ 'SE',
+ 'SE_replication',
+ 'theta']].to_csv(f'./coeqtl_mapping/input/snp_selection/rb_calculations/discovery_{celltype_discovery}_replication_{celltype_replication}.tsv.gz',
+ sep='\t',
+ compression='gzip')
+ else:
+ continue
+
+
+
+filtertype = 'filtered_results'
+workdir = Path("./coeqtl_mapping")
+celltypes = ['CD4T', 'CD8T', 'monocyte', 'DC', 'B', 'NK']
+for celltype_replication in celltypes:
+ for celltype_discovery in celltypes:
+ if celltype_replication != celltype_discovery:
+ print(celltype_discovery, celltype_replication)
+ merged_coeqtl_df = pd.read_csv(workdir/f'output/{filtertype}/rb_calculations/discovery_{celltype_discovery}_replication_{celltype_replication}.tsv.gz',
+ sep='\t',
+ compression='gzip')
+ merged_coeqtl_df = merged_coeqtl_df.rename({
+ 'MetaBeta_replication': 'MetaBeta_discovery',
+ 'MetaSE_replication': 'MetaSE_discovery'
+ },
+ axis=1)
+ merged_coeqtl_df = merged_coeqtl_df.rename({
+ 'MetaBeta': 'MetaBeta_replication',
+ 'MetaSE': 'MetaSE_replication'
+ },
+ axis=1)
+ merged_coeqtl_df = merged_coeqtl_df.rename({
+ 'MetaBeta_discovery': 'MetaBeta',
+ 'MetaSE_discovery': 'MetaSE'
+ },
+ axis=1)
+ merged_coeqtl_df.to_csv(
+ workdir / f'output/{filtertype}/rb_calculations/discovery_{celltype_discovery}_replication_{celltype_replication}.fixed.tsv.gz',
+ sep='\t',
+ compression='gzip')
\ No newline at end of file
diff --git a/04_coeqtl_mapping/prepare_genelist_and_annotation_for_betaqtl.py b/04_coeqtl_mapping/prepare_genelist_and_annotation_for_betaqtl.py
new file mode 100644
index 0000000..c5ea9f3
--- /dev/null
+++ b/04_coeqtl_mapping/prepare_genelist_and_annotation_for_betaqtl.py
@@ -0,0 +1,73 @@
+import pandas as pd
+import numpy as np
+from pathlib import Path
+import argparse
+import os
+
+
+def parse():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--condition', dest = 'condition')
+ parser.add_argument('--celltype', dest='celltype')
+ return parser
+
+args = parse().parse_args()
+condition, celltype = args.condition , args.celltype
+
+# old code for creating the annotation file..
+workdir = Path("/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/")
+eqtl_annotations_path = workdir/f'input/snp_genepair_selection/annotations/{condition}_{celltype}.baseline.annotatedeQTL.tsv'
+savepath = workdir/f'output/{condition}_{celltype}/'
+if not os.path.isdir(savepath):
+ os.mkdir(savepath)
+
+eqtl_annotations = pd.read_csv(eqtl_annotations_path, sep='\t')
+
+annotation_cols = ['Platform', 'ArrayAddress', 'Symbol', 'Chr', 'ChrStart', 'ChrEnd', 'Probe', 'Seq']
+gene_annotation_dict = pd.read_csv('/groups/umcg-bios/tmp01/projects/1M_cells_scRNAseq/ongoing/eQTL_mapping/probeannotation/singleCell-annotation-stripped.tsv',
+ sep='\t').set_index('Ensembl').T.to_dict()
+genename_ensembl_mapping = pd.read_csv(workdir/'../resources/features_v3_reformated_names.tsv',
+ sep='\t', names=['Ensembl', 'genename']).set_index('genename')['Ensembl'].T.to_dict()
+
+
+eqtl_annotations['ArrayAddress'] = eqtl_annotations['genepair_sorted']
+eqtl_annotations['Symbol'] = eqtl_annotations['genepair_sorted']
+eqtl_annotations['Probe'] = eqtl_annotations['genepair_sorted']
+eqtl_annotations['Seq'] = 'NNNNNNN'
+getchr = lambda x:gene_annotation_dict.get(x)['Chr'] if x in gene_annotation_dict else np.nan
+getchrstart = lambda x:int(gene_annotation_dict.get(x)['ChrStart']) if x in gene_annotation_dict else np.nan
+getchrend = lambda x:int(gene_annotation_dict.get(x)['ChrEnd']) if x in gene_annotation_dict else np.nan
+eqtl_annotations['Platform'] = 'SingleCell'
+
+eqtl_annotations['eqtlgene'] = [item.split(';')[0] for item in eqtl_annotations['eqtlgene1_gene2']]
+eqtl_annotations['eqtlgene_ensembl'] = [genename_ensembl_mapping.get(genename) for genename in eqtl_annotations['eqtlgene']]
+
+eqtl_annotations['Chr'] = [getchr(gene) for gene in eqtl_annotations['eqtlgene_ensembl']]
+eqtl_annotations['ChrStart'] = [getchrstart(gene) for gene in eqtl_annotations['eqtlgene_ensembl']]
+eqtl_annotations['ChrEnd'] = [getchrend(gene) for gene in eqtl_annotations['eqtlgene_ensembl']]
+counts = eqtl_annotations['genepair_sorted'].value_counts()
+duplicated_genepairs_set = set(counts[counts>1].index.values)
+isdup = lambda x:True if x in duplicated_genepairs_set else False
+eqtl_annotations['isdup'] = [isdup(genepair) for genepair in eqtl_annotations['genepair_sorted']]
+eqtl_annotations[eqtl_annotations['isdup']==False][['snp', 'genepair_sorted']].to_csv(workdir/f'input/snp_genepair_selection/{condition}_{celltype}.baseline.noduplicated.tsv',
+ sep='\t', index=False)
+eqtl_annotations[eqtl_annotations['isdup']==False][annotation_cols].to_csv(workdir/f'input/summary/{condition}_{celltype}.genepairs.annotation.gene1position.noduplicated.tsv',
+ sep='\t', index=False)
+eqtl_annotations[eqtl_annotations['isdup']==False][['genepair_sorted']].to_csv(savepath/'genelist.noduplicated.txt', header=None, index=False)
+
+
+duplicated = eqtl_annotations[eqtl_annotations['isdup']].drop_duplicates(subset=['genepair_sorted'], keep='first')
+duplicated[['snp', 'genepair_sorted']].to_csv(workdir/f'input/snp_genepair_selection/{condition}_{celltype}.baseline.duplicatedversion1.tsv',
+ sep='\t', index=False)
+duplicated[annotation_cols].to_csv(workdir/f'input/summary/{condition}_{celltype}.genepairs.annotation.gene1position.duplicatedversion1.tsv',
+ sep='\t', index=False)
+duplicated[['genepair_sorted']].to_csv(savepath/'genelist.duplicatedversion1.txt', header=None, index=False)
+
+
+duplcated_version2 = eqtl_annotations[eqtl_annotations['isdup']].drop_duplicates(subset=['genepair_sorted'], keep='last')
+duplcated_version2[['snp', 'genepair_sorted']].to_csv(workdir/f'input/snp_genepair_selection/{condition}_{celltype}.baseline.duplicatedversion2.tsv',
+ sep='\t', index=False)
+duplcated_version2[annotation_cols].to_csv(workdir/f'input/summary/{condition}_{celltype}.genepairs.annotation.gene1position.duplicatedversion2.tsv',
+ sep='\t', index=False)
+duplcated_version2[['genepair_sorted']].to_csv(savepath/'genelist.duplicatedversion2.txt', header=None, index=False)
+
diff --git a/04_coeqtl_mapping/rb_celltypes.ipynb b/04_coeqtl_mapping/rb_celltypes.ipynb
new file mode 100644
index 0000000..834ede3
--- /dev/null
+++ b/04_coeqtl_mapping/rb_celltypes.ipynb
@@ -0,0 +1,2026 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 67,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import matplotlib as mpl\n",
+ "mpl.rcParams['pdf.fonttype'] = 42\n",
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "%matplotlib inline\n",
+ "\n",
+ "from pathlib import Path\n",
+ "workdir = Path(\"./coeqtl_mapping/\")\n",
+ "\n",
+ "celltypes = ['CD4T', 'CD8T', 'monocyte', 'DC', 'NK', 'B']\n",
+ "import matplotlib\n",
+ "def heatmap(data, row_labels, col_labels, ax=None,\n",
+ " cbar_kw={}, cbarlabel=\"\", **kwargs):\n",
+ " \"\"\"\n",
+ " Create a heatmap from a numpy array and two lists of labels.\n",
+ "\n",
+ " Parameters\n",
+ " ----------\n",
+ " data\n",
+ " A 2D numpy array of shape (M, N).\n",
+ " row_labels\n",
+ " A list or array of length M with the labels for the rows.\n",
+ " col_labels\n",
+ " A list or array of length N with the labels for the columns.\n",
+ " ax\n",
+ " A `matplotlib.axes.Axes` instance to which the heatmap is plotted. If\n",
+ " not provided, use current axes or create a new one. Optional.\n",
+ " cbar_kw\n",
+ " A dictionary with arguments to `matplotlib.Figure.colorbar`. Optional.\n",
+ " cbarlabel\n",
+ " The label for the colorbar. Optional.\n",
+ " **kwargs\n",
+ " All other arguments are forwarded to `imshow`.\n",
+ " \"\"\"\n",
+ "\n",
+ " if not ax:\n",
+ " ax = plt.gca()\n",
+ "\n",
+ " # Plot the heatmap\n",
+ " im = ax.pcolormesh(data, **kwargs)\n",
+ "\n",
+ " # Create colorbar\n",
+ " cbar = ax.figure.colorbar(im, ax=ax, **cbar_kw)\n",
+ " cbar.ax.set_ylabel(cbarlabel, rotation=-90, va=\"bottom\")\n",
+ "\n",
+ " # Let the horizontal axes labeling appear on top.\n",
+ " ax.tick_params(top=True, bottom=False,\n",
+ " labeltop=True, labelbottom=False)\n",
+ "\n",
+ " # Rotate the tick labels and set their alignment.\n",
+ " plt.setp(ax.get_xticklabels(), rotation=-30, ha=\"right\",\n",
+ " rotation_mode=\"anchor\")\n",
+ "\n",
+ " # Turn spines off and create white grid.\n",
+ "# ax.spines[:].set_visible(False)\n",
+ "\n",
+ "# ax.set_xticks(np.arange(-0.5, data.shape[1]-2, 1), minor=True)\n",
+ "# ax.set_yticks(np.arange(-0.5, data.shape[0]-2, 1), minor=True)\n",
+ " # Show all ticks and label them with the respective list entries.\n",
+ " ax.set_xticklabels([\"\"]+col_labels)\n",
+ " ax.set_yticklabels([\"\"]+row_labels)\n",
+ "# ax.grid(which='minor', color=\"white\", linestyle='-', linewidth=2)\n",
+ "# ax.tick_params(which=\"minor\", bottom=False, left=False)\n",
+ " return im, cbar\n",
+ "\n",
+ "\n",
+ "def annotate_heatmap(im, data=None, valfmt=\"{x:.2f}\",\n",
+ " textcolors=(\"black\", \"white\"),\n",
+ " threshold=None, **textkw):\n",
+ " \"\"\"\n",
+ " A function to annotate a heatmap.\n",
+ "\n",
+ " Parameters\n",
+ " ----------\n",
+ " im\n",
+ " The AxesImage to be labeled.\n",
+ " data\n",
+ " Data used to annotate. If None, the image's data is used. Optional.\n",
+ " valfmt\n",
+ " The format of the annotations inside the heatmap. This should either\n",
+ " use the string format method, e.g. \"$ {x:.2f}\", or be a\n",
+ " `matplotlib.ticker.Formatter`. Optional.\n",
+ " textcolors\n",
+ " A pair of colors. The first is used for values below a threshold,\n",
+ " the second for those above. Optional.\n",
+ " threshold\n",
+ " Value in data units according to which the colors from textcolors are\n",
+ " applied. If None (the default) uses the middle of the colormap as\n",
+ " separation. Optional.\n",
+ " **kwargs\n",
+ " All other arguments are forwarded to each call to `text` used to create\n",
+ " the text labels.\n",
+ " \"\"\"\n",
+ "\n",
+ " # Normalize the threshold to the images color range.\n",
+ " if threshold is not None:\n",
+ " threshold = im.norm(threshold)\n",
+ " else:\n",
+ " threshold = im.norm(data.max())/2.\n",
+ "\n",
+ " # Set default alignment to center, but allow it to be\n",
+ " # overwritten by textkw.\n",
+ " kw = dict(horizontalalignment=\"center\",\n",
+ " verticalalignment=\"center\")\n",
+ " kw.update(textkw)\n",
+ "\n",
+ " # Get the formatter in case a string is supplied\n",
+ " if isinstance(valfmt, str):\n",
+ " valfmt = matplotlib.ticker.StrMethodFormatter(valfmt)\n",
+ "\n",
+ " # Loop over the data and create a `Text` for each \"pixel\".\n",
+ " # Change the text's color depending on the data.\n",
+ " texts = []\n",
+ " for i in range(data.shape[0]):\n",
+ " for j in range(data.shape[1]):\n",
+ "# kw.update(color=textcolors[int(im.norm(data[i, j]) > threshold)])\n",
+ " text = im.axes.text(j+0.5, i+0.5, valfmt(data[i, j], None), **kw)#j+0.1, i+0.5\n",
+ " texts.append(text)\n",
+ "\n",
+ " return texts"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## celltypes"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "filtered_res_df = pd.read_csv(workdir/'output/filtered_results/rb_calculations/summary.csv', index_col=0)\n",
+ "unfiltered_res_df = pd.read_csv(workdir/'output/unfiltered_results/rb_calculations/summary.csv', index_col=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "filtered_res_df_clean = filtered_res_df[filtered_res_df['celltype_discovery']!='B']\n",
+ "filtered_res_df_clean = filtered_res_df_clean.dropna()\n",
+ "filtered_res_df_clean.to_excel(workdir/'output/summary/rb_values_replication_in_other_celltypes_filtered_results.xlsx')\n",
+ "\n",
+ "unfiltered_res_df_clean = unfiltered_res_df[unfiltered_res_df['celltype_discovery']!='B']\n",
+ "unfiltered_res_df_clean = unfiltered_res_df_clean.dropna()\n",
+ "unfiltered_res_df_clean.to_excel(workdir/'output/summary/rb_values_replication_in_other_celltypes_unfiltered_results.xlsx')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### filtered results"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": [
+ "# filtered results\n",
+ "rb_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "rbse_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "rbpvalue_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "numcoeqtl_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "num_anno_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "rbse_anno_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "for discovery_celltype in celltypes:\n",
+ " # replication in other celltypes\n",
+ " for replication_celltype in celltypes:\n",
+ " if discovery_celltype != replication_celltype:\n",
+ " rb_results = filtered_res_df[(filtered_res_df['celltype_discovery'] == discovery_celltype) &\n",
+ " (filtered_res_df['celltype_replication'] == replication_celltype)]\n",
+ " replicated_coeqtls_num = pd.read_csv(\n",
+ " workdir/f'output/filtered_results/rb_calculations/discovery_{discovery_celltype}_replication_{replication_celltype}.tsv.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t',\n",
+ " index_col=0\n",
+ " ).shape[0]\n",
+ " if rb_results['r'].values[0] < 10 and discovery_celltype != 'B':\n",
+ " rb_df.loc[replication_celltype, discovery_celltype] = rb_results['r'].values[0]\n",
+ " rbse_df.loc[replication_celltype, discovery_celltype] = rb_results['se_r'].values[0]\n",
+ " rbpvalue_df.loc[replication_celltype, discovery_celltype] = rb_results['p'].values[0]\n",
+ " numcoeqtl_df.loc[replication_celltype, discovery_celltype] = replicated_coeqtls_num\n",
+ " rbvalue = rb_results['r'].values[0]\n",
+ " rbsevalue = rb_results['se_r'].values[0]\n",
+ " num_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={replicated_coeqtls_num}\"\n",
+ " rbse_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"{rbvalue:.2f}\\nN={replicated_coeqtls_num}\"\n",
+ " elif discovery_celltype == 'B':\n",
+ " rb_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " rbse_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " rbpvalue_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " numcoeqtl_df.loc[replication_celltype, discovery_celltype] = replicated_coeqtls_num\n",
+ " rbvalue = rb_results['r'].values[0]\n",
+ " rbsevalue = rb_results['se_r'].values[0]\n",
+ " num_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={replicated_coeqtls_num}\"\n",
+ " rbse_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={replicated_coeqtls_num}\"\n",
+ " else:\n",
+ " rb_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " rbse_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " rbpvalue_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " numcoeqtl_df.loc[replication_celltype, discovery_celltype] = replicated_coeqtls_num\n",
+ " num_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={replicated_coeqtls_num}\"\n",
+ " rbse_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={replicated_coeqtls_num}\"\n",
+ " else:\n",
+ " rb_df.loc[replication_celltype, discovery_celltype] = 1\n",
+ " rbse_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " rbpvalue_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " replicated_coeqtls_num = pd.read_csv(\n",
+ " workdir/f'output/filtered_results/UT_{discovery_celltype}/coeqtls_fullresults_fixed.sig.tsv.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t'\n",
+ " ).shape[0]\n",
+ " numcoeqtl_df.loc[replication_celltype, discovery_celltype] = replicated_coeqtls_num\n",
+ " num_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={replicated_coeqtls_num}\"\n",
+ " rbse_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={replicated_coeqtls_num}\"\n",
+ " \n",
+ "replicated_ratio_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "for discovery_celltype in numcoeqtl_df.columns:\n",
+ " for replication_celltype in numcoeqtl_df.index:\n",
+ " replicated_ratio_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " numcoeqtl_df.loc[replication_celltype, discovery_celltype] / numcoeqtl_df.loc[discovery_celltype, discovery_celltype]\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " CD4T | \n",
+ " CD8T | \n",
+ " monocyte | \n",
+ " DC | \n",
+ " NK | \n",
+ " B | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " CD4T | \n",
+ " 1.000000 | \n",
+ " 0.971596 | \n",
+ " 0.759425 | \n",
+ " 0.773429 | \n",
+ " 0.953264 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " CD8T | \n",
+ " 0.988285 | \n",
+ " 1.000000 | \n",
+ " 0.847118 | \n",
+ " 1.002450 | \n",
+ " 0.966100 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " monocyte | \n",
+ " 0.792142 | \n",
+ " 0.779688 | \n",
+ " 1.000000 | \n",
+ " 0.797139 | \n",
+ " 0.960618 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " DC | \n",
+ " 0.794745 | \n",
+ " 0.815816 | \n",
+ " 0.935905 | \n",
+ " 1.000000 | \n",
+ " 0.853924 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " NK | \n",
+ " 0.925802 | \n",
+ " 0.967842 | \n",
+ " 0.868747 | \n",
+ " NaN | \n",
+ " 1.000000 | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " B | \n",
+ " 0.918479 | \n",
+ " 0.952496 | \n",
+ " 0.948709 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " CD4T CD8T monocyte DC NK B\n",
+ "CD4T 1.000000 0.971596 0.759425 0.773429 0.953264 NaN\n",
+ "CD8T 0.988285 1.000000 0.847118 1.002450 0.966100 NaN\n",
+ "monocyte 0.792142 0.779688 1.000000 0.797139 0.960618 NaN\n",
+ "DC 0.794745 0.815816 0.935905 1.000000 0.853924 NaN\n",
+ "NK 0.925802 0.967842 0.868747 NaN 1.000000 NaN\n",
+ "B 0.918479 0.952496 0.948709 NaN NaN 1.0"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rb_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " CD4T | \n",
+ " CD8T | \n",
+ " monocyte | \n",
+ " DC | \n",
+ " NK | \n",
+ " B | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " CD4T | \n",
+ " 0.000000e+00 | \n",
+ " 0.000000e+00 | \n",
+ " 1.126679e-35 | \n",
+ " 2.425843e-03 | \n",
+ " 0.000000e+00 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " CD8T | \n",
+ " 0.000000e+00 | \n",
+ " 0.000000e+00 | \n",
+ " 7.557685e-59 | \n",
+ " 0.000000e+00 | \n",
+ " 0.000000e+00 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " monocyte | \n",
+ " 1.052643e-121 | \n",
+ " 5.216640e-92 | \n",
+ " 0.000000e+00 | \n",
+ " 1.774726e-21 | \n",
+ " 1.393096e-317 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " DC | \n",
+ " 3.609987e-25 | \n",
+ " 4.217830e-39 | \n",
+ " 5.947381e-316 | \n",
+ " 0.000000e+00 | \n",
+ " 4.322965e-05 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " NK | \n",
+ " 2.552726e-264 | \n",
+ " 0.000000e+00 | \n",
+ " 8.365584e-06 | \n",
+ " 0.000000e+00 | \n",
+ " 0.000000e+00 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " B | \n",
+ " 2.320757e-144 | \n",
+ " 1.610287e-212 | \n",
+ " 1.074123e-78 | \n",
+ " 0.000000e+00 | \n",
+ " 0.000000e+00 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " CD4T CD8T monocyte DC \\\n",
+ "CD4T 0.000000e+00 0.000000e+00 1.126679e-35 2.425843e-03 \n",
+ "CD8T 0.000000e+00 0.000000e+00 7.557685e-59 0.000000e+00 \n",
+ "monocyte 1.052643e-121 5.216640e-92 0.000000e+00 1.774726e-21 \n",
+ "DC 3.609987e-25 4.217830e-39 5.947381e-316 0.000000e+00 \n",
+ "NK 2.552726e-264 0.000000e+00 8.365584e-06 0.000000e+00 \n",
+ "B 2.320757e-144 1.610287e-212 1.074123e-78 0.000000e+00 \n",
+ "\n",
+ " NK B \n",
+ "CD4T 0.000000e+00 0.0 \n",
+ "CD8T 0.000000e+00 0.0 \n",
+ "monocyte 1.393096e-317 0.0 \n",
+ "DC 4.322965e-05 0.0 \n",
+ "NK 0.000000e+00 0.0 \n",
+ "B 0.000000e+00 0.0 "
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rbpvalue_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "from matplotlib import cm\n",
+ "from matplotlib.colors import ListedColormap, LinearSegmentedColormap"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "color_dict = {'CD4T': '#2E9D33',\n",
+ " 'CD8T': '#126725',\n",
+ " 'monocyte': '#EDBA1B',\n",
+ " 'NK': '#965EC8',\n",
+ " 'DC': '#E64B50',\n",
+ " 'B': '#009DDB',\n",
+ " 'cMono': 'peru',\n",
+ " 'ncMono': 'y',\n",
+ " 'CD4T_individual_100': '#2E9D33',\n",
+ " 'CD4T_individual_50': '#2E9D33',\n",
+ " 'CD4T_50': '#2E9D33',\n",
+ " 'CD4T_150': '#2E9D33',\n",
+ " 'CD4T_250': '#2E9D33'}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":60: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_xticklabels([\"\"]+col_labels)\n",
+ ":61: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_yticklabels([\"\"]+row_labels)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "matplotlib.rcParams.update({'font.size': 16})\n",
+ "discovery_celltype = 'CD4T'\n",
+ "fig, axes = plt.subplots(1, 6, figsize=(7, 7), sharey=True)\n",
+ "for i, discovery_celltype in enumerate(['CD4T', 'CD8T', 'monocyte', 'DC', 'NK', 'B']):\n",
+ " colors = [\"white\", color_dict[discovery_celltype]]\n",
+ " cmap1 = LinearSegmentedColormap.from_list(\"mycmap\", colors)\n",
+ " im1, bar = heatmap(rb_df[discovery_celltype].values.reshape((6, 1)), \n",
+ " list(rb_df.index), \n",
+ " [discovery_celltype],\n",
+ " cmap=cmap1, ax=axes[i], vmin=0.7, vmax=1)\n",
+ " bar.remove()\n",
+ " _ = annotate_heatmap(im1, \n",
+ " data=rbse_anno_df[discovery_celltype].values.reshape((6, 1)), \n",
+ " valfmt=\"{x:^}\", \n",
+ " textcolors=(\"white\", \"white\"),\n",
+ " threshold=1)\n",
+ " if i > 0:\n",
+ " axes[i].axis('off')\n",
+ "plt.subplots_adjust(wspace=0, hspace=0)\n",
+ "plt.savefig('rb_values.filtered_results.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# cdict = {'red': [[0.0, 0.0, 0.0],\n",
+ "# [0.5, 0.5, 0.5],\n",
+ "# [1.0, 1.0, 1.0]],\n",
+ " \n",
+ "# 'green': [[0.0, 0.0, 0.0],\n",
+ "# [0.5, 0.5, 0.5],\n",
+ "# [1.0, 1.0, 1.0]],\n",
+ " \n",
+ "# 'blue': [[0.0, 0.0, 0.0],\n",
+ "# [0.5, 0.5, 0.5],\n",
+ "# [1.0, 1.0, 1.0]]}\n",
+ "\n",
+ "# cdict['alpha'] = ((0.0, 0.0, 0.0),\n",
+ "# (0.5, 0.5, 0.5),\n",
+ "# (1.0, 1.0, 1.0))\n",
+ "# newcmp = LinearSegmentedColormap('alpha', segmentdata=cdict, N=256)\n",
+ "\n",
+ "c_white = matplotlib.colors.colorConverter.to_rgba('white',alpha = 0)\n",
+ "c_black= matplotlib.colors.colorConverter.to_rgba('black',alpha = 1)\n",
+ "cmap_rb = matplotlib.colors.LinearSegmentedColormap.from_list('rb_cmap',[c_white,c_black],512)\n",
+ "\n",
+ "\n",
+ "\n",
+ "mpl.cm.register_cmap(cmap=cmap_rb, name='alpha')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":62: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_xticklabels([\"\"]+col_labels)\n",
+ ":63: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_yticklabels([\"\"]+row_labels)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "im, bar = heatmap(replicated_ratio_df.values, \n",
+ " list(rb_df.index), \n",
+ " celltypes,\n",
+ " cmap='alpha', \n",
+ " vmin=0, vmax=1)\n",
+ "_ = annotate_heatmap(im, \n",
+ " data=replicated_ratio_df.values, \n",
+ " valfmt=\"{x:.0%}\", \n",
+ " textcolors=(\"white\", \"white\"),\n",
+ " threshold=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 71,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":62: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_xticklabels([\"\"]+col_labels)\n",
+ ":63: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_yticklabels([\"\"]+row_labels)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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IVdnFWLVqlVceeWVths1QExMDO3ateOHH3644P6WLVtGeHg4nTp1spVt2bIFX19fOnToYCtTStGxY0e2bt3KiRMnSiVDcfn+++9p27atTekAqF+/PldddVWJlJ8lS5YQERFB586dbWXnz58HICgoyKFucHAwYFhEhLJh9erVXHHFFU7Xctu2bYu8lq2/W2BgoEN5jRo1MJvNtt/t119/JScnh3vuuceh3j333MPu3bs5cuSIO0QpknPnzlGjRg2b4gDg5+dHcHAw586dK7Rtamoqfn5+Dm09PT0JDg4mISHBJmtmZiaJiYnUrl1blI5KiGQudUSu0CrEnj17bKZae5o2bcrevXsvqK/jx4+zdu1a7rnnHry8/jN8eXh44O3t7XSRm0wmAHbv3l2CkV84e/bsoVmzZk7lzZo1K5Gsf/zxB/fee6+DrM2aNaNDhw689tpr/P3336SlpbFlyxZmzJjBzTffzCWXXFJqOQTX7N27t8Bred++fYW2ve6662jQoAEvv/wye/fuJT09nbVr1zJnzhz69+9vcz/s3bsXHx8fB+UGsP2uRR3HXaSnp7t0Hfn7+zvFpORHKeVSkVBKYTabyczMBCAlJQUw/n+3b9/O77//zrp169i9e7dNURMqBkmZ7owoHlWIpKQkQkJCnMpDQkJITk6+oL4+++wzzGazg5sFoHHjxqSmpjo93P/66y/bGMqDxMREl7KGhoZe8BiWLl2K2WzmvvvucyhXSrFkyRIaN25Mly5diI2NpWvXrtSvX5+PP/64FKMXiiIpKclmWbKnONeyr68vX375JVprOnfuTNOmTenTpw833XQTkyf/t1hmUlISNWrUcLphW6+rxMTE0gtSDHJzc/H29nYq9/LyKlIp8PPzIzMz06Ge1toWXJqbmwsYsVlgKFt+fn5ceumlNGjQgISEBP755x+x3gmVClE8qgEluaksW7aMSy+91MFHDHD33XdTq1YtnnjiCXbt2sW5c+d488032bBhA1C+aw640vBLIuunn35Kq1ataNmypdO+UaNGsXnzZmbMmME333zDjBkz2LZtG4MGDcJsNpdo3ELxKOnvm5WVxbBhwzh79ixvvvkmn332GePGjWP58uU8//zzDn256xqqKKKjo9Fas2fPHjIzM8nOzubAgQMFBowGBwfTpEkTQkNDiY6OpnHjxqSlpZWbkiW4Rma1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eTJvv/02Pj4+ZSKj4B4kxkMQBEEoNTVr1mT06NFMnDiRMWPGOCkQtWvXtuUiKQxXSkPjxo3ZtGkT6enprFu3jqlTp5Kbm8vChQttdYYNG0aPHj3KNX6nOBSU9v5iRhQPQRAEwS2MGjWKWbNmMX78eAelAIz1ni677LIi+3DlUvD19aVtWyO0oWPHjkRHRzNo0CBGjBhB+/btWbp0KWvXrmXz5s22xHRpaWmAsVbOhSZZdDfVyU3iDkQNEwRBENxCYGAgzz77LMuWLWPr1q0O+0rjasmPVQnZv38/ADt37iQzM5OWLVsSGhpKaGgod9xxBwB33XUX9evXd6+gQqkQxaMS8OmnnxIdHU3Tpk2d0kjn5uYSHR3NjBkzStx/amoqM2fO5I477rBldLzjjjsKXF7+zz//5I477qBBgwa0bt2aF1980SH5kZXVq1dz55130rx5c5o1a8add97J999/X+R4Fi9eTFhYGA0bNnQpb1hYWKlzAnz//fcMHTqUq666ivDwcO68884C6y5ZsoTOnTsTGxtL06ZNuffee1m/fr1Dncsvv5ywsDCX2+jRo0s11urO0qVLqVu3Li1atHD5e9etW5fXXnutxP2npqby+uuv06NHD9v6Qz169HB5LX7wwQfcdtttXHrppTRq1Ihrr72Wl156yW1rmZw8eZI1a9awdu1apzTpWmvWrFnjkBSvJGitOXz4MH/++Se///47GzdudDmzKDk5mT179rB582bWrFnDn3/+WarjFpdHH32UOnXqMG7cOIdyq6ulqG358uVFHsM628aqpAwcOJBffvnFYbPmfpkxYwbffvutm6W8MCS41BFxtVQiUlJSePvttx0WunIHx44dY+7cufTp04eRI0fi4eHBV199xeDBg3n55ZcZNGiQre7OnTu577776NixI/PmzePIkSNMmjSJkydP8v7779vq/fzzzwwYMIBbb72VJ554AoCFCxcyePBg5s2bV6zpaykpKfzvf/9j/PjxbpUXYOXKlfz777+0bdvWtnKnKz755BNGjx7NwIEDGT9+PBkZGbz77rv07NmTlStX2lLEf/LJJ+Tk5Di0/fbbb3nrrbeKnUn1YiclJYV33nnH7Ynojh07xrx58+jduzdPPPEEHh4efP311wwZMoTJkyczcOBAW92kpCS6d+9O06ZNCQgIYMeOHbzxxhusW7eOFStWuM0Xn5eXx9GjRx1StbuLffv2cerUKWJiYqhRowZJSUkcPHiQvLw8hzf7pKQkkpOTbVlLC5ot4m58fHwYP348Q4cOdSg3mUw2S0Vx2b59O0899RS9evWiYcOGZGdns2bNGt588026d+9Ohw4dAGM9qfwp9K20adOG6667rkSyuIvqpDS4A1E8KhEdO3bko48+4v/+7//cuhhbTEwMGzZscFgX4sYbb+T48eO89dZbDorH9OnTiY6O5oMPPrDl3/D29uaJJ57gsccesz2IP/vsM6Kjo3n//fdtSZA6depEu3bt+Pzzz4uleNx44418+OGHPPzww0RGRrpNXoDXX3/d9hC57bbbCqy3ZMkS2rVr52BRuv7667nkkkv4+uuvbfK6WqNmypQpRERE2BbTEwqnY8eOfPzxxwwZMsTt1/e6devw8/OzlXXq1Injx4/zzjvvOCgeTz/9tEPba665Bj8/P8aOHcu///7rtrWIQkNDOXbsGHXq1LEt5OYOsrKyOHnyJDExMTYlIzQ0lLy8POLj46ldu7bt/9a+zu7du22L45UHgwYNYvr06aVe7ygyMpKwsDBefvllTp48ib+/Pw0bNmTGjBkMGTLETaMVyhtxtVQiRo4cCcCbb77p1n79/f1dLkbVpk0bTp06Zft+/vx5fv31V+644w6HpF933nknJpMJ+4RnOTk5+Pn5OWRe9PT0xN/fv9jLyT/55JMADumw3UVx31xzcnKc1rHw9/fH29u7UDmOHj3KH3/8Qc+ePV1mnxScefzxxwH43//+59Z+rWuY5Kd169YO13dBWNOJW1d4dQfWdWCOHDnitj7BcCsBTivNhoaGYjabSUhIsJWVx1v2wIED0VrTuHFjh3IvLy/27t2L1rpUycMiIyNZtGgRhw4dIjMzk3PnzrFp0yYee+yxIqfMdurUCa11sV6CyhpxtTgiikclIjIyksGDB7NgwQLi4+MLrFeaJDz2bNiwweGGERcXR1ZWFs2aNXOo5+vrS/369R1WE33ggQeIi4vjjTfe4Ny5c5w9e5aZM2dy9OhRBwtKUfI+9NBDzJs3r1zkdcXgwYP57bffWLBgAcnJyZw4cYIxY8bg5eVFv379Cmy3dOlStNYFrgMjOBMREcHAgQNZtGhRodlO3fV7//nnn04PRPtjZGZm8tdffzFz5kyuu+46WrRoUWLZ8mMymahduzYnTpwgKyurwHpa62JtVqwPn/yKtfV7YQunCRWDLBLnjLhaKhmPPfYY8+fPZ+bMmS4tAfHx8Vx11VVF9lO3bt1C58zPnz+fv/76i7feestWZg38czXtLCQkxCEwsFOnTnzyySc89thjtkDQwMBAPvroI9q3b1/k+Kw8/vjjfPLJJ0yfPt3lm/CRI0dsy9QXRr169fj777+LfVwrVuXimWeesVmcIiIi+Oyzzwp8aIGheLRq1cqtD6uLgUcffZSFCxfy+uuvuwwojY+Pt/ntC6Nu3bps2LChwP0LFixgy5YtLq+p9PR0mjZtavvesWNHh/gld1GvXj1OnDjB4cOHHY5nJSsri40bNxbZj4+PD1dffTWAzbKTkpLisJZQSkoKgFNAqyBURkTxqGSEhoby8MMPM3PmTB577DGngKnIyMgCZ6PYU5gZct26dbzwwgv07NmTe++911ZufbMqjmb9119/MXz4cDp37kzPnj1RSrF06VL+7//+j/nz53PttdcW2QcY8j766KNMnz6dESNGOAXjRUVFsXr16iL7KWmmwhUrVjBmzBgGDBhAt27dyMzMZPbs2dx///189dVXNG/e3KnN5s2b2b9/Py+//HKJjnkxExoaytChQ3n99dd59NFHnaY5RkZG8t133xXZT2FxE+vWrePFF1/k3nvv5Z577nHa7+fnx3fffUd2djb//vsvs2bNYuDAgSxZssSt7hZvb2/q1q3L4cOHqVevnpM7yGQycfnllxfZj711IyAggJCQEA4fPoyvr68tuPTYsWOABDFWVuR3cUQUj0rIww8/zJw5c5g+fTpvv/22wz6TycSll15aZB8FXehbt25lwIABXHvttcycOdNhn9XXnX/Ko7XM/q3t+eef55JLLnFYOfLGG2/kzjvvZMKECcVSFqw88sgjfPjhh7zyyitOb54mk4lWrVoV2UdJ/rG11owePZo77rjDQYm48cYb6dChA1OnTmXevHlO7T799FO8vb1dPtSEovm///s/Pv74Y2bMmGFbUMyKyWSiZcuWRfZR2PU9ePBgrrnmmgKnoHt4eNCmTRsArrrqKpo1a0bv3r357rvv6NGjxwVKUzh169bl+PHjHD582MmF6eHhUaIVkJs2bcru3bv5999/ASO2qkGDBuzfv9+tgayC+5DMpY6I4lEJCQgIYMSIEUycOJFhw4Y57CuNq2XXrl3c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RHDkyJFC2545c4YaNWo4tPX29iYyMpL4+HjMZrND/VOnTnHgwAGH31goO9avX0+zZs0c3KHR0dG0bNmSdevWFdo2NzcXwMnCFxgYiNYau0WzhUqM1epR2q26IIpHFWLv3r00bdrUqfySSy5h7969F9TX8ePHWbduHXfffTdeXv8Zvjw9PfH29na6yE0mE2C8mZcH+/fv55JLLnEqb9y4Mfv37y+07TXXXENsbCwzZsxg//79pKens379eubNm8d9991XqJsmKSmJffv20ahRo1LLcCEkJSW5dImEhoaSlJRUaFulFB4ezv/Knp6e5OXlkZqaaiszm82sW7eOVq1aOSgqQtlx+PBhh5cFK7GxsUUqlVdccQV16tThww8/5PDhw2RmZvL333/z5Zdfcvvttzu5adavX8/tt9/OrbfeyogRI1i7dq1bZRFKhigejoirpQpR0MMpJCSE5OTkC+rr888/x2w2O7hZABo2bEhqair79u2jSZMmtnJrUFxRD0F3kZyc7PLBGBwcTEpKSqFtfXx8WLRoESNGjOC2226zlffq1Yvx48cX2nbSpElorRkwYEDJBl5CsrOz8fHxcSo3mUzk5OQU2jY4OJjjx487mN211pw5c8bWt5Xt27eTl5dHq1at3Dh6oTBSU1NdBggHBQU5KIWuMJlMvP7667z00ksMGTLEVt69e3eGDx/uULd9+/Y0bdqUqKgoEhMT+frrr5kwYQJjxozh5ptvdo8wguAGRPGoYrjSektibv3ss8+49NJLnfzBd999NzNnzmTkyJHMmDGDyMhIFixYwJ9//lng8cuKkh4rOzubkSNHcu7cOaZNm0bt2rXZvn07b7/9Np6enkycONFlu/fff59vv/2WKVOmOLh4KjvNmjVj165d/P7771x99dV4eXmxbds20tLSgP/OY0pKCtu3b6dz584OVi6h7Cnp/21OTg5TpkwhKSmJMWPG2IJLFyxYgKenJ0888YStbn5F5Nprr+Xxxx9nzpw5ongIlQq5+1QhgoODSUxMdCpPTk4mODi42P38/fff7N+/3+UDODg4mA8++ICRI0fablaxsbE8+eSTTJ8+ncjIyJILcAHUqFHDpRWnIEuIPZ999hkbN25k9erVxMTEANCuXTuCgoJ44YUXuP/++52myy5evNimcBUW7FdWmEwmB8uElZycHJubqyCCgoK44YYb2LBhA59//jkAtWrVomXLlvz77782c/yGDRuIjo4mPDzcdixr/Ed2djaenp6ikJQBgYGBLi0baWlpBAUFFdp25cqVbNu2jU8++cQWHN66dWsCAgJ4/fXXuf322wt0C3p6enLDDTfw4Ycfcu7cOWrVqlV6YYQSUZ3cJO5A7jJViIJiOfbt2+cyHqIgli1bhpeXF3fffbfL/VdffTXr1q3j0KFDmM1mGjZsyLvvvouvr2+5megbN27Mvn37nMoPHDhA48aNC227Z88egoODbUqHldatW9v6sFc8vvrqKyZOnMjgwYMZNmyYG0Z/4YSEhLh0YxXkXstPbGwsMTExpKSk4OHhQY0aNVi3bh0BAQE2M39ycjJpaWksWrTIqf2iRYto0aIFV199dWlFEfIRGxtLXFycU/nhw4edrtH8HDp0iKCgIKcZadZYryNHjhQaj2S1qsiDT6hMSHBpFaJr165s2bKFw4cP28ri4+PZtGmTQy6OwsjJyeHrr7+mc+fOhb4BKaVo2LAhjRs3JjMzk0WLFnHvvfcSEBBQajmKQ+fOndm2bRvx8fG2sqNHj7JlyxY6d+5caNvw8HCSk5MdzhPAtm3bABysNqtXr+a5556jV69ejBkzxo0SXBgxMTGcOXPG4c04NTWVU6dOFflwsuLh4UFISAg1atQgIyODQ4cOOShYHTt2pFu3bg5bnTp18PHxoVu3bjRv3tztcgnQoUMHdu3a5TAj7OTJk+zYsaPImUU1a9YkNTWVY8eOOZTv3r0boNAEcXl5eaxZs4aIiAhq1qxZCgkKZu7cuSilCAkJcbLG5ubmopRiwoQJpTrG8uXL6du3L5dccgkeHh6FJjL8448/uOaaa/Dz8yMqKoonn3ySzMzMUh3fHUhwqSOieFQh+vXrR7169Rg8eDA//PADq1atYtCgQdSuXdshadDRo0eJiYnh9ddfd+rjxx9/JCkpySmo1J6pU6fy7bffsm7dOhYtWkS3bt3w8vLi2WefLRO5XNG7d2/q1KnDo48+yo8//shPP/3Eo48+SlRUlEOWzWPHjtGiRQveeustW9ndd99NQEAAQ4cO5csvv2TDhg18+OGHvPrqq7Rs2ZIrrrgCgE2bNvHkk0/StGlT7r77brZu3Wrbdu7cWW6ygmHNCgwM5Mcff+Tw4cMcOXKEn376iYCAAIeZTGlpabYsllbMZjN//vknhw8f5vjx4+zcuZNvvvmG0NBQWrZsaasXERFBdHS0w+bn54enpyfR0dEyy6WM6N69O1FRUYwfP55169axbt06XnzxRcLDw7n99ttt9U6dOsUtt9zC/PnzbWVdu3bF39+f559/nlWrVrF161aWLl3K7NmzadKkie33/fnnn5kyZQqrV69m69at/PLLLzz11FPs27fPISi1rEhOTrYl+nM3X331FVu3bqV9+/bUrVu3wHrbt2+nS5cuRERE8O233zJ58mQ+/vhjBg4cWCbjKi7uUjqqk+IhrpYqhL+/P0uXLmXChAk8/vjjaK257rrrmDhxooMlQmtNXl6eU/4GMNwsISEhhQabnTlzhhdffNHmF+7evTujR48mNDS0TORyhb+/P5988glTp07lmWeeQWtNhw4deO6551zKah+oV7duXZYuXcqsWbN44403SExMJDo6mj59+vDII4/Ypp5u2LCBnJwcdu7cyf333+9w/Dp16vDzzz+Xj7AYeTe6devGxo0bbenwa9euzVVXXeWQtdSauyF/YGJKSgoHDx4kJyeHgIAAmjRpQps2bfD09Cw3GQTX+Pn5MX36dN59911effVVtNZcfvnlDBs2zGE6rNbaIc8MQFRUFP/73/+YN28ec+fOJTk5mfDwcG699Vb69u1ru5ajoqJISkpi9uzZpKam4uPjQ9OmTXn55Zdp165dmcvYtWtXZs2axciRI4mKinJr3x988IFNTmtCQFe8+OKL1K1bl2XLltn+Z0wmEwMGDGDMmDG2Fw6h4lGSgKZiaNOmjV65cmVFD6NcsM6uuFh45ZVXKnoI5crHH39c0UMoN1avXl3RQyhXipoNM3fuXAYNGsSaNWvo1q0bgwcPZtasWYDhavH29ubFF18stbvFynXXXYeXlxe//vqrQ/n58+epUaMGTz75JFOmTLGVZ2VlERwczNixYwuczWZFKfWX1rqtWwZqR8uWLfXixYvd0lebNm3KZIzljbhaBEEQhFIRHR3N8OHDmT17tlNslT25ublFbnl5eRd8/AMHDpCVleW0tICvry+NGjUqd9dpfsTV4ogoHoIgCEKpGTNmDH5+fgVaFuLi4vD29i5yK0nW4ISEBACX7uCaNWva9guVA4nxEARBEEpNzZo1GT16NBMnTmTMmDFOCkTt2rXZtGlTkf24yuBbFIVNG64M4QTVyVrhDkTxEARB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L730EkajkTfeeINbbrmF1atX2765u8vtt9/Ohx9+yKuvvspzzz3n8H5BQQGXXHJJu9dpvu350aNHAcv2yykpKbz88ss0NDTwj3/8g1mzZvH55587nABq9dNPP/H1119z//33u/2b4vDhw8nKyuLXX391uh10VVWVrVu5LQEBAXY9VSNHjkSv17NhwwbbcsKgoCAuv/xyhzH0xsZGli9fbvu5V69edsGn6JwbbriBr776infffdfpnKXi4mK7M5ZaEx0dbff5gOXU2uZDGVOmTOGBBx5wKFtbW2s3v2H06NH85S9/6UArhDucTUGDO0jgcQYIDQ1l3rx5vPzyy9x111307dvX7v3o6GjWrFnT7nXa6mr/+OOPMZvNDsMs1m/STU1NvPvuu7ZzGC644ALGjRvHG2+84fZhkZCQEObOnctrr73G7bff7nA6a1RUlEsP4+bttbbD19eXN99803ZGRnJyMlOmTOG9995zmIUPkJ2dzYMPPsjYsWO5/fbbu9Isp7y9vRk2bBi//vorKSkpdqsgwNIrMn369Hav03JYJDMzk127djFixAhiYmKor69n9+7drFu3jiuuuMLuW6DBYGD69OmYTCaOHz/O7t27Wb9+PVOnTpXhli4ICgri2muv5d133+WGG25wCGzDw8PtDjdsjbP/b3v16sWrr75q68n44IMPMJlMDgc5ent78+qrr9LY2Eh2djYrVqzgL3/5Cy+++KKc4yN6jAQeZ4h58+axdOlSFi5c6PCPldFodGmdeltR96pVqxg2bJjDdYKDg1FKMWDAALvDn/z9/Rk1ahTp6ekdbIlr5syZw/Lly/nHP/7BwoUL7d4zGo0uHeHevL3WeRsjR460O5grNjaWxMREp8Mt+fn5zJ07l969e/P6669327j4sGHD2LdvH2lpaUycONHuPb1e3+Ehj/r6erZv305ycrLdktzY2FhWrlzJnj17SE1NtaUrpWyTSKOjowkNDeWbb74hLy/PbV3y56qZM2eyevVq3n77bYegwMvLy2GIwlVGo9F2avGIESMICwtj4cKFXH311QwdOtSWT6fT2fIlJyfTr18/HnroITZu3Ci9WqLHSOBxhvD39+eee+7hb3/7m20CplVXh1p+/fVXDhw44HQs1tfXl4SEhFZ3BOyub8T+/v7ccccdPP/889x2221273VmqCU+Ph4fH59W29Eyvbi4mNmzZxMQEMA///lPAgICutCatnl5eTF8+HC2b99OSkqK3XudGWqpqKjAZDI5rEjx9vYmMDCQioqKNq9lLVdZWdmRZggnfH19ufHGG3nrrbccehO7MtTSknWFSmFhoV3g0VY+4Tky1GJPAo8zyOzZs1myZAkvvviiXXpXh1pWrlyJwWBgxowZTt+fNm0aS5cupbCw0NZdfPLkSX755RcuvvjijjWiA37/+9+zdOlSXnnlFbv0zgy1eHl5MXHiRH7++WdqampsQw2FhYXk5ubaBTInTpywTVpbunSpRyZZDh48mPT0dNLS0uzSOzPUYu3ROXbsmN0wVX19PZWVlYSHh7d5reLiYoBu22TqXDN9+nQ+/vhjli1bZpfelaGWlqwro1qbp9QyX1sru4TobhJ4nEG8vb2ZP38+Dz/8sF260Wjs9ATPxsZGVq9ezaRJk1rds+HOO+/k448/5g9/+AMPPPAARqORN998k9raWu65555O3dcVRqORu+++22EynNFodOgZcMV9993Hddddxx133MHcuXOpr6/ntddeIygoiFtuuQWwbCB22223ceTIEZ599lmKi4ttD2KApKSkbun90Ov1nHfeefznP/9xSO/oXhqBgYHEx8eTnp6OUso2x2PPnj2YzWbbHh4NDQ2sW7eOxMRE294Px44dY+/evYSFhdn2RxBdYzQaueWWW3j55Zft0r28vGzDIK7KycnhrbfeYuLEicTExNDY2MiePXv49NNPGTNmjK23o7q6mscee4zJkyfTq1cvlFLs37+fjz/+mMTERKcTmUX3kR4PexJ4nGFuuOEG3njjDXJzc91yvfXr11NWVtbmlsKRkZF8/PHH/O1vf+NPf/oTZrOZUaNG8fHHH3f4H86Ouuaaa/jXv/7V4S2UnUlKSuLtt9/mpZdeYv78+RgMBlJTU3nttddsD/fS0lLbEdrOViK88847dvMj3GnAgAGkp6e7ZYjj4osvJj09nZycHPbu3YuXlxfh4eGMGzfO1lbrniX79u2jpqYGpRQBAQEkJyczdOhQmXzoRlOnTuWjjz5qc4m4K0JDQwkODub999/nxIkTeHt7Exsby7x587j88stt+by8vOjTpw+fffaZbdOtmJgYZs6cyYwZM1ze00V03dm2FNYd1Olwct+5aMSIEdrXX3/d09XwiLb2qDgbPf/88z1dBY9aunRp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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "matplotlib.rcParams.update({'font.size': 16})\n",
+ "fig, ax = plt.subplots(figsize=(8, 7))\n",
+ "im, bar = heatmap(np.flip(rb_df.values, axis=0), \n",
+ " list(rb_df.index)[::-1], \n",
+ " celltypes,\n",
+ " cmap='alpha', \n",
+ " vmin=0.7, vmax=1)\n",
+ "_ = annotate_heatmap(im, \n",
+ " data=np.flip(rbse_anno_df.values, axis=0), \n",
+ " valfmt=\"{x:^}\", \n",
+ " textcolors=(\"white\", \"white\"),\n",
+ " threshold=1)\n",
+ "\n",
+ "plt.savefig('rb_values.filtered_results.varyingalpha.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 74,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":62: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_xticklabels([\"\"]+col_labels)\n",
+ ":63: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_yticklabels([\"\"]+row_labels)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "discovery_celltype = 'CD4T'\n",
+ "fig, axes = plt.subplots(1, 6, figsize=(7, 7), sharey=True)\n",
+ "for i, discovery_celltype in enumerate(['CD4T', 'CD8T', 'monocyte', 'DC', 'NK', 'B']):\n",
+ " colors = [\"white\", color_dict[discovery_celltype]]\n",
+ " cmap1 = LinearSegmentedColormap.from_list(\"mycmap\", colors)\n",
+ " im1, bar = heatmap(np.flip(replicated_ratio_df[discovery_celltype].values.reshape((6, 1)),\n",
+ " axis=0), \n",
+ " list(rb_df.index)[::-1], \n",
+ " [discovery_celltype],\n",
+ " cmap=cmap1, ax=axes[i], vmin=0, vmax=1)\n",
+ " bar.remove()\n",
+ " _ = annotate_heatmap(im1, \n",
+ " data=replicated_ratio_df[discovery_celltype].values.reshape((6, 1)), \n",
+ " valfmt=\"{x:.0%}\", \n",
+ " textcolors=(\"white\", \"white\"),\n",
+ " threshold=1)\n",
+ " if i > 0:\n",
+ " axes[i].axis('off')\n",
+ " \n",
+ "plt.subplots_adjust(wspace=0, hspace=0)\n",
+ "plt.savefig('replicated_ratio.filtered_results.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "import matplotlib as mpl\n",
+ "\n",
+ "fig, ax = plt.subplots(figsize=(0.5, 6))\n",
+ "fig.subplots_adjust(bottom=0.5)\n",
+ "\n",
+ "colors = [\"white\", 'black']\n",
+ "cmap = LinearSegmentedColormap.from_list(\"mycmap\", colors)\n",
+ "norm = mpl.colors.Normalize(vmin=0.7, vmax=1)\n",
+ "\n",
+ "fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),\n",
+ " cax=ax, orientation='vertical')\n",
+ "plt.savefig('colorbar.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, ax = plt.subplots(figsize=(0.5, 6))\n",
+ "fig.subplots_adjust(bottom=0.5)\n",
+ "\n",
+ "colors = [\"white\", 'black']\n",
+ "cmap = LinearSegmentedColormap.from_list(\"mycmap\", colors)\n",
+ "norm = mpl.colors.Normalize(vmin=0, vmax=1)\n",
+ "\n",
+ "fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),\n",
+ " cax=ax, orientation='vertical')\n",
+ "plt.savefig('colorbar.replication_ratio.pdf')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### celltype comparison for unfiltered results"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 75,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# filtered results\n",
+ "unrb_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "unrbse_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "unrbpvalue_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "unnumcoeqtl_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "unanno_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "unnum_anno_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "\n",
+ "for discovery_celltype in celltypes:\n",
+ " for replication_celltype in celltypes:\n",
+ " if discovery_celltype != replication_celltype:\n",
+ " unrb_results = unfiltered_res_df[(unfiltered_res_df['celltype_discovery'] == discovery_celltype) &\n",
+ " (unfiltered_res_df['celltype_replication'] == replication_celltype)]\n",
+ " unreplicated_coeqtls_num = pd.read_csv(\n",
+ " workdir/f'output/unfiltered_results/rb_calculations/discovery_{discovery_celltype}_replication_{replication_celltype}.tsv.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t',\n",
+ " index_col=0\n",
+ " ).shape[0]\n",
+ " if rb_results['r'].values[0] < 10 and discovery_celltype != 'B':\n",
+ " unrb_df.loc[replication_celltype, discovery_celltype] = unrb_results['r'].values[0]\n",
+ " unrbse_df.loc[replication_celltype, discovery_celltype] = unrb_results['se_r'].values[0]\n",
+ " unrbpvalue_df.loc[replication_celltype, discovery_celltype] = unrb_results['p'].values[0]\n",
+ " unnumcoeqtl_df.loc[replication_celltype, discovery_celltype] = unreplicated_coeqtls_num\n",
+ " unrbvalue = unrb_results['r'].values[0]\n",
+ " unrbsevalue = unrb_results['se_r'].values[0]\n",
+ " unnum_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={unreplicated_coeqtls_num}\"\n",
+ " unanno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"{unrbvalue:.2f}\\nN={unreplicated_coeqtls_num}\"\n",
+ " elif discovery_celltype == 'B':\n",
+ " unrb_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " unrbse_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " unrbpvalue_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " unnumcoeqtl_df.loc[replication_celltype, discovery_celltype] = unreplicated_coeqtls_num\n",
+ " unrbvalue = unrb_results['r'].values[0]\n",
+ " unrbsevalue = unrb_results['se_r'].values[0]\n",
+ " unnum_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={unreplicated_coeqtls_num}\"\n",
+ " unanno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={unreplicated_coeqtls_num}\"\n",
+ " else:\n",
+ " unrb_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " unrbse_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " unrbpvalue_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " unnumcoeqtl_df.loc[replication_celltype, discovery_celltype] = unreplicated_coeqtls_num\n",
+ " unnum_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={unreplicated_coeqtls_num}\"\n",
+ " unanno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={unreplicated_coeqtls_num}\"\n",
+ " else:\n",
+ " unrb_df.loc[replication_celltype, discovery_celltype] = 1\n",
+ " unrbse_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " unrbpvalue_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " unreplicated_coeqtls_num = pd.read_csv(\n",
+ " workdir/f'output/unfiltered_results/UT_{discovery_celltype}/coeqtls_fullresults_fixed.sig.tsv.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t'\n",
+ " ).shape[0]\n",
+ " unnumcoeqtl_df.loc[replication_celltype, discovery_celltype] = unreplicated_coeqtls_num\n",
+ " unnum_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={unreplicated_coeqtls_num}\"\n",
+ " unanno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={unreplicated_coeqtls_num}\"\n",
+ " \n",
+ "unreplicated_ratio_df = pd.DataFrame(data=np.zeros((len(celltypes), len(celltypes))), \n",
+ " columns=celltypes, index=celltypes)\n",
+ "for discovery_celltype in unnumcoeqtl_df.columns:\n",
+ " for replication_celltype in unnumcoeqtl_df.index:\n",
+ " unreplicated_ratio_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " unnumcoeqtl_df.loc[replication_celltype, discovery_celltype] / unnumcoeqtl_df.loc[discovery_celltype, \n",
+ " discovery_celltype]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 76,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":62: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_xticklabels([\"\"]+col_labels)\n",
+ ":63: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_yticklabels([\"\"]+row_labels)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "matplotlib.rcParams.update({'font.size': 14})\n",
+ "fig, axes = plt.subplots(1, 6, figsize=(7, 7), sharey=True)\n",
+ "for i, discovery_celltype in enumerate(['CD4T', 'CD8T', 'monocyte', 'DC', 'NK', 'B']):\n",
+ " colors = [\"white\", color_dict[discovery_celltype]]\n",
+ " cmap1 = LinearSegmentedColormap.from_list(\"mycmap\", colors)\n",
+ " im1, bar = heatmap(np.flip(unreplicated_ratio_df[discovery_celltype].values.reshape((6, 1)), \n",
+ " axis=0), \n",
+ " list(rb_df.index)[::-1], \n",
+ " [discovery_celltype],\n",
+ " cmap=cmap1, ax=axes[i], vmin=0, vmax=1)\n",
+ " bar.remove()\n",
+ " _ = annotate_heatmap(im1, \n",
+ " data=unreplicated_ratio_df[discovery_celltype].values.reshape((6, 1)), \n",
+ " valfmt=\"{x:.0%}\", \n",
+ " textcolors=(\"white\", \"white\"),\n",
+ " threshold=1)\n",
+ " if i > 0:\n",
+ " axes[i].axis('off')\n",
+ " \n",
+ "plt.subplots_adjust(wspace=0, hspace=0)\n",
+ "plt.savefig('replication_ratio.unfiltered_results.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 77,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":62: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_xticklabels([\"\"]+col_labels)\n",
+ ":63: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_yticklabels([\"\"]+row_labels)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "matplotlib.rcParams.update({'font.size': 14})\n",
+ "discovery_celltype = 'CD4T'\n",
+ "fig, axes = plt.subplots(1, 6, figsize=(7, 7), sharey=True)\n",
+ "for i, discovery_celltype in enumerate(['CD4T', 'CD8T', 'monocyte', 'DC', 'NK', 'B']):\n",
+ " colors = [\"white\", color_dict[discovery_celltype]]\n",
+ " cmap1 = LinearSegmentedColormap.from_list(\"mycmap\", colors)\n",
+ " im1, bar = heatmap(np.flip(unrb_df[discovery_celltype].values.reshape((6, 1)), \n",
+ " axis=0),\n",
+ " list(rb_df.index)[::-1], \n",
+ " [discovery_celltype],\n",
+ " cmap=cmap1, ax=axes[i], vmin=0, vmax=1)\n",
+ " bar.remove()\n",
+ " _ = annotate_heatmap(im1, \n",
+ " data=unanno_df[discovery_celltype].values.reshape((6, 1)), \n",
+ " valfmt=\"{x:^}\", \n",
+ " textcolors=(\"white\", \"white\"),\n",
+ " threshold=1)\n",
+ " if i > 0:\n",
+ " axes[i].axis('off')\n",
+ " \n",
+ "plt.subplots_adjust(wspace=0, hspace=0)\n",
+ "plt.savefig('rb_values.unfiltered_results.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## BIOS replication"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "bios_replication_filtered_df = pd.read_csv(\n",
+ " workdir/'bios/onlyRNAAlignMetrics_rmLLD/filtered_results/replication_summary.csv', \n",
+ " index_col=0\n",
+ ").set_index('celltype')\n",
+ "bios_replication_unfiltered_df = pd.read_csv(\n",
+ " workdir/'bios/onlyRNAAlignMetrics_rmLLD/unfiltered_results/replication_summary.csv', \n",
+ " index_col=0\n",
+ ").set_index('celltype')\n",
+ "color_dict = {'CD4T': '#2E9D33',\n",
+ " 'CD8T': 'darkgreen',\n",
+ " 'monocyte': '#EDBA1B',\n",
+ " 'NK': '#E64B50',\n",
+ " 'DC': '#965EC8',\n",
+ " 'B': '#009DDB',\n",
+ " 'cMono': 'peru',\n",
+ " 'ncMono': 'y',\n",
+ " 'CD4T_individual_100': '#2E9D33',\n",
+ " 'CD4T_individual_50': '#2E9D33',\n",
+ " 'CD4T_50': '#2E9D33',\n",
+ " 'CD4T_150': '#2E9D33',\n",
+ " 'CD4T_250': '#2E9D33'}\n",
+ "\n",
+ "bios_replication_filtered_df['color'] = [color_dict.get(celltype) for celltype in \n",
+ " bios_replication_filtered_df.index]\n",
+ "bios_replication_unfiltered_df['color'] = [color_dict.get(celltype) for celltype in \n",
+ " bios_replication_unfiltered_df.index]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "bios_replication_filtered_df_clean = bios_replication_filtered_df.drop(index=['B'])\n",
+ "bios_replication_filtered_df_clean = bios_replication_filtered_df_clean.drop(columns=['color'])\n",
+ "bios_replication_filtered_df_clean.to_excel(workdir/'output/summary/rb_values_bios_replication_filtered_results.xlsx')\n",
+ "\n",
+ "bios_replication_unfiltered_df_clean = bios_replication_unfiltered_df.drop(index=['B'])\n",
+ "bios_replication_unfiltered_df_clean = bios_replication_unfiltered_df_clean.drop(columns=['color'])\n",
+ "bios_replication_unfiltered_df_clean.to_excel(workdir/'output/summary/rb_values_bios_replication_unfiltered_results.xlsx')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":3: UserWarning: marker is redundantly defined by the 'marker' keyword argument and the fmt string \".\" (-> marker='.'). The keyword argument will take precedence.\n",
+ " ax2.errorbar(y=bios_replication_filtered_df.loc[sorted_celltypes]['r'].values,\n",
+ ":8: UserWarning: marker is redundantly defined by the 'marker' keyword argument and the fmt string \".\" (-> marker='.'). The keyword argument will take precedence.\n",
+ " ax2.errorbar(y=bios_replication_unfiltered_df.loc[sorted_celltypes]['r'].values,\n",
+ ":12: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax2.set_xticklabels(['', 'CD4T', '', 'CD8T', '', 'monocyte', '', 'DC', '', 'NK'])\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAiK0lEQVR4nO3de3hddZ3v8ffHNCUEUIYSRw6lTWVAejEUGioMQVKVm4ggCLTEC0M14gBVHOfAQ44VL+F4GwFLPaVahmGILVhEeh6rIPRGgAoJ1NoSqrW0JYMOoQpS2oa2fM8feydnN91pLt0rO2F/Xs+zn2ev3/qttb57ZWd/1++31votRQRmZla43pbvAMzMLL+cCMzMCpwTgZlZgXMiMDMrcE4EZmYFbli+A+irww8/PMrLy/MdhpnZkNLc3PxyRJRlmzfkEkF5eTlNTU35DsPMbEiRtKm7ee4aMjMrcE4EZmYFzonAzKzADblzBGY2cHbu3Elrays7duzIdyjWSyUlJYwcOZLi4uJeL+NEYGbdam1t5ZBDDqG8vBxJ+Q7HehARbNmyhdbWVsaMGdPr5dw1ZGbd2rFjByNGjHASGCIkMWLEiD634JwIzGyfnASGlv78vZwIzCynqqurqa6uzncY1gdOBJaV/5ltsCgqKmLixImdr40bN/KP//iPAGzcuJEJEyYAsGrVKhYvXpxYHNXV1QN2M+tAfi5wIjCzHGpoaGDlypUsX76c8vJyGhoa9nudBx54IKtWrep8lZeX8/jjj+9Vrz8/mLt27drv+DLt3r07p+sDJwIzG0IaGhqora2lvb0dgE2bNlFbW5uTZNDVwQcfvMf0G2+8wcyZM7nnnnuYOHEi99xzD6+//jpXXHEFJ510EieccAIPPPAAAHfeeScXX3wx5513HmeeeWa39bZv387UqVOpqKjg0ksvZfv27VljKS8v5+tf/zpVVVX89Kc/5aGHHuKUU07hxBNP5OKLL2br1q0AXH/99YwbN46Kigq+/OUvA3D55ZezcOHCPn2u5cuXd7aOTjjhBF577bX93p++fNTMcqKuro5t27btUbZt2zbq6uqoqanp93q3b9/OxIkTARgzZgz333//XnWGDx/O17/+dZqamrjtttsAuOGGG/jABz7AHXfcwSuvvMLkyZP50Ic+BMATTzzB6tWrOeyww7qtd/vtt1NaWsrq1atZvXo1J554YrcxlpSU0NjYyMsvv8yFF17Iww8/zEEHHcS3v/1tvv/973P11Vdz//3389xzzyGJV155pVefPdvnOu+885g9ezannnoqW7dupaSkpA97M7tEE4Gks4FbgSLgxxHxrS7z/xXo+IYMA8YCZRHxlyTjMrPc27x5c5/Ke6uja6ivHnroIRYtWsT3vvc9IHUpbEcsZ5xxBocddtg+661YsYIZM2YAUFFRQUVFRbfbuvTSSwFYuXIlzz77LKeeeiqQOqI/5ZRTePvb305JSQmf+cxnOPfcc/nIRz7S58/T4dRTT+VLX/oSNTU1XHjhhYwcObLf6+qQWCKQVATMBs4AWoGnJC2KiGc76kTEd4HvpuufB1zrJGA2NI0aNYpNm/Ye4HLUqFF5iCZ1c9V9993He97znj3Kf/Ob33DQQQf1WA96fylmx/oigjPOOIP58+fvVefJJ5/kkUceYcGCBdx2220sWbKEYcOG8eabb3Yu+8Ybb/S4reuvv55zzz2XxYsXc/LJJ/Pwww9z3HHH9SrO7iR5jmAysD4iNkTEG8AC4Px91J8G7L33zGxIqK+vp7S0dI+y0tJS6uvrB2T7hxxyyB795WeddRazZs0iIgB45plnsi7XXb33v//9nec31qxZw+rVq3uM4eSTT+axxx5j/fr1QKpr7Pe//z1bt27l1Vdf5cMf/jC33HJLZwunvLyc5uZmAB544AF27tzZ4+f64x//yHvf+16uu+46Kisree6553qMqydJJoIjgRcyplvTZXuRVAqcDdzXzfxaSU2Smtra2nIeqJntv5qaGubOncsBBxwAwOjRo5k7d+5+nR/oiylTpvDss892nlT9yle+ws6dO6moqGDChAl85Stfybpcd/U+//nPs3XrVioqKvjOd77D5MmTe4yhrKyMO++8k2nTplFRUcHJJ5/Mc889x2uvvcZHPvIRKioqOP3007n55psB+OxnP8vy5cuZPHnyXi2V7j7XLbfcwoQJEzj++OM58MADOeecc/Zjr6WoIwvmmqSLgbMi4jPp6U8CkyPimix1LwU+ERHn9bTeysrK8INpktdxD8GyZcvyGoflV0tLC2PHju3TMv7u5F+2v5uk5oiozFY/yZPFrcBRGdMjgRe7qTsVdwuZvSU4AQw9SXYNPQUcI2mMpOGkfuwXda0k6R3A6cADCcZiZmbdSKxFEBG7JF0NPEjq8tE7ImKtpCvT8+ekq34MeCgiXk8qFjMz616i9xFExGJgcZeyOV2m7wTuTDIOMzPrnoeYMDMrcE4EZpZTHrl26HEiMLNBK3M45g433nhj53AQ+9JxLf/NN9/MzJkzefjhh4E9h5O+6aabch90jnQMQLdx40Z+8pOfJLqtghl0ztc2myVv/vz5rF27li1btjBhwgTq6uqYNm3agMfx5z//mccffzzrkBeZbrrpJm644YY+rXv37t0UFRVlnbdr1y6GDcvtz2pHIrjssstyut5MbhGYWU7Mnz+furo67r33Xtrb25k1axZ1dXVZx93Jlerqaq677jomT57Msccey6OPPgrAmWeeyUsvvcTEiRN59NFH9xruGVJj9nSMbNpx9/Pdd9/N5MmTmThxIp/73Oc6ny9w8MEHM3PmTN73vvfxxBNP7BXDDTfcwOmnn86tt95Kc3Mzp59+OpMmTeKss87iT3/6EwA/+MEPOoehnjp1KrB362bChAls3LhxrzgfffRRJk6cyM0338zatWs7Y6yoqOAPf/jDfu9HJwIzy4n6+nrmzZvHlClTKC4uZsqUKcybNy/xsYZ27drFk08+yS233MLXvvY1ABYtWsTRRx/NqlWrOO2007Iu961vfatzZNOGhgZaWlq45557eOyxx1i1ahVFRUWdYw29/vrrTJgwgd/85jdUVVXtta5XXnmF5cuXM2PGDK655hoWLlxIc3MzV1xxBXV1dZ3be+aZZ1i9ejVz5szZax3d+da3vsVpp53GqlWruPbaa5kzZw5f+MIXWLVqFU1NTYN79FEzKywtLS17/UhWVVXR0tLS73V2N/pnZvmFF14IwKRJk/Y6mu6LRx55hObmZk466SQg9RyEd77znUDqcZkXXXRRt8t2DEO9bt061qxZwxlnnAGkupGOOOIIIDWUdU1NDRdccAEXXHBBv+M85ZRTqK+vp7W1lQsvvJBjjjmm3+vq4BaBmeXE2LFjaWxs3KOssbGxz2MVZRoxYgR//etf9yj7y1/+wuGHH9453THIXVFR0X49ejIi+PSnP935SMx169Zx4403AqkHz3R3XgD2HIZ6/Pjxnev43e9+x0MPPQTAL37xC6666iqam5uZNGlS5/mEjmGoIfUshJ5cdtllLFq0iAMPPJCzzjqLJUuW9Pszd3AiMLOcqKurY/r06SxdupSdO3eydOlSpk+f3tk10h8HH3wwRxxxBI888giQSgK/+tWvsnbP9EdxcXHn0M8f/OAHWbhwIS+99FLntno62dzVe97zHtra2jrPI+zcuZO1a9fy5ptv8sILLzBlyhS+853v8Morr7B161bKy8t5+umnAXj66ad5/vnn91pn12GoN2zYwLvf/W5mzJjBRz/60V4Nj90Tdw2ZWU50XB10ySWXsGXLFsaNG0d9ff1+XzV01113cdVVV/Ev//IvAHz1q1/l6KOP3u94AWpra6moqODEE0+koaGBb37zm5x55pm8+eabFBcXM3v2bEaPHt3r9Q0fPpyFCxcyY8YMXn31VXbt2sUXv/hFjj32WD7xiU/w6quvEhFce+21HHrooVx00UXcddddTJw4kZNOOoljjz12r3VWVFQwbNgwjj/+eC6//HJ27NjB3XffTXFxMe9617uYOXPmfu+HxIahTkp/h6H25aN94/1l4GGoh6rBNAy1mRUgJ4Chx+cIzMwKnBOBme3TUOs+LnT9+Xs5EZhZt0pKStiyZYuTwRAREWzZsoWSkpI+LVcQ5wgaGhpYuXIl7e3tlJeXU19fP2AP1DYbykaOHElrayttbW35DsV6qaSkpM93G7/lE0FDQwO1tbW0t7cDsGnTJmprawGcDMx6UFxczJgxY/IdhiUs0a4hSWdLWidpvaTru6lTLWmVpLWSluc6hrq6OrZt27ZH2bZt2/brJhczs7eSxFoEkoqA2cAZQCvwlKRFEfFsRp1DgR8CZ0fEZknvzHUcmzdv7lO5mdlgMJD3YyTZIpgMrI+IDRHxBrAAOL9LncuAn0XEZoCIeCnXQYwaNapP5WZmhSbJRHAk8ELGdGu6LNOxwN9JWiapWdKnsq1IUq2kJklNfT1pVV9fT2lp6R5lpaWliQ+Na2Y2VCSZCLKNH9v1GrRhwCTgXOAs4CuS9hpsIyLmRkRlRFSWlZX1KYiamhrmzp3bOULh6NGjmTt3rk8Um5mlJXnVUCtwVMb0SODFLHVejojXgdclrQCOB36fy0Bqamr40Y9+BPj2dzOzrpJsETwFHCNpjKThwFRgUZc6DwCnSRomqRR4H9D/p1hYTnTcd7F8+XLKy8s7n9JkZm9NibUIImKXpKuBB4Ei4I6IWCvpyvT8ORHRIulXwGrgTeDHEbEmqZisZ77vwqzwJHpDWUQsBhZ3KZvTZfq7wHeTjMN6b1/3XTgRmL01eawh24PvuzArPE4Etgffd2FWeJwIbA++78Ks8DgR2B5834VZ4XnLjz5qfef7LswKi1sEZmYFrmBaBD6yNTPLzi0CM7MC50RgZlbgnAjMzAaZgR7vy4nAzGwQ6W68rySTgROBmdkgko/nrDsRmJkNIvkY78uJwMxsEMnHeF9OBGZmg0g+xvtyIjAzG0TyMd5XwdxZbGY2VAz0eF+JtggknS1pnaT1kq7PMr9a0quSVqVfM5OMx8zM9pZYi0BSETAbOANoBZ6StCginu1S9dGI+EhScZiZ2b4l2SKYDKyPiA0R8QawADg/we2ZmVk/JJkIjgReyJhuTZd1dYqk30r6paTx2VYkqVZSk6Smtra2JGI1MytYSSYCZSmLLtNPA6Mj4nhgFvDzbCuKiLkRURkRlWVlZbmN0syswCWZCFqBozKmRwIvZlaIiL9FxNb0+8VAsaTDE4zJzMy6SDIRPAUcI2mMpOHAVGBRZgVJ75Kk9PvJ6Xi2JBiTmZl1kdhVQxGxS9LVwINAEXBHRKyVdGV6/hzg48DnJe0CtgNTI6Jr95GZmSUo0RvK0t09i7uUzcl4fxtwW5IxmJnZvnmICTOzAudEYGZW4JwIzMwKnBOBmVmBcyIw20/V1dVUV1fnOwyzfnMiMDMrcE4EZmYFzg+mMTMbhAbigTQd3CIwMytwTgRmZgXOicDMrMA5EZiZFTgnArP90NDQwMqVK1m+fDnl5eU0NDTkOySzPvNVQ5bVQF6xMFQ1NDRQW1tLe3s7AJs2baK2thaAmpqafIZm1iduEZj1U11dHdu2bdujbNu2bdTV1eUpIrP+cSIw66fNmzf3qdxssHIiMOunUaNG9ancbLBKNBFIOlvSOknrJV2/j3onSdot6eNJxmOWS/X19ZSWlu5RVlpaSn19fZ4iMuufxBKBpCJgNnAOMA6YJmlcN/W+TerZxmZDRk1NDXPnzuWAAw4AYPTo0cydO9cnim3ISfKqocnA+ojYACBpAXA+8GyXetcA9wEnJRiLWSJqamr40Y9+BPhKKxu6emwRSDpF0mxJqyW1SdosabGkqyS9Yx+LHgm8kDHdmi7LXPeRwMeAOeyDpFpJTZKa2traegrZzMz6YJ+JQNIvgc+Q6rY5GziCVDfP/wJKgAckfbS7xbOURZfpW4DrImL3vuKIiLkRURkRlWVlZfuqamZmfdRT19AnI+LlLmVbgafTr3+TdHg3y7YCR2VMjwRe7FKnElggCeBw4MOSdkXEz3sRu5mZ5UBPXUOdP/KSDsicIelkgCyJosNTwDGSxkgaDkwFFmVWiIgxEVEeEeXAQuCfnQTMzAZWT4ngJxnvn+gy74f7WjAidgFXk+pWagHujYi1kq6UdGWfIzWzIc/Pdx6ceuoaUjfvs03vJSIWA4u7lGU9MRwRl/e0PjMzy72eEkF08z7btFlB8mWjNtT1lAhGSvoBqaP/jvekp4/sfjEzMxsqekoE/5rxvqnLvK7TZmY2BO0zEUTEf3Qtk/R3wCsR4a4hM7O3gJ5uKJsp6bj0+wMkLQH+CPy3pA8NRIBmZpasni4fvRRYl37/aVLnBsqA04GbEozLzMwGSE+J4I2MLqCzgAURsTsiWvBjLs3M3hJ6SgTtkiZIKgOmAA9lzCvtZhkzMxtCejqq/yKpoR/KgJsj4nkASR8Gnkk2NDMzGwg9XTW0EjguS/ledwybmdnQ1NNVQ59QemjQbuYfLakq92GZmdlA6alraASwSlIz0Ay0kXoOwT+QunLoZaDbZxGbmdng11PX0K2SbgM+AJwKVADbSY0m+smI2Jx8iGZmlqQeLwFNPz3s1+mXmZm9xfT4zGIz6z2Pt29DkROBmVmBcyIwMytwvUoEkkZImiXpaUnNkm6VNKIXy50taZ2k9ZL2urpI0vmSVktaJanJl6KavXU1NDSwcuVKli9fTnl5OQ0NDfkOydJ62yJYALwEXAR8nNRlpPfsawFJRcBs4BxgHDBN0rgu1R4Bjo+IicAVwI97HbmZDRkNDQ3U1tbS3t4OwKZNm6itrXUyGCR6mwgOi4hvRMTz6dc3gUN7WGYysD4iNkTEG6SSyfmZFSJia8agdgfhx1+avSXV1dWxbdu2Pcq2bdtGXV1dniKyTL1NBEslTZX0tvTrEuAXPSxzJPBCxnQrWR5vKeljkp5Lr++KbCuSVJvuOmpqa2vrZchmNlhs3pz9lqPuym1g9TTExGuS/gZ8DvgJ0J5+LQCu7WHd2Yam2OuIPyLuj4jjgAuAb2RbUUTMjYjKiKgsKyvrYbNm+TF//nzWrl3LihUrmDBhAvPnz893SIPGqFGj+lRuA2ufiSAiDgHeAYyPiLdFRHH69baIeHsP624FjsqYHgm8uI9trQCOlnR4L2M3GzTmz59PXV0d9957L+3t7cyaNYu6ujong7T6+npKS/ccub60tJT6+vo8RWR7iIgeX0Bzb+p1WWYYsAEYAwwHfksqoWTW+QdA6fcnAv/VMd3da9KkSWE22IwfPz6WLFmyR9mSJUti/PjxeYpo8Ln77rvjgAMOCCBGjx4dd999d75DKihAU3Tzu9rxI7xPkmYDd0bEU31JMunnFtwCFAF3RES9pCvTCWiOpOuATwE7SY1h9K8R0bivdVZWVkZTU1NfwjBLXFFRETt27KC4uLizbOfOnZSUlLB79+48Rja4dNx1vWzZsrzGUYgkNUdEZbZ5vX3c5BTgc5I2Aa+T6v+PiKjY10KR5bkFETEn4/23gW/3MgazQWvs2LE0NjYyZcqUzrLGxkbGjh2bx6jMeqe3ieCcRKMwG+Lq6uqYPn068+bNo6qqisbGRqZPn+4+cBsSepUIImJT0oGYDWXTpk0D4JJLLmHLli2MGzeO+vr6znKzway3LQIz68G0adO4/fbbAfeB29DiQefMzAqcE4GZWYFzIjAzK3BOBGZmBc6JwMyswPmqIbMc8tVCNhS5RWBmVuCcCMzMCpwTgZlZgXMiMDMrcE4EZmYFzonAzKzAORGYmRU4JwIzswKXaCKQdLakdZLWS7o+y/waSavTr8clHZ9kPGaWX8uWLfNNd4NQYolAUhEwm9TTzcYB0ySN61LteeD09CMvvwHMTSoeMzPLLskWwWRgfURsiIg3gAXA+ZkVIuLxiPhrenIlMDLBeMzMLIskE8GRwAsZ063psu5MB36ZbYakWklNkpra2tpyGKKZmSWZCJSlLLJWlKaQSgTXZZsfEXMjojIiKsvKynIYopmZJTn6aCtwVMb0SODFrpUkVQA/Bs6JiC0JxmNmZlkk2SJ4CjhG0hhJw4GpwKLMCpJGAT8DPhkRv08wFjMz60ZiLYKI2CXpauBBoAi4IyLWSroyPX8OMBMYAfxQEsCuiKhMKiYzM9ubIrJ22w9alZWV0dTUlO8wzMyGFEnN3R1o+85iM7MC50RgZlbgnAjMzAqcE4GZWYFzIjAzK3BOBGZmBc6JwMyswDkRmJkVOCcCM7MC50RgZlbgnAjMzAqcE4GZWYFzIjAzK3BOBGZmBc6JwMyswDkRmJkVOCcCM7MCl2gikHS2pHWS1ku6Psv84yQ9Iald0peTjMXMzLJL7JnFkoqA2cAZQCvwlKRFEfFsRrW/ADOAC5KKw8zM9i3JFsFkYH1EbIiIN4AFwPmZFSLipYh4CtiZYBy2n6qrq6murs53GGaWkCQTwZHACxnTremyPpNUK6lJUlNbW1tOgjMzs5QkE4GylEV/VhQRcyOiMiIqy8rK9jMsMzPLlGQiaAWOypgeCbyY4PbMzKwfkkwETwHHSBojaTgwFViU4PbMzKwfEksEEbELuBp4EGgB7o2ItZKulHQlgKR3SWoFvgT8L0mtkt6eVEzWd/Pnz2ft2rWsWLGCCRMmMH/+/HyHZGY5ltjlowARsRhY3KVsTsb7P5PqMrJBaP78+dTV1XHvvfdSVVVFY2Mj06dPB2DatGl5js7MckUR/Tp/mzeVlZXR1NSU7zAKwoQJE5g1axZTpkzpLFu6dCnXXHMNa9asyWNkZoWn4xLuZcuW9Wt5Sc0RUZltnoeYsG61tLRQVVW1R1lVVRUtLS15isjMkuBEYN0aO3YsjY2Ne5Q1NjYyduzYPEVkZklwIrBu1dXVMX36dJYuXcrOnTtZunQp06dPp66uLt+hmVkOJXqy2Ia2jhPCl1xyCVu2bGHcuHHU19f7RLHZW4wTge3TtGnTuP3224H+n6Qys8HNXUNmZgXOicDMrMA5EZiZFTgnAjOzAudEYD1atmyZTxSb5VHSY375qiEzs0FsIMb88lhDZmaDWK7G/NrXWENOBGZmg1hRURE7duyguLi4s2znzp2UlJSwe/fuXq/Hg86ZmQ1RAzHmlxOBmdkgNhBjfvlksZnZIDYQY34l2iKQdLakdZLWS7o+y3xJ+kF6/mpJJyYZT6bq6urOBz2YmQ1m06ZNY/z48bz//e9nzZo1OR/4MbFEIKkImA2cA4wDpkka16XaOcAx6Vct8H+SisfMzLJLskUwGVgfERsi4g1gAXB+lzrnA3dFykrgUElHJBiTmZl1kWQiOBJ4IWO6NV3W1zpIqpXUJKmpra1tvwNL+i49M7OhJMlEoCxlXW9a6E0dImJuRFRGRGVZWdl+BZV5l157ezuzZs2irq7OycDMClaSiaAVOCpjeiTwYj/q5FR9fT3z5s1jypQpFBcXM2XKFObNm0d9fX2SmzUzG7SSTARPAcdIGiNpODAVWNSlziLgU+mrh04GXo2IPyUYEy0tLVRVVe1RVlVVRUtLS5KbNTMbtBJLBBGxC7gaeBBoAe6NiLWSrpR0ZbraYmADsB74EfDPScXTYSDu0jMzG0oSvaEsIhaT+rHPLJuT8T6Aq5KMoauOu/TmzZu3x0h+7hoys0JVcHcWD8RdemZmuZbkM0EKLhFAKhncfvvtQLI718xsKPCgc2ZmBa4gWwTgloCZWQe3CMzMCpwTgZlZgXMiMDMrcE4EZmYFzonAzKzAORGYmRU4JwIzswLnRGBmVuCcCMzMCpxSA4AOHZLagE39XPxw4OUchpMrjqv3BmNMMDjjGowxweCMazDGBLmNa3REZH3E45BLBPtDUlNEVOY7jq4cV+8NxphgcMY1GGOCwRnXYIwJBi4udw2ZmRU4JwIzswJXaIlgbr4D6Ibj6r3BGBMMzrgGY0wwOOMajDHBAMVVUOcIzMxsb4XWIjAzsy6cCMzMCtyQTgSS3iVpgaQ/SnpW0mJJx0raLukZSS2SnpT06SzLniRpt6SPSxohaVX69WdJ/5UxPTwfny0J/dlfkt4h6f9K+q2ktZL+qVD210CRdLmk/5HvOHIt/f+1Kv29+a2kL0l6W8b8yZJWSFon6TlJP5ZUms+Y80VSSPq3jOkvS7ox/f5GSV9Ovy+R9GtJX83l9ofsoyolCbgf+I+ImJoumwj8PfDHiDghXfZu4GeS3hYR/54uKwK+DTwIEBFbgInpeTcCWyPiewP5eZK2H/vrKuDZiDhPUhmwDmiIiInp+jfyFtxfA+xyYA3wYp7jyLXtGd+TdwI/Ad4BfFXS3wM/BaZGxBPp7+dFwCHAtjzFm0/twIWS/ndEZL2BLH2QdR/QHBFfy+XGh3KLYAqwMyLmdBRExCrghcxKEbEB+BIwI6P4GlI79KXkwxw0+ru/Ajgk/Y96MPAXYNdABJxLksozjjrXSGqQ9CFJj0n6Q/ro9DBJP5e0WtJKSRXpZW+UdIekZZI2SJqRsd4vpde3RtIXM8o/lV7PbyX9p6RDJD0vqTg9/+2SNkq6GKgEGtJHzwdKmiRpuaRmSQ9KOmKAd1fORcRLQC1wdfq7dBWpg5In0vMjIhZGxH/nM8482kXqCqFru5k/DFgA/CEirs/1xodyIpgANPey7tPAcQCSjgQ+BszZ5xJvPf3aX8BtwFhSR6u/A74QEW/mPrwB8Q/ArUAFqc93GVAFfBm4Afga8ExEVKSn78pY9jjgLGAyqSPaYkmTgH8C3gecDHxW0gmSxgN1wAci4nhS++w1YBlwbnp9U4H7IuKnQBNQkz563gXMAj4eEZOAO4D6BPbFgEsfZLwNeCd9+z4WitlAjaR3ZJn3P4FdEfHFJDY8ZLuG+kgZ728BrouI3akDE8sic8ecBawCPgAcDfxa0qMR8bd8BLafno+I3wFIWgs8EhEh6XdAOTCaVPcEEbEkfS6k45/yFxHRDrRLeolUl1oVcH9EvJ5e58+A00i1ohZ2NPEj4i/pdfyY1D/0z0klkM9mifE9pH4kf53+fhYBf8rZHsg//9N1IyL+JukuUq3x7V1mNwKnSDo2In6f620P5RbBWmBSL+ueALSk31cCCyRtBD4O/FDSBTmPbvDp7/76J+Bn6ab7euB5/n9rYahpz3j/Zsb0m6QOirL9SHXcaJO57O591CddvtcNOhHxGFAu6XSgKCLWdLPs2oiYmH69NyLO7O4DDSXp80+7SXXJ9uX7WEhuAaYDB3UpXwF8EfhlEhcWDOVEsAQ4QFLnUZWkk0gd1ZFRVg58j1Rzm4gYExHlEVEOLAT+OSJ+PkAx51O/9hewGfhget7fkzpi3TAA8ebDCqAGQFI18HIPLZ8VwAWSSiUdRKrL8VHgEeASSSPS6zosY5m7gPnAv2eUvUbqJCmkTsaXSTolvWxxuqtpSEtfaDAHuC1Sd7HeBnxa0vsy6nxC0rvyFeNgkG493ksqGXSddx/wXeBXkg7N5XaHbNdQukn/MeAWSdcDO4CNpLLm0ZKeAUpI/ZPN6rhiqFDtx/76BnBnuvtEpLrVBuNwvblwI/DvklaTunJlr8uOM0XE05LuBJ5MF/04Ip4BkFQPLJe0G3iG1JVBAA3AN0klgw53AnMkbQdOIdVS/UG6W2oYqaPEtfv30fLiQEmrgGJS5z7+E/g+QET8t6SpwPfSVxS9SSqx/ixPsQ4m/wZcnW1GRMxJJ8tFks6MiB252KCHmDAbQJI+DpwfEZ/MdyxmHYZsi8BsqJE0CzgH+HC+YzHL5BaBmVmBG8oni83MLAecCMzMCpwTgZlZgXMiMDMrcE4EZmYF7v8BK5fQZGfKC3AAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sorted_celltypes = ['CD4T', 'CD8T', 'monocyte', 'DC', 'NK']\n",
+ "fig, ax2 = plt.subplots()\n",
+ "ax2.errorbar(y=bios_replication_filtered_df.loc[sorted_celltypes]['r'].values,\n",
+ " x=[ind for ind in range(len(sorted_celltypes))],\n",
+ " yerr=bios_replication_filtered_df.loc[sorted_celltypes]['se_r'].values,\n",
+ " fmt='.', markersize=6, marker='o', color='black', label = 'Filtered results')\n",
+ "bios_replication_unfiltered_df.loc['DC'] = [np.nan, np.nan, np.nan, np.nan]\n",
+ "ax2.errorbar(y=bios_replication_unfiltered_df.loc[sorted_celltypes]['r'].values,\n",
+ " x=[ind+0.05 for ind in range(len(sorted_celltypes))],\n",
+ " yerr=bios_replication_unfiltered_df.loc[sorted_celltypes]['se_r'].values,\n",
+ " fmt='.', markersize=6, marker='o', markerfacecolor='white', color='black', label = 'Unfilter results')\n",
+ "ax2.set_xticklabels(['', 'CD4T', '', 'CD8T', '', 'monocyte', '', 'DC', '', 'NK'])\n",
+ "plt.legend()\n",
+ "plt.ylabel(\"rb (SE)\")\n",
+ "plt.savefig('sf20.comparison_rb_values_bios_replication.pdf')\n",
+ "plt.savefig('sf20.comparison_rb_values_bios_replication.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":14: UserWarning: marker is redundantly defined by the 'marker' keyword argument and the fmt string \".\" (-> marker='.'). The keyword argument will take precedence.\n",
+ " ax.errorbar(y=bios_replication_filtered_df.loc[celltype]['r'],\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQoAAAE3CAYAAABSLw+6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAZGklEQVR4nO3df5xddX3n8debBOJjxFWbSTYTNZka0UJhMTJNKZUyFrPFiPJwRbHOoinqFKLULkt16+Th4j52wPqDmv4I7IxgKE4tu7Dij4qNuk6spIFOZIVIKiJkohjCDOqWOM2EJJ/945wpd+7cO98zP++9w/v5eNxHcr7ne879zJlz3/M959x7riICM7PJnFDrAsys/jkozCzJQWFmSQ4KM0tyUJhZkoPCzJIW17qAcuf1nR8rT15Z6zIqevDJvcPfvWxgWbX5zf+pOVqXts5jRcXsHtw9HL1Rte6f9Z8RJzznJfNZUiHHnrp/+JfW/7hq3Z957+54XvOS+SypkKF9vxi+4pZfr1r3429/Ryxevnw+Syrs6Yd/ONzy5c9PqL3ugmLlySv53EW31rqMis68uW1wsvmtS1sZ2DwwX+UUpvdo0rpPeM5LeP7ZX5mvcgr76ddePGndz2tewsUfOX2+yinshnfeM2ndi5cvp/lTn5ivcqbkwIVvqli7Dz3MLMlBYWZJDgozS3JQmFmSg8LMkhwUZpbkoDCzJAeFmSU5KMwsyUFhZkkOijrQ3t5Oe3t7rcswq8pBYWZJDgozS3JQmFmSg8LMkhwUZpbkoDCzJAeFmSUVDgpJmyQ9KumwpN2Szp2k7zWSosqjPm8WaGZVFQoKSZcAW4BrgbXATuAuSauqLPIJoKXssQPoj4gnZlq0mc2voiOKq4BtEdEbEXsj4krgAHBFpc4RcSgiHh97ACcC5wK9s1K1mc2rZFBIOgk4C9heNms7cE7B53kX8HPgjqkUZ2b1ociIohlYBBwsaz8IrEgtLOkE4DLgryJidMoVmlnNTeWqR5RNq0JbJa8DXgJ8uloHSZ2SBiQNDA0PTaGk2htX+1Dj1N6o23xBbO8GqntMkaAYBo4xcfSwnImjjEo6gZ0R8b1qHSKiJyLaIqJtWXPVL1iqS+NqX9Y4tTfqNl8Q27uB6h6TDIqIOALsBtaXzVpPdvWjKkkrgdfjk5hmDa3oocf1wEZJ75Z0qqQtwErgRgBJ10n6RoXlLgN+AfzPWanWzGqi0HePRsRtkpYCm8neE7EH2BARY99T2AKsKV1GksiudvRFxMjslWxm863wlxRHxFZga5V5Gyu0BfDL067MzOqGP+thZkkOCjNLclCYWZKDwsySHBRmluSgMLMkB4WZJTkozCzJQWFmSQ4KM0taUEHhL/s1mxsLKijMbG44KMwsyUFhZkkOCjNLclCYWZKDwsySHBRmluSgMLMkB4WZJTkozCzJQWFmSQ4KM0tyUJhZkoPCzJIcFGaW5KAwsyQHhZklOSjMLMlBYWZJDgozS3JQmFmSg8LMkhwUZpbkoDCzpAUTFH19fezatYsdO3bQ2tpKX19frUsyWzAWRFD09fXR2dnJ6OgoAIODg3R2djoszGZJ4aCQtEnSo5IOS9ot6dxEf0n6Q0n/JGlU0gFJH515yRN1dXUxMjIyrm1kZISurq65eDqzZ53FRTpJugTYAmwCvp3/e5ek0yJif5XFPglcCPwR8ADwfKBlxhVXsH9/5RKqtZs1qrHv1u3v75/X5y06orgK2BYRvRGxNyKuBA4AV1TqLOkVwJXARRHxhYh4JCLui4ivzE7Z461atWpK7WY2NcmgkHQScBawvWzWduCcKotdBDwCXCDpEUn7JN0iafmMqq2iu7ubpqamcW1NTU10d3fPxdOZPesUGVE0A4uAg2XtB4EVVZZ5KbAaeBuwEbgU+BXgS5Jm/QRqR0cHPT09LFmyBIDVq1fT09NDR0fHbD+V2bPSVF60UTatCm2l610CXBoR34qIvycLi3XAr5V3ltQpaUDSwNDw0BRKekZHRwdnn3025513Hvv27Zu3kBhX+9D0aq+F2djmtbAgtncD1T2mSFAMA8eYOHpYzsRRxpgDwNGIeKik7QfAUWDCiYOI6ImItohoW9a8rEBJ9WNc7csap/ZG3eYLYns3UN1jkkEREUeA3cD6slnrgZ1VFrsbWCxpTUnbS8musgxOo04zq6Gihx7XAxslvVvSqZK2ACuBGwEkXSfpGyX9vw58B7hZ0lpJa4GbgXuAgdkr38zmQ6H3UUTEbZKWApvJ3guxB9gQEWOjgxZgTUn/45IuBP4M+BbwL8DXgKsi4vgs1m9m86BQUABExFZga5V5Gyu0HQDeMu3KzKxuLIjPepjZ3HJQmFmSg6LG/PF4awQOihryx+OtUTgoasgfj7dG4aCoIX883hqFg6KG/PF4axQOihryx+OtUTgoasgfj7dGUfidmTY3Ojo66O3tBeb/9mZmRXlEYWZJDgozS3JQmFmSg8LMkhwUZpbkoDCzJAeFmSUtqPdR+H0IZnPDIwozS3JQmFmSg8LMkhwUZpbkoDCzJAeFmSU5KMwsyUFh1iBq+dUODgqzBlDrr3ZwUJg1gFp/tYODwqwB1PqrHRwUZg2g1l/t4KAwawC1/moHB4VZA6j1VzssqI+Zmy1ktfxqB48ozCzJQWFmSQ4KM0tyUJhZkoPCzJIKB4WkTZIelXRY0m5J507St1VSVHhcMDtlm9l8KhQUki4BtgDXAmuBncBdklJvC7sAaCl5/J/pl2pmtVJ0RHEVsC0ieiNib0RcCRwArkgs92REPF7yODKjas2sJpJBIekk4Cxge9ms7cA5icX/t6QnJN0t6eJp1mhmNVZkRNEMLAIOlrUfBFZUWeYQcDXwVmAD8A3gNkn/sVJnSZ2SBiQNDA0PFSq8Xoyrfahxam/Ubb4gtncD1T1mKlc9omxaFdqyjhHDEfHJiNgVEQMR8WHgfwAfqNK/JyLaIqJtWfOyKZRUe+NqX9Y4tTfqNl8Q27uB6h5TJCiGgWNMHD0sZ+IoYzL3AKdMob+Z1YlkUOQnIHcD68tmrSe7+lHUK8lOgJpZgyn66dHrgVsl3QvcDVwOrARuBJB0HbAuIs7Pp98JPA3cBxwH3gC8F/jgrFZvZvOiUFBExG2SlgKbyd4PsQfYEBGDeZcWYE3ZYpuB1WSHLQ8Bl0XEZ2elajObV4XvRxERW4GtVeZtLJu+BbhlRpWZWd3wZz3MLMlBYWZJDgozS3JQmFmSg8LMkhwUZpbkoDCzJAeFmSU5KMwsyUFhZkkOCjNLclCYWZKDwqatvb2d9vb2Wpdh88BBYWZJDgozS3JQmFmSg8LMkhwUZpZU+FZ4ZlZ7/f39NXlejyjMLMlBYWZJDgozS3JQmFmSg8LMkhwUZpbkoDCzJAeFmSU5KMwsye/MrAO1eredWVEeUdi09PX1sWvXLnbs2EFrayt9fX21LsnmkIPCpqyvr4/Ozk5GR0cBGBwcpLOz02GxgDkobMq6uroYGRkZ1zYyMkJXV1eNKrK55qCwKdu/f/+U2q3xOShsylatWjWldmt8Dgqbsu7ubpqamsa1NTU10d3dXaOKbK45KGzKOjo66OnpYcmSJQCsXr2anp4eOjo6alyZzRW/j8KmpaOjg97eXsDvA3k2KDyikLRJ0qOSDkvaLencgsudIukpSYemX6aZ1VKhoJB0CbAFuBZYC+wE7pI06dkrSScBfwN8a4Z1mlkNFR1RXAVsi4jeiNgbEVcCB4ArEsv9CXA/8L9mUKOZ1VgyKPJRwVnA9rJZ24FzJlnu9cCFwB/MpEAzq70iI4pmYBFwsKz9ILCi0gKSWoBe4NKIeCr1BJI6JQ1IGhgaHipQUv0YV/tQ49TeqNt8QWzvBqp7zFQuj0bZtCq0jfkscENE7Cq04oieiGiLiLZlzcumUFLtjat9WePU3qjbfEFs7waqe0yRoBgGjjFx9LCciaOMMb8N/FdJRyUdBW4CnptPd067WjOrieT7KCLiiKTdwHrGn5RcD9xRZbEzyqYvArqAdcBj06jTzGqo6BuurgdulXQvcDdwObASuBFA0nXAuog4HyAi9pQuLKkNOF7ebmaNoVBQRMRtkpYCm4EWYA+wISIG8y4twJq5KdHMaq3wW7gjYiuwtcq8jYlltwHbplCXmdURfyjMzJIcFPas097eTnt7e63LaCgOCjNLclCYWZLvR2HT5vtQPHt4RGFmSQ4KM0tyUJhZkoPCzJIcFGaW5KAwsyQHhZklOSjMLMlBYWZJDgozS3JQmFmSg8LMkhwUZpbkoDCzJAeFmSU5KMwsyUFhZkkOCjNLclCYWZKDwsySHBRmluSgMLMkB4WZJTkozCzJQWFmSQ4KM0tyUJhZkoPCzJIcFGaW5KAwsyQHhZklOSjMLKlwUEjaJOlRSYcl7ZZ07iR9T5P0TUkH8/6PSLpW0kmzU7aZzafFRTpJugTYAmwCvp3/e5ek0yJif4VFjgC3APcBPwfOBHrz5/vAzMs2s/lUdERxFbAtInojYm9EXAkcAK6o1DkiHo6IbRHx3YgYjIgvAn1A1VGI2Xzo6+tj165d7Nixg9bWVvr6+mpdUkNIBkV+uHAWsL1s1nbgnCJPIullwAXAjqkWaDZb+vr66OzsZHR0FIDBwUE6OzsdFgUUGVE0A4uAg2XtB4EVky0oaaekw8APyA5ZPlSlX6ekAUkDQ8NDBUqqH+NqH2qc2ht1m89ke3d1dTEyMjKubWRkhK6urtkssaJG3U/GTOWqR5RNq0JbuUuAVwFvBzYAH6y44oieiGiLiLZlzcumUFLtjat9WePU3qjbfCbbe//+SqfTqrfPpkbdT8YUOZk5DBxj4uhhORNHGeNExI/y/z4oaRHwaUkfj4ijU67UbIZWrVrF4OBgxXabXHJEERFHgN3A+rJZ64GdU3yuxWSHMWbzrru7m6ampnFtTU1NdHd316iixlHo8ihwPXCrpHuBu4HLgZXAjQCSrgPWRcT5+fSlwGHgAbJLpW3AdcDtETE6qz+BWUEdHR0AvOtd72J0dJTVq1fT3d39r+1WXaGgiIjbJC0FNgMtwB5gQ0SMjeNagDUlixwF/hg4hexcxiDwl8CfzlLdZtPS0dFBb28vAP39/bUtpoEUHVEQEVuBrVXmbSyb/hzwuRlVZmZ1w5/1MLMkB4WZJTkozCzJQWFmSQ4KM0tyUJhZkoPCzJIcFGaW5KAwsyQHhZklOSjMLMlBYWZJDgozS3JQmFmSg8LMkhwUZpbkoDCzJAeFmSU5KMwsyUFhZkkOCjNLclCYWZKDwsySHBRmluSgMLMkB4WZJTkozCzJQWFmSQ4KM0tyUJhZkoPCzJIcFGaW5KAwsyQHhZklOSjMLGlxrQswm2/9/f21LqHheERhZkmFg0LSJkmPSjosabekcyfp2y7pC5IOSBqRdL+ky2anZDObb4WCQtIlwBbgWmAtsBO4S9KqKoucAzwAXAycDtwA9Eh6+4wrNrN5V/QcxVXAtojozaevlHQBcAXwx+WdI+LasqYbJL0GeDPw19Mt1sxqIzmikHQScBawvWzWdrKRQ1H/BvjZFPqbWZ0ocujRDCwCDpa1HwRWFHkSSRcC5wM9VeZ3ShqQNDA0PFRklXVjXO1DjVN7o27zBbG9G6juMVO56hFl06rQNoGk3yQ73PiDiLi34oojeiKiLSLaljUvm0JJtTeu9mWNU3ujbvMFsb0bqO4xRYJiGDjGxNHDciaOMsaR9GrgLuDDEXHDtCo0s5pLBkVEHAF2A+vLZq0nu/pRkaTfIguJj0TEp2ZQo5nVWNGrHtcDt0q6F7gbuBxYCdwIIOk6YF1EnJ9PtwN/C2wF+iSNjUaORUTjHaCZPcsVCoqIuE3SUmAz0ALsATZExGDepQVYU7LIRqAJuDp/jBkEWmdWspnNt8Kf9YiIrWQjhErzNlaY3lipr5k1nrr7UNieA987dObNbd+vdR2VHD9y/BWTzd/9w92H9B7VX+1HmbTuXwx/99Cxr7247uo+PBqT1v3Ywz89dMM776m7uo8cHZ207qe+/9Chpy98U93VDXD42LGKtSsieYVzXkkaiIi2WtdRSaq2eq3ddc+vRq0bqtfmT4+aWZKDwsyS6jEoKr7Nu06kaqvX2l33/GrUuqHaxyzq7RyFmdWfehxRmFmdcVCYWZKDwsySHBRmluSgMLMkB4WZJdV1UEj6t5K2SPqhpFFJj0m6S9KGfP4+SZE/Dkv6kaTPS3rDJOt8jqTv5su05W3XlKyn2qO1VrVLermkOyUNS3pK0q785sZzUnu9kbRR0qEZLL+tZFs8LekJSd+U9F5JJ5b1XSPppvz3MZr/nm6XNJX7w86akto3l7W35+3NklpL9+d8fpOkryr7io1TZlpH3QZFvnN/B/gdsjt9/zvgtWT3ubixpOt/I/uY+8uBtwH7gM9L+vMqq/4E8OMKbS0lj+8Dnyxr+1ENa/8y8Byy+46uBb4NfEHSmtmufQH7Otm2aAX+PfAl4CPA30t6LkD+QvsO8KvAJuA04I1kN26qtj/Nh8PAByQVuoeepBeS/bwvAn4zIn4w4woioi4fwFeAnwAnV5j3wvzffcDVFeZ3kt3P8zVl7RcB3wNOzee3VXnuPcA19VA72c2Nx/0sZJ/6PQZcXLZsP/Ak2Z3HfgoMAe8HlgB/Cfwc2A9cWrLMGflO9S/5MtuA55fM30YWVO8HHiO7k/pngKaSPkuAT5HdGvEwsAt4dVltvwJ8Efh/wCHgH/Ln/i3gaWBFWf9u4H6gPf/5Sx/X5H1OAv6ELPh/Afwj8DsVtuk24MsV2k8HjpAFhvLf+33Aogp9X1Cj18G2fH+6H/izkvax7dJMFn4BtJHdUOqBfB944WzVUZcjCkm/BFwA/EVETBhyRkTqtv83ke3Qby5Z54vJvoiog+xFMSfmoPYngb3ApZJOlrSILEyeIrvbWLkXkO38vw58lOwFfCfwENmOdAvwaUkrJTUBXyV74a4D3kT2FQw3l63zXLIX1WuBS/J+7y+Z/7G8/TKyEc8DwFclteTbZCXZKCjIbqH4KrLgWhQR3wJ+CLxjbGWSTsinbyLb4f8QGOGZEdIn8q6fAc4D3k4WOrcAX5J0ZoXtMkFE7Ml//jcDryQbSXw8Io5V6PvzIuucI8eB/wJcno8iq3kZ2T7xY+C1Bfa14mqRkgVSdB3ZTvWmRL99VPirnM/bBXwl//8iYAfwn/PpVuZoRDHbtefTLwLuJdthjgJPAL9RYbl+shfUNfm0yEYVXyzpcyJZkFwMvIfsL/zzKvylelnJX7QfAYtL+vQCX8///9x8fe8omb+I7MX/3/PpbrK7m51U5ee9GthbMv06YBRYmk9vBA6VLbMm3x6rytrvBLaWtW2jwogin/fRfJu9Nf+519Z6/69WO/BN4G/Kfk+lI4pRsmA9cbbrqMsRBdkOPhvrGPsgy4fIhrfXz8J6izzvbKwje6VLIruz2JNkf9nXAbcDd0h6UYVlD4/9J7I96gmyv/BjbU+TjViWkx2C3R8RT5Usv5PsBXhaSduDEXG0ZPon+fKQvWBPpGR0E9lf5H8oWcda4NuR3ai5kluAl5acMLwMuDMinqzSH7JRiYAHJR0aewCvZ/xtGVPGtvVs/N7m2geAt5SetCzzBbL9422z/cT1GhQ/IPvlnTqdhfPh+cuBR/Km84HXAE9LOgo8nLfvktQ3w1rLzXbtvw28AfjdiLg7Ir4TEZvIjsl/r8Iqyj/lF2QhWd52ApN/N0tpe7Xl4ZkXWKX1RFmfyk+U3XD5i8Blyu7N+kayw47JnJCv/9fIDhvGHqeSBU1Rp5Ft64fy6Wn93uZDRPwjcAfZeZlKPkb2R3GbpI2z+dx1GRQR8VPg74D3STq5fL6kFyRW8W6yY/Xb8+nfA87kmZ1pQ97eAXxwpvWWmoPam/J/j5f1O87Mf38PAmdKel5J2zn5evcWXMfDZIcerx5ryMPuN/L1Q3Yl4dXKvp6yml6y4f/vk50U/XrJvCNkhzOl7iMLoBUR8XDZ47EihUs6nex80u3A/83r/aO8/vK+LyiyznnwIbKR5QWVZkbEx8gO5W6S9O5Ze9ZaH4NNcmz2y8AB4J+AtwCvIDtzfgWwP++zj+yM9QrgJWQ7+Z+SHcf/+STrbmVur3rMWu1kx6DDZH9JziQbbXyc7K/8q8qet5/sEOWayX4W4HHgfWQh9BPg8zxzBeL7wB2VjpFL2q4B9pRMfypfzwayv8g9ZCdIW/L5L8rrupNsBPAy4HeBV5asQ8CjZMfZHyl7vnN45kRoM/kVF+CzZOc+LgZeSnay9mrgP5Qtvw34Wr6tV+bb8ap8u+4Cnpv3Wwf8c952IdkhzBlkQ/6BGr0OKm3/vyA7IT/hqkdJn/eRXRn7/VmpoxY//BQ2UgvZ9etH8h3oJ2RfKvS6khfb2CWzUbKzvXcCb0ysd8KGLZs/o6CY7drzF8Df5S+2fwbuAV5foV8/UwiK/P9nAN/Id7yfUeXyaNny1zA+KEovj45S+fLor5Jd5jtEdsVmJ3B6WZ8Pk42UWiv8bDfkL+zgmZO1J+a1PEI26nic7BDmrAovtrFtfTRfTz9wJWUnWIFTyK6m/Dhf536yEcfZNXoNVNr+y/NtWDUo8n6Xk4XFppnW4RvXWN2QdAPZ1Zbyb6WzGqu72/Xbs4+k5wNnkb134q01LscqcFBYPRi7rHdTRPxtrYuxiXzoYWZJdXl51Mzqi4PCzJIcFGaW5KAwsyQHhZklOSjMLOn/A44V5glQ76qlAAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# compare between filtered and unfiltered\n",
+ "fig, axes = plt.subplots(1, 5, figsize=(4, 5), sharey=True)\n",
+ "sorted_celltypes = ['CD4T', 'CD8T', 'monocyte', 'DC', 'NK']\n",
+ "# ax1.errorbar(y=bios_replication_filtered_df.loc[sorted_celltypes]['r'].values,\n",
+ "# x=[ind-0.1 for ind in range(len(sorted_celltypes))],\n",
+ "# yerr=bios_replication_filtered_df.loc[sorted_celltypes]['se_r'].values,\n",
+ "# fmt='.', markersize=6, marker='o', \n",
+ "# ecolor=bios_replication_filtered_df.loc[sorted_celltypes]['color'].values,\n",
+ "# color=bios_replication_filtered_df.loc[sorted_celltypes]['color'].values[0])\n",
+ "# ax1.set_xticklabels([\"\"]+sorted_celltypes)\n",
+ "# ax1.plot([0, 5], [0.5, 0.5], linestyle='--', color='black')\n",
+ "for ind, celltype in enumerate(sorted_celltypes):\n",
+ " ax = axes[ind]\n",
+ " ax.errorbar(y=bios_replication_filtered_df.loc[celltype]['r'],\n",
+ " x=[0.4],\n",
+ " yerr=bios_replication_filtered_df.loc[celltype]['se_r'],\n",
+ " fmt='.', markersize=6, marker='o', ecolor='black',\n",
+ " markeredgecolor='black', markerfacecolor='black'\n",
+ " )\n",
+ " ax.set_xlim([0, 1])\n",
+ " ax.spines['bottom'].set_color(bios_replication_filtered_df.loc[celltype]['color'])\n",
+ " ax.spines['top'].set_color(bios_replication_filtered_df.loc[celltype]['color']) \n",
+ " ax.spines['right'].set_color(bios_replication_filtered_df.loc[celltype]['color'])\n",
+ " ax.spines['left'].set_color(bios_replication_filtered_df.loc[celltype]['color'])\n",
+ " ax.set_xticklabels([])\n",
+ " ax.set_xlabel(celltype)\n",
+ " \n",
+ "\n",
+ "plt.savefig('bios_replication.filtered_results.pdf')\n",
+ "plt.savefig('bios_replication.filtered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":14: UserWarning: marker is redundantly defined by the 'marker' keyword argument and the fmt string \".\" (-> marker='.'). The keyword argument will take precedence.\n",
+ " ax.errorbar(y=bios_replication_filtered_df.loc[celltype]['r'],\n",
+ ":20: UserWarning: marker is redundantly defined by the 'marker' keyword argument and the fmt string \".\" (-> marker='.'). The keyword argument will take precedence.\n",
+ " ax.errorbar(y=bios_replication_unfiltered_df.loc[celltype]['r'],\n",
+ "/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/Beeline/miniconda/envs/scpy3.8/lib/python3.8/site-packages/numpy/core/_asarray.py:102: UserWarning: Warning: converting a masked element to nan.\n",
+ " return array(a, dtype, copy=False, order=order)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# compare between filtered and unfiltered\n",
+ "fig, axes = plt.subplots(1, 6, figsize=(12, 6), sharey=True)\n",
+ "sorted_celltypes = ['CD4T', 'CD8T', 'monocyte', 'DC', 'NK', 'B']\n",
+ "# ax1.errorbar(y=bios_replication_filtered_df.loc[sorted_celltypes]['r'].values,\n",
+ "# x=[ind-0.1 for ind in range(len(sorted_celltypes))],\n",
+ "# yerr=bios_replication_filtered_df.loc[sorted_celltypes]['se_r'].values,\n",
+ "# fmt='.', markersize=6, marker='o', \n",
+ "# ecolor=bios_replication_filtered_df.loc[sorted_celltypes]['color'].values,\n",
+ "# color=bios_replication_filtered_df.loc[sorted_celltypes]['color'].values[0])\n",
+ "# ax1.set_xticklabels([\"\"]+sorted_celltypes)\n",
+ "# ax1.plot([0, 5], [0.5, 0.5], linestyle='--', color='black')\n",
+ "for ind, celltype in enumerate(sorted_celltypes):\n",
+ " ax = axes[ind]\n",
+ " ax.errorbar(y=bios_replication_filtered_df.loc[celltype]['r'],\n",
+ " x=[0.4],\n",
+ " yerr=bios_replication_filtered_df.loc[celltype]['se_r'],\n",
+ " fmt='.', markersize=6, marker='o', ecolor='black',\n",
+ " markeredgecolor='black', markerfacecolor='black'\n",
+ " )\n",
+ " ax.errorbar(y=bios_replication_unfiltered_df.loc[celltype]['r'],\n",
+ " x=[0.6],\n",
+ " yerr=bios_replication_unfiltered_df.loc[celltype]['se_r'],\n",
+ " fmt='.', markersize=6, marker='o', ecolor='black',\n",
+ " markeredgecolor='black', markerfacecolor='white')\n",
+ " ax.set_xlim([0, 1])\n",
+ " ax.spines['bottom'].set_color(bios_replication_filtered_df.loc[celltype]['color'])\n",
+ " ax.spines['top'].set_color(bios_replication_filtered_df.loc[celltype]['color']) \n",
+ " ax.spines['right'].set_color(bios_replication_filtered_df.loc[celltype]['color'])\n",
+ " ax.spines['left'].set_color(bios_replication_filtered_df.loc[celltype]['color'])\n",
+ " ax.set_xticklabels([])\n",
+ " ax.set_xlabel(celltype)\n",
+ " \n",
+ "\n",
+ "plt.savefig('bios_replication_comparison.filter_and_unfilter.pdf')\n",
+ "plt.savefig('bios_replication_comparison.filter_and_unfilter.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# compare between filtered and unfiltered\n",
+ "celltypes = ['CD4T', 'CD8T', 'monocyte', 'B', 'NK', 'DC']\n",
+ "fig, axes = plt.subplots(6, 2, figsize=(12, 12), sharex=True)\n",
+ "for i, celltype in enumerate(celltypes):\n",
+ " replication_celltypes = [ct for ct in celltypes]\n",
+ " ax1, ax2 = axes[i, :]\n",
+ " ax1.scatter(x=replication_celltypes,\n",
+ " y=numcoeqtl_df[celltype].loc[replication_celltypes])\n",
+ " ax1.scatter(x=replication_celltypes,\n",
+ " y=unnumcoeqtl_df[celltype].loc[replication_celltypes])\n",
+ " ax2.errorbar(x=replication_celltypes, fmt='.', markersize=12,\n",
+ " y=rb_df[celltype].loc[replication_celltypes],\n",
+ " yerr=rbse_df[celltype].loc[replication_celltypes], label='filtered')\n",
+ " ax2.errorbar(x=replication_celltypes, fmt='.', markersize=12,\n",
+ " y=unrb_df[celltype].loc[replication_celltypes],\n",
+ " yerr=unrbse_df[celltype].loc[replication_celltypes], label='Unfiltered')\n",
+ " ax1.set_ylabel(celltype)\n",
+ "ax2.legend()\n",
+ "\n",
+ "plt.savefig('celltype_rb.comparison_filtered_unfiltered_results.pdf')\n",
+ "plt.savefig('celltype_rb.comparison_filtered_unfiltered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Sub celltypes in monocytes"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " r | \n",
+ " se_r | \n",
+ " p | \n",
+ " celltype_discovery | \n",
+ " celltype_replication | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 | \n",
+ " 0.971431 | \n",
+ " 0.048402 | \n",
+ " 1.351820e-89 | \n",
+ " ncMono | \n",
+ " cMono | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 0.929081 | \n",
+ " 0.088678 | \n",
+ " 1.101982e-25 | \n",
+ " ncMono | \n",
+ " monocyte | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 0.936797 | \n",
+ " 0.025409 | \n",
+ " 1.468276e-297 | \n",
+ " cMono | \n",
+ " ncMono | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 0.999726 | \n",
+ " 0.000613 | \n",
+ " 0.000000e+00 | \n",
+ " cMono | \n",
+ " monocyte | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 0.896203 | \n",
+ " 0.036240 | \n",
+ " 5.115902e-135 | \n",
+ " monocyte | \n",
+ " ncMono | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 0.949824 | \n",
+ " 0.008640 | \n",
+ " 0.000000e+00 | \n",
+ " monocyte | \n",
+ " cMono | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " r se_r p celltype_discovery celltype_replication\n",
+ "1 0.971431 0.048402 1.351820e-89 ncMono cMono\n",
+ "2 0.929081 0.088678 1.101982e-25 ncMono monocyte\n",
+ "3 0.936797 0.025409 1.468276e-297 cMono ncMono\n",
+ "4 0.999726 0.000613 0.000000e+00 cMono monocyte\n",
+ "5 0.896203 0.036240 5.115902e-135 monocyte ncMono\n",
+ "6 0.949824 0.008640 0.000000e+00 monocyte cMono"
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "filtered_mono_res_df = pd.read_csv(workdir/'output/filtered_results/rb_calculations/monocyte_subcelltypes/summary.csv', \n",
+ " index_col=0)\n",
+ "filtered_mono_res_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# filtered results\n",
+ "mono_subcelltypes = ['monocyte', 'cMono', 'ncMono']\n",
+ "monorb_df = pd.DataFrame(data=np.zeros((len(mono_subcelltypes), len(mono_subcelltypes))), \n",
+ " columns=mono_subcelltypes, index=mono_subcelltypes)\n",
+ "monorbse_df = pd.DataFrame(data=np.zeros((len(mono_subcelltypes), len(mono_subcelltypes))), \n",
+ " columns=mono_subcelltypes, index=mono_subcelltypes)\n",
+ "monorbpvalue_df = pd.DataFrame(data=np.zeros((len(mono_subcelltypes), len(mono_subcelltypes))), \n",
+ " columns=mono_subcelltypes, index=mono_subcelltypes)\n",
+ "mononumcoeqtl_df = pd.DataFrame(data=np.zeros((len(mono_subcelltypes), len(mono_subcelltypes))), \n",
+ " columns=mono_subcelltypes, index=mono_subcelltypes)\n",
+ "monoanno_df = pd.DataFrame(data=np.zeros((len(mono_subcelltypes), len(mono_subcelltypes))), \n",
+ " columns=mono_subcelltypes, index=mono_subcelltypes)\n",
+ "mononum_anno_df = pd.DataFrame(data=np.zeros((len(mono_subcelltypes), len(mono_subcelltypes))), \n",
+ " columns=mono_subcelltypes, index=mono_subcelltypes)\n",
+ "\n",
+ "for discovery_celltype in mono_subcelltypes:\n",
+ " # replication in other celltypes\n",
+ " for replication_celltype in mono_subcelltypes:\n",
+ " if discovery_celltype != replication_celltype:\n",
+ " monorb_results = filtered_mono_res_df[(filtered_mono_res_df['celltype_discovery'] == discovery_celltype) &\n",
+ " (filtered_mono_res_df['celltype_replication'] == replication_celltype)]\n",
+ " monoreplicated_coeqtls_num = pd.read_csv(\n",
+ " workdir/f'output/filtered_results/rb_calculations/monocyte_subcelltypes/discovery_{discovery_celltype}_replication_{replication_celltype}.tsv.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t',\n",
+ " index_col=0\n",
+ " ).shape[0]\n",
+ " if monorb_results['r'].values[0] < 10:\n",
+ " monorb_df.loc[replication_celltype, discovery_celltype] = monorb_results['r'].values[0]\n",
+ " monorbse_df.loc[replication_celltype, discovery_celltype] = monorb_results['se_r'].values[0]\n",
+ " monorbpvalue_df.loc[replication_celltype, discovery_celltype] = monorb_results['p'].values[0]\n",
+ " mononumcoeqtl_df.loc[replication_celltype, discovery_celltype] = monoreplicated_coeqtls_num\n",
+ " monorbvalue = monorb_results['r'].values[0]\n",
+ " monorbsevalue = monorb_results['se_r'].values[0]\n",
+ " monoanno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"rb={monorbvalue:.2f}\\nN={monoreplicated_coeqtls_num}\"\n",
+ " mononum_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={monoreplicated_coeqtls_num}\"\n",
+ " else:\n",
+ " monorb_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " monorbse_df.loc[replication_celltype, discovery_celltype] = np.nan\n",
+ " monorbpvalue_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " mononumcoeqtl_df.loc[replication_celltype, discovery_celltype] = monoreplicated_coeqtls_num\n",
+ " monoanno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"rb=NA\\nN={monoreplicated_coeqtls_num}\"\n",
+ " mononum_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={monoreplicated_coeqtls_num}\"\n",
+ " else:\n",
+ " monorb_df.loc[replication_celltype, discovery_celltype] = 1\n",
+ " monorbse_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " monorbpvalue_df.loc[replication_celltype, discovery_celltype] = 0\n",
+ " monoreplicated_coeqtls_num = pd.read_csv(\n",
+ " workdir/f'output/filtered_results/UT_{discovery_celltype}/coeqtls_fullresults_fixed.sig.tsv.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t'\n",
+ " ).shape[0]\n",
+ " mononumcoeqtl_df.loc[replication_celltype, discovery_celltype] = monoreplicated_coeqtls_num\n",
+ " monoanno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={monoreplicated_coeqtls_num}\"\n",
+ " mononum_anno_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " f\"N={monoreplicated_coeqtls_num}\"\n",
+ " \n",
+ "monoreplicated_ratio_df = pd.DataFrame(data=np.zeros((len(mono_subcelltypes), len(mono_subcelltypes))), \n",
+ " columns=mono_subcelltypes, index=mono_subcelltypes)\n",
+ "for discovery_celltype in mononumcoeqtl_df.columns:\n",
+ " for replication_celltype in mononumcoeqtl_df.index:\n",
+ " monoreplicated_ratio_df.loc[replication_celltype, discovery_celltype] = \\\n",
+ " mononumcoeqtl_df.loc[replication_celltype, discovery_celltype] / mononumcoeqtl_df.loc[discovery_celltype, discovery_celltype]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " monocyte | \n",
+ " cMono | \n",
+ " ncMono | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " monocyte | \n",
+ " 1.000000 | \n",
+ " 1.000000 | \n",
+ " 0.826087 | \n",
+ "
\n",
+ " \n",
+ " cMono | \n",
+ " 0.996441 | \n",
+ " 1.000000 | \n",
+ " 0.826087 | \n",
+ "
\n",
+ " \n",
+ " ncMono | \n",
+ " 0.985765 | \n",
+ " 0.980645 | \n",
+ " 1.000000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " monocyte cMono ncMono\n",
+ "monocyte 1.000000 1.000000 0.826087\n",
+ "cMono 0.996441 1.000000 0.826087\n",
+ "ncMono 0.985765 0.980645 1.000000"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "monoreplicated_ratio_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ ":60: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_xticklabels([\"\"]+col_labels)\n",
+ ":61: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
+ " ax.set_yticklabels([\"\"]+row_labels)\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, axes = plt.subplots(1, 2, figsize=(10, 5))\n",
+ "ax1, ax2 = axes\n",
+ "\n",
+ "im1, bar = heatmap(monoreplicated_ratio_df.values, \n",
+ " list(monorb_df.index), \n",
+ " list(monorb_df.columns),\n",
+ " cmap=\"viridis\",\n",
+ " ax=ax1)\n",
+ "\n",
+ "\n",
+ "_ = annotate_heatmap(im1, \n",
+ " data=monoreplicated_ratio_df.values, \n",
+ " valfmt=\"{x:.0%}\", \n",
+ " color=\"black\",\n",
+ " threshold=1)\n",
+ "\n",
+ "im2, bar = heatmap(monorb_df.values, \n",
+ " list(monorb_df.index), \n",
+ " list(monorb_df.columns),\n",
+ " cmap=\"viridis\",\n",
+ " ax=ax2)\n",
+ "\n",
+ "\n",
+ "_ = annotate_heatmap(im2, \n",
+ " data=monoanno_df.values, \n",
+ " valfmt=\"{x:^}\", \n",
+ " color=\"black\",\n",
+ " threshold=1)\n",
+ "\n",
+ "plt.savefig('cmono_ncmono_mono.filtered_results.pdf')\n",
+ "plt.savefig('cmono_ncmono_mono.filtered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Non-zero ratio and co-expression mean and variances"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "celltype = 'monocyte'\n",
+ "annotated_coeqtl_df = pd.DataFrame()\n",
+ "for celltype in celltypes:\n",
+ " celltype_annotated_coeqtl_df = pd.read_csv(\n",
+ " workdir/f'output/filtered_results/UT_{celltype}/coeqtls_fullresults_fixed.all.annotated.tsv.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t'\n",
+ " )[['mean_onemillionv2', 'var_onemillionv2', \n",
+ " 'gene2_nonzeroratio_onemillionv2',\n",
+ " 'eqtlgene_nonzeroratio_onemillionv2',\n",
+ " 'gene2_isSig']]\n",
+ " celltype_annotated_coeqtl_df['celltype'] = celltype\n",
+ " annotated_coeqtl_df = pd.concat([annotated_coeqtl_df, \n",
+ " celltype_annotated_coeqtl_df],\n",
+ " axis=0)\n",
+ " \n",
+ "annotated_coeqtl_df_clean = annotated_coeqtl_df.replace([np.inf, -np.inf], np.nan, inplace=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEJCAYAAAB2T0usAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAmNklEQVR4nO3deZhcZZn+8e+dTmMiCWuCIE0S0HYgsjShA+ISmWDYBAEBARkMiwYRZBNnGPWSqIz+ZgCJQAAzDmIwLLIjMMi+ioSsQIjQyCINAZIgIQ2dkOX5/XFOZyrd1emqdJ2q7ur7c119ddU5p049p5d6znnP+z6vIgIzM+vb+lU6ADMzqzwnAzMzczIwMzMnAzMzw8nAzMxwMjAzMzJOBpIGSJouaa6keZJ+kmebvSQtkTQn/fpxljGZmVlH/TPe/3JgbES0SKoFHpP0vxHxl3bbPRoRB2Yci5mZdSLTZBDJiLaW9Glt+tXtUW5DhgyJESNGdHc3ZmZ9ysyZMxdFxNB867K+MkBSDTAT+CQwOSKezLPZnpLmAm8AZ0fEvDz7mQBMABg2bBgzZszIMGozs+oj6dXO1mV+AzkiVkVEA1AH7C5px3abzAKGR8QuwCXArZ3sZ0pENEZE49CheRObmZmtp7L1JoqId4GHgP3aLX8vIlrSx3cBtZKGlCsuMzPLvjfRUEmbpI8HAl8C/tpumy0lKX28exrT4izjMjOztWV9z2Ar4HfpfYN+wB8i4g5J3waIiCuAw4GTJa0EWoGjwqVUzaxIK1asoLm5mWXLllU6lIobMGAAdXV11NbWFvwa9cbP3cbGxvANZDPL9fLLLzN48GA233xz0saGPikiWLx4MUuXLmXbbbdda52kmRHRmO91HoFsZlVh2bJlfT4RAEhi8803L/oKycnAzKpGX08Ebdbn55D5OAOznmbSpEk0NTV1WN7c3AxAXV3dWsvr6+s544wzyhGaWcU4GZilWltbKx2CWcU4GVif09lZ/imnnALA5MmTyxiN9VavvfYa3/jGN3jzzTfp168fEyZM4PTTT+90+x//+MeMGTOGL33pS3nXP//885x00km8++67LF++nC984QtMmTKFGTNmMHXqVC6++OKsDgVwMjAzWy/9+/fnwgsvZNSoUSxdupTddtuNcePGMXLkyLzb//SnP13n/k477TTOPPNMDj74YACeeeYZABobG2lszNsBqKR8A9nMqtbPfvYztt9+e8aNG8fRRx/NBRdcwN/+9jf2228/dtttN77whS/w178m42CPO+44TjvtND772c+y3XbbceONN67Zz/nnn8/o0aPZeeedOffccwHYaqutGDVqFACDBw9mhx124PXXX+80luOOO27NPs855xxGjhzJzjvvzNlnnw3AggUL1rpftdNOOwHw0EMPceCBSVHnhQsXMm7cOEaNGsVJJ53E8OHDWbRoUUl+Vk4GZlaVZsyYwU033cTs2bO5+eab1xS3nDBhApdccgkzZ87kggsu4Dvf+c6a1yxYsIDHHnuMO+64g3POOQeAe+65h6amJqZPn86cOXOYOXMmjzzyyFrv9corrzB79mz22GOPLuN65513uOWWW5g3bx5PP/00P/rRjwA488wzGTt2LPvvvz8XXXQR7777bofX/uQnP2Hs2LHMmjWLQw89lL///e/r++PpwM1EZlaVHnvsMQ4++GAGDhwIwEEHHcSyZcv485//zBFHHLFmu+XLl695fMghh9CvXz9GjhzJW2+9BSTJ4J577mHXXXcFoKWlhaamJsaMGbPm+WGHHcakSZPYaKONuoxro402YsCAAXzzm9/ky1/+8pqz/uOPP559992Xu+++m9tuu41f//rXzJ07t8Mx3XLLLQDst99+bLrppuv74+nAycDMqlK+6gqrV69mk002Yc6cOXlf85GPfKTD6yOCf//3f+ekk07qsP2KFSs47LDDOOaYY/jqV79aUFz9+/dn+vTp3H///Vx33XVceumlPPDAAwB8/OMf54QTTuCEE05gxx135Nlnn+3ymErFzURmVpU+//nP88c//pFly5bR0tLCnXfeyUc/+lG23XZbbrjhBiD5cG1/9t3evvvuy5VXXklLSzJP1+uvv87bb79NRHDiiSeyww47cNZZZxUcV0tLC0uWLOGAAw5g0qRJaxLT3XffzYoVKwB48803Wbx4MVtvvXWHY/rDH/4AJFcs//jHPwp+3674ysDMqtLo0aP5yle+wi677MLw4cNpbGxk4403Ztq0aZx88smcd955rFixgqOOOopddtml0/3ss88+zJ8/nz333BOAQYMG8fvf/54XXniBq6++mp122omGhgYAfv7zn3PAAQesM66lS5dy8MEHs2zZMiKCiy66CEg+3E8//XQGDBgAJDett9xyyzU3uAHOPfdcjj76aK6//nq++MUvstVWWzF48ODu/JjWcKE6s5THGfRu8+fPZ4cddlhrWUtLC4MGDeKDDz5gzJgxTJkyZU0PoN5o+fLl1NTU0L9/f5544glOPvnkTpu88v081lWozlcGZla1JkyYwHPPPceyZcsYP358r04EAH//+9/52te+xurVq9lggw347//+75Lt28nAzKrWNddcU/b3POWUU3j88cfXWnb66adz/PHHd3vf9fX1zJ49u9v7ycfJwMyshHprM6N7E5mZmZOBmZk5GZiZGb5nYGZ9wMmnns5bJSroBvCxIUO4/NJfrXObmpqaNcXmAG699VZGjBiRd9tBgwatGdRWKU4GZlb13lq0iIUbb1+6HS76a5ebDBw4sNMxAD1Rps1EkgZImi5prqR5kn6SZxtJuljSi5KeltS7OwKbmeXR0tLC3nvvzahRo9hpp5247bbbOmyzYMECxowZQ0NDAzvuuCOPPvookIxO3nPPPRk1ahRHHHFEJlcRWd8zWA6MjYhdgAZgP0mfabfN/kB9+jUBuDzjmMzMMtfa2kpDQwMNDQ0ceuihDBgwgFtuuYVZs2bx4IMP8r3vfa9D4blrrrmGfffdlzlz5jB37lwaGhpYtGgR5513Hvfddx+zZs2isbGRX/7ylyWPN9NmokiOtC2F1aZf7etfHAxMTbf9i6RNJG0VEQuyjM3MLEvtm4lWrFjBD37wAx555BH69evH66+/zltvvcWWW265ZpvRo0dzwgknsGLFCg455BAaGhp4+OGHee655/jc5z4HwIcffrimTlIpZX7PQFINMBP4JDA5Ip5st8nWwGs5z5vTZWslA0kTSK4cGDZsWGbxmpllYdq0aSxcuJCZM2dSW1vLiBEjWLZs2VrbjBkzhkceeYQ777yTY489lu9///tsuummjBs3jmuvvTbT+DLvWhoRqyKiAagDdpe0Y7tNlO9lefYzJSIaI6Jx6NChGURqZpadJUuWsMUWW1BbW8uDDz7Iq6++2mGbV199lS222IJvfetbnHjiicyaNYvPfOYzPP7447z44osAfPDBB7zwwgslj69svYki4l1JDwH7AbkzNjQD2+Q8rwPeKFdcZlb9PjZkSEE9gIraX5GOOeYYDjroIBobG2loaGD77Tv2bnrooYc4//zzqa2tZdCgQUydOpWhQ4dy1VVXcfTRR6+Zle28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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(x=annotated_coeqtl_df_clean['celltype'],\n",
+ " y=abs(annotated_coeqtl_df_clean['mean_onemillionv2']),\n",
+ " hue=annotated_coeqtl_df_clean['gene2_isSig'],\n",
+ " fliersize=1,\n",
+ " palette='viridis',\n",
+ " showfliers = False)\n",
+ "# plt.savefig('mean_onemillionv2.filtered_results.pdf')\n",
+ "# plt.savefig('mean_onemillionv2.filtered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 28,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAEGCAYAAACAd+UpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAhX0lEQVR4nO3deXwV9b3/8dcnIRg04EZQayrBXrxKUSOEWrRSC6LW3Vqr/mwFteJVWkBrb22vj4ott97+3HBtSzdFcUXRqrfWFVFqa0kCKqLQusaCBNyIBojkc/+YSRqyzknOnGXyfj4eeSSZ9TM5J5/znc985zvm7oiISDIVZDsAERGJj5K8iEiCKcmLiCSYkryISIIpyYuIJFi/bAfQ2uDBg728vDzbYYiI5JWqqqp17l7a0bycSvLl5eUsWbIk22GIiOQVM3uzs3mxJ3kzewPYAGwBPnX3yrj3KSIigUy15L/i7usytC8REQnpwquISIJloiXvwKNm5sCv3H1OKis3NjZSW1vLxo0b44kujxQXF1NWVkZRUVG2QxGRPJGJJH+wu//TzIYAj5nZK+6+qHmmmU0BpgDsscce7Vaura1l4MCBlJeXY2YZCDc3uTvr16+ntraWYcOGZTscEckTsZdr3P2f4fe1wALgC23mz3H3SnevLC1t3wNo48aN7Lzzzn06wQOYGTvvvLPOaEQkJbEmeTPbzswGNv8MHA681IPtpDu0vKS/g4ikKu5yzS7AgjA59QNud/dHYt6n9GGzZ89m1apVW02rra0FoKysrN3yw4cPZ8aMGZkITSQrYk3y7v4asH+c+xDpTkNDQ7ZDEMmanLrjNVe8/fbbnHHGGaxZs4aCggKmTJnC9OnTO13+xz/+MePGjeOwww7rcP6rr77KueeeywcffMCmTZs45JBDmDNnDkuWLGHu3Llcd911cR1Kn9NRq3zq1KkA3HjjjRmORiT7lOQ70K9fP6666ipGjRrFhg0bGD16NBMnTmTEiBEdLv+Tn/yky+1NmzaNCy64gOOPPx6AF198EYDKykoqK3UDsIjEJ29vhvrpT3/K3nvvzcSJEznttNO48sor+cc//sGRRx7J6NGjOeSQQ3jllVcAmDx5MtOmTeOggw5izz33ZP78+S3bueKKKxgzZgz77bcfl156KQC77bYbo0aNAmDgwIHss88+vPPOO53GMnny5JZtXnzxxYwYMYL99tuPiy66CIDVq1dvVQ/ed999AVi4cCHHHHMMAHV1dUycOJFRo0Zx7rnnMnToUNat003CItI7eZnklyxZwr333ktNTQ333Xdfy6BmU6ZM4frrr6eqqoorr7yS888/v2Wd1atX8+yzz/LQQw9x8cUXA/Doo4+yatUqnn/+eZYuXUpVVRWLFi3aal9vvPEGNTU1HHjggd3G9d5777FgwQKWL1/OCy+8wCWXXALABRdcwPjx4/nqV7/KNddcwwcffNBu3csuu4zx48dTXV3NiSeeyFtvvdXTP4+ISIu8LNc8++yzHH/88QwYMACAY489lo0bN/LnP/+Zk08+uWW5TZs2tfx8wgknUFBQwIgRI3j33XeBIMk/+uijHHDAAQDU19ezatUqxo0b1/L7SSedxOzZsxk0aFC3cQ0aNIji4mK+/e1vc/TRR7e00s8880yOOOIIHnnkER544AF+9atfsWzZsnbHtGDBAgCOPPJIdtxxx57+eUREWuRlknf3dtOamprYYYcdWLp0aYfrbLPNNu3Wd3d++MMfcu6557ZbvrGxkZNOOonTTz+dr33ta5Hi6tevH88//zxPPPEEd955JzfccANPPvkkAJ/5zGc466yzOOussxg5ciQvvbT17QIdHZOISG/lZbnmS1/6Eg8++CAbN26kvr6ehx9+mG233ZZhw4Zxzz33AEHSbNtabuuII47gd7/7HfX19QC88847rF27Fnfn7LPPZp999uHCCy+MHFd9fT0ffvghRx11FLNnz275wHnkkUdobGwEYM2aNaxfv57dd9+93THdfffdQHCG8f7770fer4hIZ/KyJT9mzBiOO+449t9/f4YOHUplZSXbb7898+bN47zzzmPWrFk0NjZy6qmnsv/+nXfTP/zww1mxYgVjx44FoKSkhNtuu42VK1dy6623su+++1JRUQHAz372M4466qgu49qwYQPHH388GzduxN255pprgCBpT58+neLiYiC42Lvrrru2XBgGuPTSSznttNO46667+PKXv8xuu+3GwIEDe/NnEhHBcqlMUFlZ6W2fDLVixQr22WefdsvW19dTUlLCJ598wrhx45gzZ05Lj5h8tGnTJgoLC+nXrx/PPfcc5513Xoelp87+HtI59ZOXpDOzqs4eyJSXLXkIetK8/PLLbNy4kUmTJuV1ggd46623+MY3vkFT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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(x=annotated_coeqtl_df_clean['celltype'], \n",
+ " y=annotated_coeqtl_df_clean['var_onemillionv2'],\n",
+ " hue=annotated_coeqtl_df_clean['gene2_isSig'],\n",
+ " palette='viridis', fliersize=1,\n",
+ " showfliers = False)\n",
+ "# plt.savefig('var_onemillionv2.filtered_results.pdf')\n",
+ "# plt.savefig('var_onemillionv2.filtered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEGCAYAAACHGfl5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAqPklEQVR4nO3deXhU5fn/8fdNCAKCoALWEiFgY/1aFdTgLioWRCtirYranyKouGARq1b71a/aalc3qqJIrWtdUHDBStHWDZfWsqosKohSx5VFUUhYQu7fH+cEJ8mEzEnOzCSTz+u6cmXOmvtkkrnPec5z7sfcHRERadla5ToAERHJPSUDERFRMhARESUDERFByUBERIDWuQ6gIbp06eLFxcW5DkNEpFmZPXv2CnfvmmpZs0wGxcXFzJo1K9dhiIg0K2a2rK5laiYSERElAxERUTIQERGUDEREBCUDEREhw8nAzO42sy/MbH4dy83MbjGzJWb2lpntncl4REQktUxfGdwLDN7C8qOAkvBrFHBHhuMREZEUMvqcgbvPMLPiLawyFLjfgzra/zazzma2o7t/msm4ohg3bhyLFy+uNT+RSFBeXp72ftq1a0dRUVG1eSUlJYwdO7axITZKquOL49igaRxfKlt6T4Em+T5FkS/H15T/9+L4HY8bN45p06bV2kdZWRmVlZVpx9KqVSvat29fbd7RRx8d+fhy/dBZd+CjpOlEOK9WMjCzUQRXD/To0SMrwQEsXryYuQveolXXDtXmV5aVw8ZNae9njW9g5Rcbvt1++ZrYYmyMVMfX2GODpnN8UZJdWVkZQK1liUQi5T9+U/0QrUuUD9Cm4MUXX2T5iuVQWFB9QUUlRBiHZU3ZWpavXvXtjI2bSCQSGXnvmtvvOFmuk4GlmJfyXXb3icBEgNLS0qyOyNOqawfa/6RvrPssmzIv1v01Rj4fX8pk3gZoU1Br3UoP/h3KOlVfVsYGVn6xtPq6TSTZpVLXh9zo0aMBGD9+fBajaaTCglonYo0Vx3sXx+947NixTepkItfJIAHslDRdBHySo1gkT+VzsstnRUVFrGyzISPvXVG32s2aLV2uu5ZOBU4PexXtD6xuSvcLRERaioxeGZjZw8BhQBczSwBXA4UA7j4BmAYcDSwByoARmYxHRERSy3RvolPqWe7A6EzGICIi9ct1M5GIiDQBSgYiIqJkICIiSgYiIoKSgYiIoGQgIiIoGYiICLkvRyEi0qTVVaE0lar1qmoU1acpFTtUMhAR2YLFixcz9823od029a+8fiMAc99bVv+65V83MrJ4KRmIiNSn3TYU9N4v1l1uWvpGrPtrLN0zEBERXRmISNNVuXxNWuXCK78KBpVp1bldWvukW2Mjyz9pJQMzO5JgrIHn3f3DpPkj3f3uDMUmIi1YSUlJ2usuXh3cuC3p1rv+lbtF23dLUW8yMLPfAgcDc4D/NbNx7n5ruPgCQMlARGIXpZdNsxzFrYlJ557BEGCAu48F9gGOMrObw2Wphq0UEZFmJp1k0NrdKwDc/SuC5LCNmT1GMJqsiIg0c+kkg/fN7NCqCXff5O5nAu8C/5OxyEREJGvSSQYnAv+pOdPdr6T6YPYiItJM1ZsM3L3c3cvNbKqZnWpmWyct+ziz4YmISDZEeejsRoJeRQvN7DEzO8HM2mYoLhERyaK0Hzpz95eBl82sABgAnE3QrTSNgh0iuZFIJKhcnd6DS1FULl9DYkMi1n2K5FKkJ5DNrB1Bb6JhwN7AfZkISkREsivtZGBmk4D9gOnAeOAld6/MVGAicSgqKmJlmw20/0nfWPdbNmUeRd2KYt2nSC5FuTK4BzjV3TdlKhgREcmNKPcMppvZgWZWnLydu9+ficBERCR7ojQTPQDsDMwDqq4OHFAyEBFp5qI0E5UCu7m7ZyoYERHJjSjJYD7wHeDTDMUiOaCulyIC0ZJBF4IHzv4DrK+a6e7Hxh6ViIhkVZRkcE2mgpDcUddLEYGITyCb2Q5Av3DWf9z9i8yEJSIi2RSlN9FJwPXASwSD2txqZpe6++R6thsM/AkoAO5y99/XWN4J+CvQI4znBne/J8pBiEjLMW7cOBYvXlxtXtV01YhnyUpKSiKNmtZSRWkmugLoV3U1YGZdgX8CdSaDsI7ReGAgkABmmtlUd1+YtNpoYKG7Dwn3+a6ZPejuGyIei4i0UO3atct1CM1elGTQqkaz0Erqr3q6L7DE3ZcCmNkjwFAgORk40NHMDOgArAIqIsQlIi2IzvIzI0oymG5mzwIPh9PDgGn1bNMd+ChpOkFQ3yjZbcBU4BOgIzAsVc0jMxsFjALo0aNHhLBFRKQ+aY9n4O6XAhOBPYE+wER3v6yezSzVrmpMH0nwVPN3gb7AbWZWqyy2u09091J3L+3atWu6YYuISBoilbB29ynAlAibJKg+NGYRwRVAshHA78Mnm5eY2QfArqQYalNERDKj3mRgZq+6+8Fm9g3Vz+oNcHff0uA2M4ESM+sFfAycDJxaY53/AkcAr4RdV78PLI1wDC1Wql4VEDxVDMEzBMnUq0JE6lJvMnD3g8PvHaPu3N0rzOwC4FmCrqV3u/sCMzs3XD4BuBa418zeJkgwl7n7iqg/S75VXl6e6xBEpJlJ58pguy0td/dV9SyfRo0bzWESqHr9CTCovjiktrrO8qv6Wo8fPz6L0YhIc5bOPYPZBM1Ddd0M7h1rRCIiknXpNBP1ykYgIiKSO+k0E+29peXuPie+cEREJBfSaSa6cQvLHBgQUywiIpIj6TQTHZ6NQEREJHfSaSYa4O4vmNnxqZa7++PxhyUiItmUTjPRocALwJAUyxxQMhARaebSaSa6Ovw+IvPhiIhILkQZ3KYzcDpQnLydu4+JPSoREcmqKIXqpgH/Bt4GapWYFhGR5itKMmjr7j/PWCQiIpIzaY9nADxgZmeb2Y5mtl3VV8YiExGRrIlyZbABuJ5gLOSqUtaqTSQikgeiJIOfA99TeWkRkfwTpZloAVCWqUBERCR3olwZbALmmdmLwPqqmepaKiLS/EVJBk+GXyIikmfSTgbufp+ZtQN6uPu7GYxJRESyLMoTyEOAG4A2QC8z6wv82t2PzVBsInlt3LhxLF68uNq8RCIBQFFRUa31S0pK6hzqVKSxotxAvgbYF/gKwN3nARoFTSRG5eXllJeX5zoMaYGi3DOocPfVZtWGQva6VhaRLUt1lj969GgAxo8fn+VopKWLkgzmm9mpQIGZlQBjgNczE5aIiGRTlGTwM4Knj9cDDwPPAtdmIqimJJFIULl6DWVT5sW638rla0hsSMS6TxGRhorSm6iMIBlckblwREQkF6L0JtoFuITa4xkMiD+spqOoqIiVbTbQ/id9Y91v2ZR5FHWr3WNERCQXojQTPQZMAO4ieBpZRETyRNTeRHdkLBIREcmZKM8ZPG1m52s8AxGR/BPlymB4+P3SpHkaz0BEJA9E6U2kp41FpMnauHEjiUSCdevWxbrfU089lRM2VkDrNrHul4r+tClszaJFi+LdL9C2bVuKioooLCxMe5sovYkKgfOA/uGsl4A73X1jPdsNBv4EFAB3ufvvU6xzGDAOKARWuPuh6cYlIgLBM0EdO3akuLiYGpUSGmXZsmWUrd+AbbV1bPsE8PVrab9VG3r27Bnvft1ZuXIliUSCXr3SP4ePcs/gDmAf4Pbwa59wXp3MrAAYDxwF7AacYma71Vinc7i/Y939B8CJEWISEQFg3bp1bL/99rEmgubIzNh+++0jXyFFuWfQz937JE2/YGZv1rPNvsASd18aBvkIMBRYmLTOqcDj7v5fAHf/IkJMIiKbtfREUKUhv4dII52Z2c7u/n74w3pT//MG3YGPkqYTwH411tkFKDSzl4COwJ/c/f6aOzKzUcAogB49ekQIWyR/pSqDXZeq9aqK4dVHJbNblijJ4FLgRTNbChjQExhRzzap0lPNSqetCZqcjgDaAf8ys3+7+3vVNnKfCEwEKC0tVbVUEYIP+LkL3qJV1w71rlvpGwB484ul9a+7fE2jY8t3n37yMZf//EJWLF+OtWrFSaf8lNNHnlXn+rfcdD2l++7HgQf3T7n83Xff5ZxzzuGrr75i/fr1HHLIIUycOJFZs2Zx//33c8stt2TqUIBovYmeD6uVfp/gQ/4dd988FrKZDXT3f9TYLAHslDRdBHySYp0V7r4WWGtmM4A+wHuISL1ade2QkXIpsmUFrVvziyuv5ge778HaNWv4yZDBHHhIf75XskvK9cf8/NKU8zcvHzOGiy66iKFDhwLw9ttvA1BaWkppaWm8wacQ5QYy7r7e3d9y9zeTE0HoDyk2mQmUmFkvM2sDnAxMrbHOU8AhZtbazNoTNCPF39dKRFqca6+9ll133ZWBAwdyyimncMMNN/D+++8zePBg9tlnHw455BDeeecdAM444wzGjBnDgQceSO/evZk8efLm/fzlrrs48dijGTr4h9x60w0AdOu2Az/YfQ8Atu7QgZ13LuHzzz6rM5ZfXjyWZ6f9DYAbf/9bjjn6KAYPHswll1wCwKefflpthLs99gj2/dJLL3HMMccAsHz5cgYOHMjee+/NOeecQ8+ePVmxYkUsv6sozUT1qdUk5O4VZnYBQbnrAuBud19gZueGyye4+yIzmw68BVQSdD+dH2NcItICzZo1iylTpjB37lwqKirYe++92WeffRg1ahQTJkygpKSEN954g/PPP58XXngBCD6QX331Vd555x2OPfZYTjjhBGbMmMF/l33Io089g7tz/llnMPONf9Nvv/03/6yPP/qIRQvn06fvXvXG9dVXX/LP5/7OM9P+ztZtt6JTp04AXHTRRQwYMIADDzyQQYMGMWLECDp37lxt21/96lcMGDCAX/7yl0yfPp2JEyfG9vuKMxmkbMd392nAtBrzJtSYvh64PsZYRKSFe/XVVxk6dCjt2rUDYMiQIaxbt47XX3+dE0/8tgf7+vXfNnIcd9xxtGrVit12243PP/8cgFdeeYXXXnuN448eBEBZWRnLPvxgczJYu3YtY847m8uv+hUdOnasN64OHTqyVZut+L8rrmDQwB8yYkRw63XEiBEceeSRTJ8+naeeeoo777yTN9+s3mHz1Vdf5YknngBg8ODBbLvttg399dQSZzIQEWky3Gufn1ZWVtK5c2fmzZuXcputttqq1vbuztmjzuHk4WfWWn/jxo1ceO7ZDDnuxwwafHRacbVu3ZpHn3qG11/+J89Nn86kSZM2X5l897vfZeTIkYwcOZLdd9+d+fOrN5KkOqa4RLpnUI8PY9yXiEijHHzwwTz99NOsW7eONWvW8Mwzz9C+fXt69erFY489BgQfrjXPvmvq378/j0+ZzNq1awH4/LNPWbliBe7OlZddTO/vfY8zzjon7bjWrl3LN998w6GHHsZVV121OTFNnz6djRuDgg6fffYZK1eupHv37rWO6dFHHwXgueee48svv0z759anMeUoXgYmVJWjcPfjY4tKRKSR+vXrx7HHHkufPn3o2bMnpaWldOrUiQcffJDzzjuP6667jo0bN3LyySfTp0+fOvfTv39/Fr3zLqccfywA7du354/jbuXDD5Yy9fEp7LLr//DjowYCMPYXl3Po4UdsMa61a9dwwdkjWV9ejhncfPPNQPDhfuGFF9K2bVsArr/+er7zne9svsENcPXVV3PKKacwadIkDj30UHbccUc6ptE0lY4ozUR3ENQOuj2cPi2cV3fHWhGRHLrkkku45pprKCsro3///lx88cX06tWL6dOn11r33nvvrTa9Zs23z1qcNnw4p486v9ryHj2LWfThx2nH8rsbx21+/ehTz9SqTXTTTTdx00031drusMMO47DDDgOgU6dOPPvss7Ru3Zp//etfvPjii9Wathoj0+UocqqupzMTiWAg+uRuXKAnLkXyzahRo1i4cCHr1q1j+PDh7L333rkOqVH++9//ctJJJ1FZWUmbNm3485//HNu+M12OokkqLy/PdQiShlTJvK5E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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(x=annotated_coeqtl_df_clean['celltype'],\n",
+ " y=annotated_coeqtl_df_clean['gene2_nonzeroratio_onemillionv2'],\n",
+ " hue=annotated_coeqtl_df_clean['gene2_isSig'],\n",
+ " palette='viridis', fliersize=1, showfliers = False)\n",
+ "# plt.savefig('gene2_nonzeroratio_onemillionv2.filtered_results.pdf')\n",
+ "# plt.savefig('gene2_nonzeroratio_onemillionv2.filtered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(x=annotated_coeqtl_df_clean['celltype'], \n",
+ " y=annotated_coeqtl_df_clean['eqtlgene_nonzeroratio_onemillionv2'],\n",
+ " hue=annotated_coeqtl_df_clean['gene2_isSig'],\n",
+ " palette='viridis', fliersize=1, showfliers = False)\n",
+ "# plt.savefig('eqtlgene_nonzeroratio_onemillionv2.filtered_results.pdf')\n",
+ "# plt.savefig('eqtlgene_nonzeroratio_onemillionv2.filtered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "##### unfiltered results"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "CD4T\n",
+ "CD8T\n",
+ "monocyte\n",
+ "DC\n",
+ "NK\n",
+ "B\n"
+ ]
+ }
+ ],
+ "source": [
+ "celltype = 'monocyte'\n",
+ "annotated_coeqtl_df = pd.DataFrame()\n",
+ "for celltype in celltypes:\n",
+ " print(celltype)\n",
+ " celltype_annotated_coeqtl_df = pd.read_csv(workdir/f'output/unfiltered_results/UT_{celltype}/coeqtls_fullresults_fixed.all.annotated.tsv.gz',\n",
+ " compression='gzip',\n",
+ " sep='\\t')[['mean_onemillionv2', 'var_onemillionv2', \n",
+ " 'gene2_nonzeroratio_onemillionv2',\n",
+ " 'eqtlgene_nonzeroratio_onemillionv2',\n",
+ " 'gene2_isSig']]\n",
+ " celltype_annotated_coeqtl_df['celltype'] = celltype\n",
+ " annotated_coeqtl_df = pd.concat([annotated_coeqtl_df, \n",
+ " celltype_annotated_coeqtl_df],\n",
+ " axis=0)\n",
+ " \n",
+ "annotated_coeqtl_df_clean = annotated_coeqtl_df.replace([np.inf, -np.inf], np.nan, inplace=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEGCAYAAACHGfl5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAlpUlEQVR4nO3deXxU5dn/8c9FEhsU3FiEBiFaXKCoEYOKC/pgEaVVtGrV+lNRW6xVRC32Z7WvSlue+nvqiqBSHh+1KC51wZXHWlfU1lKWoCwucSeCbAWJBAjk+v1xTuIQJsmcZM5MMvm+X695Zeac+5y5zszkXPd9n3PuY+6OiIi0bx2yHYCIiGSfkoGIiCgZiIiIkoGIiKBkICIiQH62A2iOrl27enFxcbbDEBFpU+bOnbvK3bslm9cmk0FxcTFz5szJdhgiIm2KmX3a0Dx1E4mIiJKBiIgoGYiICG30mIGISH3V1dUsXbqUjRs3ZjuUrCssLKRXr14UFBSkvIySgYjkhKVLl9K5c2eKi4sxs2yHkzXuzurVq1m6dCl77bVXysupm0hEcsLGjRvp0qVLu04EAGZGly5dIreQlAxEJGe090RQqzmfg7qJpN2ZNGkS5eXl202vqKgAoKioaJvpffv2ZcyYMRmJTSRblAxEQlVVVdkOQSRrlAyk3Wmolj927FgAJk6cmMlwpI36/PPPOe+881i+fDkdOnRg9OjRdb+hZH7zm98wZMgQvve97yWd/95773HxxRezdu1aNm3axNFHH83UqVOZM2cO06ZN4/bbb49rUwAlAxGRZsnPz+fmm29m4MCBrF+/nkMOOYRhw4bRv3//pOV/97vfNbq+yy+/nCuvvJKRI0cC8M477wBQWlpKaWlpeoNPQgeQRSRn/f73v2f//fdn2LBhnH322dx00018+OGHnHDCCRxyyCEcffTRvPvuuwCMGjWKyy+/nCOOOIK9996bxx57rG49N954I4MGDeLAAw/k+uuvB6Bnz54MHDgQgM6dO9OvX7+6407JjBo1qm6d11xzDf379+fAAw9k3LhxACxbtoxevXrVlT/ggAMAePXVV/nBD34AwMqVKxk2bBgDBw7k4osvpk+fPqxatSotn1WsycDMCs1stpktMLNFZvbbJGXMzG43s3Ize9vMBsYZk4i0D3PmzOHxxx9n/vz5PPHEE3WDW44ePZpJkyYxd+5cbrrpJn7+85/XLbNs2TLeeOMNnn32Wa655hoAXnjhBT744ANmz55NWVkZc+fOZdasWdu81yeffML8+fM57LDDmoxrzZo1zJgxg0WLFvH222/z61//GoArr7ySoUOHcuKJJ3Lrrbeydu3a7Zb97W9/y9ChQ5k3bx6nnnoqn332WXM/nu3E3U20CRjq7pVmVgC8YWb/6+5vJZQ5EdgnfBwG3BX+FRFptjfeeIORI0fSsWNHAE466SQ2btzI3//+d84444y6cps2bap7fsopp9ChQwf69+/Pl19+CQTJ4IUXXuDggw8GoLKykg8++IAhQ4bUvT7ttNO47bbb2HnnnZuMa+edd6awsJCf/OQnfP/736+r9V9wwQUMHz6c559/nqeeeoo//elPLFiwYLttmjFjBgAnnHACu+22W3M/nu3Emgzc3YHK8GVB+PB6xUYC08Kyb5nZrmbW092XxRmbiOS2YJeyrZqaGnbddVfKysqSLvOtb31ru+XdnV/96ldcfPHF25Wvrq7mtNNO45xzzuGHP/xhSnHl5+cze/ZsXnrpJR5++GEmT57Myy+/DMC3v/1tLrzwQi688EIGDBjAwoULm9ymdIn9mIGZ5ZlZGbAC+Ju7/7NekSLg84TXS8NpIiLNdtRRR/HMM8+wceNGKisree6559hxxx3Za6+9ePTRR4Fg51q/9l3f8OHDueeee6isDOq1FRUVrFixAnfnoosuol+/flx11VUpx1VZWcm6desYMWIEt912W11iev7556murgZg+fLlrF69ertrXo466ij+8pe/AEGL5d///nfK79uU2M8mcvetQImZ7QrMMLMB7p6Y7pJdKrdd+jOz0cBogN69e8cRqojkkEGDBnHyySdz0EEH0adPH0pLS9lll12YPn06l1xyCRMmTKC6upqzzjqLgw46qMH1HH/88SxZsoTBgwcD0KlTJx544AHef/997r//fg444ABKSkoA+MMf/sCIESMajWv9+vWMHDmSjRs34u7ceuutQLBzHzt2LIWFhUBw0LpHjx51B7gBrr/+es4++2weeeQRjjnmGHr27Ennzp1b8jHVsTibHdu9mdn1wNfuflPCtD8Br7r7Q+Hr94BjG+smKi0tdd3pTNJN1xm0bUuWLKFfv37bTKusrKRTp05s2LCBIUOGMHXq1LozgNqiTZs2kZeXR35+Pv/4xz+45JJLGuzySvZ5mNlcd096nmqsLQMz6wZUu/taM+sIfA/4r3rFngYuM7OHCQ4cr9PxAhFJh9GjR7N48WI2btzI+eef36YTAcBnn33Gj370I2pqathhhx347//+77StO+5uop7An80sj+D4xF/c/Vkz+xmAu08BZgIjgHJgA3BBzDGJSDvx4IMPZvw9L730Ut58881tpo0dO5YLLmj5rm2fffZh/vz5LV5PMnGfTfQ2cHCS6VMSnjtwaZxxiIhkyh133JHtEJpFVyCLiIiSgYiIKBmIiAgatVRE2oFf/upa/r12XdrWt9uuu/DHG/7QaJm8vLy6weYAnnzySYqLi5OW7dSpU91FbdmiZCAiOe/fa9cx4idXpm19M+++tckyHTt2bPAagNZI3UQiIhlQWVnJcccdx8CBAznggAN46qmntiuzbNkyhgwZQklJCQMGDOD1118HgquTBw8ezMCBAznjjDNiaUUoGYiIxKCqqoqSkhJKSko49dRTKSwsZMaMGcybN49XXnmFX/ziF9sNPPfggw8yfPhwysrKWLBgASUlJaxatYoJEybw4osvMm/ePEpLS7nlllvSHq+6iUREYlC/m6i6upprr72WWbNm0aFDByoqKvjyyy/p0aNHXZlBgwZx4YUXUl1dzSmnnEJJSQmvvfYaixcv5sgjjwRg8+bNdeMkpZOSgYhIBkyfPp2VK1cyd+5cCgoKKC4uZuPGjduUGTJkCLNmzeK5557j3HPP5eqrr2a33XZj2LBhPPTQQ7HGp24iEZEMWLduHd27d6egoIBXXnmFTz/9dLsyn376Kd27d+enP/0pF110EfPmzePwww/nzTffpLy8HIANGzbw/vvvpz0+tQxEJOfttusuKZ0BFGV9UZ1zzjmcdNJJlJaWUlJSwv77779dmVdffZUbb7yRgoICOnXqxLRp0+jWrRv33XcfZ599dt1d2SZMmMC+++7b4u1IlNEhrNNFQ1hLHDSEdduWbMjm9izqENbqJhIRESUDERFRMhAREZQMREQEJQMREUHJQERE0HUGItIOXHbV1axYtSZt6+vedXcm33Jjg/NXr17NcccdB8Dy5cvJy8ujW7duAMyePZsddtghbbGki5KBiOS8FavW8OEex6RvhV++1ujsLl261I1LNH78eDp16sS4cePq5m/ZsoX8/Na1+21d0YiI5KhRo0ax++67M3/+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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(x=annotated_coeqtl_df_clean['celltype'],\n",
+ " y=abs(annotated_coeqtl_df_clean['mean_onemillionv2']),\n",
+ " hue=annotated_coeqtl_df_clean['gene2_isSig'],\n",
+ " fliersize=1,\n",
+ " palette='Paired',\n",
+ " showfliers = False)\n",
+ "plt.savefig('mean_onemillionv2.unfiltered_results.pdf')\n",
+ "plt.savefig('mean_onemillionv2.unfiltered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAEGCAYAAACAd+UpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAiN0lEQVR4nO3deXgV9dn/8fedEE00uAJqgxAttUhRI4ZaXGiLItbdWqv+rHvFx1qhWttHrVfVlqe2dcWtLbVWUVxRtC611gVRu1gSUFEUU1dSkE2QSBIj3L8/ZpIGOEnOSWbOMvm8ritXklnvyZnc53u+8517zN0REZFkKsp1ACIiEh8leRGRBFOSFxFJMCV5EZEEU5IXEUmwPrkOoL1+/fp5ZWVlrsMQESkoNTU1y9y9f6p5eZXkKysrmT17dq7DEBEpKGb2Xkfz1F0jIpJgSvIiIgmmJC8ikmB51ScvIrKhlpYWFi5cSFNTU65DybnS0lIGDhxISUlJ2usoyYtIXlu4cCF9+/alsrISM8t1ODnj7ixfvpyFCxey0047pb2eumtEJK81NTWx7bbb9uoED2BmbLvtthl/olGSF5G819sTfKvu/B3UXSOJcsMNN1BXV7fetPr6egAqKio2Wn7IkCGce+65WYlNJBeU5CXxGhsbcx2CSM4oyUuipGqVT5w4EYDJkydnOxwpUB988AEnn3wyixcvpqioiPHjx7edR6n89Kc/ZfTo0Rx44IEp57/55pucddZZrFy5kubmZvbff3+mTJnC7NmzmTp1Ktdff31ch6IkLyKyoT59+nD11VczYsQIVq9ezV577cXYsWMZNmxYyuV/9rOfdbq9CRMmcN5553HkkUcC8OqrrwJQXV1NdXV1tMFvQBdeRaQg/fznP2fo0KGMHTuWE044gauuuop///vfHHzwwey1117sv//+vPHGGwCceuqpTJgwgX322Yedd96Z6dOnt23nyiuvZOTIkey+++5ceumlAOywww6MGDECgL59+7Lrrru2XdtJ5dRTT23b5oUXXsiwYcPYfffdueCCCwBYtGgRAwcObFt+t912A2DmzJkcdthhACxdupSxY8cyYsQIzjrrLAYPHsyyZct6/HdSkheRgjN79mweeOAB5syZw4MPPthW2HD8+PHccMMN1NTUcNVVV/G9732vbZ1Fixbxwgsv8Oijj3LhhRcC8OSTT/LWW2/x0ksvMXfuXGpqapg1a9Z6+3r33XeZM2cOe++9d5dxrVixghkzZvDaa6/xyiuvcMkllwBw3nnnMWbMGL7xjW9w7bXXsnLlyo3WvfzyyxkzZgy1tbUcffTRvP/++93986xH3TUiUnBeeOEFjjzySMrKygA4/PDDaWpq4m9/+xvHHnts23LNzc1tPx911FEUFRUxbNgwPvzwQyBI8k8++SR77rknAA0NDbz11luMHj267fdjjjmG6667ji222KLLuLbYYgtKS0v57ne/y6GHHtrWSj/ttNMYN24cTzzxBA8//DC/+93vePnllzc6phkzZgBw8MEHs/XWW3f3z7MeJXkRKTjuvtG0devWsdVWWzF37tyU62y66aYbre/uXHTRRZx11lkbLd/S0sIxxxzDiSeeyDe/+c204urTpw8vvfQSTz/9NPfccw833ngjzzzzDACf+9znOP300zn99NMZPnw48+bN6/KYoqDuGhEpOPvttx+PPPIITU1NNDQ08Nhjj7HZZpux0047cf/99wNB0tywtbyhcePGceutt9LQ0AAE91QsWbIEd+eMM85g11135fzzz087roaGBlatWsUhhxzCdddd1/aG88QTT9DS0gLA4sWLWb58+Ub3bey3337cd999QPAJ46OPPkp7v51RS15ECs7IkSM54ogj2GOPPRg8eDDV1dVsueWWTJs2jbPPPptJkybR0tLC8ccfzx577NHhdg466CDmz5/PqFGjACgvL+fOO+9kwYIF3HHHHey2225UVVUB8Itf/IJDDjmk07hWr17NkUceSVNTE+7OtddeCwRJe+LEiZSWlgLBxd7tt9++7cIwwKWXXsoJJ5zAvffey1e/+lV22GEH+vbt25M/EwAW10eE7qiurnY9GUqipnHyhW3+/PnsuuuuG01vaGigvLycNWvWMHr0aKZMmdI2IqYQNTc3U1xcTJ8+ffj73//O2WefnbLrKdXfw8xq3D3lWEy15EWkII0fP57XX3+dpqYmTjnllIJO8ADvv/8+3/72t1m3bh2bbLIJv//97yPZrpK8iBSku+66K+v7POecc3jxxRfXmzZx4kROO+20Hm/7C1/4AnPmzOnxdjakJC8ikqabbrop1yFkTKNrREQSTEleRCTBlORFRBIs9j55M3sXWA2sBT7raJiPiEh3/Piii/lo5arItrf1Vlvy6yt+0ekyxcXFbUXGAB566CEqKytTLlteXt52s1UuZOvC69fdvefl1ERENvDRylUc8t3zItve47dc2+UyZWVlHZZPyDfqrhER6aGGhgYOOOAARowYwW677cbDDz+80TKLFi1i9OjRVFVVMXz4cJ5//nkguBt21KhRjBgxgmOPPTbyVn82krwDT5pZjZmN33CmmY03s9lmNnvp0qVZCEdEpGcaGxupqqqiqqqKo48+mtLSUmbMmEFtbS3PPvssP/zhDzcqOHbXXXcxbtw45s6dy8svv0xVVRXLli1j0qRJPPXUU9TW1lJdXc0111wTaazZ6K7Z193/Y2YDgL+a2Rvu3law2d2nAFMgKGuQhXhERHpkw+6alpYWLr74YmbNmkVRURH19fV8+OGHbL/99m3LjBw5ktNPP52WlhaOOuooqqqqeO6553j99dfZd999Afj000/b6uhEJfYk7+7/Cb8vMbMZwJeBWZ2vJSJSOKZNm8bSpUupqamhpKSEyspKmpqa1ltm9OjRzJo1i8cee4yTTjqJH/3oR2y99daMHTuWu+++O7bYYu2uMbPNzaxv68/AQcC8ztcSESksq1atYsCAAZSUlPDss8/y3nvvbbTMe++9x4ABAzjzzDM544wzqK2t5Stf+QovvvgidXV1AKxZs4YFCxZEGlvcLfntgBlm1rqvu9z9iZj3KSK9yNZbbZnWiJhMtpepE088kcMPP5zq6mqqqqoYOnToRsvMnDmTK6+8kpKSEsrLy5k6dSr9+/fntttu44QTTmh7itWkSZPYZZddenwcrVRqWBJPpYYLW0elhnurTEsNawiliEiCKcmLiCSYkryISIIpyYuIJJiSvIhIginJi4gkmB7/JyIF7fvn/4gly1ZEtr0B/bbhxmuu7HD+8uXLOeCAAwBYvHgxxcXF9O/fH4CXXnqJTTbZJLJYoqAkLyIFbcmyFfx7u69Gt8EPn+t09rbbbttWt+ayyy6jvLycCy64oG3+Z599Rp8++ZNa8ycSEZECdeqpp7LNNtswZ84cRowYQd++fddL/sOHD+fRRx+lsrKSO++8k+uvv55PP/2Uvffem5tvvpni4uLYYlOfvIhIBBYsWMBTTz3F1Vdf3eEy8+fP59577+XFF19k7ty5FBcXM23atFjjUkteRCQCxx57bJct8qeffpqamhpGjhwJBHXpBwwYEGtcSvIiIhHYfPPN237u06cP69ata/u9teywu3PKKadwxRVXZC0uddeIiESssrKS2tpaAGpra3nnnXcAOOCAA5g+fTpLliwBYMWKFSnLEkdJLXkRKWgD+m3T5YiYjLfXQ8cccwxTp06lqqqKkSNHtpUOHjZsGJMmTeKggw5i3bp1lJSUcNNNNzF48OAe77MjSvIiUtA6G9Met8suuyzl9LKyMp588smU84477jiOO+64GKNan7prREQSTEleRCTBlORFJO/l0xPscqk7fwcleRHJa6WlpSxfvrzXJ3p3Z/ny5ZSWlma0ni68ikheGzhwIAsXLmTp0qW5DiXnSktLGThwYEbrKMmLSF4rKSlhp512ynUYBUvdNSIiCaYkLyKSYEryIiIJpiQvIpJgSvIiIgmmJC8ikmBZSfJmVmxmc8zs0WzsT0REAtlqyU8E5mdpXyIiEoo9yZvZQOBQ4Ja49yUiIuvLRkv+OuDHwLpUM81svJnNNrPZum1ZRCRasSZ5MzsMWOLuNR0t4+5T3L3a3av79+8fZzgiIr1O3C35fYEjzOxd4B5gjJndGfM+RUQkFGuSd/eL3H2gu1cCxwPPuPt34tyniIj8l8bJi4gkWJdJ3syGmtkBZla+wfSDM9mRu89098MyDVBERLqv0yRvZhOAh4FzgXlmdmS72b+IMzAREem5rh4aciawl7s3mFklMN3MKt19MmCxRyciIj3SVZIvdvcGAHd/18y+RpDoB6MkLyKS97rqk19sZlWtv4QJ/zCgH7BbjHGJiEgEukryJwOL209w98/c/WRgdGxRiYhIJDpN8u6+0N0Xm9lkM9tng3kvxhuaiIj0VLrj5GuBS8yszsyuNLPqOIMSEZFopJXk3f12dz8E+DKwAPiVmb0Va2QiItJjmd7xOgQYClQCb0QejYiIRCqtJG9mrS33nwGvEYydPzzWyEREpMe6Giff6h1glLsvizMYERGJVlpJ3t1/a2YV4QibPu2mz4otMhER6bG0kryZ/ZKgVPDrwNpwsgNK8iIieSzd7pqjgS+6e3OcwYiISLTSHV3zNlASZyAiIhK9dFvya4C5ZvY00Naad/cJsUQlIiKRSDfJ/yn8EhGRApLu6JrbzWwTYJdw0pvu3hJfWCIiEoV0R9d8DbgdeJegjvyOZnaKhlCKiOS3dLtrrgYOcvc3AcxsF+BuYK+4ApN43HDDDdTV1a03rb6+HoCKioqNlh8yZAjnnntuVmITkeilm+RLWhM8gLsvMDONtkmIxsbGXIcgIjFJN8nPNrM/AHeEv58I1MQTksQpVat84sSJAEyePDnb4YhIzNJN8mcD5wATCPrkZwE3xxWUiIhEI93RNc3ANeGXiIgUiE6TvJnd5+7fNrNXCWrVrMfdd48tMhER6bGuWvITw++HxR2IiIhEr9Mk7+6Lwu/vdWfjZlZK0H+/abiv6e5+aXe2JSIimeuqu2Y1KbppCC6+urtv0cX2m4Ex7t4QDrl8wcz+7O7/6F64IpJUqe7hgI7v49A9HOnpqiXftycbd3cHGsJfS8KvVG8aIiIp6T6OnumqJb9NZ/PdfUVXOzCzYoIx9UOAm9z9nxlFKCK9Qketct3H0TNdXXitIWh5W4p5Duzc1Q7cfS1QZWZbATPMbLi7z2udb2bjgfEAgwYNSjNsERFJR1fdNTtFtSN3X2lmM4GDgXntpk8BpgBUV1erK0dEJEJdddcMdfc3zGxEqvnuXtvF+v2BljDBlwEHAr/qdrQiIpKRrrprzifoSrk6xTwHxnSx/g7A7WG/fBFwn7s/mnGUIiLSLV1114wPv3+9Oxt391eAPbuzroiI9Fy6Dw0pBg4FKtuv4+6qZSMiksfSrUL5CNAEvAqsiy8cERGJUrpJfqCKkYmIFJ6iNJf7s5kdFGskIiISuXRb8v8guJGpCGgh/do1IiKSQ5k8yHsU8GpYj0ZERApAut01bwHzlOBFRApLui35RcBMM/szQflgQEMoRUTyXbpJ/p3wa5PwS0RECkC6D/K+HMDMNnf3T+INSUREopLuHa+jgD8A5cAgM9sDOMvdvxdncCId6egpQqm0Ltdal7wreuKQJEm63TXXAeOAPwG4+8tmNjquoES6UldXx9x581m7WafPtQGg6NNgvEDN2x92uWzxmi6fgyNSUNJN8rj7B2brPTtkbfThiKRv7Wbb0Dj0kEi3WfbG45FuTyTX0k3yH5jZPoCb2SbABGB+fGGJiEgU0h0n/z/AOUAFsBCoCn8XEZE8lu7ommXAiTHHIiIiEUt3dE1/4Ew2rid/ejxhiYhIFNLtk38YeB54Cl1wFREpGOkm+c3c/X9jjURERCKX7oXXR80s2rFqIiISu3ST/ESCRN9kZqvDr4/jDExERHou3dE1feMOREREopf2Ha9mdgTQWspgprs/Gk9IIiISlXSHUP4SGAlMCydNNLP93P3C2CLLkY4KX9XX1wNQUVGx3nQVsxKRfJZuS/4QoMrd1wGY2e3AHCBxSb4jjY2NuQ5BRCRjaXfXAFsBrSX6tow+lPzQUau8tUzt5MmTsxmOiEiPpJvkrwDmmNmzgBH0zV8UW1QiIhKJtIZQuvvdwFeAB8OvUe5+T+t8M/tSqvXMbEcze9bM5pvZa2aW3lMbREQkEpnUk19E+NCQFO4ARqSY/hnwQ3evNbO+QI2Z/dXdX888VBERyVQmffKdsVQTwzeGReHPq81sPkG5YiX5XkwjmESyJ6ok710tYGaVwJ7APzeYPh4YDzBo0KCIwpFCpBFMItGLKsl3yszKgQeAH7j7euUQ3H0KMAWgurq6yzcLKXwawSS9Ua4+wXZ54dUCO3ax2KedrF9CkOCnufuDGcYnIpJojY2NsX6K7bIl7+5uZg8Be3WyzFdSTbfgyd9/AOa7+zXdDbI3SvWurz5ryQeZnJug87NVrj7Bpttd8w8zG+nu/8pw+/sCJwGvmtnccNrF7v54htvZSG880dRnLflK52b+SjfJfx04y8zeAz4hGE3j7r57Zyu5+wt0MPImDkk60VK9IanPWvKBzs3Ckm6S/0asUXSDTjQRka6lW0/+PQAzGwCUxhqRiIhEJq2yBmZ2hJm9BbwDPAe8C/w5xrhERCQC6XbX/Jygds1T7r6nmX0dOCG+sEQKl+7olXyS7jNeW9x9OVBkZkXu/ixQFV9YIskT93hokVTSbcmvDO9afR6YZmZLCIqPicgGdEev5JN0k/wsgoeGTAS+Q/DQkJ/FFJOISM4k7R6cdLtrDPgLMBMoB+4Nu29ERBKvkLva0h1CeTlwuZntDhwHPGdmC939wFijExHJsqTdg5NuS77VEmAxsBwYEH04IiISpXTHyZ9tZjOBp4F+wJldlTQQEZHcS/fC62CCWvBzY4xFREQilm6f/IVxByIiItHLypOhRER6k47uek6ldbnWi7ud6c5wTSV5EZGI1dXVMXfefNZutk2XyxZ9Gjz1tObtDztdrnjNim7FoiQvBam+vp7iNasoe6PHz59ZT/Ga5dTX62Zu6bm1m21D49BDItted8/1TIdQiohIAVFLPqHi6hOE/LiNu6KigsXNfSJtKUHQWqqo2C7SbUZF1S2lO5TkEyqOPkHofr+gxKdQb7eX7FCST7Co+wQh837BuD5R1NXVQVHfjGIpdKpuWTjiuGbU3etFSvISq7q6Oua/uYD+FTt2vXCfEgCWNXTdMl2zphHKe1eST5KkdyfmEyV5iV3/ih351vd+HOk2f/OTc2mJdIuSTUnvTozjmlF3rxcpyeeYujMkX8XZ2q6vr8+L7sTeIO+TfNI/1qk7Q/JVXOfm0voPKCkuUiMkS/I+ycd5ouULdWcUrqQ3QuI4N6ff/GtWLq6PdJvSsbxP8hDfiSbSU72hEZJUcXdH5Ut6zY8oRAqYGiGFqbd0R8Wa5M3sVuAwYIm7D49zXyJJsnLZElYubkn/IjuF1Q2UL+LsjipesyKtC8FFTR8DsK50i06XC0YO5d/omtuAG4GpMe9H8lR9fT0fN3wSecu0pbmZorUfR7rNfNLS3Exzy9q0hg0W4hDDpCsrK2PIkCFpLVtXtxqAITt3lcC3S3ub7cWa5N19lplVxrkPkaTSEMPCVVFRkfYdyHHfsZzzPnkzGw+MBxg0aFCOo8m+pLd0Kyoq2LShMZ7RQyWdf7yVnonr3Fxa/wHrPmuBsvzos066nCd5d58CTAGorq72DefHeaI1l28e6Tal94nr/Py0qZHi5mbVy5cey3mS7+3U0pV8Fde52XphsinSrWautzQg8z7Jx3mi9Ssvi3Sb0vvE+Sa9pmTLXlUvX+IR9xDKu4GvAf3MbCFwqbv/Ic59ZqK+vj7tYWdxP2xXRLKrtzQg4x5dc0Kc2++pxsbGvHnYrohIHPK+uyZu+fKwXRGROPT6JC/xW1r/QVoXt1YuWwLAVv0GdLlsS3MzlPQ4NJGs6ahWTkddwVF1+yrJ54EkJ8FM7tBbuTiom5lOf+bKzcpY1e2oohXX61fcEu1t8dD9W+MlPmVl8fbfK8nnWNKTYCYtkUzu/Js4cWJat/HHLa7Xr3nb4DpROiNh0r8tHjK9NT6ON7C2Al55IK7j6/fFXTaanqvBGAWR5JN8oiU9CSZdXK9fJuLablxvYP2+uAv19fWsau52aJGI8/i6U2MmLnmf5JN+oonkqzjfwCZOnMjiHDdC8uENOhvyPskn/UQTEYlT7vsrREQkNnnfkpfuqa+vp3jNKhW4EunllORFJOvUCMkeJfmEqqioYHFzHxW4EunllOSlYEX9DM3WbepmofipEZI9SvJSkDIZWhvnzUIi+U5JXgpSbxnjLNJTGkIpIpJgasmLFIhcVTGUwqYkL1Lg4q5iKIVNSV6kQKhVLt2hPnkRkQRTkhcRSTAleRGRBOvVffJx1M9Q7QwRySe9OsmLiGwo1VDVjoapQv4PVe3VST6O+hmqnSEaz548hTxMtVcneZFsKuRE0Zsk7Q1XSV4kYklLElLYNLpGRCTBYm/Jm9nBwGSgGLjF3X8Z9z6TIJOLP4XWp6s+awE9DyBbYk3yZlYM3ASMBRYC/zKzP7n76z3ddtKugKcj0z7dQvsnUp91YYjif0/PA8ieuFvyXwbq3P1tADO7BzgS6HGST6U7SWLDRFjU9DG2riXt9b2oZL3kGFUS7OkbUkcnen19PY2NjetNa1zbBEDZOtto+bKyMioqKtpN6fk/UZxvtr3xzT8fZPq/l+pv3tEnvI7otUtP3Em+Avig3e8Lgb3bL2Bm44HxAIMGDUp7w1G8uKmSVX39Zxslwc4ESbB9Us+PlkRHf59U/0j19fUAGyTzQBL+kfQJIVrZPh/0+vWMuXt8Gzc7Fhjn7t8Nfz8J+LK7pzxLqqurffbs2bHFIyKSRGZW4+7VqebFPbpmIbBju98HAv+JeZ8iIhKKO8n/C/iCme1kZpsAxwN/inmfIiISirVP3t0/M7PvA38hGEJ5q7u/Fuc+RUTkv2IfJ+/ujwPRlXkUEZG06Y5XEZEEU5IXEUkwJXkRkQRTkhcRSbBYb4bKlJktBd7L4i77AcuyuL9s0/EVNh1f4cr2sQ129/6pZuRVks82M5vd0V1iSaDjK2w6vsKVT8em7hoRkQRTkhcRSbDenuSn5DqAmOn4CpuOr3DlzbH16j55EZGk6+0teRGRRFOSFxFJsEQleTPb3szuMbN/m9nrZva4me1iZo1mNsfM5pvZS2Z2Sop1R5rZWjP7lplta2Zzw6/FZlbf7vdNcnFsYYwZH5+ZbWlmj5jZy2b2mpmdlq/Hl01mdqqZfS4P4lgb/t1fC1+j882sqN38L5vZLDN708zeMLNbzGyzXMacKTNzM7u63e8XmNll4c+XmdkF4c+lZvZXM7s0R6H2WLvX82UzqzWzfXIdU+xVKLPFzAyYAdzu7seH06oIHrj6b3ffM5y2M/CgmRW5+x/DacXArwhKIuPuy4GqcN5lQIO7X5XN49lQD47vHOB1dz/czPoDbwLT3L0qXP4y8uD4cuBUYB65f4hNY7vXYgBwF7AlcKmZbQfcDxzv7n8Pz4FjgL7AmhzF2x3NwDfN7Ap3T3mDUNi4eACocffLsxpdtNq/nuOAK4Cv5jKgJLXkvw60uPtvWye4+1zWf8Ys4UPFzwcmtJt8LsEJtiT+MLutu8fnQN8wQZQDK4DPshGwmVW2a33OM7NpZnagmb1oZm+FrdRtzOwhM3vFzP5hZruH615mZrea2Uwze9vMJrTb7vnh9uaZ2Q/aTT853M7LZnaHmfU1s3fMrCScv4WZvWvBYymrgWlhq6vMzPYys+fMrMbM/mJmO2Tjb9Seuy8heN7x98PX6xyCN/W/h/Pd3ae7+4fZjq2HPiMYbXJeB/P7APcAb7n7hVmLKn5bAB/lOojEtOSB4UBNmsvWAkMBzKwCOBoYA4yMJ7RIdOv4gBsJnsb1H4IW4HHuvi768Do0BDiWIHn9C/h/wH7AEcDFBG9Sc9z9KDMbA0wl/BRFcAxfD+N+08x+A+wOnEbwQHgD/mlmzwGfAj8B9nX3ZWa2jbuvNrOZwKHAQwRPJnvA3e83s3OAC9x9dvgmcANwpLsvNbPjgP8DTo/x75KSu78ddtcMIHjNb892DDG5CXjFzH6dYt6Pgafc/QfZDSkWZWY2FygFdiDIKzmVpCSfCWv383XA/7r72qDxlAjtD2QcMJfgZPs88Fcze97dP85SLO+4+6sAZvYa8LS7u5m9ClQCgwm6IHD3Z8LrBVuG6z7m7s1As5ktIeia2g+Y4e6fhNt8ENif4BPL9NbuAHdfEW7jFoIk8hDBm8OZKWL8IkFC/Wt4DhQDiyL7C2QuMSdiK3f/2MymEnzCbNxg9gvAKDPbxd0XZD+6SLXvrhkFTDWz4Z7DsepJ6q55DdgrzWX3BOaHP1cD95jZu8C3gJvN7KjIo+u57h7facCD4Uf9OuAd/tvKz4bmdj+va/f7OoJGRqqE1voP0X7dtZ0sTzh9o38kd38RqDSzrwLF7j6vg3Vfc/eq8Gs3dz+oowOKU3hNZS1B12Emr3khuA44A9h8g+mzgB8Af86Hi+FRCbvZ+gEpC4dlS5KS/DPApmbW1lIzs5EELUXaTasEriL4eI677+Tule5eCUwHvufuD2Up5kx06/iA94EDwnnbEbRa385CvOmaBZwIYGZfA5Z18SljFnCUmW1mZpsTdLU9DzwNfNvMtg23tU27daYCdwN/bDdtNUE3EAQXo/uHLS/MrMTMvtTD48pYeGH8t8CNYcvvRuAUM9u73TLfMbPtsx1bFMJPV/cRJPoN5z0AXAk8YWZbZTm0WJjZUIJPhctzGUdiumvCLoCjgevM7EKgCXiXoIXweTObQ9BPthq4oXVkTaHowfH9HLgt7B4xgq6pfCrvehnwRzN7hWDEyEbDW9tz91ozuw14KZx0i7vPATCz/wOeM7O1wByCETQA04BJBIm+1W3Ab82sERhF8Cnu+rCrqA9BqzMbD51v7cMtIbhAeQdwDYC7f2hmxwNXhSNv1hG8yT2YhbjicjXw/VQz3P234RvYn8zsIHdvym5okWh9PSH4fzvF3dfmMB6VNZDkM7NvEVxUPSnXsYhkW2Ja8iKpmNkNwDeAQ3Idi0guqCUvIpJgSbrwKiIiG1CSFxFJMCV5EZEEU5IXCVlQmfLG8Of21RHzomKlSHcoyYt07VRASV4KkpK8JF6K6pT9zewBM/tX+LVvJ+t+i/UrVh5qZjPazR8b1s/BzBrM7GoL6og/Hd7Bipl93syeCCtcPh/eCSmSFUrykmhheYKfAGPcfQ9gIjAZuNbdRxIUR7ulo/XdfTowGzgxLDz1OLBrawInqA3Uenfx5kCtu48AngNaH34xBTjX3fcCLgBuju4IRTqnm6Ek6cawQXVKMzsQGNau6ugWZta3ow20F5aXuAP4jpn9kaAkwsnh7HXAveHPdxI8vKUc2Ae4v93+Nu3hMYmkTUleki5VdcoiYJS7r1fyNoNS038EHiGoH3S/u3f0EBYP97WytfysSLapu0aSLlV1yidpVyTLgscodqZ9xUrc/T8ED2G5hKDQWasigkJnEDwc5YWwouY7FjyNCgvs0YPjEcmIWvKSaO7+WorqlBOAm8LKl30IKjv+TyebuY12FSvDTwDTgP7u/nq75T4BvmRmNcAq4Lhw+onAb8zsEoJqk/cAL0d1jCKdUe0akW4Ix9PPcfc/tJvW4O7lOQxLZCNK8iIZClvqnwBjw8cTtk5Xkpe8oyQvIpJguvAqIpJgSvIiIgmmJC8ikmBK8iIiCaYkLyKSYP8fsn0+EcPGrYUAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(x=annotated_coeqtl_df_clean['celltype'], \n",
+ " y=annotated_coeqtl_df_clean['var_onemillionv2'],\n",
+ " hue=annotated_coeqtl_df_clean['gene2_isSig'],\n",
+ " palette='Paired', fliersize=1,\n",
+ " showfliers = False)\n",
+ "plt.savefig('var_onemillionv2.unfiltered_results.pdf')\n",
+ "plt.savefig('var_onemillionv2.unfiltered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEGCAYAAACHGfl5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAApOklEQVR4nO3deZyVZf3/8debYRQMFBVcAgX3JRfCIdMMC0NNUyw1Nb+KuKDmQpqW1veXVn7rW2a5S2TumiauFV+03EizlNUUUEe0ZBQFFBRZZPn8/rjvocNwhnNu5iyzvJ+PxzzmnPu+7vt87jlnzue+r+u6r0sRgZmZdWydqh2AmZlVn5OBmZk5GZiZmZOBmZnhZGBmZkDnagewLnr27Bn9+vWrdhhmZm3KxIkT50ZEr3zr2mQy6NevHxMmTKh2GGZmbYqkfzW3ztVEZmbmZGBmZk4GZmZGG20zyGfZsmXMmjWLJUuWVDuUquvSpQt9+vShtra22qGYWRvRbpLBrFmz6N69O/369UNStcOpmohg3rx5zJo1i2222aba4ZhZG1HWaiJJN0l6V9KLzayXpKsl1Ut6QdKAdX2tJUuWsOmmm3boRAAgiU033dRXSGaWSbnbDG4BDl7L+i8DO6Q/I4AbWvJiHT0RNPLfwcyyKms1UUSMl9RvLUWGArdFMo723yX1kLRlRLxdzrisY7vmmmuor69fY3lDQwMAvXv3Xm359ttvzznnnFOR2KzjuOaaaxg3btwayxctWkSWqQUkscEGG6y27OCDD878ma12b6LewJs5z2ely9YgaYSkCZImzJkzpyLBWceyePFiFi9eXO0wzKqi2g3I+eoz8qbEiBgNjAaoq6trFTPyvPnmm5x44onMnj2bTp06MWLECEaOHNls+R/84AcMGjSIL33pS3nXv/zyy5x++unMnz+fpUuX8vnPf57Ro0czYcIEbrvtNq6++upyHUqH0twZU+N7d9VVV1UyHOugzjnnnFZ1xVntZDAL2CrneR/grSrFklnnzp254oorGDBgAB9++CF77bUXQ4YMYdddd81b/kc/+tFa93fuuedy3nnnMXToUAD++c9/AlBXV0ddXV1pgzczy1HtaqKHgRPTXkWfBRaUur3gxz/+MTvvvDNDhgzhuOOO4xe/+AWvvfYaBx98MHvttRef//znmTFjBgAnnXQS5557Lvvuuy/bbrstY8aMWbWfyy+/nIEDB7LHHntwySWXALDlllsyYEDSAap79+7ssssuq+qd8znppJNW7fOiiy5i1113ZY899uCCCy4A4O2336ZPnz6ryu++++4APPnkk3zlK18BYM6cOQwZMoQBAwZw+umn07dvX+bOnVuqP5eZdVBlvTKQ9DvgC0BPSbOAS4BagIgYBYwFDgHqgUXA8FK+/oQJE7jvvvuYPHkyy5cvZ8CAAey1116MGDGCUaNGscMOO/CPf/yDb37zmzz++ONA8oX89NNPM2PGDA4//HCOOuooHn30UV599VWee+45IoLDDz+c8ePHM2jQoFWv9cYbbzB58mT23nvvgnG99957PPDAA8yYMQNJzJ8/H4DzzjuPwYMHs++++3LggQcyfPhwevTosdq2P/zhDxk8eDAXX3wx48aNY/To0SX7e5lZx1Xu3kTHFVgfwFnlev2nn36aoUOH0rVrVwAOO+wwlixZwt/+9jeOPvroVeWWLl266vERRxxBp06d2HXXXXnnnXcAePTRR3n00Uf59Kc/DcDChQt59dVXVyWDhQsXcuSRR3LllVey4YYbFoxrww03pEuXLpx66qkceuihq876hw8fzkEHHcS4ceN46KGH+PWvf83UqVPXOKYHHngASHoMbLzxxuv65zEzW6XabQZlla971sqVK+nRowdTpkzJu83666+/xvYRwcUXX8zpp5++Rvlly5Zx5JFHcvzxx/O1r32tqLg6d+7Mc889x2OPPcbdd9/Ntddeu+rK5JOf/CQnn3wyJ598Mrvtthsvvrj6/XpZupyZmRWr2m0GZbXffvvxhz/8gSVLlrBw4UL+9Kc/scEGG7DNNttw7733AsmXa9Oz76YOOuggbrrpJhYuXAgk/dHfffddIoJTTjmFXXbZhfPPP7/ouBYuXMiCBQs45JBDuPLKK1clpnHjxrFs2TIAZs+ezbx589bo877ffvvx+9//HkiuWN5///2iX9fMrDnt+spg4MCBHH744ey555707duXuro6NtpoI+68807OPPNMLrvsMpYtW8axxx7Lnnvu2ex+DjzwQKZPn84+++wDQLdu3bjjjjt45ZVXuP3229l9993p378/AD/5yU845JBD1hrXhx9+yNChQ1myZAkRwa9+9Ssg+XIfOXIkXbp0AZJG6y222GJVAzfAJZdcwnHHHcc999zD/vvvz5Zb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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(x=annotated_coeqtl_df_clean['celltype'],\n",
+ " y=annotated_coeqtl_df_clean['gene2_nonzeroratio_onemillionv2'],\n",
+ " hue=annotated_coeqtl_df_clean['gene2_isSig'],\n",
+ " palette='Paired', fliersize=1, showfliers = False)\n",
+ "plt.savefig('gene2_nonzeroratio_onemillionv2.unfiltered_results.pdf')\n",
+ "plt.savefig('gene2_nonzeroratio_onemillionv2.unfiltered_results.png')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEGCAYAAACHGfl5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAp2klEQVR4nO3de5xVddn38c+XAQUERAXSQAXPp5RwyENqpaGkKd6pt5p3glZYHiB9rLR60oo7M7M8S+TjqSgtzTxxE2UhaZZyMuWgkpqAJ8AjAcMA1/PHWsO9GfbM7DWz157T9/167dfsvdZvrX2tPTP7Wmv9TooIzMysc+vS2gGYmVnrczIwMzMnAzMzczIwMzOcDMzMDOja2gE0R79+/WLw4MGtHYaZWbsya9as5RHRv9i6dpkMBg8ezMyZM1s7DDOzdkXSvxpa59tEZmbmZGBmZk4GZmZGO60zKKa2tpYlS5awZs2a1g6l1XXv3p1BgwbRrVu31g7FzNqJDpMMlixZQu/evRk8eDCSWjucVhMRrFixgiVLljBkyJDWDsfM2olcbxNJulXSm5KebWC9JF0naZGkf0ga1tz3WrNmDdttt12nTgQAkthuu+18hWRmmeRdZ3A7MLKR9Z8Cdk8fY4GbW/JmnT0R1PHnYGZZ5XqbKCJmSBrcSJFRwJ2RjKP9N0l9Je0QEa/lGZeZWUtcf/31LFq0aLPlS5cuBWDgwIGbLN9tt9244IILKhJbc7V2a6KBwOKC10vSZZuRNFbSTEkzly1bVpHgzMyyWL16NatXr27tMJqltSuQi93PKDrbTkRMAiYBVFdXt4kZeRYvXsyZZ57J66+/TpcuXRg7dizjx49vsPy3v/1tjjjiCD75yU8WXf/cc89xzjnn8M4771BTU8Phhx/OpEmTmDlzJnfeeSfXXXddXodiZhk0dJZf9/9/7bXXVjKcsmjtZLAE2LHg9SDg1VaKJbOuXbty9dVXM2zYMN5//30OPPBARowYwT777FO0/He/+91G9zdu3DguvPBCRo0aBcAzzzwDQHV1NdXV1eUN3sysQGvfJnoAODNtVXQw8G656wu+973vsddeezFixAhOP/10fvSjH/HPf/6TkSNHcuCBB3L44YezcOFCAMaMGcO4ceM49NBD2WWXXbjnnns27ueqq65i+PDh7L///lx22WUA7LDDDgwbljSA6t27N3vvvffGe4bFjBkzZuM+L7nkEvbZZx/2339/Lr74YgBee+01Bg0atLH8hz70IQCmT5/Opz/9aQCWLVvGiBEjGDZsGOeccw4777wzy5cvL9fHZWadVK5XBpJ+BXwc6CdpCXAZ0A0gIiYCU4BjgUXAKuCscr7/zJkzuffee5kzZw7r1q1j2LBhHHjggYwdO5aJEyey++678/e//51zzz2XP/3pT0DyhfzYY4+xcOFCTjjhBE4++WSmTZvGCy+8wJNPPklEcMIJJzBjxgyOOOKIje/18ssvM2fOHA466KAm43rrrbe47777WLhwIZJ45513ALjwwgs58sgjOfTQQzn66KM566yz6Nu37ybbfuc73+HII4/k0ksvZerUqUyaNKlsn5eZdV55tyY6vYn1AZyX1/s/9thjjBo1ih49egBw/PHHs2bNGv76179yyimnbCxXU1Oz8fmJJ55Ily5d2GeffXjjjTcAmDZtGtOmTePDH/4wACtXruSFF17YmAxWrlzJSSedxDXXXEOfPn2ajKtPnz50796dL3zhCxx33HEbz/rPOussjjnmGKZOncr999/PT3/6U55++unNjum+++4DYOTIkWyzzTbN/XjMzDZq7TqDXCW5ZlMbNmygb9++zJ07t+g2W2655WbbRwSXXnop55xzzmbla2trOemkkzjjjDP4zGc+U1JcXbt25cknn+SRRx7hrrvu4oYbbth4ZfLBD36Qs88+m7PPPpv99tuPZ5/dtL9esWMyM2up1q4zyNVhhx3Ggw8+yJo1a1i5ciUPP/wwPXv2ZMiQIfzmN78Bki/X+mff9R1zzDHceuutrFy5EkjaEr/55ptEBJ///OfZe++9ueiii0qOa+XKlbz77rsce+yxXHPNNRsT09SpU6mtrQXg9ddfZ8WKFZu1Vz7ssMP49a9/DSRXLG+//XbJ72tm1pAOfWUwfPhwTjjhBA444AB23nlnqqur2XrrrZk8eTJf/vKXmTBhArW1tZx22mkccMABDe7n6KOPZsGCBRxyyCEA9OrVi1/84hc8//zz/PznP+dDH/oQQ4cOBeD73/8+xx57bKNxvf/++4waNYo1a9YQEfzkJz8Bki/38ePH0717dyCptN5+++03VnADXHbZZZx++uncfffdfOxjH2OHHXagd+/eLfmYzMxQe7ztUF1dHfVnOluwYAF77733ZmVXrlxJ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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sns.boxplot(x=annotated_coeqtl_df_clean['celltype'], \n",
+ " y=annotated_coeqtl_df_clean['eqtlgene_nonzeroratio_onemillionv2'],\n",
+ " hue=annotated_coeqtl_df_clean['gene2_isSig'],\n",
+ " palette='Paired', fliersize=1, showfliers = False)\n",
+ "plt.savefig('eqtlgene_nonzeroratio_onemillionv2.unfiltered_results.pdf')\n",
+ "plt.savefig('eqtlgene_nonzeroratio_onemillionv2.unfiltered_results.png')"
+ ]
+ },
+ {
+ "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.7.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/04_coeqtl_mapping/replication_in_bios.py b/04_coeqtl_mapping/replication_in_bios.py
new file mode 100644
index 0000000..e20c8c2
--- /dev/null
+++ b/04_coeqtl_mapping/replication_in_bios.py
@@ -0,0 +1,233 @@
+import argparse
+import os
+import subprocess
+from pathlib import Path
+
+import pandas as pd
+import statsmodels.api as sm
+from statsmodels.stats.multitest import multipletests
+from tqdm import tqdm
+
+workdir = Path("./coeqtl_mapping")
+bios_exp_path = 'BIOS_NoRNAPhenoNA_NoSexNA_NoMixups_NoMDSOutlier_20RNAseqAlignemntMetrics/data/gene_read_counts_BIOS_and_LLD_passQC.tsv.SampleSelection.ProbesWithZeroVarianceRemoved.TMM.SampleSelection.ProbesWithZeroVarianceRemoved.Log2Transformed.ProbesCentered.SamplesZTransformed.CovariatesRemovedOLS.txt.gz'
+
+unique_mappingfile = "./resources/features_v3_reformated_names.tsv"
+bios_gt_prefix = Path('./genotypes-hrc-imputed-vcf/')
+gte_mapping_path = "./coeqtl_mapping/bios/gte.tsv"
+
+
+def get_snps_from_vcffile(bashfile_path, vcf_path, snps_path, savepath):
+ response = subprocess.run([bashfile_path, vcf_path, snps_path, savepath])
+ print(response)
+ return None
+
+
+def get_genes_from_gzipfile(expression_path, gene_path, savepath):
+ print("Loading exp dataframe...")
+ exp_df = pd.read_csv(expression_path, sep='\t', index_col=0, compression='gzip')
+ print("Full exp loaded.")
+ genes = pd.read_csv(gene_path, sep='\t')['ensembl']
+ common_genes = list(set(genes) & set(exp_df.index.values))
+ print(f"Selecting {len(common_genes)} to save. {len(genes) - len(common_genes)} genes not found in BIOS")
+ selected_exp_df = exp_df.loc[common_genes]
+ genes_dic = pd.read_csv(gene_path, sep='\t').set_index('ensembl')['symbol'].T.to_dict()
+ common_genes_names = [genes_dic.get(geneid) for geneid in common_genes]
+ selected_exp_df.index = common_genes_names
+ selected_exp_df.to_csv(savepath, sep='\t')
+ print(f"Selected {selected_exp_df.shape[0]} genes in {savepath}.")
+ return selected_exp_df
+
+
+def make_snps_genes_files_for_coeqtls(coeqtl_path):
+ significant_coeqtls = pd.read_csv(coeqtl_path, sep='\t', compression='gzip', index_col=0)
+ mappings = pd.read_csv(unique_mappingfile, sep='\t', names=['geneid', 'genename', 'type']).set_index('genename')[
+ 'geneid'].T.to_dict()
+ snps = significant_coeqtls['SNP'].unique()
+ genes = [ele for item in significant_coeqtls['Gene'].values for ele in item.split(';')]
+ genes = list(set([item for item in genes if item]))
+ genes_df = pd.DataFrame(data=[[item, mappings.get(item)] for item in genes],
+ columns=['symbol', 'ensembl']).dropna(subset=['ensembl'])
+ print(f"Writing {len(snps)} snps and {len(genes)} genes from coeQTLs.")
+ with open(f"{str(coeqtl_path)[:-len('.tsv.gz')]}.snps.txt", 'w') as f:
+ f.write('\n'.join(snps))
+ genes_df.to_csv(f"{str(coeqtl_path)[:-len('.tsv.gz')]}.genes.tsv",
+ sep='\t', index=False)
+ return snps, genes_df
+
+
+def replicate(annotated_coeqtl_path,
+ bios_gt_path,
+ bios_gene_path,
+ saveprefix,
+ gte_mapping_path,
+ vcf_header_rows=6):
+ import warnings
+ def find_gene2(eqtlgene, genepair):
+ gene1, gene2 = genepair.split(';')
+ if eqtlgene == gene1:
+ return gene2
+ else:
+ return gene1
+ warnings.simplefilter(action='ignore', category=FutureWarning)
+ gte_mapping = pd.read_csv(gte_mapping_path, sep='\t').set_index('gt')['exp'].T.to_dict()
+ # transform the GT columns into expression ids
+ gt = pd.read_csv(bios_gt_path, skiprows=vcf_header_rows, sep='\t')
+ sc_individuals = pd.read_csv(
+ './coeqtl_mapping/input/summary/gte-fix.tsv',
+ sep='\t'
+ )['genotypesampleID']
+ # remove LLD individuals
+ remove_individuals = list(set(sc_individuals) & set(gt.columns))
+ gt = gt.drop(remove_individuals, axis=1)
+ gt_snp_set = set(gt['ID'].values)
+ # map genotype and expression individual names
+ find_name = lambda x: gte_mapping.get(x) if x in gte_mapping else x
+ gt = gt.rename({item: find_name(item) for item in gt.columns}, axis=1)
+ # load expression data
+ exp = pd.read_csv(bios_gene_path, index_col=0, sep='\t', compression='gzip')
+ genename_mapping = pd.read_csv(unique_mappingfile, sep='\t', names=['gene_id', 'gene_name']).set_index('gene_id')[
+ 'gene_name'].T.to_dict()
+ exp['genename'] = [genename_mapping.get(geneid) for geneid in exp.index]
+ exp = exp.dropna(subset=['genename']).set_index('genename')
+ expression_gene_name_set = set(exp.index)
+ common_indidvidauls = list(set(exp.columns) & set(gt.columns))
+ gt_df = gt.set_index('ID')
+ exp_common = exp[common_indidvidauls]
+ coeqtls = pd.read_csv(annotated_coeqtl_path, sep='\t', compression='gzip', index_col=0)
+ coeqtls['gene1'] = [item.split('_')[1] for item in coeqtls['snp_eqtlgene']]
+ coeqtls['gene2'] = [find_gene2(gene1, genepair) for (gene1, genepair) in coeqtls[['gene1', 'Gene']].values]
+ coeqtl_pairs = coeqtls[['SNP', 'gene1', 'gene2']].values
+ # start solving the interaction models
+ i = 0
+ res_df = pd.DataFrame()
+ for snp, gene1, gene2 in tqdm(coeqtl_pairs):
+ if snp in gt_snp_set and gene1 in expression_gene_name_set and gene2 in expression_gene_name_set: # todo: ESNG id to genename
+ i += 1
+ gt_selected = gt_df.loc[snp]
+ gene1_selected = exp_common.loc[gene1]
+ gene2_selected = exp_common.loc[gene2]
+ x_df = pd.concat([gt_selected[common_indidvidauls], gene2_selected], axis=1)
+ x_df[f'{snp}_dosage'] = [float(item.split(':')[1]) for item in x_df[snp]]
+ x_df[f'{snp}_{gene2}'] = x_df[f'{snp}_dosage'] * x_df[gene2]
+ X = sm.add_constant(x_df[[f'{snp}_dosage', gene2, f'{snp}_{gene2}']])
+ model = sm.OLS(gene1_selected.T, X)
+ results_data = model.fit().summary().tables[1].data
+ results = pd.DataFrame(data=results_data[1:], columns=results_data[0]).set_index('')
+ results['gene1'] = gene1
+ results['gene2'] = gene2
+ results['assessed_allele'] = gt_selected['ALT']
+ results['num_individuals'] = len(common_indidvidauls)
+ res_df = pd.concat([res_df, results], axis=0)
+ if len(coeqtl_pairs) > 10000:
+ if i % 10000 == 0 and i > 1:
+ res_df.to_csv(f"{saveprefix}.part{int(i / 10000)}.tsv", sep='\t')
+ res_df = pd.DataFrame()
+ print(f"results part {int(i / 10000)} has been saved in {saveprefix}.part{int(i / 10000)}.tsv")
+ part_ind = 1 + int(i / 10000)
+ res_df.to_csv(f"{saveprefix}.part{part_ind}.tsv.gz", sep='\t', compression='gzip')
+ print(f"results part {part_ind} has been saved in {saveprefix}.part{part_ind}.tsv")
+ return res_df
+
+
+def make_gte_mapping_file():
+ prefix = Path("./tmp03boxy/input/")
+ gtm = pd.DataFrame()
+ for filename in os.listdir(prefix / "hrcGTM"):
+ sub_gtm = pd.read_csv(prefix / f"hrcGTM/{filename}", compression='gzip', sep='\t', names=['gt', 'met'])
+ gtm = pd.concat([gtm, sub_gtm], axis=0)
+ gtm = gtm.set_index('met')
+ mte_path = prefix / 'hrcMTE/CODAM_LLDeep_LLS660Q_LLSOmni_NTR_RS_MTE.txt'
+ mte = pd.read_csv(mte_path, sep='\t', names=['met', 'exp']).set_index('met')
+ all_mapping = pd.concat([gtm, mte], axis=1)
+ gte = all_mapping[['gt', 'exp']]
+ gte = gte.dropna()
+ gte.to_csv('./coeqtl_mapping/bios/gte.tsv',
+ sep='\t', index=False)
+ return gte
+
+
+def examine_replicated_in_bios(replication_res_path, savepath):
+ from statsmodels.stats.multitest import multipletests
+ bios_replication = pd.read_csv(replication_res_path, sep='\t')
+ bios_replication['snp_genepair'] = ['_'.join(item) for item in bios_replication[['Unnamed: 0', 'gene1']].values]
+ tobesave = lambda x: True if 'dosage' not in x and 'const' not in x and x.startswith('rs') else False
+ bios_replication['isinteractionterm'] = [tobesave(item) for item in bios_replication['snp_genepair']]
+ bios_interactions_df = bios_replication[bios_replication['isinteractionterm']]
+ bios_interactions_df['corrected_p'] = multipletests(bios_interactions_df['P>|t|'], method='fdr_bh')[1]
+ bios_interactions_df.to_csv(savepath, sep='\t')
+ significant_res = bios_interactions_df[bios_interactions_df['corrected_p'] <= 0.05]
+ print("Significantly replicated coeQTLs: ", significant_res.shape[0])
+ return bios_interactions_df
+
+
+def arguments():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--saveprefix', type=str, dest='saveprefix')
+ parser.add_argument('--coeqtlpath', type=str, dest='coeqtlpath')
+ parser.add_argument('--selection', type=str, dest='selection')
+ parser.add_argument('--chromosome', type=str, dest='chr')
+ parser.add_argument('--replicate', type=str, dest='replicate')
+ parser.add_argument('--bios_selected_vcf', type=str, dest='bios_selected_vcf')
+ return parser
+
+
+if __name__ == '__main__':
+ # _ = make_gte_mapping_file() # make the GTE files for BIOS
+ args = arguments().parse_args()
+ print("Arguments:")
+ print(args)
+ # get snps and genes from coeQTL results
+ coeqtl_path = args.coeqtlpath
+ savedirectory = Path(args.saveprefix)
+ if not os.path.isdir(savedirectory):
+ os.makedirs(savedirectory)
+ if args.selection == 'snp':
+ if not os.path.exists(f"{coeqtl_path[:-len('.tsv.gz')]}.snps.txt"):
+ _ = make_snps_genes_files_for_coeqtls(coeqtl_path)
+ # get snps from vcf
+ chromosome = args.chr
+ snp_bashfile_path = workdir / 'bios/select_snps_from_vcf.sh'
+ dataname = f"chr{chromosome}"
+ bios_gt_path = bios_gt_prefix / f"chr{chromosome}/GenotypeData.vcf.gz"
+ snp_savepath = savedirectory / f'bios_selected.chr{chromosome}.vcf'
+ get_snps_from_vcffile(snp_bashfile_path, bios_gt_path, f"{coeqtl_path[:-len('.tsv.gz')]}.snps.txt",
+ snp_savepath)
+ elif args.selection == 'gene':
+ if not os.path.exists(f"{coeqtl_path[:-len('.tsv.gz')]}.snps.txt"):
+ _ = make_snps_genes_files_for_coeqtls(coeqtl_path)
+ # get genes from gzip files
+ gene_savepath = savedirectory / f'bios_selected_gene_expression.tsv'
+ _ = get_genes_from_gzipfile(bios_exp_path, f"{coeqtl_path[:-len('.tsv.gz')]}.genes.tsv", gene_savepath)
+ if args.replicate:
+ # perform replication in bios
+ work_prefix = Path("./coeqtl_mapping/")
+ bios_gt_path = args.bios_selected_vcf
+ vcf_header_rows = 6
+ bios_gene_path = bios_exp_path
+ saveprefix = savedirectory / 'bios_replication_results.eqtlgene1_gene2'
+ replicate(annotated_coeqtl_path=coeqtl_path,
+ bios_gt_path=bios_gt_path,
+ bios_gene_path=bios_gene_path,
+ saveprefix=saveprefix,
+ gte_mapping_path=gte_mapping_path,
+ vcf_header_rows=vcf_header_rows)
+ # concatenate replication results saved in parts
+ res_df = pd.DataFrame()
+ for filename in os.listdir(savedirectory):
+ if filename.startswith('bios_replication_results.eqtlgene1_gene2.') and 'part' in filename and filename.endswith('gz'):
+ print(filename)
+ df = pd.read_csv(savedirectory / filename, sep='\t', compression='gzip')
+ res_df = pd.concat([res_df, df], axis=0)
+ tobesave = lambda x: True if 'dosage' not in x and 'const' not in x and x.startswith('rs') else False
+ res_df['isinteractionterm'] = [tobesave(item) for item in res_df['Unnamed: 0']]
+ bios_interactions_df = res_df[res_df['isinteractionterm']]
+ bios_interactions_df['snp_genepair'] = ['_'.join([item[0].split('_')[0],
+ ';'.join(sorted([item[0].split('_')[1], item[1]]))]) for item
+ in
+ bios_interactions_df[['Unnamed: 0', 'gene1']].values]
+ bios_interactions_df['corrected_p'] = multipletests(bios_interactions_df['P>|t|'], method='fdr_bh')[1]
+ bios_interactions_df.to_csv(savedirectory / 'bios_replication_results.eqtlgene1_gene2.all.tsv.gz',
+ sep='\t', index=False, compression='gzip')
+ bios_interactions_df[bios_interactions_df['corrected_p'] <= 0.05].to_csv(
+ savedirectory / 'bios_replication_results.eqtlgene1_gene2.sig.tsv.gz',
+ sep='\t', index=False, compression='gzip')
diff --git a/04_coeqtl_mapping/screen_permutation_p_values.py b/04_coeqtl_mapping/screen_permutation_p_values.py
new file mode 100644
index 0000000..2812dc8
--- /dev/null
+++ b/04_coeqtl_mapping/screen_permutation_p_values.py
@@ -0,0 +1,130 @@
+import argparse
+import os
+from pathlib import Path
+
+import numpy as np
+import pandas as pd
+from tqdm import tqdm
+import gzip
+
+
+workdir = Path('/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping')
+annotation_path = '/groups/umcg-bios/tmp01/projects/1M_cells_scRNAseq/ongoing/eQTL_mapping/probeannotation/singleCell-annotation-stripped.tsv'
+mappingdic = pd.read_csv('/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/resources/features_v3_reformated_names.tsv',
+ sep='\t', names=['geneid', 'genename']).set_index('geneid')['genename'].T.to_dict()
+annotation_df = pd.read_csv(annotation_path, sep='\t')
+annotation_df['chr_pos'] = ['_'.join([str(ele) for ele in item]) for item in annotation_df[['Chr', 'ChrStart', 'ChrEnd']].values]
+annotation_df['genename'] = [mappingdic.get(ensemblid) for ensemblid in annotation_df['Ensembl']]
+annotation_dict = annotation_df.set_index('chr_pos')['genename'].T.to_dict()
+
+def update_perm(old_p_list, new_p_list):
+ return np.min([old_p_list, new_p_list], axis=0)
+
+
+def find_eqtlsnp_gene(snp, genepair, coeqtl_annotation_dic):
+ genepair_chrpos = coeqtl_annotation_dic.get(genepair)
+ eqtlgene = annotation_dict.get(genepair_chrpos)
+ snp_genepair = '_'.join([snp, eqtlgene])
+ return snp_genepair
+
+
+def loop_through_one_batch_perm(batch_perm_path, snpgene1_minpvalues_dict, coeqtl_annotation_dict):
+ with gzip.open(batch_perm_path, 'rb') as f:
+ f.readline()
+ while True:
+ line = f.readline().decode('utf-8')
+ if not line:
+ break
+ else:
+ linecontent = line.strip().split('\t')
+ perm_ps = [float(ele) for ele in linecontent[2:102]]
+ snp_gene1 = find_eqtlsnp_gene(linecontent[1], linecontent[0], coeqtl_annotation_dict)
+ snpgene1_minpvalues_dict[snp_gene1] = update_perm(snpgene1_minpvalues_dict[snp_gene1],
+ perm_ps)
+ return snpgene1_minpvalues_dict
+
+
+def update_dictionary_per_permutation_batch(batch_perm_path, snpgene1_minpvalues_df, coeqtl_annotation_dict):
+ batch_perm_df = pd.read_csv(batch_perm_path, compression='gzip', sep='\t')
+ # print(batch_perm_df.head())
+ batch_perm_df['chr_pos'] = [coeqtl_annotation_dict.get(genepair) for genepair in batch_perm_df['Gene']]
+ batch_perm_df['eqtlgene'] = [annotation_dict.get(chrpos) for chrpos in batch_perm_df['chr_pos']]
+ batch_perm_df['snp_eqtlgene'] = ['_'.join(item) for item in batch_perm_df[['SNP', 'eqtlgene']].values]
+ # print(batch_perm_df.head())
+ merge_columns = ['snp_eqtlgene'] + [f'Perm{ind}' for ind in range(100)]
+ merged_df = pd.concat([batch_perm_df[merge_columns], snpgene1_minpvalues_df[merge_columns]],
+ axis=0)
+ # print(merged_df.head())
+ reduced_df = merged_df.groupby(by='snp_eqtlgene').agg(min)
+ reduced_df['snp_eqtlgene'] = reduced_df.index
+ # print(reduced_df.head())
+ return reduced_df
+
+
+def save_numpy(data_df, prefix):
+ np.save(f'{prefix}.npy', data_df.values)
+ with open(f'{prefix}.cols.txt', 'w') as f:
+ f.write('\n'.join([str(ele) for ele in data_df.columns]))
+ with open(f'{prefix}.rows.txt', 'w') as f:
+ f.write('\n'.join([str(ele) for ele in data_df.index]))
+ return None
+
+
+def arguments():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--eqtl_path', dest='eqtl_path')
+ parser.add_argument('--result_prefix', dest='result_prefix')
+ parser.add_argument('--save_prefix', dest='save_prefix')
+ parser.add_argument('--annotation_prefix', dest='annotation_prefix')
+ return parser
+
+
+
+def main():
+ args = arguments().parse_args()
+ eqtl_path, results_prefix, save_prefix = args.eqtl_path, Path(args.result_prefix), Path(args.save_prefix)
+ # load eqtl path
+ eqtl_df = pd.read_csv(eqtl_path, sep='\t')
+ eqtl_df['snp_gene1'] = ['_'.join(item) for item in eqtl_df[['SNPName', 'genename']].values]
+ unique_snpgene1 = eqtl_df['snp_gene1'].values
+ # initialize the dict to contain the
+ # snpgene1_minpvalues_dict = {item: np.ones(100) for item in unique_snpgene1}
+ snpgene1_minpvalues_df = pd.DataFrame(data=np.ones((len(unique_snpgene1), 100)),
+ columns=[f'Perm{ind}' for ind in range(100)])
+ snpgene1_minpvalues_df['snp_eqtlgene'] = unique_snpgene1
+ # loop through all batch permutation files
+ coeqtl_annotation_path = f'{args.annotation_prefix}.genepairs.annotation.gene1position.noduplicated.tsv'
+ coeqtl_annotation_df = pd.read_csv(coeqtl_annotation_path, sep='\t')
+ coeqtl_annotation_df['chr_pos'] = ['_'.join([str(ele) for ele in item]) for item in
+ coeqtl_annotation_df[['Chr', 'ChrStart', 'ChrEnd']].values]
+ coeqtl_annotation_dict = coeqtl_annotation_df.set_index('ArrayAddress')['chr_pos'].T.to_dict()
+ for filename in tqdm(os.listdir(results_prefix / 'noduplicated/output')):
+ if '-Permutations.txt.gz' in filename:
+ snpgene1_minpvalues_df = update_dictionary_per_permutation_batch(results_prefix / 'noduplicated/output'/filename,
+ snpgene1_minpvalues_df, coeqtl_annotation_dict)
+ coeqtl_annotation_path = f'{args.annotation_prefix}.genepairs.annotation.gene1position.duplicatedversion1.tsv'
+ coeqtl_annotation_df = pd.read_csv(coeqtl_annotation_path, sep='\t')
+ coeqtl_annotation_df['chr_pos'] = ['_'.join([str(ele) for ele in item]) for item in
+ coeqtl_annotation_df[['Chr', 'ChrStart', 'ChrEnd']].values]
+ coeqtl_annotation_dict = coeqtl_annotation_df.set_index('ArrayAddress')['chr_pos'].T.to_dict()
+ for filename in tqdm(os.listdir(results_prefix / 'duplicatedversion1/output')):
+ if '-Permutations.txt.gz' in filename:
+ snpgene1_minpvalues_df = update_dictionary_per_permutation_batch(results_prefix / 'duplicatedversion1/output'/filename,
+ snpgene1_minpvalues_df, coeqtl_annotation_dict)
+ coeqtl_annotation_path = f'{args.annotation_prefix}.genepairs.annotation.gene1position.duplicatedversion2.tsv'
+ coeqtl_annotation_df = pd.read_csv(coeqtl_annotation_path, sep='\t')
+ coeqtl_annotation_df['chr_pos'] = ['_'.join([str(ele) for ele in item]) for item in
+ coeqtl_annotation_df[['Chr', 'ChrStart', 'ChrEnd']].values]
+ coeqtl_annotation_dict = coeqtl_annotation_df.set_index('ArrayAddress')['chr_pos'].T.to_dict()
+ for filename in tqdm(os.listdir(results_prefix / 'duplicatedversion2/output')):
+ if '-Permutations.txt.gz' in filename:
+ snpgene1_minpvalues_df = update_dictionary_per_permutation_batch(results_prefix / 'duplicatedversion2/output'/filename,
+ snpgene1_minpvalues_df, coeqtl_annotation_dict)
+ # snpgene1_minpvalues_df = pd.DataFrame.from_dict(snpgene1_minpvalues_dict)
+ snpgene1_minpvalues_df.to_csv(save_prefix / 'concated_alltests_permutations_fixed.tsv.gz',
+ sep='\t', compression='gzip')
+ return snpgene1_minpvalues_df
+
+
+if __name__ == '__main__':
+ _ = main()
diff --git a/04_coeqtl_mapping/select_snps_from_vcf.sh b/04_coeqtl_mapping/select_snps_from_vcf.sh
new file mode 100644
index 0000000..cc710c4
--- /dev/null
+++ b/04_coeqtl_mapping/select_snps_from_vcf.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+vcfpath=$1
+snpspath=$2
+savepath=$3
+
+ml BCFtools
+bcftools view --include ID==@${snpspath} ${vcfpath} > ${savepath}
\ No newline at end of file
diff --git a/04_coeqtl_mapping/submit_individual_networks.sh b/04_coeqtl_mapping/submit_individual_networks.sh
new file mode 100644
index 0000000..7a57463
--- /dev/null
+++ b/04_coeqtl_mapping/submit_individual_networks.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+#SBATCH --time=16:00:00
+#SBATCH --mem=80gb
+#SBATCH --nodes=1
+#SBATCH --export=NONE
+#SBATCH --get-user-env=L
+
+module purge
+
+conda init bash
+source /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/Beeline/miniconda/etc/profile.d/conda.sh
+conda activate scpy3.8
+
+
+python /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/individual_networks/individual_networks.py \
+--datasetname $1 \
+--celltype $2 \
+--condition $3
\ No newline at end of file
diff --git a/04_coeqtl_mapping/submit_merge_coexpression.sh b/04_coeqtl_mapping/submit_merge_coexpression.sh
new file mode 100644
index 0000000..52f6789
--- /dev/null
+++ b/04_coeqtl_mapping/submit_merge_coexpression.sh
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+#SBATCH --time=8:00:00
+#SBATCH --mem=80gb
+#SBATCH --nodes=1
+#SBATCH --export=NONE
+#SBATCH --get-user-env=L
+
+module purge
+
+conda init bash
+source /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/Beeline/miniconda/etc/profile.d/conda.sh
+conda activate scpy3.8
+
+
+python /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/individual_networks/merge_coexpression_for_betaeqtl.py \
+--celltype $1 \
+--condition $2
+
+python /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/input/individual_networks/prepare_genelist_and_annotation_for_betaqtl.py \
+--celltype $1 \
+--condition $2
\ No newline at end of file
diff --git a/04_coeqtl_mapping/submit_process_betaqtl_results.sh b/04_coeqtl_mapping/submit_process_betaqtl_results.sh
new file mode 100644
index 0000000..e3c45c8
--- /dev/null
+++ b/04_coeqtl_mapping/submit_process_betaqtl_results.sh
@@ -0,0 +1,51 @@
+#!/usr/bin/env bash
+#SBATCH --time=01:00:00
+#SBATCH --mem=20gb
+#SBATCH --nodes=1
+#SBATCH --open-mode=append
+#SBATCH --export=NONE
+#SBATCH --get-user-env=L
+
+module purge
+
+conda init bash
+source /groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/tools/Beeline/miniconda/etc/profile.d/conda.sh
+conda activate scpy3.8
+
+
+celltype=$1
+
+condition='UT'
+workdir="./"
+
+# unfiltered results
+python ${workdir}/output/concat_betaqtl_results.fixed.py \
+--prefix ${workdir}/output/unfiltered_results/${condition}_${celltype_individual} \
+--savepath ${workdir}/output/unfiltered_results/${condition}_${celltype_individual}/concated_alltests_output_fixed.tsv.gz \
+--annotation_prefix ${workdir}/input/summary/${condition}_${celltype}
+python ${workdir}/output/screen_permutation_p_values.py \
+--eqtl_path ${workdir}/input/snp_selection/eqtl/${condition}_${celltype}_eQTLProbesFDR0.05-ProbeLevel.tsv \
+--result_prefix ${workdir}/output/unfiltered_results/${condition}_${celltype_individual} \
+--save_prefix ${workdir}/output/unfiltered_results/${condition}_${celltype_individual} \
+--annotation_prefix ${workdir}/input/summary/${condition}_${celltype}
+python ${workdir}/output/multipletesting_correction.fixed.py \
+--permutation_pvalue_path ${workdir}/output/unfiltered_results/${condition}_${celltype_individual}/concated_alltests_permutations_fixed.tsv.gz \
+--coeqtl_path ${workdir}/output/unfiltered_results/${condition}_${celltype_individual}/concated_alltests_output_fixed.tsv.gz \
+--eqtl_path ${workdir}/input/snp_selection/eqtl/${condition}_${celltype}_eQTLProbesFDR0.05-ProbeLevel.tsv \
+--save_prefix ${workdir}/output/unfiltered_results/${condition}_${celltype_individual}/coeqtls_fullresults_fixed
+
+# filtered results
+python ${workdir}/output/concat_betaqtl_results.fixed.py \
+--prefix ${workdir}/output/filtered_results/${condition}_${celltype_individual} \
+--savepath ${workdir}/output/filtered_results/${condition}_${celltype_individual}/concated_alltests_output_fixed.tsv.gz \
+--annotation_prefix ${workdir}/input/summary/${condition}_${celltype}
+python ${workdir}/output/screen_permutation_p_values.py \
+--eqtl_path ${workdir}/input/snp_selection/eqtl/${condition}_${celltype}_eQTLProbesFDR0.05-ProbeLevel.tsv \
+--result_prefix ${workdir}/output/filtered_results/${condition}_${celltype_individual} \
+--save_prefix ${workdir}/output/filtered_results/${condition}_${celltype_individual} \
+--annotation_prefix ${workdir}/input/summary/${condition}_${celltype}
+python ${workdir}/output/multipletesting_correction.fixed.py \
+--permutation_pvalue_path ${workdir}/output/filtered_results/${condition}_${celltype_individual}/concated_alltests_permutations_fixed.tsv.gz \
+--coeqtl_path ${workdir}/output/filtered_results/${condition}_${celltype_individual}/concated_alltests_output_fixed.tsv.gz \
+--eqtl_path ${workdir}/input/snp_selection/eqtl/${condition}_${celltype}_eQTLProbesFDR0.05-ProbeLevel.tsv \
+--save_prefix ${workdir}/output/filtered_results/${condition}_${celltype_individual}/coeqtls_fullresults_fixed
diff --git a/05_coeqtl_interpretation/.ipynb_checkpoints/LDTRAIT-checkpoint.ipynb b/05_coeqtl_interpretation/.ipynb_checkpoints/LDTRAIT-checkpoint.ipynb
new file mode 100644
index 0000000..659b6fa
--- /dev/null
+++ b/05_coeqtl_interpretation/.ipynb_checkpoints/LDTRAIT-checkpoint.ipynb
@@ -0,0 +1,944 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import requests\n",
+ "from tqdm import tqdm\n",
+ "import os\n",
+ "from io import StringIO\n",
+ "from pathlib import Path"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [],
+ "source": [
+ "savedir = Path(\"./annotated_coeqtl_snps/ldtrait\")\n",
+ "\n",
+ "celltypesnps = {}\n",
+ "merged_dict = pd.read_excel('/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output/summary/coeQTLs_6majorcelltypes.filtered.xlsx',\n",
+ " sheet_name=None)\n",
+ "for celltype in merged_dict.keys():\n",
+ " celltypesnps[celltype] = list(merged_dict[celltype]['SNP'].unique())\n",
+ "allcelltypes_snps = list(set([ele for l in celltypesnps.values() for ele in l]))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 90,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "72"
+ ]
+ },
+ "execution_count": 90,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(allcelltypes_snps)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 70,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 17%|█▋ | 12/72 [05:53<34:19, 34.33s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs62480001\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\r",
+ " 18%|█▊ | 13/72 [06:52<39:48, 40.48s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs817352\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\r",
+ " 19%|█▉ | 14/72 [07:11<33:43, 34.89s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs80164297\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 24%|██▎ | 17/72 [09:23<37:43, 41.16s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs11772922\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 26%|██▋ | 19/72 [10:43<35:14, 39.89s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs3758833\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 29%|██▉ | 21/72 [11:39<28:28, 33.49s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs11047696\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\r",
+ " 31%|███ | 22/72 [12:09<27:15, 32.70s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs9971029\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\r",
+ " 32%|███▏ | 23/72 [12:35<24:55, 30.53s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs4949655\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 42%|████▏ | 30/72 [16:56<26:11, 37.41s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs6007595\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\r",
+ " 43%|████▎ | 31/72 [17:27<24:21, 35.64s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs7309189\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\r",
+ " 44%|████▍ | 32/72 [18:20<27:11, 40.79s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs9657360\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 49%|████▊ | 35/72 [19:43<20:09, 32.70s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs731835\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 53%|█████▎ | 38/72 [26:08<51:53, 91.57s/it] "
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs260503\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 58%|█████▊ | 42/72 [28:04<22:59, 46.00s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs13140099\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\r",
+ " 60%|█████▉ | 43/72 [28:34<19:51, 41.10s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs2235910\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 71%|███████ | 51/72 [42:19<40:20, 115.26s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs1628955\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 74%|███████▎ | 53/72 [43:55<25:05, 79.24s/it] "
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs12443580\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 82%|████████▏ | 59/72 [48:18<09:34, 44.16s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs150458741\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 85%|████████▍ | 61/72 [49:39<07:29, 40.88s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs62423804\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\r",
+ " 86%|████████▌ | 62/72 [50:16<06:36, 39.69s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs2267989\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 89%|████████▉ | 64/72 [50:56<03:58, 29.82s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs7605964\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 99%|█████████▊| 71/72 [54:21<00:24, 24.54s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs1261896\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 72/72 [54:53<00:00, 45.75s/it]\n"
+ ]
+ }
+ ],
+ "source": [
+ "# curl -k -H \"Content-Type: application/json\" -X POST -d '{\"snps\": \"rs3\\nrs4\", \"pop\": \"YRI\", \"r2_d\": \"r2\", \"r2_d_threshold\": \"0.1\", \"window\": \"500000\", \"genome_build\": \"grch37\"}' 'https://ldlink.nci.nih.gov/LDlinkRest/ldtrait?token=faketoken123'\n",
+ "# snp = \"rs10276099\"\n",
+ "for snp in tqdm(allcelltypes_snps):\n",
+ " if os.path.exists(savedir/f'{snp}.tsv'):\n",
+ " continue\n",
+ " else:\n",
+ " params = {\"snps\": snp, \n",
+ " \"pop\": \"CEU\", \n",
+ " \"r2_d\": \"r2\", \n",
+ " \"r2_d_threshold\": \"0.8\", \n",
+ " \"window\": \"500000\", \n",
+ " \"genome_build\": \"grch37\"}\n",
+ " r = requests.request(headers={\"Content-Type\": \"application/json\"},\n",
+ " method='POST',\n",
+ " json=params, \n",
+ " url=f'https://ldlink.nci.nih.gov/LDlinkRest/ldtrait?token={token}')\n",
+ " try:\n",
+ " if \"No entries in the GWAS Catalog are identified using the LDtrait search criteria.\" in r.text:\n",
+ " print('no GWAS:', snp)\n",
+ " continue\n",
+ " else:\n",
+ " r_df = pd.read_csv(StringIO(r.text), sep='\\t')\n",
+ " r_df.to_csv(savedir/f'{snp}.tsv', sep='\\t', index=False)\n",
+ " except:\n",
+ " print('failed entry:', snp)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 80,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 72/72 [00:00<00:00, 298.96it/s]\n"
+ ]
+ }
+ ],
+ "source": [
+ "allsnps_inld_gwas_df = pd.DataFrame()\n",
+ "for snp in tqdm(allcelltypes_snps):\n",
+ " if os.path.exists(savedir/f'{snp}.tsv'):\n",
+ " df = pd.read_csv(savedir/f'{snp}.tsv', sep='\\t')\n",
+ " if 'error' not in df.iloc[0].values[0]:\n",
+ " allsnps_inld_gwas_df = pd.concat([allsnps_inld_gwas_df, df],\n",
+ " axis=0)\n",
+ " \n",
+ "allsnps_inld_gwas_df.to_csv(savedir/'summary.tsv', sep='\\t', index=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "allsnps_inld_gwas_df = pd.read_csv(savedir/'summary.tsv', sep='\\t')\n",
+ "magma_df = pd.read_csv(savedir/'coeqtl_with_gwas_and_magma.tsv', sep='\\t')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " VARIABLE | \n",
+ " celltype | \n",
+ " SNP | \n",
+ " gene | \n",
+ " TYPE | \n",
+ " NGENES | \n",
+ " BETA | \n",
+ " BETA_STD | \n",
+ " SE | \n",
+ " P | \n",
+ " ... | \n",
+ " non_effect_allele | \n",
+ " current_build | \n",
+ " frequency | \n",
+ " sample_size | \n",
+ " zscore | \n",
+ " pvalue | \n",
+ " effect_size | \n",
+ " standard_error | \n",
+ " imputation_status | \n",
+ " n_cases | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " B_rs1131017_RPS26 | \n",
+ " B | \n",
+ " rs1131017 | \n",
+ " RPS26 | \n",
+ " SET | \n",
+ " 38 | \n",
+ " -0.199320 | \n",
+ " -0.008952 | \n",
+ " 0.12542 | \n",
+ " 0.943980 | \n",
+ " ... | \n",
+ " G | \n",
+ " hg38 | \n",
+ " 0.580808 | \n",
+ " 54612 | \n",
+ " 0.138937 | \n",
+ " 0.889500 | \n",
+ " 0.002200 | \n",
+ " 0.015600 | \n",
+ " original | \n",
+ " 17008.0 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " B_rs1131017_RPS26 | \n",
+ " B | \n",
+ " rs1131017 | \n",
+ " RPS26 | \n",
+ " SET | \n",
+ " 38 | \n",
+ " 0.201320 | \n",
+ " 0.009042 | \n",
+ " 0.12905 | \n",
+ " 0.059382 | \n",
+ " ... | \n",
+ " G | \n",
+ " hg38 | \n",
+ " 0.580808 | \n",
+ " 53293 | \n",
+ " 1.735682 | \n",
+ " 0.082620 | \n",
+ " 0.023902 | \n",
+ " 0.013700 | \n",
+ " original | \n",
+ " 19099.0 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " B_rs1131017_RPS26 | \n",
+ " B | \n",
+ " rs1131017 | \n",
+ " RPS26 | \n",
+ " SET | \n",
+ " 37 | \n",
+ " 0.163610 | \n",
+ " 0.007256 | \n",
+ " 0.12608 | \n",
+ " 0.097201 | \n",
+ " ... | \n",
+ " G | \n",
+ " hg38 | \n",
+ " 0.580808 | \n",
+ " 29344 | \n",
+ " -2.348664 | \n",
+ " 0.018841 | \n",
+ " -0.010569 | \n",
+ " 0.004363 | \n",
+ " original | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " B_rs1131017_RPS26 | \n",
+ " B | \n",
+ " rs1131017 | \n",
+ " RPS26 | \n",
+ " SET | \n",
+ " 38 | \n",
+ " -0.010395 | \n",
+ " -0.000467 | \n",
+ " 0.11668 | \n",
+ " 0.535490 | \n",
+ " ... | \n",
+ " G | \n",
+ " hg38 | \n",
+ " 0.580808 | \n",
+ " 15954 | \n",
+ " -0.324182 | \n",
+ " 0.745800 | \n",
+ " -0.009950 | \n",
+ " 0.025700 | \n",
+ " original | \n",
+ " 7387.0 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " B_rs1131017_RPS26 | \n",
+ " B | \n",
+ " rs1131017 | \n",
+ " RPS26 | \n",
+ " SET | \n",
+ " 38 | \n",
+ " 0.282350 | \n",
+ " 0.012677 | \n",
+ " 0.11706 | \n",
+ " 0.007937 | \n",
+ " ... | \n",
+ " G | \n",
+ " hg38 | \n",
+ " 0.580808 | \n",
+ " 337159 | \n",
+ " -1.597883 | \n",
+ " 0.110069 | \n",
+ " -0.000210 | \n",
+ " 0.000132 | \n",
+ " original | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 44 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " VARIABLE celltype SNP gene TYPE NGENES BETA \\\n",
+ "0 B_rs1131017_RPS26 B rs1131017 RPS26 SET 38 -0.199320 \n",
+ "1 B_rs1131017_RPS26 B rs1131017 RPS26 SET 38 0.201320 \n",
+ "2 B_rs1131017_RPS26 B rs1131017 RPS26 SET 37 0.163610 \n",
+ "3 B_rs1131017_RPS26 B rs1131017 RPS26 SET 38 -0.010395 \n",
+ "4 B_rs1131017_RPS26 B rs1131017 RPS26 SET 38 0.282350 \n",
+ "\n",
+ " BETA_STD SE P ... non_effect_allele current_build \\\n",
+ "0 -0.008952 0.12542 0.943980 ... G hg38 \n",
+ "1 0.009042 0.12905 0.059382 ... G hg38 \n",
+ "2 0.007256 0.12608 0.097201 ... G hg38 \n",
+ "3 -0.000467 0.11668 0.535490 ... G hg38 \n",
+ "4 0.012677 0.11706 0.007937 ... G hg38 \n",
+ "\n",
+ " frequency sample_size zscore pvalue effect_size standard_error \\\n",
+ "0 0.580808 54612 0.138937 0.889500 0.002200 0.015600 \n",
+ "1 0.580808 53293 1.735682 0.082620 0.023902 0.013700 \n",
+ "2 0.580808 29344 -2.348664 0.018841 -0.010569 0.004363 \n",
+ "3 0.580808 15954 -0.324182 0.745800 -0.009950 0.025700 \n",
+ "4 0.580808 337159 -1.597883 0.110069 -0.000210 0.000132 \n",
+ "\n",
+ " imputation_status n_cases \n",
+ "0 original 17008.0 \n",
+ "1 original 19099.0 \n",
+ "2 original NaN \n",
+ "3 original 7387.0 \n",
+ "4 original NaN \n",
+ "\n",
+ "[5 rows x 44 columns]"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "magma_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "VARIABLE B_rs1131017_RPS26\n",
+ "celltype B\n",
+ "SNP rs1131017\n",
+ "gene RPS26\n",
+ "TYPE SET\n",
+ "NGENES 38\n",
+ "BETA -0.19932\n",
+ "BETA_STD -0.008952\n",
+ "SE 0.12542\n",
+ "P 0.94398\n",
+ "prefix results/current/magma/AD\n",
+ "trait AD\n",
+ "FDR 0.973479\n",
+ "Tag IGAP_Alzheimer\n",
+ "PUBMED_Paper_Link http://www.ncbi.nlm.nih.gov/pubmed/24162737\n",
+ "Phenotype Alzheimer\n",
+ "RSID rs10876864\n",
+ "RSALIAS rs57455456\n",
+ "CHR 12\n",
+ "POS1 56435929\n",
+ "POS2 56401085\n",
+ "DIST -34844\n",
+ "R2 0.991789\n",
+ "D 0.240643\n",
+ "DPRIME 0.995886\n",
+ "MAJOR A\n",
+ "MINOR G\n",
+ "MAF 0.408549\n",
+ "CMMB 0.155229\n",
+ "CM 71.092406\n",
+ "panel_variant_id chr12_56007301_G_A_b38\n",
+ "chromosome chr12\n",
+ "position 56007301\n",
+ "effect_allele A\n",
+ "non_effect_allele G\n",
+ "current_build hg38\n",
+ "frequency 0.580808\n",
+ "sample_size 54612\n",
+ "zscore 0.138937\n",
+ "pvalue 0.8895\n",
+ "effect_size 0.0022\n",
+ "standard_error 0.0156\n",
+ "imputation_status original\n",
+ "n_cases 17008.0\n",
+ "Name: 0, dtype: object"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "magma_df.iloc[0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[0.041321, 'Inflammatory Bowel Disease'],\n",
+ " [0.030935, 'Non-cancer illness code, self-reported: psoriasis'],\n",
+ " [0.0090688,\n",
+ " 'Non-cancer illness code, self-reported: schizophrenia'],\n",
+ " [0.0042454,\n",
+ " 'Overall breast cancer in Europeans, imputed genotype'],\n",
+ " [0.032584, 'Diagnoses - main ICD10: G40 Epilepsy'],\n",
+ " [0.0013766,\n",
+ " 'Estrogen-receptor-negative breast cancer in Europeans, imputed genotype'],\n",
+ " [0.025212,\n",
+ " 'Non-cancer illness code, self-reported: high cholesterol']],\n",
+ " dtype=object)"
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "magma_df[(magma_df['SNP']=='rs4147638') & (magma_df['P']<0.05)][['P', 'Phenotype']].values"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Query | \n",
+ " GWAS Trait | \n",
+ " RS Number | \n",
+ " Position (GRCh37) | \n",
+ " Alleles | \n",
+ " R2 | \n",
+ " D' | \n",
+ " Risk Allele | \n",
+ " Effect Size (95% CI) | \n",
+ " Beta or OR | \n",
+ " P-value | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " rs2954654 | \n",
+ " Type 2 diabetes | \n",
+ " rs2294120 | \n",
+ " chr8:146003567 | \n",
+ " A=0.52, G=0.48 | \n",
+ " 0.846295 | \n",
+ " 0.957895 | \n",
+ " 0.455879299759268 | \n",
+ " 0.04430 | \n",
+ " 0.029-0.06 | \n",
+ " 2.000000e-08 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " rs4840568 | \n",
+ " Albumin-globulin ratio | \n",
+ " rs2409780 | \n",
+ " chr8:11337587 | \n",
+ " C=0.237, T=0.763 | \n",
+ " 0.897156 | \n",
+ " 1.000000 | \n",
+ " NR | \n",
+ " 0.04604 | \n",
+ " 0.035-0.057 | \n",
+ " 1.000000e-16 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " rs4840568 | \n",
+ " Non-albumin protein levels | \n",
+ " rs2409780 | \n",
+ " chr8:11337587 | \n",
+ " C=0.237, T=0.763 | \n",
+ " 0.897156 | \n",
+ " 1.000000 | \n",
+ " NR | \n",
+ " 0.04456 | \n",
+ " 0.034-0.055 | \n",
+ " 1.000000e-15 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " rs4840568 | \n",
+ " Rheumatoid arthritis | \n",
+ " rs2618444 | \n",
+ " chr8:11338370 | \n",
+ " A=0.763, C=0.237 | \n",
+ " 0.897156 | \n",
+ " 1.000000 | \n",
+ " NR | \n",
+ " 0.10050 | \n",
+ " 0.072-0.129 | \n",
+ " 7.000000e-12 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " rs4840568 | \n",
+ " Systemic lupus erythematosus | \n",
+ " rs2618444 | \n",
+ " chr8:11338370 | \n",
+ " A=0.763, C=0.237 | \n",
+ " 0.897156 | \n",
+ " 1.000000 | \n",
+ " NR | \n",
+ " 1.36000 | \n",
+ " 1.22-1.51 | \n",
+ " 7.000000e-09 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Query GWAS Trait RS Number Position (GRCh37) \\\n",
+ "0 rs2954654 Type 2 diabetes rs2294120 chr8:146003567 \n",
+ "1 rs4840568 Albumin-globulin ratio rs2409780 chr8:11337587 \n",
+ "2 rs4840568 Non-albumin protein levels rs2409780 chr8:11337587 \n",
+ "3 rs4840568 Rheumatoid arthritis rs2618444 chr8:11338370 \n",
+ "4 rs4840568 Systemic lupus erythematosus rs2618444 chr8:11338370 \n",
+ "\n",
+ " Alleles R2 D' Risk Allele \\\n",
+ "0 A=0.52, G=0.48 0.846295 0.957895 0.455879299759268 \n",
+ "1 C=0.237, T=0.763 0.897156 1.000000 NR \n",
+ "2 C=0.237, T=0.763 0.897156 1.000000 NR \n",
+ "3 A=0.763, C=0.237 0.897156 1.000000 NR \n",
+ "4 A=0.763, C=0.237 0.897156 1.000000 NR \n",
+ "\n",
+ " Effect Size (95% CI) Beta or OR P-value \n",
+ "0 0.04430 0.029-0.06 2.000000e-08 \n",
+ "1 0.04604 0.035-0.057 1.000000e-16 \n",
+ "2 0.04456 0.034-0.055 1.000000e-15 \n",
+ "3 0.10050 0.072-0.129 7.000000e-12 \n",
+ "4 1.36000 1.22-1.51 7.000000e-09 "
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "allsnps_inld_gwas_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "allsnps_inld_gwas_df.to_excel('./coeqtl_mapping/output/snps_in_ld_with_gwas_catelogue.xlsx')"
+ ]
+ },
+ {
+ "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.7.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/05_coeqtl_interpretation/.ipynb_checkpoints/TEM_NAIVE-checkpoint.ipynb b/05_coeqtl_interpretation/.ipynb_checkpoints/TEM_NAIVE-checkpoint.ipynb
new file mode 100644
index 0000000..314c2f6
--- /dev/null
+++ b/05_coeqtl_interpretation/.ipynb_checkpoints/TEM_NAIVE-checkpoint.ipynb
@@ -0,0 +1,1437 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import os\n",
+ "import re\n",
+ "from itertools import combinations\n",
+ "from pathlib import Path\n",
+ "\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import scanpy as sc\n",
+ "from scipy.stats import spearmanr\n",
+ "from scipy.stats import t, norm\n",
+ "from tqdm import tqdm\n",
+ "import argparse\n",
+ "from scipy.stats import rankdata\n",
+ "from collections import namedtuple\n",
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "from scipy import stats\n",
+ "%matplotlib inline\n",
+ "\n",
+ "\n",
+ "def get_time(x):\n",
+ " if x == 'UT':\n",
+ " return x\n",
+ " else:\n",
+ " pattern = re.compile(r'\\d+h')\n",
+ " return re.findall(pattern, x)[0]\n",
+ "\n",
+ "\n",
+ "class DATASET:\n",
+ " def __init__(self, datasetname):\n",
+ " self.name = datasetname\n",
+ " self.path_prefix = Path(\"./seurat_objects\")\n",
+ " self.information = self.get_information()\n",
+ " def get_information(self):\n",
+ " if self.name == 'onemillionv2':\n",
+ " self.path = '1M_v2_mediumQC_ctd_rnanormed_demuxids_20201029.sct.h5ad'\n",
+ " self.individual_id_col = 'assignment'\n",
+ " self.timepoint_id_col = 'time'\n",
+ " self.celltype_id = 'cell_type_lowerres'\n",
+ " self.chosen_condition = {'UT': 'UT',\n",
+ " 'stimulated': '3h'}\n",
+ " elif self.name == 'onemillionv3':\n",
+ " self.path = '1M_v3_mediumQC_ctd_rnanormed_demuxids_20201106.SCT.h5ad'\n",
+ " self.individual_id_col = 'assignment'\n",
+ " self.timepoint_id_col = 'time'\n",
+ " self.celltype_id = 'cell_type_lowerres'\n",
+ " self.chosen_condition = {'UT': 'UT',\n",
+ " 'stimulated': '3h'}\n",
+ " elif self.name == 'stemiv2':\n",
+ " self.path = 'cardio.integrated.20210301.stemiv2.h5ad'\n",
+ " self.individual_id_col = 'assignment.final'\n",
+ " self.timepoint_id_col = 'timepoint.final'\n",
+ " self.celltype_id = 'cell_type_lowerres'\n",
+ " self.chosen_condition = {'UT': 't8w',\n",
+ " 'stimulated': 'Baseline'}\n",
+ " elif self.name == 'ng':\n",
+ " self.path = 'pilot3_seurat3_200420_sct_azimuth.h5ad'\n",
+ " self.individual_id_col = 'snumber'\n",
+ " self.celltype_id = 'cell_type_mapped_to_onemillion'\n",
+ " else:\n",
+ " raise IOError(\"Dataset name not understood.\")\n",
+ " def load_dataset(self):\n",
+ " self.get_information()\n",
+ " print(f'Loading dataset {self.name} from {self.path_prefix} {self.path}')\n",
+ " self.data_sc = sc.read_h5ad(self.path_prefix / self.path)\n",
+ " if self.name.startswith('onemillion'):\n",
+ " self.data_sc.obs['time'] = [get_time(item) for item in self.data_sc.obs['timepoint']]\n",
+ " elif self.name == 'ng':\n",
+ " celltype_maping = {'CD4 T': 'CD4T', 'CD8 T': 'CD8T', 'Mono': 'monocyte', 'DC': 'DC', 'NK': 'NK',\n",
+ " 'other T': 'otherT', 'other': 'other', 'B': 'B'}\n",
+ " self.data_sc.obs['cell_type_mapped_to_onemillion'] = [celltype_maping.get(name) for name in\n",
+ " self.data_sc.obs['predicted.celltype.l1']]\n",
+ "\n",
+ "def corr_to_z(coef, num):\n",
+ " t_statistic = coef * np.sqrt((num - 2) / (1 - coef ** 2))\n",
+ " prob = t.cdf(t_statistic, num - 2)\n",
+ " z_score = norm.ppf(prob)\n",
+ " positive_coef_probs = 1 - prob\n",
+ " positive_coef_probs[coef < 0] = 0\n",
+ " negative_coef_probs = prob\n",
+ " negative_coef_probs[coef > 0] = 0\n",
+ " probs = negative_coef_probs + positive_coef_probs\n",
+ " return z_score, probs\n",
+ "\n",
+ "\n",
+ "def get_individual_networks_selected_genepairs(data_df, data_sc, individual_colname, genepair):\n",
+ "# data_df = pd.DataFrame(data=data_sc.X.toarray(),\n",
+ "# index=data_sc.obs.index,\n",
+ "# columns=data_sc.var.index)\n",
+ " gene1, gene2 = genepair.split(';')\n",
+ " sorted_genepair = [';'.join(sorted([gene1, gene2]))]\n",
+ " coef_df = pd.DataFrame(index=sorted_genepair)\n",
+ " coef_p_df = pd.DataFrame(index=sorted_genepair)\n",
+ " zscore_df = pd.DataFrame(index=sorted_genepair)\n",
+ " zscore_p_df = pd.DataFrame(index=sorted_genepair)\n",
+ " data_selected_df = data_df[[gene1, gene2]]\n",
+ " print(\n",
+ " f\"Begin calculating networks for {len(data_sc.obs[individual_colname].unique())} individuals and;\\n{genepair}\"\n",
+ " )\n",
+ " for ind_id in tqdm(data_sc.obs[individual_colname].unique()):\n",
+ " cell_num = data_sc.obs[data_sc.obs[individual_colname] == ind_id].shape[0]\n",
+ " if cell_num > 10:\n",
+ " individual_df = data_selected_df.loc[data_sc.obs[individual_colname] == ind_id]\n",
+ " individual_coefs, individual_coef_ps = spearmanr(individual_df.values, axis=0)\n",
+ " if data_selected_df.shape[1] == 2:\n",
+ " individual_coefs_flatten = pd.DataFrame(data = [individual_coefs],\n",
+ " index = sorted_genepair)\n",
+ " individual_coef_ps_flatten = \\\n",
+ " pd.DataFrame(data=[individual_coef_ps],\n",
+ " index=sorted_genepair)\n",
+ " else:\n",
+ " individual_coefs_flatten = pd.DataFrame(\n",
+ " data=individual_coefs[np.triu_indices_from(individual_coefs, 1)],\n",
+ " index=selected_genes_sorted_genepairs).loc[sorted_genepair]\n",
+ " individual_coef_ps_flatten = \\\n",
+ " pd.DataFrame(data=individual_coef_ps[np.triu_indices_from(individual_coefs, 1)],\n",
+ " index=selected_genes_sorted_genepairs).loc[sorted_genepair]\n",
+ " coef_df[ind_id] = individual_coefs_flatten\n",
+ " coef_p_df[ind_id] = individual_coef_ps_flatten\n",
+ " try:\n",
+ "# print(individual_coefs_flatten.values, cell_num)\n",
+ " individual_zscores_flatten, individual_zscore_ps_flatten = corr_to_z(\n",
+ " individual_coefs_flatten.values, \n",
+ " cell_num\n",
+ " )\n",
+ " zscore_df[ind_id] = individual_zscores_flatten\n",
+ " zscore_p_df[ind_id] = individual_zscore_ps_flatten\n",
+ " except:\n",
+ " continue\n",
+ " else:\n",
+ " print(\"Deleted this individual because of low cell number\", cell_num)\n",
+ " return data_selected_df, zscore_df, zscore_p_df"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### One million data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# load the GT data\n",
+ "gt = pd.read_csv('./coeqtl_interpretation/rs1131017_TEM_ratio/rs1131017.vcf',\n",
+ " skiprows=6, sep='\\t')\n",
+ "change_colnames = lambda col:'_'.join(col.split('_')[1:]) if 'LLDeep' in col else col\n",
+ "gt = gt.rename({col:change_colnames(col) for col in gt.columns}, axis=1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " #CHROM | \n",
+ " POS | \n",
+ " ID | \n",
+ " REF | \n",
+ " ALT | \n",
+ " QUAL | \n",
+ " FILTER | \n",
+ " INFO | \n",
+ " FORMAT | \n",
+ " LLDeep_1191 | \n",
+ " ... | \n",
+ " s21 | \n",
+ " s43 | \n",
+ " s24 | \n",
+ " s23 | \n",
+ " s45 | \n",
+ " s26 | \n",
+ " s25 | \n",
+ " s28 | \n",
+ " s27 | \n",
+ " s29 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 12 | \n",
+ " 56435929 | \n",
+ " rs1131017 | \n",
+ " C | \n",
+ " G | \n",
+ " . | \n",
+ " . | \n",
+ " . | \n",
+ " GT:DS | \n",
+ " 0/0:0.0 | \n",
+ " ... | \n",
+ " 1/1:2.0 | \n",
+ " 1/1:2.0 | \n",
+ " 1/1:2.0 | \n",
+ " 0/1:1.0 | \n",
+ " 1/1:2.0 | \n",
+ " 0/1:1.0 | \n",
+ " 0/0:0.0 | \n",
+ " 1/1:2.0 | \n",
+ " 0/0:0.06000000000000005 | \n",
+ " 1/1:2.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
1 rows × 182 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT LLDeep_1191 \\\n",
+ "0 12 56435929 rs1131017 C G . . . GT:DS 0/0:0.0 \n",
+ "\n",
+ " ... s21 s43 s24 s23 s45 s26 s25 \\\n",
+ "0 ... 1/1:2.0 1/1:2.0 1/1:2.0 0/1:1.0 1/1:2.0 0/1:1.0 0/0:0.0 \n",
+ "\n",
+ " s28 s27 s29 \n",
+ "0 1/1:2.0 0/0:0.06000000000000005 1/1:2.0 \n",
+ "\n",
+ "[1 rows x 182 columns]"
+ ]
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "gt.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### CD4T+CD8T"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# # load onemillion v2 data\n",
+ "# dataset = DATASET('onemillionv2')\n",
+ "# dataset.load_dataset()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " assignment | \n",
+ " predicted.celltype.l1 | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " LLDeep_0022 | \n",
+ " B | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " CD4 T | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " CD8 T | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " DC | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " Mono | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 0\n",
+ "assignment predicted.celltype.l1 \n",
+ "LLDeep_0022 B 0\n",
+ " CD4 T 0\n",
+ " CD8 T 0\n",
+ " DC 0\n",
+ " Mono 0"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " assignment | \n",
+ " predicted.celltype.l2 | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " LLDeep_0022 | \n",
+ " ASDC | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " B intermediate | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " B memory | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " B naive | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " CD14 Mono | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " 0\n",
+ "assignment predicted.celltype.l2 \n",
+ "LLDeep_0022 ASDC 0\n",
+ " B intermediate 0\n",
+ " B memory 0\n",
+ " B naive 0\n",
+ " CD14 Mono 0"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " CD4T TEM | \n",
+ " CD4T Naive | \n",
+ " CD8T TEM | \n",
+ " CD8T Naive | \n",
+ " CD4T | \n",
+ " CD8T | \n",
+ " CD4T TCM | \n",
+ " CD8T TCM | \n",
+ " all_num | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " LLDeep_1370 | \n",
+ " 20 | \n",
+ " 85 | \n",
+ " 74 | \n",
+ " 13 | \n",
+ " 224 | \n",
+ " 89 | \n",
+ " 85 | \n",
+ " 8 | \n",
+ " 827 | \n",
+ "
\n",
+ " \n",
+ " LLDeep_0434 | \n",
+ " 42 | \n",
+ " 417 | \n",
+ " 95 | \n",
+ " 93 | \n",
+ " 989 | \n",
+ " 209 | \n",
+ " 406 | \n",
+ " 29 | \n",
+ " 1496 | \n",
+ "
\n",
+ " \n",
+ " LLDeep_1319 | \n",
+ " 110 | \n",
+ " 132 | \n",
+ " 223 | \n",
+ " 4 | \n",
+ " 922 | \n",
+ " 236 | \n",
+ " 546 | \n",
+ " 19 | \n",
+ " 1504 | \n",
+ "
\n",
+ " \n",
+ " LLDeep_0269 | \n",
+ " 21 | \n",
+ " 58 | \n",
+ " 80 | \n",
+ " 7 | \n",
+ " 211 | \n",
+ " 88 | \n",
+ " 101 | \n",
+ " 8 | \n",
+ " 529 | \n",
+ "
\n",
+ " \n",
+ " LLDeep_0471 | \n",
+ " 27 | \n",
+ " 242 | \n",
+ " 81 | \n",
+ " 14 | \n",
+ " 570 | \n",
+ " 103 | \n",
+ " 254 | \n",
+ " 10 | \n",
+ " 1241 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " CD4T TEM CD4T Naive CD8T TEM CD8T Naive CD4T CD8T CD4T TCM \\\n",
+ "LLDeep_1370 20 85 74 13 224 89 85 \n",
+ "LLDeep_0434 42 417 95 93 989 209 406 \n",
+ "LLDeep_1319 110 132 223 4 922 236 546 \n",
+ "LLDeep_0269 21 58 80 7 211 88 101 \n",
+ "LLDeep_0471 27 242 81 14 570 103 254 \n",
+ "\n",
+ " CD8T TCM all_num \n",
+ "LLDeep_1370 8 827 \n",
+ "LLDeep_0434 29 1496 \n",
+ "LLDeep_1319 19 1504 \n",
+ "LLDeep_0269 8 529 \n",
+ "LLDeep_0471 10 1241 "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 0, 'rs1131017')"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "onemillionv2 = dataset.data_sc.obs.copy()\n",
+ "onemillionv2_celltype_df = pd.read_csv(\n",
+ " './1M_v2_20201029_azimuth.tsv',\n",
+ " sep='\\t', index_col=0\n",
+ ")\n",
+ "onemillionv2 = pd.concat([onemillionv2, onemillionv2_celltype_df], axis=1)\n",
+ "onemillionv2 = onemillionv2[onemillionv2['timepoint']=='UT']\n",
+ "onemillionv2_l1_cellratio_df = onemillionv2.groupby(['assignment', 'predicted.celltype.l1']).size().to_frame()\n",
+ "display(onemillionv2_l1_cellratio_df.head())\n",
+ "onemillionv2_celltyperatio = onemillionv2.groupby(['assignment', 'predicted.celltype.l2']).size().to_frame()\n",
+ "display(onemillionv2_celltyperatio.head())\n",
+ "onemillionv2_allcells = onemillionv2['assignment'].value_counts()\n",
+ "\n",
+ "# caluclate the individual CD4T TEM and NAIVE ratio\n",
+ "individual_ratio = pd.DataFrame()\n",
+ "for individual in onemillionv2['assignment'].unique():\n",
+ " tem_num = onemillionv2_celltyperatio.loc[individual, \"CD4 TEM\"].values[0]\n",
+ " naive_num = onemillionv2_celltyperatio.loc[individual, \"CD4 Naive\"].values[0]\n",
+ " cd8t_tem_num = onemillionv2_celltyperatio.loc[individual, \"CD8 TEM\"].values[0]\n",
+ " tcm_num = onemillionv2_celltyperatio.loc[individual, \"CD4 TCM\"].values[0]\n",
+ " cd8t_tcm_num = onemillionv2_celltyperatio.loc[individual, \"CD8 TCM\"].values[0]\n",
+ " cd8t_naive_num = onemillionv2_celltyperatio.loc[individual, \"CD8 Naive\"].values[0]\n",
+ " cd4t_num = onemillionv2_l1_cellratio_df.loc[individual, 'CD4 T'].values[0]\n",
+ " cd8t_num = onemillionv2_l1_cellratio_df.loc[individual, 'CD8 T'].values[0]\n",
+ " all_num = onemillionv2_allcells.loc[individual]\n",
+ " individual_ratio[individual] = [tem_num, naive_num, \n",
+ " cd8t_tem_num, cd8t_naive_num,\n",
+ " cd4t_num, cd8t_num,\n",
+ " tcm_num, cd8t_tcm_num, all_num]\n",
+ "\n",
+ "individual_ratio_df = individual_ratio.T\n",
+ "individual_ratio_df = individual_ratio_df.rename({0: 'CD4T TEM', 1:'CD4T Naive', \n",
+ " 2: 'CD8T TEM', 3: 'CD8T Naive',\n",
+ " 4: 'CD4T', 5: 'CD8T',\n",
+ " 6: 'CD4T TCM', 7: 'CD8T TCM',\n",
+ " 8: 'all_num'}, \n",
+ " axis=1)\n",
+ "display(individual_ratio_df.head())\n",
+ "\n",
+ "\n",
+ "common_individuals = list(set(individual_ratio_df.index) & set(gt.columns))\n",
+ "common_individuals_individual_ratio_df = individual_ratio_df.loc[common_individuals]\n",
+ "common_individuals_individual_ratio_df['gt'] = [float(gt[col].values[0].split(':')[1]) for col in \n",
+ " common_individuals_individual_ratio_df.index]\n",
+ "common_individuals_individual_ratio_df['chemistry'] = 'v2'\n",
+ "\n",
+ "fig, axes = plt.subplots(1, 3, figsize=(15, 5))\n",
+ "ax1, ax2, ax3 = axes\n",
+ "cd4ydata = (common_individuals_individual_ratio_df['CD4T TEM']) / common_individuals_individual_ratio_df['CD4T']\n",
+ "sns.regplot(x=common_individuals_individual_ratio_df['gt'],\n",
+ " y=cd4ydata, \n",
+ " ax=ax1)\n",
+ "r, p = stats.pearsonr(common_individuals_individual_ratio_df['gt'],\n",
+ " cd4ydata)\n",
+ "ax1.set_title('Oelen v2 r={:.2f}, p={:.2g}'.format(r, p))\n",
+ "ax1.set_ylabel('CD4 TEM / CD4T')\n",
+ "ax1.set_xlabel(\"rs1131017\")\n",
+ "\n",
+ "cd8tydata = (common_individuals_individual_ratio_df['CD4T Naive']) / common_individuals_individual_ratio_df['CD4T']\n",
+ "sns.regplot(x=common_individuals_individual_ratio_df['gt'],\n",
+ " y= cd8tydata, \n",
+ " ax=ax2)\n",
+ "r, p = stats.pearsonr(common_individuals_individual_ratio_df['gt'],\n",
+ " cd8tydata)\n",
+ "ax2.set_title('Oelen v2 r={:.2f}, p={:.2g}'.format(r, p))\n",
+ "ax2.set_ylabel('CD4 Naive / CD4T')\n",
+ "ax2.set_xlabel(\"rs1131017\")\n",
+ "\n",
+ "cd8tydata = (common_individuals_individual_ratio_df['CD4T Naive']) / common_individuals_individual_ratio_df['CD4T TEM']\n",
+ "sns.regplot(x=common_individuals_individual_ratio_df['gt'],\n",
+ " y= cd8tydata, \n",
+ " ax=ax3)\n",
+ "r, p = stats.pearsonr(common_individuals_individual_ratio_df['gt'],\n",
+ " cd8tydata)\n",
+ "ax3.set_title('Oelen v2 r={:.2f}, p={:.2g}'.format(r, p))\n",
+ "ax3.set_ylabel('CD4 Naive / CD4T TEM')\n",
+ "ax3.set_xlabel(\"rs1131017\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 0, 'rs1131017')"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, axes = plt.subplots(1, 3, figsize=(15, 5))\n",
+ "ax1, ax2, ax3 = axes\n",
+ "cd4ydata = (common_individuals_individual_ratio_df['CD8T TEM']) / common_individuals_individual_ratio_df['CD8T']\n",
+ "sns.regplot(x=common_individuals_individual_ratio_df['gt'],\n",
+ " y=cd4ydata, \n",
+ " ax=ax1)\n",
+ "r, p = stats.pearsonr(common_individuals_individual_ratio_df['gt'],\n",
+ " cd4ydata)\n",
+ "ax1.set_title('Oelen v2 r={:.2f}, p={:.2g}'.format(r, p))\n",
+ "ax1.set_ylabel('CD8 TEM / CD8T')\n",
+ "ax1.set_xlabel(\"rs1131017\")\n",
+ "\n",
+ "cd8tydata = (common_individuals_individual_ratio_df['CD8T Naive']) / common_individuals_individual_ratio_df['CD8T']\n",
+ "sns.regplot(x=common_individuals_individual_ratio_df['gt'],\n",
+ " y= cd8tydata, \n",
+ " ax=ax2)\n",
+ "r, p = stats.pearsonr(common_individuals_individual_ratio_df['gt'],\n",
+ " cd8tydata)\n",
+ "ax2.set_title('Oelen v2 r={:.2f}, p={:.2g}'.format(r, p))\n",
+ "ax2.set_ylabel('CD8 Naive / CD8T')\n",
+ "ax2.set_xlabel(\"rs1131017\")\n",
+ "\n",
+ "cd8tydata = (common_individuals_individual_ratio_df['CD8T Naive']) / common_individuals_individual_ratio_df['CD8T TEM']\n",
+ "sns.regplot(x=common_individuals_individual_ratio_df['gt'],\n",
+ " y= cd8tydata, \n",
+ " ax=ax3)\n",
+ "r, p = stats.pearsonr(common_individuals_individual_ratio_df['gt'],\n",
+ " cd8tydata)\n",
+ "ax3.set_title('Oelen v2 r={:.2f}, p={:.2g}'.format(r, p))\n",
+ "ax3.set_ylabel('CD8 Naive / CD8T TEM')\n",
+ "ax3.set_xlabel(\"rs1131017\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 0, 'rs1131017')"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "cd8tydata = (common_individuals_individual_ratio_df['CD8T TEM'] + \\\n",
+ " common_individuals_individual_ratio_df['CD4T TEM']) / (\n",
+ " common_individuals_individual_ratio_df['CD8T Naive'] + \\\n",
+ " common_individuals_individual_ratio_df['CD4T Naive']\n",
+ ")\n",
+ "fig, ax = plt.subplots()\n",
+ "sns.regplot(x=common_individuals_individual_ratio_df['gt'],\n",
+ " y= cd8tydata, \n",
+ " ax=ax)\n",
+ "r, p = stats.spearmanr(common_individuals_individual_ratio_df['gt'],\n",
+ " cd8tydata)\n",
+ "ax.set_title('Oelen v2 r={:.2f}, p={:.2g}'.format(r, p))\n",
+ "ax.set_ylabel('CD8+CD4 TEM / CD8+CD4 Naive')\n",
+ "ax.set_xlabel(\"rs1131017\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Begin calculating networks for 72 individuals and;\n",
+ "RPS26;RUNX3\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 72/72 [00:00<00:00, 207.95it/s]\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "SpearmanrResult(correlation=0.29651955126400936, pvalue=0.011433091246178868)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "onemillionv2_datasc = dataset.data_sc\n",
+ "onemillionv2_monocytes_ut = onemillionv2_datasc[(onemillionv2_datasc.obs['cell_type_lowerres']=='CD4T') & \n",
+ " (onemillionv2_datasc.obs['time']=='UT')]\n",
+ "onemillionv2_monocytes_ut_df = pd.DataFrame(\n",
+ " data=onemillionv2_monocytes_ut.X.toarray(),\n",
+ " columns=onemillionv2_monocytes_ut.var.index,\n",
+ " index=onemillionv2_monocytes_ut.obs.index\n",
+ ")\n",
+ "data_selected_df, zscore_df, zscore_p_df = \\\n",
+ "get_individual_networks_selected_genepairs(onemillionv2_monocytes_ut_df, \n",
+ " onemillionv2_monocytes_ut, \n",
+ " 'assignment', \n",
+ " ';'.join(['RPS26', 'RUNX3']))\n",
+ "concated_df = pd.concat([zscore_df.T,\n",
+ " gt.T],\n",
+ " axis=1).dropna()\n",
+ "concated_df['gt'] = [item.split(':')[0].count('1') for item in concated_df[0]]\n",
+ "print(spearmanr(concated_df['RPS26;RUNX3'], concated_df['gt']))\n",
+ "sns.regplot(x='gt', y='RPS26;RUNX3', data=concated_df)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Begin calculating networks for 72 individuals and;\n",
+ "RPS26;RUNX3\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 72/72 [00:00<00:00, 214.76it/s]\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "SpearmanrResult(correlation=0.2201691525430256, pvalue=0.06311568667519006)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "onemillionv2_datasc = dataset.data_sc\n",
+ "onemillionv2_monocytes_ut = onemillionv2_datasc[(onemillionv2_datasc.obs['cell_type_lowerres']=='CD8T') & \n",
+ " (onemillionv2_datasc.obs['time']=='UT')]\n",
+ "onemillionv2_monocytes_ut_df = pd.DataFrame(\n",
+ " data=onemillionv2_monocytes_ut.X.toarray(),\n",
+ " columns=onemillionv2_monocytes_ut.var.index,\n",
+ " index=onemillionv2_monocytes_ut.obs.index\n",
+ ")\n",
+ "data_selected_df, zscore_df, zscore_p_df = \\\n",
+ "get_individual_networks_selected_genepairs(onemillionv2_monocytes_ut_df, \n",
+ " onemillionv2_monocytes_ut, \n",
+ " 'assignment', \n",
+ " ';'.join(['RPS26', 'RUNX3']))\n",
+ "concated_df = pd.concat([zscore_df.T,\n",
+ " gt.T],\n",
+ " axis=1).dropna()\n",
+ "concated_df['gt'] = [item.split(':')[0].count('1') for item in concated_df[0]]\n",
+ "print(spearmanr(concated_df['RPS26;RUNX3'], concated_df['gt']))\n",
+ "sns.regplot(x='gt', y='RPS26;RUNX3', data=concated_df)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### onemillion v3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# # load onemillion v2 data\n",
+ "# datasetv3 = DATASET('onemillionv3')\n",
+ "# datasetv3.load_dataset()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " CD4T TEM | \n",
+ " CD4T Naive | \n",
+ " CD8T TEM | \n",
+ " CD8T Naive | \n",
+ " CD4T | \n",
+ " CD8T | \n",
+ " CD4T TCM | \n",
+ " CD8T TCM | \n",
+ " all_num | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " LLDeep_0117 | \n",
+ " 39 | \n",
+ " 248 | \n",
+ " 70 | \n",
+ " 75 | \n",
+ " 625 | \n",
+ " 170 | \n",
+ " 289 | \n",
+ " 26 | \n",
+ " 1599 | \n",
+ "
\n",
+ " \n",
+ " LLDeep_1300 | \n",
+ " 34 | \n",
+ " 149 | \n",
+ " 73 | \n",
+ " 39 | \n",
+ " 658 | \n",
+ " 119 | \n",
+ " 450 | \n",
+ " 10 | \n",
+ " 1382 | \n",
+ "
\n",
+ " \n",
+ " LLDeep_0615 | \n",
+ " 68 | \n",
+ " 84 | \n",
+ " 175 | \n",
+ " 23 | \n",
+ " 550 | \n",
+ " 212 | \n",
+ " 347 | \n",
+ " 19 | \n",
+ " 1277 | \n",
+ "
\n",
+ " \n",
+ " LLDeep_0923 | \n",
+ " 39 | \n",
+ " 80 | \n",
+ " 205 | \n",
+ " 40 | \n",
+ " 316 | \n",
+ " 249 | \n",
+ " 140 | \n",
+ " 6 | \n",
+ " 907 | \n",
+ "
\n",
+ " \n",
+ " LLDeep_0705 | \n",
+ " 13 | \n",
+ " 114 | \n",
+ " 123 | \n",
+ " 61 | \n",
+ " 322 | \n",
+ " 188 | \n",
+ " 166 | \n",
+ " 3 | \n",
+ " 947 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " CD4T TEM CD4T Naive CD8T TEM CD8T Naive CD4T CD8T CD4T TCM \\\n",
+ "LLDeep_0117 39 248 70 75 625 170 289 \n",
+ "LLDeep_1300 34 149 73 39 658 119 450 \n",
+ "LLDeep_0615 68 84 175 23 550 212 347 \n",
+ "LLDeep_0923 39 80 205 40 316 249 140 \n",
+ "LLDeep_0705 13 114 123 61 322 188 166 \n",
+ "\n",
+ " CD8T TCM all_num \n",
+ "LLDeep_0117 26 1599 \n",
+ "LLDeep_1300 10 1382 \n",
+ "LLDeep_0615 19 1277 \n",
+ "LLDeep_0923 6 907 \n",
+ "LLDeep_0705 3 947 "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 0, 'rs1131017')"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "onemillionv3 = datasetv3.data_sc.obs.copy()\n",
+ "onemillionv3_celltype_df = pd.read_csv(\n",
+ " './1M_v3_20201106_azimuth.tsv',\n",
+ " sep='\\t', index_col=0\n",
+ ")\n",
+ "onemillionv3 = pd.concat([onemillionv3, onemillionv3_celltype_df], axis=1)\n",
+ "onemillionv3 = onemillionv3[onemillionv3['timepoint']=='UT']\n",
+ "onemillionv3_l1_cellratio_df = onemillionv3.groupby(['assignment', 'predicted.celltype.l1']).size().to_frame()\n",
+ "# display(onemillionv3_l1_cellratio_df.head())\n",
+ "onemillionv3_celltyperatio = onemillionv3.groupby(['assignment', 'predicted.celltype.l2']).size().to_frame()\n",
+ "# display(onemillionv3_celltyperatio.head())\n",
+ "onemillionv3_allcells = onemillionv3['assignment'].value_counts()\n",
+ "\n",
+ "# caluclate the individual CD4T TEM and NAIVE ratio\n",
+ "individual_ratio = pd.DataFrame()\n",
+ "for individual in onemillionv3['assignment'].unique():\n",
+ " tem_num = onemillionv3_celltyperatio.loc[individual, \"CD4 TEM\"].values[0]\n",
+ " naive_num = onemillionv3_celltyperatio.loc[individual, \"CD4 Naive\"].values[0]\n",
+ " cd8t_tem_num = onemillionv3_celltyperatio.loc[individual, \"CD8 TEM\"].values[0]\n",
+ " tcm_num = onemillionv3_celltyperatio.loc[individual, \"CD4 TCM\"].values[0]\n",
+ " cd8t_tcm_num = onemillionv3_celltyperatio.loc[individual, \"CD8 TCM\"].values[0]\n",
+ " cd8t_naive_num = onemillionv3_celltyperatio.loc[individual, \"CD8 Naive\"].values[0]\n",
+ " cd4t_num = onemillionv3_l1_cellratio_df.loc[individual, 'CD4 T'].values[0]\n",
+ " cd8t_num = onemillionv3_l1_cellratio_df.loc[individual, 'CD8 T'].values[0]\n",
+ " all_num = onemillionv3_allcells.loc[individual]\n",
+ " individual_ratio[individual] = [tem_num, naive_num, \n",
+ " cd8t_tem_num, cd8t_naive_num,\n",
+ " cd4t_num, cd8t_num,\n",
+ " tcm_num, cd8t_tcm_num, all_num]\n",
+ "\n",
+ "individual_ratio_dfv3 = individual_ratio.T\n",
+ "individual_ratio_dfv3 = individual_ratio_dfv3.rename({0: 'CD4T TEM', 1:'CD4T Naive', \n",
+ " 2: 'CD8T TEM', 3: 'CD8T Naive',\n",
+ " 4: 'CD4T', 5: 'CD8T',\n",
+ " 6: 'CD4T TCM', 7: 'CD8T TCM',\n",
+ " 8: 'all_num'}, \n",
+ " axis=1)\n",
+ "display(individual_ratio_dfv3.head())\n",
+ "\n",
+ "\n",
+ "common_individuals = list(set(individual_ratio_dfv3.index) & set(gt.columns))\n",
+ "common_individuals_individual_ratio_dfv3 = individual_ratio_dfv3.loc[common_individuals]\n",
+ "common_individuals_individual_ratio_dfv3['gt'] = [float(gt[col].values[0].split(':')[1]) for col in \n",
+ " common_individuals_individual_ratio_dfv3.index]\n",
+ "common_individuals_individual_ratio_dfv3['chemistry'] = 'v2'\n",
+ "\n",
+ "fig, axes = plt.subplots(1, 3, figsize=(15, 5))\n",
+ "ax1, ax2, ax3 = axes\n",
+ "cd4ydata = (common_individuals_individual_ratio_dfv3['CD4T TEM']) / common_individuals_individual_ratio_dfv3['CD4T']\n",
+ "sns.regplot(x=common_individuals_individual_ratio_dfv3['gt'],\n",
+ " y=cd4ydata, \n",
+ " ax=ax1)\n",
+ "r, p = stats.pearsonr(common_individuals_individual_ratio_dfv3['gt'],\n",
+ " cd4ydata)\n",
+ "ax1.set_title('Oelen v3 r={:.2f}, p={:.2g}'.format(r, p))\n",
+ "ax1.set_ylabel('CD4 TEM / CD4T')\n",
+ "ax1.set_xlabel(\"rs1131017\")\n",
+ "\n",
+ "cd8tydata = (common_individuals_individual_ratio_dfv3['CD4T Naive']) / common_individuals_individual_ratio_dfv3['CD4T']\n",
+ "sns.regplot(x=common_individuals_individual_ratio_dfv3['gt'],\n",
+ " y= cd8tydata, \n",
+ " ax=ax2)\n",
+ "r, p = stats.pearsonr(common_individuals_individual_ratio_dfv3['gt'],\n",
+ " cd8tydata)\n",
+ "ax2.set_title('Oelen v3 r={:.2f}, p={:.2g}'.format(r, p))\n",
+ "ax2.set_ylabel('CD4 Naive / CD4T')\n",
+ "ax2.set_xlabel(\"rs1131017\")\n",
+ "\n",
+ "cd8tydata = (common_individuals_individual_ratio_dfv3['CD4T Naive']) / common_individuals_individual_ratio_dfv3['CD4T TEM']\n",
+ "sns.regplot(x=common_individuals_individual_ratio_dfv3['gt'],\n",
+ " y= cd8tydata, \n",
+ " ax=ax3)\n",
+ "r, p = stats.pearsonr(common_individuals_individual_ratio_dfv3['gt'],\n",
+ " cd8tydata)\n",
+ "ax3.set_title('Oelen v3 r={:.2f}, p={:.2g}'.format(r, p))\n",
+ "ax3.set_ylabel('CD4 Naive / CD4T TEM')\n",
+ "ax3.set_xlabel(\"rs1131017\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 0, 'rs1131017')"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, axes = plt.subplots(1, 3, figsize=(15, 5))\n",
+ "ax1, ax2, ax3 = axes\n",
+ "cd4ydata = (common_individuals_individual_ratio_dfv3['CD8T TEM']) / common_individuals_individual_ratio_dfv3['CD8T']\n",
+ "sns.regplot(x=common_individuals_individual_ratio_dfv3['gt'],\n",
+ " y=cd4ydata, \n",
+ " ax=ax1)\n",
+ "r, p = stats.spearmanr(common_individuals_individual_ratio_dfv3['gt'],\n",
+ " cd4ydata)\n",
+ "ax1.set_title('Oelen v3 r={:.2f}, p={:.2g}'.format(r, p))\n",
+ "ax1.set_ylabel('CD8 TEM / CD4T')\n",
+ "ax1.set_xlabel(\"rs1131017\")\n",
+ "\n",
+ "cd8tydata = (common_individuals_individual_ratio_dfv3['CD8T Naive']) / common_individuals_individual_ratio_dfv3['CD8T']\n",
+ "sns.regplot(x=common_individuals_individual_ratio_dfv3['gt'],\n",
+ " y= cd8tydata, \n",
+ " ax=ax2)\n",
+ "r, p = stats.spearmanr(common_individuals_individual_ratio_dfv3['gt'],\n",
+ " cd8tydata)\n",
+ "ax2.set_title('Oelen v3 r={:.2f}, p={:.2g}'.format(r, p))\n",
+ "ax2.set_ylabel('CD8 Naive / CD8T')\n",
+ "ax2.set_xlabel(\"rs1131017\")\n",
+ "\n",
+ "cd8tydata = (common_individuals_individual_ratio_dfv3['CD8T Naive']) / common_individuals_individual_ratio_dfv3['CD8T TEM']\n",
+ "sns.regplot(x=common_individuals_individual_ratio_dfv3['gt'],\n",
+ " y= cd8tydata, \n",
+ " ax=ax3)\n",
+ "r, p = stats.spearmanr(common_individuals_individual_ratio_dfv3['gt'],\n",
+ " cd8tydata)\n",
+ "ax3.set_title('Oelen v3 r={:.2f}, p={:.2g}'.format(r, p))\n",
+ "ax3.set_ylabel('CD8 Naive / CD8T TEM')\n",
+ "ax3.set_xlabel(\"rs1131017\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(104, 11) (72, 11) (32, 11)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " CD4T TEM | \n",
+ " CD4T Naive | \n",
+ " CD8T TEM | \n",
+ " CD8T Naive | \n",
+ " CD4T | \n",
+ " CD8T | \n",
+ " CD4T TCM | \n",
+ " CD8T TCM | \n",
+ " all_num | \n",
+ " gt | \n",
+ " chemistry | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " LLDeep_1035 | \n",
+ " 17 | \n",
+ " 152 | \n",
+ " 36 | \n",
+ " 54 | \n",
+ " 625 | \n",
+ " 108 | \n",
+ " 424 | \n",
+ " 28 | \n",
+ " 1006 | \n",
+ " 1.0 | \n",
+ " v2 | \n",
+ "
\n",
+ " \n",
+ " LLDeep_0960 | \n",
+ " 36 | \n",
+ " 89 | \n",
+ " 113 | \n",
+ " 13 | \n",
+ " 586 | \n",
+ " 143 | \n",
+ " 374 | \n",
+ " 26 | \n",
+ " 1546 | \n",
+ " 0.0 | \n",
+ " v2 | \n",
+ "
\n",
+ " \n",
+ " LLDeep_1004 | \n",
+ " 65 | \n",
+ " 54 | \n",
+ " 440 | \n",
+ " 9 | \n",
+ " 583 | \n",
+ " 462 | \n",
+ " 437 | \n",
+ " 16 | \n",
+ " 1493 | \n",
+ " 1.0 | \n",
+ " v2 | \n",
+ "
\n",
+ " \n",
+ " LLDeep_0918 | \n",
+ " 19 | \n",
+ " 34 | \n",
+ " 119 | \n",
+ " 7 | \n",
+ " 249 | \n",
+ " 136 | \n",
+ " 168 | \n",
+ " 14 | \n",
+ " 598 | \n",
+ " 1.0 | \n",
+ " v2 | \n",
+ "
\n",
+ " \n",
+ " LLDeep_0067 | \n",
+ " 51 | \n",
+ " 101 | \n",
+ " 122 | \n",
+ " 89 | \n",
+ " 753 | \n",
+ " 231 | \n",
+ " 546 | \n",
+ " 30 | \n",
+ " 1429 | \n",
+ " 1.0 | \n",
+ " v2 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " CD4T TEM CD4T Naive CD8T TEM CD8T Naive CD4T CD8T CD4T TCM \\\n",
+ "LLDeep_1035 17 152 36 54 625 108 424 \n",
+ "LLDeep_0960 36 89 113 13 586 143 374 \n",
+ "LLDeep_1004 65 54 440 9 583 462 437 \n",
+ "LLDeep_0918 19 34 119 7 249 136 168 \n",
+ "LLDeep_0067 51 101 122 89 753 231 546 \n",
+ "\n",
+ " CD8T TCM all_num gt chemistry \n",
+ "LLDeep_1035 28 1006 1.0 v2 \n",
+ "LLDeep_0960 26 1546 0.0 v2 \n",
+ "LLDeep_1004 16 1493 1.0 v2 \n",
+ "LLDeep_0918 14 598 1.0 v2 \n",
+ "LLDeep_0067 30 1429 1.0 v2 "
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "concate_v2_v3 = pd.concat([common_individuals_individual_ratio_df,\n",
+ " common_individuals_individual_ratio_dfv3],\n",
+ " axis=0)\n",
+ "print(concate_v2_v3.shape,common_individuals_individual_ratio_df.shape, common_individuals_individual_ratio_dfv3.shape)\n",
+ "concate_v2_v3.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, ax1 = plt.subplots()\n",
+ "cd4ydata = (concate_v2_v3['CD8T Naive'] + \\\n",
+ " concate_v2_v3['CD4T Naive']\n",
+ " ) / (\n",
+ " concate_v2_v3['CD8T TEM'] + \\\n",
+ " concate_v2_v3['CD4T TEM']\n",
+ ")\n",
+ "sns.regplot(x=concate_v2_v3['gt'],\n",
+ " y=cd4ydata, \n",
+ " ax=ax1)\n",
+ "r, p = stats.spearmanr(concate_v2_v3['gt'],\n",
+ " cd4ydata)\n",
+ "ax1.set_title('Oelen v2 & v3 r={:.2f}, p={:.2g}'.format(r, p))\n",
+ "ax1.set_ylabel('CD8+CD4 TEM / CD8+CD4 Naive')\n",
+ "ax1.set_xlabel(\"rs1131017\")\n",
+ "\n",
+ "plt.savefig('TEM_naive_CD4_CD8_v2_v3_rs1131017.pdf')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "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.7.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/05_coeqtl_interpretation/LDTRAIT.ipynb b/05_coeqtl_interpretation/LDTRAIT.ipynb
new file mode 100644
index 0000000..659b6fa
--- /dev/null
+++ b/05_coeqtl_interpretation/LDTRAIT.ipynb
@@ -0,0 +1,944 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import requests\n",
+ "from tqdm import tqdm\n",
+ "import os\n",
+ "from io import StringIO\n",
+ "from pathlib import Path"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [],
+ "source": [
+ "savedir = Path(\"./annotated_coeqtl_snps/ldtrait\")\n",
+ "\n",
+ "celltypesnps = {}\n",
+ "merged_dict = pd.read_excel('/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output/summary/coeQTLs_6majorcelltypes.filtered.xlsx',\n",
+ " sheet_name=None)\n",
+ "for celltype in merged_dict.keys():\n",
+ " celltypesnps[celltype] = list(merged_dict[celltype]['SNP'].unique())\n",
+ "allcelltypes_snps = list(set([ele for l in celltypesnps.values() for ele in l]))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 90,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "72"
+ ]
+ },
+ "execution_count": 90,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(allcelltypes_snps)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 70,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 17%|█▋ | 12/72 [05:53<34:19, 34.33s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs62480001\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\r",
+ " 18%|█▊ | 13/72 [06:52<39:48, 40.48s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs817352\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\r",
+ " 19%|█▉ | 14/72 [07:11<33:43, 34.89s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs80164297\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 24%|██▎ | 17/72 [09:23<37:43, 41.16s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs11772922\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 26%|██▋ | 19/72 [10:43<35:14, 39.89s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs3758833\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 29%|██▉ | 21/72 [11:39<28:28, 33.49s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs11047696\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\r",
+ " 31%|███ | 22/72 [12:09<27:15, 32.70s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs9971029\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\r",
+ " 32%|███▏ | 23/72 [12:35<24:55, 30.53s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs4949655\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 42%|████▏ | 30/72 [16:56<26:11, 37.41s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs6007595\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\r",
+ " 43%|████▎ | 31/72 [17:27<24:21, 35.64s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs7309189\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\r",
+ " 44%|████▍ | 32/72 [18:20<27:11, 40.79s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs9657360\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 49%|████▊ | 35/72 [19:43<20:09, 32.70s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs731835\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 53%|█████▎ | 38/72 [26:08<51:53, 91.57s/it] "
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs260503\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 58%|█████▊ | 42/72 [28:04<22:59, 46.00s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs13140099\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\r",
+ " 60%|█████▉ | 43/72 [28:34<19:51, 41.10s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs2235910\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 71%|███████ | 51/72 [42:19<40:20, 115.26s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs1628955\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 74%|███████▎ | 53/72 [43:55<25:05, 79.24s/it] "
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs12443580\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 82%|████████▏ | 59/72 [48:18<09:34, 44.16s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs150458741\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 85%|████████▍ | 61/72 [49:39<07:29, 40.88s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs62423804\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\r",
+ " 86%|████████▌ | 62/72 [50:16<06:36, 39.69s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs2267989\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 89%|████████▉ | 64/72 [50:56<03:58, 29.82s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs7605964\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 99%|█████████▊| 71/72 [54:21<00:24, 24.54s/it]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "no GWAS: rs1261896\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 72/72 [54:53<00:00, 45.75s/it]\n"
+ ]
+ }
+ ],
+ "source": [
+ "# curl -k -H \"Content-Type: application/json\" -X POST -d '{\"snps\": \"rs3\\nrs4\", \"pop\": \"YRI\", \"r2_d\": \"r2\", \"r2_d_threshold\": \"0.1\", \"window\": \"500000\", \"genome_build\": \"grch37\"}' 'https://ldlink.nci.nih.gov/LDlinkRest/ldtrait?token=faketoken123'\n",
+ "# snp = \"rs10276099\"\n",
+ "for snp in tqdm(allcelltypes_snps):\n",
+ " if os.path.exists(savedir/f'{snp}.tsv'):\n",
+ " continue\n",
+ " else:\n",
+ " params = {\"snps\": snp, \n",
+ " \"pop\": \"CEU\", \n",
+ " \"r2_d\": \"r2\", \n",
+ " \"r2_d_threshold\": \"0.8\", \n",
+ " \"window\": \"500000\", \n",
+ " \"genome_build\": \"grch37\"}\n",
+ " r = requests.request(headers={\"Content-Type\": \"application/json\"},\n",
+ " method='POST',\n",
+ " json=params, \n",
+ " url=f'https://ldlink.nci.nih.gov/LDlinkRest/ldtrait?token={token}')\n",
+ " try:\n",
+ " if \"No entries in the GWAS Catalog are identified using the LDtrait search criteria.\" in r.text:\n",
+ " print('no GWAS:', snp)\n",
+ " continue\n",
+ " else:\n",
+ " r_df = pd.read_csv(StringIO(r.text), sep='\\t')\n",
+ " r_df.to_csv(savedir/f'{snp}.tsv', sep='\\t', index=False)\n",
+ " except:\n",
+ " print('failed entry:', snp)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 80,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 72/72 [00:00<00:00, 298.96it/s]\n"
+ ]
+ }
+ ],
+ "source": [
+ "allsnps_inld_gwas_df = pd.DataFrame()\n",
+ "for snp in tqdm(allcelltypes_snps):\n",
+ " if os.path.exists(savedir/f'{snp}.tsv'):\n",
+ " df = pd.read_csv(savedir/f'{snp}.tsv', sep='\\t')\n",
+ " if 'error' not in df.iloc[0].values[0]:\n",
+ " allsnps_inld_gwas_df = pd.concat([allsnps_inld_gwas_df, df],\n",
+ " axis=0)\n",
+ " \n",
+ "allsnps_inld_gwas_df.to_csv(savedir/'summary.tsv', sep='\\t', index=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "allsnps_inld_gwas_df = pd.read_csv(savedir/'summary.tsv', sep='\\t')\n",
+ "magma_df = pd.read_csv(savedir/'coeqtl_with_gwas_and_magma.tsv', sep='\\t')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " VARIABLE | \n",
+ " celltype | \n",
+ " SNP | \n",
+ " gene | \n",
+ " TYPE | \n",
+ " NGENES | \n",
+ " BETA | \n",
+ " BETA_STD | \n",
+ " SE | \n",
+ " P | \n",
+ " ... | \n",
+ " non_effect_allele | \n",
+ " current_build | \n",
+ " frequency | \n",
+ " sample_size | \n",
+ " zscore | \n",
+ " pvalue | \n",
+ " effect_size | \n",
+ " standard_error | \n",
+ " imputation_status | \n",
+ " n_cases | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " B_rs1131017_RPS26 | \n",
+ " B | \n",
+ " rs1131017 | \n",
+ " RPS26 | \n",
+ " SET | \n",
+ " 38 | \n",
+ " -0.199320 | \n",
+ " -0.008952 | \n",
+ " 0.12542 | \n",
+ " 0.943980 | \n",
+ " ... | \n",
+ " G | \n",
+ " hg38 | \n",
+ " 0.580808 | \n",
+ " 54612 | \n",
+ " 0.138937 | \n",
+ " 0.889500 | \n",
+ " 0.002200 | \n",
+ " 0.015600 | \n",
+ " original | \n",
+ " 17008.0 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " B_rs1131017_RPS26 | \n",
+ " B | \n",
+ " rs1131017 | \n",
+ " RPS26 | \n",
+ " SET | \n",
+ " 38 | \n",
+ " 0.201320 | \n",
+ " 0.009042 | \n",
+ " 0.12905 | \n",
+ " 0.059382 | \n",
+ " ... | \n",
+ " G | \n",
+ " hg38 | \n",
+ " 0.580808 | \n",
+ " 53293 | \n",
+ " 1.735682 | \n",
+ " 0.082620 | \n",
+ " 0.023902 | \n",
+ " 0.013700 | \n",
+ " original | \n",
+ " 19099.0 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " B_rs1131017_RPS26 | \n",
+ " B | \n",
+ " rs1131017 | \n",
+ " RPS26 | \n",
+ " SET | \n",
+ " 37 | \n",
+ " 0.163610 | \n",
+ " 0.007256 | \n",
+ " 0.12608 | \n",
+ " 0.097201 | \n",
+ " ... | \n",
+ " G | \n",
+ " hg38 | \n",
+ " 0.580808 | \n",
+ " 29344 | \n",
+ " -2.348664 | \n",
+ " 0.018841 | \n",
+ " -0.010569 | \n",
+ " 0.004363 | \n",
+ " original | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " B_rs1131017_RPS26 | \n",
+ " B | \n",
+ " rs1131017 | \n",
+ " RPS26 | \n",
+ " SET | \n",
+ " 38 | \n",
+ " -0.010395 | \n",
+ " -0.000467 | \n",
+ " 0.11668 | \n",
+ " 0.535490 | \n",
+ " ... | \n",
+ " G | \n",
+ " hg38 | \n",
+ " 0.580808 | \n",
+ " 15954 | \n",
+ " -0.324182 | \n",
+ " 0.745800 | \n",
+ " -0.009950 | \n",
+ " 0.025700 | \n",
+ " original | \n",
+ " 7387.0 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " B_rs1131017_RPS26 | \n",
+ " B | \n",
+ " rs1131017 | \n",
+ " RPS26 | \n",
+ " SET | \n",
+ " 38 | \n",
+ " 0.282350 | \n",
+ " 0.012677 | \n",
+ " 0.11706 | \n",
+ " 0.007937 | \n",
+ " ... | \n",
+ " G | \n",
+ " hg38 | \n",
+ " 0.580808 | \n",
+ " 337159 | \n",
+ " -1.597883 | \n",
+ " 0.110069 | \n",
+ " -0.000210 | \n",
+ " 0.000132 | \n",
+ " original | \n",
+ " NaN | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
5 rows × 44 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " VARIABLE celltype SNP gene TYPE NGENES BETA \\\n",
+ "0 B_rs1131017_RPS26 B rs1131017 RPS26 SET 38 -0.199320 \n",
+ "1 B_rs1131017_RPS26 B rs1131017 RPS26 SET 38 0.201320 \n",
+ "2 B_rs1131017_RPS26 B rs1131017 RPS26 SET 37 0.163610 \n",
+ "3 B_rs1131017_RPS26 B rs1131017 RPS26 SET 38 -0.010395 \n",
+ "4 B_rs1131017_RPS26 B rs1131017 RPS26 SET 38 0.282350 \n",
+ "\n",
+ " BETA_STD SE P ... non_effect_allele current_build \\\n",
+ "0 -0.008952 0.12542 0.943980 ... G hg38 \n",
+ "1 0.009042 0.12905 0.059382 ... G hg38 \n",
+ "2 0.007256 0.12608 0.097201 ... G hg38 \n",
+ "3 -0.000467 0.11668 0.535490 ... G hg38 \n",
+ "4 0.012677 0.11706 0.007937 ... G hg38 \n",
+ "\n",
+ " frequency sample_size zscore pvalue effect_size standard_error \\\n",
+ "0 0.580808 54612 0.138937 0.889500 0.002200 0.015600 \n",
+ "1 0.580808 53293 1.735682 0.082620 0.023902 0.013700 \n",
+ "2 0.580808 29344 -2.348664 0.018841 -0.010569 0.004363 \n",
+ "3 0.580808 15954 -0.324182 0.745800 -0.009950 0.025700 \n",
+ "4 0.580808 337159 -1.597883 0.110069 -0.000210 0.000132 \n",
+ "\n",
+ " imputation_status n_cases \n",
+ "0 original 17008.0 \n",
+ "1 original 19099.0 \n",
+ "2 original NaN \n",
+ "3 original 7387.0 \n",
+ "4 original NaN \n",
+ "\n",
+ "[5 rows x 44 columns]"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "magma_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "VARIABLE B_rs1131017_RPS26\n",
+ "celltype B\n",
+ "SNP rs1131017\n",
+ "gene RPS26\n",
+ "TYPE SET\n",
+ "NGENES 38\n",
+ "BETA -0.19932\n",
+ "BETA_STD -0.008952\n",
+ "SE 0.12542\n",
+ "P 0.94398\n",
+ "prefix results/current/magma/AD\n",
+ "trait AD\n",
+ "FDR 0.973479\n",
+ "Tag IGAP_Alzheimer\n",
+ "PUBMED_Paper_Link http://www.ncbi.nlm.nih.gov/pubmed/24162737\n",
+ "Phenotype Alzheimer\n",
+ "RSID rs10876864\n",
+ "RSALIAS rs57455456\n",
+ "CHR 12\n",
+ "POS1 56435929\n",
+ "POS2 56401085\n",
+ "DIST -34844\n",
+ "R2 0.991789\n",
+ "D 0.240643\n",
+ "DPRIME 0.995886\n",
+ "MAJOR A\n",
+ "MINOR G\n",
+ "MAF 0.408549\n",
+ "CMMB 0.155229\n",
+ "CM 71.092406\n",
+ "panel_variant_id chr12_56007301_G_A_b38\n",
+ "chromosome chr12\n",
+ "position 56007301\n",
+ "effect_allele A\n",
+ "non_effect_allele G\n",
+ "current_build hg38\n",
+ "frequency 0.580808\n",
+ "sample_size 54612\n",
+ "zscore 0.138937\n",
+ "pvalue 0.8895\n",
+ "effect_size 0.0022\n",
+ "standard_error 0.0156\n",
+ "imputation_status original\n",
+ "n_cases 17008.0\n",
+ "Name: 0, dtype: object"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "magma_df.iloc[0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[0.041321, 'Inflammatory Bowel Disease'],\n",
+ " [0.030935, 'Non-cancer illness code, self-reported: psoriasis'],\n",
+ " [0.0090688,\n",
+ " 'Non-cancer illness code, self-reported: schizophrenia'],\n",
+ " [0.0042454,\n",
+ " 'Overall breast cancer in Europeans, imputed genotype'],\n",
+ " [0.032584, 'Diagnoses - main ICD10: G40 Epilepsy'],\n",
+ " [0.0013766,\n",
+ " 'Estrogen-receptor-negative breast cancer in Europeans, imputed genotype'],\n",
+ " [0.025212,\n",
+ " 'Non-cancer illness code, self-reported: high cholesterol']],\n",
+ " dtype=object)"
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "magma_df[(magma_df['SNP']=='rs4147638') & (magma_df['P']<0.05)][['P', 'Phenotype']].values"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Query | \n",
+ " GWAS Trait | \n",
+ " RS Number | \n",
+ " Position (GRCh37) | \n",
+ " Alleles | \n",
+ " R2 | \n",
+ " D' | \n",
+ " Risk Allele | \n",
+ " Effect Size (95% CI) | \n",
+ " Beta or OR | \n",
+ " P-value | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " rs2954654 | \n",
+ " Type 2 diabetes | \n",
+ " rs2294120 | \n",
+ " chr8:146003567 | \n",
+ " A=0.52, G=0.48 | \n",
+ " 0.846295 | \n",
+ " 0.957895 | \n",
+ " 0.455879299759268 | \n",
+ " 0.04430 | \n",
+ " 0.029-0.06 | \n",
+ " 2.000000e-08 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " rs4840568 | \n",
+ " Albumin-globulin ratio | \n",
+ " rs2409780 | \n",
+ " chr8:11337587 | \n",
+ " C=0.237, T=0.763 | \n",
+ " 0.897156 | \n",
+ " 1.000000 | \n",
+ " NR | \n",
+ " 0.04604 | \n",
+ " 0.035-0.057 | \n",
+ " 1.000000e-16 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " rs4840568 | \n",
+ " Non-albumin protein levels | \n",
+ " rs2409780 | \n",
+ " chr8:11337587 | \n",
+ " C=0.237, T=0.763 | \n",
+ " 0.897156 | \n",
+ " 1.000000 | \n",
+ " NR | \n",
+ " 0.04456 | \n",
+ " 0.034-0.055 | \n",
+ " 1.000000e-15 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " rs4840568 | \n",
+ " Rheumatoid arthritis | \n",
+ " rs2618444 | \n",
+ " chr8:11338370 | \n",
+ " A=0.763, C=0.237 | \n",
+ " 0.897156 | \n",
+ " 1.000000 | \n",
+ " NR | \n",
+ " 0.10050 | \n",
+ " 0.072-0.129 | \n",
+ " 7.000000e-12 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " rs4840568 | \n",
+ " Systemic lupus erythematosus | \n",
+ " rs2618444 | \n",
+ " chr8:11338370 | \n",
+ " A=0.763, C=0.237 | \n",
+ " 0.897156 | \n",
+ " 1.000000 | \n",
+ " NR | \n",
+ " 1.36000 | \n",
+ " 1.22-1.51 | \n",
+ " 7.000000e-09 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Query GWAS Trait RS Number Position (GRCh37) \\\n",
+ "0 rs2954654 Type 2 diabetes rs2294120 chr8:146003567 \n",
+ "1 rs4840568 Albumin-globulin ratio rs2409780 chr8:11337587 \n",
+ "2 rs4840568 Non-albumin protein levels rs2409780 chr8:11337587 \n",
+ "3 rs4840568 Rheumatoid arthritis rs2618444 chr8:11338370 \n",
+ "4 rs4840568 Systemic lupus erythematosus rs2618444 chr8:11338370 \n",
+ "\n",
+ " Alleles R2 D' Risk Allele \\\n",
+ "0 A=0.52, G=0.48 0.846295 0.957895 0.455879299759268 \n",
+ "1 C=0.237, T=0.763 0.897156 1.000000 NR \n",
+ "2 C=0.237, T=0.763 0.897156 1.000000 NR \n",
+ "3 A=0.763, C=0.237 0.897156 1.000000 NR \n",
+ "4 A=0.763, C=0.237 0.897156 1.000000 NR \n",
+ "\n",
+ " Effect Size (95% CI) Beta or OR P-value \n",
+ "0 0.04430 0.029-0.06 2.000000e-08 \n",
+ "1 0.04604 0.035-0.057 1.000000e-16 \n",
+ "2 0.04456 0.034-0.055 1.000000e-15 \n",
+ "3 0.10050 0.072-0.129 7.000000e-12 \n",
+ "4 1.36000 1.22-1.51 7.000000e-09 "
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "allsnps_inld_gwas_df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "allsnps_inld_gwas_df.to_excel('./coeqtl_mapping/output/snps_in_ld_with_gwas_catelogue.xlsx')"
+ ]
+ },
+ {
+ "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.7.11"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/05_coeqtl_interpretation/LD_description.R b/05_coeqtl_interpretation/LD_description.R
new file mode 100644
index 0000000..8e1d5e4
--- /dev/null
+++ b/05_coeqtl_interpretation/LD_description.R
@@ -0,0 +1,164 @@
+#install.packages("LDlinkR")
+
+library('LDlinkR')
+
+cells <- c("B", "CD4T", "CD8T", "NK", "DC", "monocyte")
+
+output_file <- c()
+
+# To run this scipt file with LD structure of given population is needed. After all the significant SNPs aremacthed with other SNPs in hight LD. ALternatively, we could also use LD package, which make the mapping of LD as well.
+outPath <- '/groups/umcg-lld/tmp01/projects/1MCellRNAseq/GRN_reconstruction/ongoing/coeqtl_mapping/output/filtered_results/'
+
+for (cell in cells){
+ name <- paste(outPath, "UT_", cell, '/coeqtls_fullresults.sig.tsv.gz', sep="")
+ tab <- read.table(name, sep='\t', header=T )
+ # SNP <- as.data.frame(tab[,'SNP'])
+ # colnames(SNP) <- "SNP"
+ SNP <- (tab[,'SNP'])
+ output_file <- c(SNP, output_file)
+}
+
+length(output_file)
+
+output_file <- unique(output_file)
+length(output_file)
+
+LD_Score <- LDexpress(output_file[1],
+ pop = "CEU",
+ tissue = "ALL",
+ r2d = "r2",
+ r2d_threshold = 0.8,
+ p_threshold = 0.1,
+ win_size = 500000,
+ token = "d1bfc9a7a30b",
+ file = FALSE
+)
+
+for (i in output_file[63:length(output_file)] ){
+print(i)
+LD_Score_ind <- LDexpress(i,
+ pop = "CEU",
+ tissue = "ALL",
+ r2d = "r2",
+ r2d_threshold = 0.8,
+ p_threshold = 0.1,
+ win_size = 500000,
+ token = "d1bfc9a7a30b",
+ file = FALSE
+)
+LD_Score <- rbind(LD_Score_ind,LD_Score)
+}
+
+LD_Score_subset <- subset(LD_Score, select = c('Query',"RS_ID","R2" ))
+dim(LD_Score_subset)
+LD_Score_subset <- LD_Score_subset[!duplicated(LD_Score_subset$RS_ID),]
+dim(LD_Score_subset)
+
+
+write.table(LD_Score,'/groups/umcg-franke-scrna/tmp01/projects/sc-eqtlgen-consortium-pipeline/ongoing/wg3-QTL-mapping/GRN_downstream_analysis/sign_LD_SNPs_18_12.txt', quote = F, col.names = F, row.names = F, sep='\t')
+
+write.table(LD_Score_subset,'/groups/umcg-franke-scrna/tmp01/projects/sc-eqtlgen-consortium-pipeline/ongoing/wg3-QTL-mapping/GRN_downstream_analysis/sign_LD_SNPs_subset_18_12.txt', quote = F, col.names = F, row.names = F, sep='\t')
+
+######### LDtrait
+
+
+
+LD_Score <- LDtrait(output_file[2],
+ pop = "CEU",
+ r2d = "r2",
+ r2d_threshold = 0.8,
+ token = "d1bfc9a7a30b",
+ file = FALSE
+)
+LD_Score
+
+for (i in output_file){
+ print(i)
+ LD_Score_ind <- LDtrait(i,
+ pop = "CEU",
+ r2d = "r2",
+ r2d_threshold = 0.8,
+ token = "d1bfc9a7a30b",
+ file = FALSE
+ )
+ LD_Score <- rbind(LD_Score_ind,LD_Score)
+}
+
+LD_Score_ind <- LDtrait(output_file[1:49],
+ pop = "CEU",
+ r2d = "r2",
+ r2d_threshold = 0.8,
+ token = "d1bfc9a7a30b",
+ file = FALSE
+)
+
+LD_Score_ind2 <- LDtrait(output_file[50:72],
+ pop = "CEU",
+ r2d = "r2",
+ r2d_threshold = 0.8,
+ token = "d1bfc9a7a30b",
+ file = FALSE
+)
+LD_Score <- rbind(LD_Score_ind,LD_Score_ind2)
+
+# for (i in output_file){
+# print(i)
+# if(i %in% LD_Score$Query){
+# print('SNP is analyzed')
+# } else {
+#
+# tryCatch({
+# LD_Score_ind <- LDtrait(i,
+# pop = "CEU",
+# r2d = "r2",
+# r2d_threshold = 0.8,
+# token = "d1bfc9a7a30b",
+# file = FALSE
+# )
+# LD_Score <- rbind(LD_Score_ind,LD_Score)
+# }, error = function(e){
+# output_file <- output_file[-i]
+# print(length(output_file))
+# })
+# }
+# }
+
+# LD_Score_subset <- subset(LD_Score, select = c('Query',"RS_ID","R2" ))
+# dim(LD_Score_subset)
+# LD_Score_subset <- LD_Score_subset[!duplicated(LD_Score_subset$RS_ID),]
+# dim(LD_Score_subset)
+
+
+write.table(LD_Score,'/groups/umcg-franke-scrna/tmp01/projects/sc-eqtlgen-consortium-pipeline/ongoing/wg3-QTL-mapping/GRN_downstream_analysis/sign_LD_SNPs_23_01.txt', quote = F, col.names = F, row.names = F, sep='\t')
+
+
+#write.table(output_file,'/groups/umcg-franke-scrna/tmp01/projects/sc-eqtlgen-consortium-pipeline/ongoing/wg3-QTL-mapping/GRN_downstream_analysis/sign_SNPs_17_12.txt', quote = F, col.names = F, row.names = F, sep='\t')
+
+
+
+expand_ld_table <- function(ld){
+ # double the ld table, so we can easily select just from the left or right
+ ld_copy <- ld[, c('CHR_B', 'BP_B', 'SNP_B', 'CHR_A', 'BP_A', 'SNP_A', 'R2')]
+ colnames(ld_copy) <- c('CHR_A', 'BP_A', 'SNP_A', 'CHR_B', 'BP_B', 'SNP_B', 'R2')
+ ld <- rbind(ld, ld_copy)
+ # add each SNP in max LD with itself by copying the unique snps on the left and right
+ ld_left <- ld[, c('CHR_A', 'BP_A', 'SNP_A')]
+ ld_right <- ld[, c('CHR_B', 'BP_B', 'SNP_B')]
+ colnames(ld_right) <- c('CHR_A', 'BP_A', 'SNP_A')
+ ld_left_right <- rbind(ld_left, ld_right)
+ ld_left_right <- unique(ld_left_right)
+ ld_self <- cbind(ld_left_right, ld_left_right)
+ colnames(ld_self) <- c('CHR_A', 'BP_A', 'SNP_A', 'CHR_B', 'BP_B', 'SNP_B')
+ # ld with itself is off course 1
+ ld_self$R2 <- 1
+ # add to existing ld table
+ ld <- rbind(ld, ld_self)
+ return(ld)
+}
+# location of the LD file
+ld_loc <- '/groups/umcg-bios/tmp01/projects/1M_cells_scRNAseq/ongoing/LD_DB/genotypes_eur/EUR.chrAll.phase3_shapeit2_mvncall_integrated_v5b.20130502.genotypes.positions_plus_RSID.plink1.ldwindow10000.r2_075.ld'
+# make the ld table a bit easier to work with
+#ld_loc <- read.table(ld_loc, sep='\t')
+ld <- expand_ld_table(ld_loc)
+# confine the ld table to eQTL snps on the left <- subset here to what SNPs you need the LD of, with the other SNPs
+ld <- ld[ld$SNP_A %in% eqtls$V1, ]
\ No newline at end of file
diff --git a/05_coeqtl_interpretation/MS1_Libraries.r b/05_coeqtl_interpretation/MS1_Libraries.r
new file mode 100644
index 0000000..9018e46
--- /dev/null
+++ b/05_coeqtl_interpretation/MS1_Libraries.r
@@ -0,0 +1,10 @@
+### Libraries for all the project scripts
+library(stringr, quietly = TRUE, verbose = FALSE)
+library(dplyr)
+library(data.table)
+library(tidyverse)
+library('reshape2')
+library(caret)
+library('gprofiler2')
+library('coloc')
+library('biomaRt')
diff --git a/05_coeqtl_interpretation/R1_TRANSFAC_enrichment.ipynb b/05_coeqtl_interpretation/R1_TRANSFAC_enrichment.ipynb
new file mode 100644
index 0000000..9b30961
--- /dev/null
+++ b/05_coeqtl_interpretation/R1_TRANSFAC_enrichment.ipynb
@@ -0,0 +1,3005 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 161,
+ "id": "8839a2ee-257d-4182-8c82-01d012d8f888",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "### Execute TRANFAC enrichment analysis based on co-eqtl results"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "26bafe98-a70d-4052-ba5d-fca1b4115633",
+ "metadata": {
+ "tags": []
+ },
+ "source": [
+ "# Libraries"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 162,
+ "id": "946a1c00-83e8-4260-9093-e79e373c1fe0",
+ "metadata": {
+ "tags": []
+ },
+ "outputs": [],
+ "source": [
+ "source('MS1_Libraries.r')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "cb04a3b3-e6f5-4458-8b8e-c925813cee89",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6b9b799d-d266-4fc8-a49b-ebb550fa64fd",
+ "metadata": {},
+ "source": [
+ "# Parameters"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 163,
+ "id": "35c8b11a-e882-4bbb-9706-6c13b9c522f1",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "### Path to input data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 164,
+ "id": "c517df12-ff3c-492e-a0a3-53d7cbdb945d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "path<-\"\"\n",
+ "outdir<-\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "309ead5e-4bbd-4370-8089-5dfa0c53a194",
+ "metadata": {},
+ "source": [
+ "# Data "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "759d077f-409c-4e52-857c-47af7be21134",
+ "metadata": {},
+ "source": [
+ "## Enrichment Data Input"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 165,
+ "id": "8dfbd479-4b4a-4abd-828b-c668708fa7e9",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "### Exemplary data input load for a cell-type"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 166,
+ "id": "4bbb56ca-273c-42dd-857c-be3d358ded78",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "cell_type_var = \"CD4T\"\n",
+ "# c(\"CD4T\",\"CD8T\",\"monocyte\",\"NK\",\"B\",\"DC\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 167,
+ "id": "54fb40a9-c9c6-4f88-9ab8-fc98fa60d279",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "for(cell_type in cell_type_var){\n",
+ "\n",
+ " coeqtls <- fread(paste0(path, \"UT_\",cell_type, \n",
+ " \"_coeqtls_fullresults_fixed.all.tsv.gz\"))\n",
+ " coeqtls$gene1<-gsub(\";.*\",\"\",coeqtls$Gene)\n",
+ " coeqtls$gene2<-gsub(\".*;\",\"\",coeqtls$Gene)\n",
+ " coeqtls$second_gene<-ifelse(coeqtls$gene1 == coeqtls$eqtlgen, coeqtls$gene2,\n",
+ " coeqtls$gene1)\n",
+ " coeqtls$gene1<-NULL\n",
+ " coeqtls$gene2<-NULL\n",
+ " }"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 168,
+ "id": "7e950293-2939-4bd8-905d-729dd8c1a278",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#unique(coeqtls$eqtlgene)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 169,
+ "id": "78dd2696-0f6c-40a8-93c4-0f1d6b3b99a0",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "372"
+ ],
+ "text/latex": [
+ "372"
+ ],
+ "text/markdown": [
+ "372"
+ ],
+ "text/plain": [
+ "[1] 372"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "nrow(coeqtls[(coeqtls$eqtlgene == 'RPS26') & (coeqtls$gene2_isSig == TRUE),c('eqtlgene', 'second_gene')])\n",
+ "\n",
+ "# validity check --> 372 significant co-egenes for RPS26"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 170,
+ "id": "1535e95a-ec90-42e9-a5a7-de98dea38ea8",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "742"
+ ],
+ "text/latex": [
+ "742"
+ ],
+ "text/markdown": [
+ "742"
+ ],
+ "text/plain": [
+ "[1] 742"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "nrow(coeqtls[(coeqtls$eqtlgene == 'RPS26'),c('eqtlgene', 'second_gene')])\n",
+ "# overall 742 --> those that would not haven been tested"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 171,
+ "id": "599506b1-e79b-4c3a-9c38-b32dd14bf5ad",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "A data.table: 2 × 38\n",
+ "\n",
+ "\tsnp_genepair | Gene | GeneChr | GenePos | GeneStrand | GeneSymbol | SNP | SNPChr | SNPPos | SNPAlleles | ⋯ | multipletestP | eqtlgene | snp_eqtlgene | snp_beta_shape1 | snp_beta_shape2 | snp_pvalbeta | snp_qval | gene2_pthreshold | gene2_isSig | second_gene |
\n",
+ "\t<chr> | <chr> | <int> | <int> | <lgl> | <chr> | <chr> | <int> | <int> | <chr> | ⋯ | <dbl> | <chr> | <chr> | <dbl> | <dbl> | <dbl> | <dbl> | <dbl> | <lgl> | <chr> |
\n",
+ "\n",
+ "\n",
+ "\trs11587831_C1orf86;NUDT22 | C1orf86;NUDT22 | 1 | 2115903 | NA | C1orf86;NUDT22 | rs11587831 | 1 | 2110848 | T/G | ⋯ | 0.6354470 | C1orf86 | rs11587831_C1orf86 | 1.197903 | 127.555 | 0.5044989 | 0.7012273 | 4.539067e-05 | FALSE | NUDT22 |
\n",
+ "\trs11587831_C1orf86;SDHC | C1orf86;SDHC | 1 | 2115903 | NA | C1orf86;SDHC | rs11587831 | 1 | 2110848 | T/G | ⋯ | 0.9144163 | C1orf86 | rs11587831_C1orf86 | 1.197903 | 127.555 | 0.5044989 | 0.7012273 | 4.539067e-05 | FALSE | SDHC |
\n",
+ "\n",
+ "
\n"
+ ],
+ "text/latex": [
+ "A data.table: 2 × 38\n",
+ "\\begin{tabular}{lllllllllllllllllllll}\n",
+ " snp\\_genepair & Gene & GeneChr & GenePos & GeneStrand & GeneSymbol & SNP & SNPChr & SNPPos & SNPAlleles & ⋯ & multipletestP & eqtlgene & snp\\_eqtlgene & snp\\_beta\\_shape1 & snp\\_beta\\_shape2 & snp\\_pvalbeta & snp\\_qval & gene2\\_pthreshold & gene2\\_isSig & second\\_gene\\\\\n",
+ " & & & & & & & & & & ⋯ & & & & & & & & & & \\\\\n",
+ "\\hline\n",
+ "\t rs11587831\\_C1orf86;NUDT22 & C1orf86;NUDT22 & 1 & 2115903 & NA & C1orf86;NUDT22 & rs11587831 & 1 & 2110848 & T/G & ⋯ & 0.6354470 & C1orf86 & rs11587831\\_C1orf86 & 1.197903 & 127.555 & 0.5044989 & 0.7012273 & 4.539067e-05 & FALSE & NUDT22\\\\\n",
+ "\t rs11587831\\_C1orf86;SDHC & C1orf86;SDHC & 1 & 2115903 & NA & C1orf86;SDHC & rs11587831 & 1 & 2110848 & T/G & ⋯ & 0.9144163 & C1orf86 & rs11587831\\_C1orf86 & 1.197903 & 127.555 & 0.5044989 & 0.7012273 & 4.539067e-05 & FALSE & SDHC \\\\\n",
+ "\\end{tabular}\n"
+ ],
+ "text/markdown": [
+ "\n",
+ "A data.table: 2 × 38\n",
+ "\n",
+ "| snp_genepair <chr> | Gene <chr> | GeneChr <int> | GenePos <int> | GeneStrand <lgl> | GeneSymbol <chr> | SNP <chr> | SNPChr <int> | SNPPos <int> | SNPAlleles <chr> | ⋯ ⋯ | multipletestP <dbl> | eqtlgene <chr> | snp_eqtlgene <chr> | snp_beta_shape1 <dbl> | snp_beta_shape2 <dbl> | snp_pvalbeta <dbl> | snp_qval <dbl> | gene2_pthreshold <dbl> | gene2_isSig <lgl> | second_gene <chr> |\n",
+ "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
+ "| rs11587831_C1orf86;NUDT22 | C1orf86;NUDT22 | 1 | 2115903 | NA | C1orf86;NUDT22 | rs11587831 | 1 | 2110848 | T/G | ⋯ | 0.6354470 | C1orf86 | rs11587831_C1orf86 | 1.197903 | 127.555 | 0.5044989 | 0.7012273 | 4.539067e-05 | FALSE | NUDT22 |\n",
+ "| rs11587831_C1orf86;SDHC | C1orf86;SDHC | 1 | 2115903 | NA | C1orf86;SDHC | rs11587831 | 1 | 2110848 | T/G | ⋯ | 0.9144163 | C1orf86 | rs11587831_C1orf86 | 1.197903 | 127.555 | 0.5044989 | 0.7012273 | 4.539067e-05 | FALSE | SDHC |\n",
+ "\n"
+ ],
+ "text/plain": [
+ " snp_genepair Gene GeneChr GenePos GeneStrand\n",
+ "1 rs11587831_C1orf86;NUDT22 C1orf86;NUDT22 1 2115903 NA \n",
+ "2 rs11587831_C1orf86;SDHC C1orf86;SDHC 1 2115903 NA \n",
+ " GeneSymbol SNP SNPChr SNPPos SNPAlleles ⋯ multipletestP eqtlgene\n",
+ "1 C1orf86;NUDT22 rs11587831 1 2110848 T/G ⋯ 0.6354470 C1orf86 \n",
+ "2 C1orf86;SDHC rs11587831 1 2110848 T/G ⋯ 0.9144163 C1orf86 \n",
+ " snp_eqtlgene snp_beta_shape1 snp_beta_shape2 snp_pvalbeta snp_qval \n",
+ "1 rs11587831_C1orf86 1.197903 127.555 0.5044989 0.7012273\n",
+ "2 rs11587831_C1orf86 1.197903 127.555 0.5044989 0.7012273\n",
+ " gene2_pthreshold gene2_isSig second_gene\n",
+ "1 4.539067e-05 FALSE NUDT22 \n",
+ "2 4.539067e-05 FALSE SDHC "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "head(coeqtls,2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e1a2e697-badf-4802-ad22-26a5ac2a9101",
+ "metadata": {},
+ "source": [
+ "## ReMap Results for comparison"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 173,
+ "id": "128f1402-b5bf-411d-b812-5dbed446f4a8",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "## Load supplementary table (with ReMap Results to compare):\n",
+ "# \"supptable15.TFenrichment_co-eGenes.xlsx - Sheet1.csv\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 174,
+ "id": "4c21cd7a-c9da-4c2b-8877-bac38c095960",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "old_enrichments = read.csv( paste0(path, \"supptable15.TFenrichment_co-eGenes.xlsx - Sheet1.csv\"))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 175,
+ "id": "8b28f114-298e-4170-9e98-0644683d93fd",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "963"
+ ],
+ "text/latex": [
+ "963"
+ ],
+ "text/markdown": [
+ "963"
+ ],
+ "text/plain": [
+ "[1] 963"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "nrow(old_enrichments)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 176,
+ "id": "f159bb08-15b4-4a74-86a0-dd723fcc83b0",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "A data.frame: 2 × 13\n",
+ "\n",
+ "\t | Cell.type | eQTL..SNP.eGene. | TF | TF.is.a.co.eGene. | enrichment.p.value | X..TF.overlap...co.eGene | X..TF.overlap...background | X..no.TF.overlap...co.eGene | X..background.gene...not.co.eGene | enrichment.fdr | eQTL.SNP | SNP.overlaps.TF. | Names.of.overlapping.SNPs |
\n",
+ "\t | <chr> | <chr> | <chr> | <lgl> | <dbl> | <int> | <int> | <int> | <int> | <dbl> | <chr> | <lgl> | <chr> |
\n",
+ "\n",
+ "\n",
+ "\t1 | CD4T | rs111454690_HLA-DRB5 | CDK8 | FALSE | 9.630369e-06 | 14 | 5 | 2778 | 8515 | 1.640373e-03 | rs111454690 | FALSE | |
\n",
+ "\t2 | CD4T | rs111454690_HLA-DRB5 | SNRNP70 | FALSE | 1.209254e-09 | 11 | 8 | 649 | 10644 | 6.179288e-07 | rs111454690 | FALSE | |
\n",
+ "\n",
+ "
\n"
+ ],
+ "text/latex": [
+ "A data.frame: 2 × 13\n",
+ "\\begin{tabular}{r|lllllllllllll}\n",
+ " & Cell.type & eQTL..SNP.eGene. & TF & TF.is.a.co.eGene. & enrichment.p.value & X..TF.overlap...co.eGene & X..TF.overlap...background & X..no.TF.overlap...co.eGene & X..background.gene...not.co.eGene & enrichment.fdr & eQTL.SNP & SNP.overlaps.TF. & Names.of.overlapping.SNPs\\\\\n",
+ " & & & & & & & & & & & & & \\\\\n",
+ "\\hline\n",
+ "\t1 & CD4T & rs111454690\\_HLA-DRB5 & CDK8 & FALSE & 9.630369e-06 & 14 & 5 & 2778 & 8515 & 1.640373e-03 & rs111454690 & FALSE & \\\\\n",
+ "\t2 & CD4T & rs111454690\\_HLA-DRB5 & SNRNP70 & FALSE & 1.209254e-09 & 11 & 8 & 649 & 10644 & 6.179288e-07 & rs111454690 & FALSE & \\\\\n",
+ "\\end{tabular}\n"
+ ],
+ "text/markdown": [
+ "\n",
+ "A data.frame: 2 × 13\n",
+ "\n",
+ "| | Cell.type <chr> | eQTL..SNP.eGene. <chr> | TF <chr> | TF.is.a.co.eGene. <lgl> | enrichment.p.value <dbl> | X..TF.overlap...co.eGene <int> | X..TF.overlap...background <int> | X..no.TF.overlap...co.eGene <int> | X..background.gene...not.co.eGene <int> | enrichment.fdr <dbl> | eQTL.SNP <chr> | SNP.overlaps.TF. <lgl> | Names.of.overlapping.SNPs <chr> |\n",
+ "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
+ "| 1 | CD4T | rs111454690_HLA-DRB5 | CDK8 | FALSE | 9.630369e-06 | 14 | 5 | 2778 | 8515 | 1.640373e-03 | rs111454690 | FALSE | |\n",
+ "| 2 | CD4T | rs111454690_HLA-DRB5 | SNRNP70 | FALSE | 1.209254e-09 | 11 | 8 | 649 | 10644 | 6.179288e-07 | rs111454690 | FALSE | |\n",
+ "\n"
+ ],
+ "text/plain": [
+ " Cell.type eQTL..SNP.eGene. TF TF.is.a.co.eGene. enrichment.p.value\n",
+ "1 CD4T rs111454690_HLA-DRB5 CDK8 FALSE 9.630369e-06 \n",
+ "2 CD4T rs111454690_HLA-DRB5 SNRNP70 FALSE 1.209254e-09 \n",
+ " X..TF.overlap...co.eGene X..TF.overlap...background\n",
+ "1 14 5 \n",
+ "2 11 8 \n",
+ " X..no.TF.overlap...co.eGene X..background.gene...not.co.eGene enrichment.fdr\n",
+ "1 2778 8515 1.640373e-03 \n",
+ "2 649 10644 6.179288e-07 \n",
+ " eQTL.SNP SNP.overlaps.TF. Names.of.overlapping.SNPs\n",
+ "1 rs111454690 FALSE \n",
+ "2 rs111454690 FALSE "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "head(old_enrichments,2)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 177,
+ "id": "c7fc8d4c-f820-4793-b58d-b194e56d6b4c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "## Check out some results of ReMap mentioned in paper"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 178,
+ "id": "4b439eaa-c15a-4917-9ae8-4df0afd7475a",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "0.0132347204977557"
+ ],
+ "text/latex": [
+ "0.0132347204977557"
+ ],
+ "text/markdown": [
+ "0.0132347204977557"
+ ],
+ "text/plain": [
+ "[1] 0.01323472"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "max(old_enrichments$enrichment.p.value)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 179,
+ "id": "7899b194-8054-4a2a-b9d7-3e051f7bc380",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "0.0498313855060291"
+ ],
+ "text/latex": [
+ "0.0498313855060291"
+ ],
+ "text/markdown": [
+ "0.0498313855060291"
+ ],
+ "text/plain": [
+ "[1] 0.04983139"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "max(old_enrichments$enrichment.fdr)\n",
+ "# check to use same cut-off for TRANSFAC --> 0.05"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 180,
+ "id": "384f4ce7-13c5-4230-a0d7-5aaa262d1112",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "- 'rs111454690_HLA-DRB5'
- 'rs1131017_RPS26'
- 'rs4147638_SMDT1'
- 'rs7605824_SH3YL1'
- 'rs7632486_CMTM8'
- 'rs9271520_HLA-DQA2'
- 'rs1131017_RPS26_positive'
- 'rs1131017_RPS26_negative'
- 'rs6708265_PASK'
\n"
+ ],
+ "text/latex": [
+ "\\begin{enumerate*}\n",
+ "\\item 'rs111454690\\_HLA-DRB5'\n",
+ "\\item 'rs1131017\\_RPS26'\n",
+ "\\item 'rs4147638\\_SMDT1'\n",
+ "\\item 'rs7605824\\_SH3YL1'\n",
+ "\\item 'rs7632486\\_CMTM8'\n",
+ "\\item 'rs9271520\\_HLA-DQA2'\n",
+ "\\item 'rs1131017\\_RPS26\\_positive'\n",
+ "\\item 'rs1131017\\_RPS26\\_negative'\n",
+ "\\item 'rs6708265\\_PASK'\n",
+ "\\end{enumerate*}\n"
+ ],
+ "text/markdown": [
+ "1. 'rs111454690_HLA-DRB5'\n",
+ "2. 'rs1131017_RPS26'\n",
+ "3. 'rs4147638_SMDT1'\n",
+ "4. 'rs7605824_SH3YL1'\n",
+ "5. 'rs7632486_CMTM8'\n",
+ "6. 'rs9271520_HLA-DQA2'\n",
+ "7. 'rs1131017_RPS26_positive'\n",
+ "8. 'rs1131017_RPS26_negative'\n",
+ "9. 'rs6708265_PASK'\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ "[1] \"rs111454690_HLA-DRB5\" \"rs1131017_RPS26\" \n",
+ "[3] \"rs4147638_SMDT1\" \"rs7605824_SH3YL1\" \n",
+ "[5] \"rs7632486_CMTM8\" \"rs9271520_HLA-DQA2\" \n",
+ "[7] \"rs1131017_RPS26_positive\" \"rs1131017_RPS26_negative\"\n",
+ "[9] \"rs6708265_PASK\" "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "unique(old_enrichments[,c( 'eQTL..SNP.eGene.')])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 181,
+ "id": "6810f798-9fa5-4aea-9954-b517aa0b49b8",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "9"
+ ],
+ "text/latex": [
+ "9"
+ ],
+ "text/markdown": [
+ "9"
+ ],
+ "text/plain": [
+ "[1] 9"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "length(unique(old_enrichments[,c( 'eQTL..SNP.eGene.')])) # subtract positive and negative case for RPS26 --> yields the 7 mentioned in paper for which there were significant TF enrichments"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 182,
+ "id": "528cc4ad-2052-42b3-a6a4-b47bcfaa2bbb",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "- 'rs1131017_RPS26'
- 'rs4147638_SMDT1'
- 'rs7605824_SH3YL1'
- 'rs9271520_HLA-DQA2'
- 'rs1131017_RPS26_positive'
- 'rs1131017_RPS26_negative'
\n"
+ ],
+ "text/latex": [
+ "\\begin{enumerate*}\n",
+ "\\item 'rs1131017\\_RPS26'\n",
+ "\\item 'rs4147638\\_SMDT1'\n",
+ "\\item 'rs7605824\\_SH3YL1'\n",
+ "\\item 'rs9271520\\_HLA-DQA2'\n",
+ "\\item 'rs1131017\\_RPS26\\_positive'\n",
+ "\\item 'rs1131017\\_RPS26\\_negative'\n",
+ "\\end{enumerate*}\n"
+ ],
+ "text/markdown": [
+ "1. 'rs1131017_RPS26'\n",
+ "2. 'rs4147638_SMDT1'\n",
+ "3. 'rs7605824_SH3YL1'\n",
+ "4. 'rs9271520_HLA-DQA2'\n",
+ "5. 'rs1131017_RPS26_positive'\n",
+ "6. 'rs1131017_RPS26_negative'\n",
+ "\n",
+ "\n"
+ ],
+ "text/plain": [
+ "[1] \"rs1131017_RPS26\" \"rs4147638_SMDT1\" \n",
+ "[3] \"rs7605824_SH3YL1\" \"rs9271520_HLA-DQA2\" \n",
+ "[5] \"rs1131017_RPS26_positive\" \"rs1131017_RPS26_negative\""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "unique(old_enrichments[old_enrichments$SNP.overlaps.TF. == TRUE,c('eQTL..SNP.eGene.')]) # results in the 4 pairs mentioned in paper"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 183,
+ "id": "1e28ceb8-6515-4561-ac51-f1ab0860ad36",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "## rs1131017–RPS26 examples: RMB39, TCF7, LEF1, KLF6, CD74, MAF"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 184,
+ "id": "0a75dc32-fc85-4e53-ad4a-fa630f0460d4",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "A data.frame: 7 × 13\n",
+ "\n",
+ "\t | Cell.type | eQTL..SNP.eGene. | TF | TF.is.a.co.eGene. | enrichment.p.value | X..TF.overlap...co.eGene | X..TF.overlap...background | X..no.TF.overlap...co.eGene | X..background.gene...not.co.eGene | enrichment.fdr | eQTL.SNP | SNP.overlaps.TF. | Names.of.overlapping.SNPs |
\n",
+ "\t | <chr> | <chr> | <chr> | <lgl> | <dbl> | <int> | <int> | <int> | <int> | <dbl> | <chr> | <lgl> | <chr> |
\n",
+ "\n",
+ "\n",
+ "\t19 | CD4T | rs1131017_RPS26 | MAF | TRUE | 3.654557e-06 | 92 | 280 | 1747 | 9546 | 5.187441e-05 | rs1131017 | TRUE | rs1131017 |
\n",
+ "\t34 | CD4T | rs1131017_RPS26 | RBM39 | TRUE | 2.128100e-06 | 244 | 128 | 6041 | 5252 | 3.295330e-05 | rs1131017 | TRUE | rs10876864,rs1131017,rs7297175 |
\n",
+ "\t50 | CD4T | rs1131017_RPS26 | TCF7 | TRUE | 7.468026e-03 | 134 | 238 | 3379 | 7914 | 3.052929e-02 | rs1131017 | TRUE | rs1131017 |
\n",
+ "\t84 | CD4T | rs1131017_RPS26 | LEF1 | TRUE | 4.859147e-05 | 153 | 219 | 3529 | 7764 | 4.598193e-04 | rs1131017 | TRUE | rs10876864,rs1131017 |
\n",
+ "\t116 | CD4T | rs1131017_RPS26 | KLF6 | TRUE | 1.597304e-03 | 139 | 233 | 3385 | 7908 | 8.236538e-03 | rs1131017 | TRUE | rs10876864,rs1131017,rs7297175 |
\n",
+ "\t119 | CD4T | rs1131017_RPS26 | CD74 | TRUE | 3.954534e-06 | 172 | 200 | 3915 | 7378 | 5.461532e-05 | rs1131017 | TRUE | rs1131017 |
\n",
+ "\t730 | monocyte | rs1131017_RPS26 | CD74 | TRUE | 7.422301e-03 | 63 | 69 | 3526 | 6028 | 3.134542e-02 | rs1131017 | TRUE | rs1131017 |
\n",
+ "\n",
+ "
\n"
+ ],
+ "text/latex": [
+ "A data.frame: 7 × 13\n",
+ "\\begin{tabular}{r|lllllllllllll}\n",
+ " & Cell.type & eQTL..SNP.eGene. & TF & TF.is.a.co.eGene. & enrichment.p.value & X..TF.overlap...co.eGene & X..TF.overlap...background & X..no.TF.overlap...co.eGene & X..background.gene...not.co.eGene & enrichment.fdr & eQTL.SNP & SNP.overlaps.TF. & Names.of.overlapping.SNPs\\\\\n",
+ " & & & & & & & & & & & & & \\\\\n",
+ "\\hline\n",
+ "\t19 & CD4T & rs1131017\\_RPS26 & MAF & TRUE & 3.654557e-06 & 92 & 280 & 1747 & 9546 & 5.187441e-05 & rs1131017 & TRUE & rs1131017 \\\\\n",
+ "\t34 & CD4T & rs1131017\\_RPS26 & RBM39 & TRUE & 2.128100e-06 & 244 & 128 & 6041 & 5252 & 3.295330e-05 & rs1131017 & TRUE & rs10876864,rs1131017,rs7297175\\\\\n",
+ "\t50 & CD4T & rs1131017\\_RPS26 & TCF7 & TRUE & 7.468026e-03 & 134 & 238 & 3379 & 7914 & 3.052929e-02 & rs1131017 & TRUE & rs1131017 \\\\\n",
+ "\t84 & CD4T & rs1131017\\_RPS26 & LEF1 & TRUE & 4.859147e-05 & 153 & 219 & 3529 & 7764 & 4.598193e-04 & rs1131017 & TRUE & rs10876864,rs1131017 \\\\\n",
+ "\t116 & CD4T & rs1131017\\_RPS26 & KLF6 & TRUE & 1.597304e-03 & 139 & 233 & 3385 & 7908 & 8.236538e-03 & rs1131017 & TRUE & rs10876864,rs1131017,rs7297175\\\\\n",
+ "\t119 & CD4T & rs1131017\\_RPS26 & CD74 & TRUE & 3.954534e-06 & 172 & 200 & 3915 & 7378 & 5.461532e-05 & rs1131017 & TRUE & rs1131017 \\\\\n",
+ "\t730 & monocyte & rs1131017\\_RPS26 & CD74 & TRUE & 7.422301e-03 & 63 & 69 & 3526 & 6028 & 3.134542e-02 & rs1131017 & TRUE & rs1131017 \\\\\n",
+ "\\end{tabular}\n"
+ ],
+ "text/markdown": [
+ "\n",
+ "A data.frame: 7 × 13\n",
+ "\n",
+ "| | Cell.type <chr> | eQTL..SNP.eGene. <chr> | TF <chr> | TF.is.a.co.eGene. <lgl> | enrichment.p.value <dbl> | X..TF.overlap...co.eGene <int> | X..TF.overlap...background <int> | X..no.TF.overlap...co.eGene <int> | X..background.gene...not.co.eGene <int> | enrichment.fdr <dbl> | eQTL.SNP <chr> | SNP.overlaps.TF. <lgl> | Names.of.overlapping.SNPs <chr> |\n",
+ "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
+ "| 19 | CD4T | rs1131017_RPS26 | MAF | TRUE | 3.654557e-06 | 92 | 280 | 1747 | 9546 | 5.187441e-05 | rs1131017 | TRUE | rs1131017 |\n",
+ "| 34 | CD4T | rs1131017_RPS26 | RBM39 | TRUE | 2.128100e-06 | 244 | 128 | 6041 | 5252 | 3.295330e-05 | rs1131017 | TRUE | rs10876864,rs1131017,rs7297175 |\n",
+ "| 50 | CD4T | rs1131017_RPS26 | TCF7 | TRUE | 7.468026e-03 | 134 | 238 | 3379 | 7914 | 3.052929e-02 | rs1131017 | TRUE | rs1131017 |\n",
+ "| 84 | CD4T | rs1131017_RPS26 | LEF1 | TRUE | 4.859147e-05 | 153 | 219 | 3529 | 7764 | 4.598193e-04 | rs1131017 | TRUE | rs10876864,rs1131017 |\n",
+ "| 116 | CD4T | rs1131017_RPS26 | KLF6 | TRUE | 1.597304e-03 | 139 | 233 | 3385 | 7908 | 8.236538e-03 | rs1131017 | TRUE | rs10876864,rs1131017,rs7297175 |\n",
+ "| 119 | CD4T | rs1131017_RPS26 | CD74 | TRUE | 3.954534e-06 | 172 | 200 | 3915 | 7378 | 5.461532e-05 | rs1131017 | TRUE | rs1131017 |\n",
+ "| 730 | monocyte | rs1131017_RPS26 | CD74 | TRUE | 7.422301e-03 | 63 | 69 | 3526 | 6028 | 3.134542e-02 | rs1131017 | TRUE | rs1131017 |\n",
+ "\n"
+ ],
+ "text/plain": [
+ " Cell.type eQTL..SNP.eGene. TF TF.is.a.co.eGene. enrichment.p.value\n",
+ "19 CD4T rs1131017_RPS26 MAF TRUE 3.654557e-06 \n",
+ "34 CD4T rs1131017_RPS26 RBM39 TRUE 2.128100e-06 \n",
+ "50 CD4T rs1131017_RPS26 TCF7 TRUE 7.468026e-03 \n",
+ "84 CD4T rs1131017_RPS26 LEF1 TRUE 4.859147e-05 \n",
+ "116 CD4T rs1131017_RPS26 KLF6 TRUE 1.597304e-03 \n",
+ "119 CD4T rs1131017_RPS26 CD74 TRUE 3.954534e-06 \n",
+ "730 monocyte rs1131017_RPS26 CD74 TRUE 7.422301e-03 \n",
+ " X..TF.overlap...co.eGene X..TF.overlap...background\n",
+ "19 92 280 \n",
+ "34 244 128 \n",
+ "50 134 238 \n",
+ "84 153 219 \n",
+ "116 139 233 \n",
+ "119 172 200 \n",
+ "730 63 69 \n",
+ " X..no.TF.overlap...co.eGene X..background.gene...not.co.eGene\n",
+ "19 1747 9546 \n",
+ "34 6041 5252 \n",
+ "50 3379 7914 \n",
+ "84 3529 7764 \n",
+ "116 3385 7908 \n",
+ "119 3915 7378 \n",
+ "730 3526 6028 \n",
+ " enrichment.fdr eQTL.SNP SNP.overlaps.TF. Names.of.overlapping.SNPs \n",
+ "19 5.187441e-05 rs1131017 TRUE rs1131017 \n",
+ "34 3.295330e-05 rs1131017 TRUE rs10876864,rs1131017,rs7297175\n",
+ "50 3.052929e-02 rs1131017 TRUE rs1131017 \n",
+ "84 4.598193e-04 rs1131017 TRUE rs10876864,rs1131017 \n",
+ "116 8.236538e-03 rs1131017 TRUE rs10876864,rs1131017,rs7297175\n",
+ "119 5.461532e-05 rs1131017 TRUE rs1131017 \n",
+ "730 3.134542e-02 rs1131017 TRUE rs1131017 "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "old_enrichments[(old_enrichments$eQTL..SNP.eGene. %in% c('rs1131017_RPS26')) & (old_enrichments$TF.is.a.co.eGene. == TRUE) & ((old_enrichments$SNP.overlaps.TF. == TRUE)),]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 185,
+ "id": "973e7d59-4d0d-4aaa-90a6-5ec718d3cdc7",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# MAF and CD74 only negative effect directions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 186,
+ "id": "41107400-6b96-4024-939d-bffa6790c377",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# TMEM176A nothing found with remap"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "5c479bb0-aeee-4286-8107-70eaebb4968e",
+ "metadata": {},
+ "source": [
+ "# Run TRANSFAC enrichment for all cell-types"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 213,
+ "id": "7ee02d44-c7a6-4c44-8957-794c603da722",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "### Set parameters for function"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 214,
+ "id": "5b6b137d-6865-4bea-bf5d-94bdbf71c96b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "p_val_thres = 0.05"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 215,
+ "id": "aea1119e-9ccb-40e4-a43c-ad3022bf4281",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "correction_var = 'fdr'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 216,
+ "id": "52ba5757-2a17-4a25-9975-f73fe9d49888",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "### Decide on whether to restrict the background set\n",
+ "restrict_background_set = FALSE\n",
+ "\n",
+ "# set to TRUE for adaption"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 217,
+ "id": "5fd364b9-2b0d-40a6-aadc-6c32925e8a33",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "### Run enrichments"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 218,
+ "id": "33a0acf7-c544-4278-b8e0-60506109d9aa",
+ "metadata": {
+ "collapsed": true,
+ "jupyter": {
+ "outputs_hidden": true
+ },
+ "tags": []
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"DC with 58 co-eQTLs\"\n",
+ "[1] \"rs7935082_MS4A7\"\n",
+ "[1] 6054\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs9271520_HLA-DQA2\"\n",
+ "[1] 6054\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"CD4T with 500 co-eQTLs\"\n",
+ "[1] \"rs111454690_HLA-DRB5\"\n",
+ "[1] 11300\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs1131017_RPS26\"\n",
+ "[1] 11300\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs2741159_KRT1\"\n",
+ "[1] 11300\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs4147638_SMDT1\"\n",
+ "[1] 11300\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs7605824_SH3YL1\"\n",
+ "[1] 11300\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs7632486_CMTM8\"\n",
+ "[1] 11300\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs9022_CLN8\"\n",
+ "[1] 11300\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs9271520_HLA-DQA2\"\n",
+ "[1] 11300\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n",
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"CD8T with 420 co-eQTLs\"\n",
+ "[1] \"rs1131017_RPS26\"\n",
+ "[1] 9579\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs4147638_SMDT1\"\n",
+ "[1] 9579\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs6708265_PASK\"\n",
+ "[1] 9579\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs7605824_SH3YL1\"\n",
+ "[1] 9579\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs9271520_HLA-DQA2\"\n",
+ "[1] 9579\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs9306156_PRMT2\"\n",
+ "[1] 9579\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"monocyte with 281 co-eQTLs\"\n",
+ "[1] \"rs111454690_HLA-DRB5\"\n",
+ "[1] 9557\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs1131017_RPS26\"\n",
+ "[1] 9557\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs11577318_CD52\"\n",
+ "[1] 9557\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs3758833_CTSC\"\n",
+ "[1] 9557\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs4782899_DNAAF1\"\n",
+ "[1] 9557\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs5756736_LGALS2\"\n",
+ "[1] 9557\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs7806458_TMEM176A\"\n",
+ "[1] 9557\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs7806458_TMEM176B\"\n",
+ "[1] 9557\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs9271520_HLA-DQA2\"\n",
+ "[1] 9557\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"NK with 123 co-eQTLs\"\n",
+ "[1] \"rs1131017_RPS26\"\n",
+ "[1] 7271\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs12151742_GNLY\"\n",
+ "[1] 7271\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"rs62480001_MYOM2\"\n",
+ "[1] 7271\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n",
+ "No results to show\n",
+ "Please make sure that the organism is correct or set significant = FALSE\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[1] \"B with 35 co-eQTLs\"\n",
+ "[1] \"rs1131017_RPS26\"\n",
+ "[1] 1729\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Detected custom background input, domain scope is set to 'custom'\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "enrichment<-NULL\n",
+ "enrichment_summary<-NULL\n",
+ "coegenes_counts_total<-NULL\n",
+ "for(cell_type in c(\"DC\",\"CD4T\",\"CD8T\",\"monocyte\",\"NK\",\"B\" )){\n",
+ " # Read in the data\n",
+ " coeqtls <- fread(paste0(path, \"UT_\",cell_type, \n",
+ " \"_coeqtls_fullresults_fixed.all.tsv.gz\"))\n",
+ " coeqtls$gene1<-gsub(\";.*\",\"\",coeqtls$Gene)\n",
+ " coeqtls$gene2<-gsub(\".*;\",\"\",coeqtls$Gene)\n",
+ " coeqtls$second_gene<-ifelse(coeqtls$gene1 == coeqtls$eqtlgen, coeqtls$gene2,\n",
+ " coeqtls$gene1)\n",
+ " coeqtls$gene1<-NULL\n",
+ " coeqtls$gene2<-NULL\n",
+ " \n",
+ " # Take all tested genes as background\n",
+ " background_genes <- union(coeqtls$eqtlgen,coeqtls$second_gene)\n",
+ " \n",
+ " coeqtls_sign<-coeqtls[coeqtls$gene2_isSig,]\n",
+ " \n",
+ " print(paste(cell_type,\"with\",nrow(coeqtls_sign),\"co-eQTLs\"))\n",
+ " \n",
+ " # Identify all eQTLs with at least 5 coeGenes\n",
+ " coegene_count<-coeqtls_sign%>%\n",
+ " group_by(snp_eqtlgene)%>%\n",
+ " summarise(count_coeGenes=n())%>%\n",
+ " filter(count_coeGenes>4)\n",
+ " \n",
+ " coegene_count$cell_type<-cell_type\n",
+ " coegenes_counts_total<-rbind(coegenes_counts_total,\n",
+ " coegene_count)\n",
+ " \n",
+ " enrichment_found<-0\n",
+ " #Perform GO enrichemt separately for each eQTL\n",
+ " for(eqtl in coegene_count$snp_eqtlgene){\n",
+ " print(eqtl)\n",
+ " \n",
+ " # Optional restricted background set\n",
+ " if(restrict_background_set == TRUE){\n",
+ " background_genes = unique(c(coeqtls$eqtlgene[coeqtls$snp_eqtlgene == eqtl], coeqtls$second_gene[coeqtls$snp_eqtlgene == eqtl]))\n",
+ " }\n",
+ " print(length(background_genes))\n",
+ " \n",
+ " # Run enrichment analysis with background set\n",
+ " enrich_out <- gost(\n",
+ " coeqtls_sign$second_gene[coeqtls_sign$snp_eqtlgene == eqtl],\n",
+ " organism = \"hsapiens\",\n",
+ " ordered_query = FALSE,\n",
+ " multi_query = FALSE,\n",
+ " significant = TRUE,\n",
+ " exclude_iea = FALSE,\n",
+ " measure_underrepresentation = FALSE,\n",
+ " evcodes = FALSE,\n",
+ " correction_method = correction_var,\n",
+ " user_threshold = p_val_thres,\n",
+ " custom_bg = background_genes,\n",
+ " sources = 'TF' # only do transfac enrichment\n",
+ " )\n",
+ " \n",
+ " #if(nrow(enrich_out$result[enrich_out$result$source == 'TF',])>0){\n",
+ " if(!is.null(enrich_out)){\n",
+ " # Save if a enrichment was found\n",
+ " enrichment_found<-enrichment_found+1\n",
+ " \n",
+ " # Save result dataframe\n",
+ " res<-enrich_out$result[enrich_out$result$source == 'TF',]\n",
+ " res$cell_type<-cell_type\n",
+ " res$snp_eGene<-eqtl\n",
+ " enrichment<-rbind(enrichment,\n",
+ " res)\n",
+ " }\n",
+ "\n",
+ " }\n",
+ " \n",
+ " enrichment_summary<-rbind(enrichment_summary,\n",
+ " data.frame(cell_type,\n",
+ " n_eqtls_freq=nrow(coegene_count),\n",
+ " n_enrich=enrichment_found,\n",
+ " freq_enrich=enrichment_found/nrow(coegene_count)))\n",
+ " \n",
+ " \n",
+ " \n",
+ " #Check for CD4T specificallly for RPS26 the positive & negative coeGenes separately\n",
+ " if(cell_type==\"CD4T\"){\n",
+ " eqtl<-\"rs1131017_RPS26\"\n",
+ " \n",
+ " #Test positive coeGenes (MAF not correctly flipped here)\n",
+ " enrich_out <-gost(\n",
+ " coeqtls_sign$second_gene[coeqtls_sign$snp_eqtlgene == eqtl &\n",
+ " coeqtls_sign$MetaPZ < 0],\n",
+ " organism = \"hsapiens\",\n",
+ " ordered_query = FALSE,\n",
+ " multi_query = FALSE,\n",
+ " significant = TRUE,\n",
+ " exclude_iea = FALSE,\n",
+ " measure_underrepresentation = FALSE,\n",
+ " evcodes = FALSE,\n",
+ " correction_method = correction_var,\n",
+ " user_threshold = p_val_thres,\n",
+ " custom_bg = background_genes,\n",
+ " sources = 'TF' # only do transfac enrichment\n",
+ " )\n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " if(!is.null(enrich_out)){\n",
+ " \n",
+ " # Save if a enrichment was found\n",
+ " enrichment_found<-enrichment_found+1\n",
+ " \n",
+ " # Save result dataframe\n",
+ " res<- enrich_out$result[enrich_out$result$source == 'TF',]\n",
+ " res$cell_type<-cell_type\n",
+ " res$snp_eGene<-paste0(eqtl,\"_positive\")\n",
+ " enrichment<-rbind(enrichment,\n",
+ " res)\n",
+ " }\n",
+ " \n",
+ " #Test negative coeGenes (MAF not correctly flipped here)\n",
+ " enrich_out <-gost(\n",
+ " coeqtls_sign$second_gene[coeqtls_sign$snp_eqtlgene == eqtl &\n",
+ " coeqtls_sign$MetaPZ > 0],\n",
+ " organism = \"hsapiens\",\n",
+ " ordered_query = FALSE,\n",
+ " multi_query = FALSE,\n",
+ " significant = TRUE,\n",
+ " exclude_iea = FALSE,\n",
+ " measure_underrepresentation = FALSE,\n",
+ " evcodes = FALSE,\n",
+ " correction_method = correction_var,\n",
+ " user_threshold = p_val_thres,\n",
+ " custom_bg = background_genes,\n",
+ " sources = 'TF' # only do transfac enrichment\n",
+ " )\n",
+ " \n",
+ " if(!is.null(enrich_out)){\n",
+ " \n",
+ " # Save if a enrichment was found\n",
+ " enrichment_found<-enrichment_found+1\n",
+ " \n",
+ " # Save result dataframe\n",
+ " res<-enrich_out$result[enrich_out$result$source == 'TF',]\n",
+ " res$cell_type<-cell_type\n",
+ " res$snp_eGene<-paste0(eqtl,\"_negative\")\n",
+ " enrichment<-rbind(enrichment,\n",
+ " res)\n",
+ " }\n",
+ " }\n",
+ " \n",
+ " \n",
+ " }"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 219,
+ "id": "2161ef04-9fdc-4e14-b318-089eb91db546",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "### Inspect result"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 220,
+ "id": "0ae39aef-8d0c-4f59-821e-d1672811783e",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "A data.frame: 6 × 16\n",
+ "\n",
+ "\t | query | significant | p_value | term_size | query_size | intersection_size | precision | recall | term_id | source | term_name | effective_domain_size | source_order | parents | cell_type | snp_eGene |
\n",
+ "\t | <chr> | <lgl> | <dbl> | <int> | <int> | <int> | <dbl> | <dbl> | <chr> | <chr> | <chr> | <int> | <int> | <list> | <chr> | <chr> |
\n",
+ "\n",
+ "\n",
+ "\t1 | query_1 | TRUE | 0.049610826 | 2342 | 27 | 22 | 0.8148148 | 0.009393681 | TF:M00665 | TF | Factor: Sp3; motif: ASMCTTGGGSRGGG | 5705 | 7882 | TF:M00000 | DC | rs7935082_MS4A7 |
\n",
+ "\t2 | query_1 | TRUE | 0.049610826 | 2303 | 27 | 22 | 0.8148148 | 0.009552757 | TF:M03582 | TF | Factor: TWIST; motif: CACCTGG | 5705 | 8844 | TF:M00000 | DC | rs7935082_MS4A7 |
\n",
+ "\t3 | query_1 | TRUE | 0.003978389 | 3447 | 351 | 163 | 0.4643875 | 0.047287496 | TF:M11438 | TF | Factor: SAP-1; motif: NTCGTAAATGCN | 10167 | 1882 | TF:M00000 | CD4T | rs1131017_RPS26 |
\n",
+ "\t4 | query_1 | TRUE | 0.022537569 | 3025 | 20 | 16 | 0.8000000 | 0.005289256 | TF:M08413 | TF | Factor: TEF-3:C/EBPdelta; motif: RGWATGYNRTTRCGYAAY | 10167 | 8434 | TF:M00000 | CD4T | rs7605824_SH3YL1 |
\n",
+ "\t5 | query_1 | TRUE | 0.002470867 | 3285 | 191 | 95 | 0.4973822 | 0.028919330 | TF:M10785 | TF | Factor: hoxa9; motif: RTCGTWANNN | 10167 | 3774 | TF:M00000 | CD4T | rs1131017_RPS26_positive |
\n",
+ "\t6 | query_1 | TRUE | 0.003339438 | 1184 | 191 | 46 | 0.2408377 | 0.038851351 | TF:M04696_1 | TF | Factor: YY1; motif: GCCGCCATNTTGNNNNNGGNCN; match class: 1 | 10167 | 9013 | TF:M04696 | CD4T | rs1131017_RPS26_positive |
\n",
+ "\n",
+ "
\n"
+ ],
+ "text/latex": [
+ "A data.frame: 6 × 16\n",
+ "\\begin{tabular}{r|llllllllllllllll}\n",
+ " & query & significant & p\\_value & term\\_size & query\\_size & intersection\\_size & precision & recall & term\\_id & source & term\\_name & effective\\_domain\\_size & source\\_order & parents & cell\\_type & snp\\_eGene\\\\\n",
+ " & & & & & & & & & & & & & & & & \\\\\n",
+ "\\hline\n",
+ "\t1 & query\\_1 & TRUE & 0.049610826 & 2342 & 27 & 22 & 0.8148148 & 0.009393681 & TF:M00665 & TF & Factor: Sp3; motif: ASMCTTGGGSRGGG & 5705 & 7882 & TF:M00000 & DC & rs7935082\\_MS4A7 \\\\\n",
+ "\t2 & query\\_1 & TRUE & 0.049610826 & 2303 & 27 & 22 & 0.8148148 & 0.009552757 & TF:M03582 & TF & Factor: TWIST; motif: CACCTGG & 5705 & 8844 & TF:M00000 & DC & rs7935082\\_MS4A7 \\\\\n",
+ "\t3 & query\\_1 & TRUE & 0.003978389 & 3447 & 351 & 163 & 0.4643875 & 0.047287496 & TF:M11438 & TF & Factor: SAP-1; motif: NTCGTAAATGCN & 10167 & 1882 & TF:M00000 & CD4T & rs1131017\\_RPS26 \\\\\n",
+ "\t4 & query\\_1 & TRUE & 0.022537569 & 3025 & 20 & 16 & 0.8000000 & 0.005289256 & TF:M08413 & TF & Factor: TEF-3:C/EBPdelta; motif: RGWATGYNRTTRCGYAAY & 10167 & 8434 & TF:M00000 & CD4T & rs7605824\\_SH3YL1 \\\\\n",
+ "\t5 & query\\_1 & TRUE & 0.002470867 & 3285 & 191 & 95 & 0.4973822 & 0.028919330 & TF:M10785 & TF & Factor: hoxa9; motif: RTCGTWANNN & 10167 & 3774 & TF:M00000 & CD4T & rs1131017\\_RPS26\\_positive\\\\\n",
+ "\t6 & query\\_1 & TRUE & 0.003339438 & 1184 & 191 & 46 & 0.2408377 & 0.038851351 & TF:M04696\\_1 & TF & Factor: YY1; motif: GCCGCCATNTTGNNNNNGGNCN; match class: 1 & 10167 & 9013 & TF:M04696 & CD4T & rs1131017\\_RPS26\\_positive\\\\\n",
+ "\\end{tabular}\n"
+ ],
+ "text/markdown": [
+ "\n",
+ "A data.frame: 6 × 16\n",
+ "\n",
+ "| | query <chr> | significant <lgl> | p_value <dbl> | term_size <int> | query_size <int> | intersection_size <int> | precision <dbl> | recall <dbl> | term_id <chr> | source <chr> | term_name <chr> | effective_domain_size <int> | source_order <int> | parents <list> | cell_type <chr> | snp_eGene <chr> |\n",
+ "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
+ "| 1 | query_1 | TRUE | 0.049610826 | 2342 | 27 | 22 | 0.8148148 | 0.009393681 | TF:M00665 | TF | Factor: Sp3; motif: ASMCTTGGGSRGGG | 5705 | 7882 | TF:M00000 | DC | rs7935082_MS4A7 |\n",
+ "| 2 | query_1 | TRUE | 0.049610826 | 2303 | 27 | 22 | 0.8148148 | 0.009552757 | TF:M03582 | TF | Factor: TWIST; motif: CACCTGG | 5705 | 8844 | TF:M00000 | DC | rs7935082_MS4A7 |\n",
+ "| 3 | query_1 | TRUE | 0.003978389 | 3447 | 351 | 163 | 0.4643875 | 0.047287496 | TF:M11438 | TF | Factor: SAP-1; motif: NTCGTAAATGCN | 10167 | 1882 | TF:M00000 | CD4T | rs1131017_RPS26 |\n",
+ "| 4 | query_1 | TRUE | 0.022537569 | 3025 | 20 | 16 | 0.8000000 | 0.005289256 | TF:M08413 | TF | Factor: TEF-3:C/EBPdelta; motif: RGWATGYNRTTRCGYAAY | 10167 | 8434 | TF:M00000 | CD4T | rs7605824_SH3YL1 |\n",
+ "| 5 | query_1 | TRUE | 0.002470867 | 3285 | 191 | 95 | 0.4973822 | 0.028919330 | TF:M10785 | TF | Factor: hoxa9; motif: RTCGTWANNN | 10167 | 3774 | TF:M00000 | CD4T | rs1131017_RPS26_positive |\n",
+ "| 6 | query_1 | TRUE | 0.003339438 | 1184 | 191 | 46 | 0.2408377 | 0.038851351 | TF:M04696_1 | TF | Factor: YY1; motif: GCCGCCATNTTGNNNNNGGNCN; match class: 1 | 10167 | 9013 | TF:M04696 | CD4T | rs1131017_RPS26_positive |\n",
+ "\n"
+ ],
+ "text/plain": [
+ " query significant p_value term_size query_size intersection_size\n",
+ "1 query_1 TRUE 0.049610826 2342 27 22 \n",
+ "2 query_1 TRUE 0.049610826 2303 27 22 \n",
+ "3 query_1 TRUE 0.003978389 3447 351 163 \n",
+ "4 query_1 TRUE 0.022537569 3025 20 16 \n",
+ "5 query_1 TRUE 0.002470867 3285 191 95 \n",
+ "6 query_1 TRUE 0.003339438 1184 191 46 \n",
+ " precision recall term_id source\n",
+ "1 0.8148148 0.009393681 TF:M00665 TF \n",
+ "2 0.8148148 0.009552757 TF:M03582 TF \n",
+ "3 0.4643875 0.047287496 TF:M11438 TF \n",
+ "4 0.8000000 0.005289256 TF:M08413 TF \n",
+ "5 0.4973822 0.028919330 TF:M10785 TF \n",
+ "6 0.2408377 0.038851351 TF:M04696_1 TF \n",
+ " term_name \n",
+ "1 Factor: Sp3; motif: ASMCTTGGGSRGGG \n",
+ "2 Factor: TWIST; motif: CACCTGG \n",
+ "3 Factor: SAP-1; motif: NTCGTAAATGCN \n",
+ "4 Factor: TEF-3:C/EBPdelta; motif: RGWATGYNRTTRCGYAAY \n",
+ "5 Factor: hoxa9; motif: RTCGTWANNN \n",
+ "6 Factor: YY1; motif: GCCGCCATNTTGNNNNNGGNCN; match class: 1\n",
+ " effective_domain_size source_order parents cell_type\n",
+ "1 5705 7882 TF:M00000 DC \n",
+ "2 5705 8844 TF:M00000 DC \n",
+ "3 10167 1882 TF:M00000 CD4T \n",
+ "4 10167 8434 TF:M00000 CD4T \n",
+ "5 10167 3774 TF:M00000 CD4T \n",
+ "6 10167 9013 TF:M04696 CD4T \n",
+ " snp_eGene \n",
+ "1 rs7935082_MS4A7 \n",
+ "2 rs7935082_MS4A7 \n",
+ "3 rs1131017_RPS26 \n",
+ "4 rs7605824_SH3YL1 \n",
+ "5 rs1131017_RPS26_positive\n",
+ "6 rs1131017_RPS26_positive"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "head(enrichment)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 221,
+ "id": "724fe97f-5620-4d55-9d2f-154c00f7bcd8",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "A data.frame: 6 × 4\n",
+ "\n",
+ "\t | cell_type | n_eqtls_freq | n_enrich | freq_enrich |
\n",
+ "\t | <chr> | <int> | <dbl> | <dbl> |
\n",
+ "\n",
+ "\n",
+ "\t1 | DC | 2 | 1 | 0.5000000 |
\n",
+ "\t2 | CD4T | 8 | 2 | 0.2500000 |
\n",
+ "\t3 | CD8T | 6 | 0 | 0.0000000 |
\n",
+ "\t4 | monocyte | 9 | 1 | 0.1111111 |
\n",
+ "\t5 | NK | 3 | 2 | 0.6666667 |
\n",
+ "\t6 | B | 1 | 1 | 1.0000000 |
\n",
+ "\n",
+ "
\n"
+ ],
+ "text/latex": [
+ "A data.frame: 6 × 4\n",
+ "\\begin{tabular}{r|llll}\n",
+ " & cell\\_type & n\\_eqtls\\_freq & n\\_enrich & freq\\_enrich\\\\\n",
+ " & & & & \\\\\n",
+ "\\hline\n",
+ "\t1 & DC & 2 & 1 & 0.5000000\\\\\n",
+ "\t2 & CD4T & 8 & 2 & 0.2500000\\\\\n",
+ "\t3 & CD8T & 6 & 0 & 0.0000000\\\\\n",
+ "\t4 & monocyte & 9 & 1 & 0.1111111\\\\\n",
+ "\t5 & NK & 3 & 2 & 0.6666667\\\\\n",
+ "\t6 & B & 1 & 1 & 1.0000000\\\\\n",
+ "\\end{tabular}\n"
+ ],
+ "text/markdown": [
+ "\n",
+ "A data.frame: 6 × 4\n",
+ "\n",
+ "| | cell_type <chr> | n_eqtls_freq <int> | n_enrich <dbl> | freq_enrich <dbl> |\n",
+ "|---|---|---|---|---|\n",
+ "| 1 | DC | 2 | 1 | 0.5000000 |\n",
+ "| 2 | CD4T | 8 | 2 | 0.2500000 |\n",
+ "| 3 | CD8T | 6 | 0 | 0.0000000 |\n",
+ "| 4 | monocyte | 9 | 1 | 0.1111111 |\n",
+ "| 5 | NK | 3 | 2 | 0.6666667 |\n",
+ "| 6 | B | 1 | 1 | 1.0000000 |\n",
+ "\n"
+ ],
+ "text/plain": [
+ " cell_type n_eqtls_freq n_enrich freq_enrich\n",
+ "1 DC 2 1 0.5000000 \n",
+ "2 CD4T 8 2 0.2500000 \n",
+ "3 CD8T 6 0 0.0000000 \n",
+ "4 monocyte 9 1 0.1111111 \n",
+ "5 NK 3 2 0.6666667 \n",
+ "6 B 1 1 1.0000000 "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "head(enrichment_summary)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 223,
+ "id": "90e7aea5-2e69-4412-89b7-cbd605fb836d",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "A tibble: 6 × 3\n",
+ "\n",
+ "\tsnp_eqtlgene | count_coeGenes | cell_type |
\n",
+ "\t<chr> | <int> | <chr> |
\n",
+ "\n",
+ "\n",
+ "\trs7935082_MS4A7 | 30 | DC |
\n",
+ "\trs9271520_HLA-DQA2 | 13 | DC |
\n",
+ "\trs111454690_HLA-DRB5 | 19 | CD4T |
\n",
+ "\trs1131017_RPS26 | 372 | CD4T |
\n",
+ "\trs2741159_KRT1 | 8 | CD4T |
\n",
+ "\trs4147638_SMDT1 | 19 | CD4T |
\n",
+ "\n",
+ "
\n"
+ ],
+ "text/latex": [
+ "A tibble: 6 × 3\n",
+ "\\begin{tabular}{lll}\n",
+ " snp\\_eqtlgene & count\\_coeGenes & cell\\_type\\\\\n",
+ " & & \\\\\n",
+ "\\hline\n",
+ "\t rs7935082\\_MS4A7 & 30 & DC \\\\\n",
+ "\t rs9271520\\_HLA-DQA2 & 13 & DC \\\\\n",
+ "\t rs111454690\\_HLA-DRB5 & 19 & CD4T\\\\\n",
+ "\t rs1131017\\_RPS26 & 372 & CD4T\\\\\n",
+ "\t rs2741159\\_KRT1 & 8 & CD4T\\\\\n",
+ "\t rs4147638\\_SMDT1 & 19 & CD4T\\\\\n",
+ "\\end{tabular}\n"
+ ],
+ "text/markdown": [
+ "\n",
+ "A tibble: 6 × 3\n",
+ "\n",
+ "| snp_eqtlgene <chr> | count_coeGenes <int> | cell_type <chr> |\n",
+ "|---|---|---|\n",
+ "| rs7935082_MS4A7 | 30 | DC |\n",
+ "| rs9271520_HLA-DQA2 | 13 | DC |\n",
+ "| rs111454690_HLA-DRB5 | 19 | CD4T |\n",
+ "| rs1131017_RPS26 | 372 | CD4T |\n",
+ "| rs2741159_KRT1 | 8 | CD4T |\n",
+ "| rs4147638_SMDT1 | 19 | CD4T |\n",
+ "\n"
+ ],
+ "text/plain": [
+ " snp_eqtlgene count_coeGenes cell_type\n",
+ "1 rs7935082_MS4A7 30 DC \n",
+ "2 rs9271520_HLA-DQA2 13 DC \n",
+ "3 rs111454690_HLA-DRB5 19 CD4T \n",
+ "4 rs1131017_RPS26 372 CD4T \n",
+ "5 rs2741159_KRT1 8 CD4T \n",
+ "6 rs4147638_SMDT1 19 CD4T "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "head(coegenes_counts_total)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 225,
+ "id": "a7788afe-58c2-41bf-bd53-bec13a912a46",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "0.0496108257480342"
+ ],
+ "text/latex": [
+ "0.0496108257480342"
+ ],
+ "text/markdown": [
+ "0.0496108257480342"
+ ],
+ "text/plain": [
+ "[1] 0.04961083"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "max(enrichment$p_value) # set to same level"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 226,
+ "id": "ba254471-a07d-4b06-9280-970d02582110",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "### Evaluate amount of enrichments found per cell-type with set p-value threshold"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 227,
+ "id": "6729f307-8da0-4700-9b99-d4cc8f9b2fce",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "A grouped_df: 5 × 2\n",
+ "\n",
+ "\tcell_type | n |
\n",
+ "\t<chr> | <int> |
\n",
+ "\n",
+ "\n",
+ "\tB | 3 |
\n",
+ "\tCD4T | 54 |
\n",
+ "\tDC | 2 |
\n",
+ "\tmonocyte | 40 |
\n",
+ "\tNK | 21 |
\n",
+ "\n",
+ "
\n"
+ ],
+ "text/latex": [
+ "A grouped\\_df: 5 × 2\n",
+ "\\begin{tabular}{ll}\n",
+ " cell\\_type & n\\\\\n",
+ " & \\\\\n",
+ "\\hline\n",
+ "\t B & 3\\\\\n",
+ "\t CD4T & 54\\\\\n",
+ "\t DC & 2\\\\\n",
+ "\t monocyte & 40\\\\\n",
+ "\t NK & 21\\\\\n",
+ "\\end{tabular}\n"
+ ],
+ "text/markdown": [
+ "\n",
+ "A grouped_df: 5 × 2\n",
+ "\n",
+ "| cell_type <chr> | n <int> |\n",
+ "|---|---|\n",
+ "| B | 3 |\n",
+ "| CD4T | 54 |\n",
+ "| DC | 2 |\n",
+ "| monocyte | 40 |\n",
+ "| NK | 21 |\n",
+ "\n"
+ ],
+ "text/plain": [
+ " cell_type n \n",
+ "1 B 3\n",
+ "2 CD4T 54\n",
+ "3 DC 2\n",
+ "4 monocyte 40\n",
+ "5 NK 21"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "enrichment %>% group_by(cell_type) %>% count()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 228,
+ "id": "7d3dbfdc-2862-4ead-be5a-7645b8a170ef",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "120"
+ ],
+ "text/latex": [
+ "120"
+ ],
+ "text/markdown": [
+ "120"
+ ],
+ "text/plain": [
+ "[1] 120"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "nrow(enrichment)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 230,
+ "id": "8a481a49-f784-45a6-b640-e33cf122469f",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "### Save the enrichment result"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 231,
+ "id": "f5e929c8-3fd4-4023-8483-3ef1bb3335d8",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "enrichment$parents = NULL"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 232,
+ "id": "3db92875-75a3-436f-b26c-e116bb15e0ab",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "write.csv(enrichment, paste0(path, \"transfac_results/TRANSFAC_Enrichments.csv\"))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "a1c57807-ebfa-4ef6-ad86-4022bcee0fe0",
+ "metadata": {},
+ "source": [
+ "# Compare to previous enrichment results with Remap"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 233,
+ "id": "08a4064d-3059-422a-9406-0cac4c75830b",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "A data.frame: 2 × 13\n",
+ "\n",
+ "\t | Cell.type | eQTL..SNP.eGene. | TF | TF.is.a.co.eGene. | enrichment.p.value | X..TF.overlap...co.eGene | X..TF.overlap...background | X..no.TF.overlap...co.eGene | X..background.gene...not.co.eGene | enrichment.fdr | eQTL.SNP | SNP.overlaps.TF. | Names.of.overlapping.SNPs |
\n",
+ "\t | <chr> | <chr> | <chr> | <lgl> | <dbl> | <int> | <int> | <int> | <int> | <dbl> | <chr> | <lgl> | <chr> |
\n",
+ "\n",
+ "\n",
+ "\t1 | CD4T | rs111454690_HLA-DRB5 | CDK8 | FALSE | 9.630369e-06 | 14 | 5 | 2778 | 8515 | 1.640373e-03 | rs111454690 | FALSE | |
\n",
+ "\t2 | CD4T | rs111454690_HLA-DRB5 | SNRNP70 | FALSE | 1.209254e-09 | 11 | 8 | 649 | 10644 | 6.179288e-07 | rs111454690 | FALSE | |
\n",
+ "\n",
+ "
\n"
+ ],
+ "text/latex": [
+ "A data.frame: 2 × 13\n",
+ "\\begin{tabular}{r|lllllllllllll}\n",
+ " & Cell.type & eQTL..SNP.eGene. & TF & TF.is.a.co.eGene. & enrichment.p.value & X..TF.overlap...co.eGene & X..TF.overlap...background & X..no.TF.overlap...co.eGene & X..background.gene...not.co.eGene & enrichment.fdr & eQTL.SNP & SNP.overlaps.TF. & Names.of.overlapping.SNPs\\\\\n",
+ " & & & & & & & & & & & & & \\\\\n",
+ "\\hline\n",
+ "\t1 & CD4T & rs111454690\\_HLA-DRB5 & CDK8 & FALSE & 9.630369e-06 & 14 & 5 & 2778 & 8515 & 1.640373e-03 & rs111454690 & FALSE & \\\\\n",
+ "\t2 & CD4T & rs111454690\\_HLA-DRB5 & SNRNP70 & FALSE & 1.209254e-09 & 11 & 8 & 649 & 10644 & 6.179288e-07 & rs111454690 & FALSE & \\\\\n",
+ "\\end{tabular}\n"
+ ],
+ "text/markdown": [
+ "\n",
+ "A data.frame: 2 × 13\n",
+ "\n",
+ "| | Cell.type <chr> | eQTL..SNP.eGene. <chr> | TF <chr> | TF.is.a.co.eGene. <lgl> | enrichment.p.value <dbl> | X..TF.overlap...co.eGene <int> | X..TF.overlap...background <int> | X..no.TF.overlap...co.eGene <int> | X..background.gene...not.co.eGene <int> | enrichment.fdr <dbl> | eQTL.SNP <chr> | SNP.overlaps.TF. <lgl> | Names.of.overlapping.SNPs <chr> |\n",
+ "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
+ "| 1 | CD4T | rs111454690_HLA-DRB5 | CDK8 | FALSE | 9.630369e-06 | 14 | 5 | 2778 | 8515 | 1.640373e-03 | rs111454690 | FALSE | |\n",
+ "| 2 | CD4T | rs111454690_HLA-DRB5 | SNRNP70 | FALSE | 1.209254e-09 | 11 | 8 | 649 | 10644 | 6.179288e-07 | rs111454690 | FALSE | |\n",
+ "\n"
+ ],
+ "text/plain": [
+ " Cell.type eQTL..SNP.eGene. TF TF.is.a.co.eGene. enrichment.p.value\n",
+ "1 CD4T rs111454690_HLA-DRB5 CDK8 FALSE 9.630369e-06 \n",
+ "2 CD4T rs111454690_HLA-DRB5 SNRNP70 FALSE 1.209254e-09 \n",
+ " X..TF.overlap...co.eGene X..TF.overlap...background\n",
+ "1 14 5 \n",
+ "2 11 8 \n",
+ " X..no.TF.overlap...co.eGene X..background.gene...not.co.eGene enrichment.fdr\n",
+ "1 2778 8515 1.640373e-03 \n",
+ "2 649 10644 6.179288e-07 \n",
+ " eQTL.SNP SNP.overlaps.TF. Names.of.overlapping.SNPs\n",
+ "1 rs111454690 FALSE \n",
+ "2 rs111454690 FALSE "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "head(old_enrichments,2)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "238a1fe5-72cf-4dd4-96b2-c25e18fa41e5",
+ "metadata": {},
+ "source": [
+ "## Compare amount of enrichments"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 234,
+ "id": "8058ccda-a072-443d-9b29-66fef671cd7c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "amount_enrichments_old = old_enrichments %>% group_by(Cell.type, eQTL..SNP.eGene.) %>% count()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 235,
+ "id": "baac2391-4638-4e42-923e-912226128e43",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "A grouped_df: 6 × 3\n",
+ "\n",
+ "\tCell.type | eQTL..SNP.eGene. | n |
\n",
+ "\t<chr> | <chr> | <int> |
\n",
+ "\n",
+ "\n",
+ "\tB | rs1131017_RPS26 | 82 |
\n",
+ "\tCD4T | rs111454690_HLA-DRB5 | 14 |
\n",
+ "\tCD4T | rs1131017_RPS26 | 134 |
\n",
+ "\tCD4T | rs1131017_RPS26_negative | 93 |
\n",
+ "\tCD4T | rs1131017_RPS26_positive | 125 |
\n",
+ "\tCD4T | rs4147638_SMDT1 | 14 |
\n",
+ "\n",
+ "
\n"
+ ],
+ "text/latex": [
+ "A grouped\\_df: 6 × 3\n",
+ "\\begin{tabular}{lll}\n",
+ " Cell.type & eQTL..SNP.eGene. & n\\\\\n",
+ " & & \\\\\n",
+ "\\hline\n",
+ "\t B & rs1131017\\_RPS26 & 82\\\\\n",
+ "\t CD4T & rs111454690\\_HLA-DRB5 & 14\\\\\n",
+ "\t CD4T & rs1131017\\_RPS26 & 134\\\\\n",
+ "\t CD4T & rs1131017\\_RPS26\\_negative & 93\\\\\n",
+ "\t CD4T & rs1131017\\_RPS26\\_positive & 125\\\\\n",
+ "\t CD4T & rs4147638\\_SMDT1 & 14\\\\\n",
+ "\\end{tabular}\n"
+ ],
+ "text/markdown": [
+ "\n",
+ "A grouped_df: 6 × 3\n",
+ "\n",
+ "| Cell.type <chr> | eQTL..SNP.eGene. <chr> | n <int> |\n",
+ "|---|---|---|\n",
+ "| B | rs1131017_RPS26 | 82 |\n",
+ "| CD4T | rs111454690_HLA-DRB5 | 14 |\n",
+ "| CD4T | rs1131017_RPS26 | 134 |\n",
+ "| CD4T | rs1131017_RPS26_negative | 93 |\n",
+ "| CD4T | rs1131017_RPS26_positive | 125 |\n",
+ "| CD4T | rs4147638_SMDT1 | 14 |\n",
+ "\n"
+ ],
+ "text/plain": [
+ " Cell.type eQTL..SNP.eGene. n \n",
+ "1 B rs1131017_RPS26 82\n",
+ "2 CD4T rs111454690_HLA-DRB5 14\n",
+ "3 CD4T rs1131017_RPS26 134\n",
+ "4 CD4T rs1131017_RPS26_negative 93\n",
+ "5 CD4T rs1131017_RPS26_positive 125\n",
+ "6 CD4T rs4147638_SMDT1 14"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "head(amount_enrichments_old)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 236,
+ "id": "6f219e98-8ec6-45fa-b145-7b8086806dd9",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "colnames(amount_enrichments_old) = c('cell_type', 'snp_eGene', 'ReMap_amount')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 237,
+ "id": "9bcc8ddb-a123-4fe6-b1bb-8e6a5d451519",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "transfac_enrichments = enrichment %>% group_by(cell_type, snp_eGene) %>% count()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 238,
+ "id": "ce779ce7-e46a-466f-be5b-1cab27eadd2c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "colnames(transfac_enrichments)= c('cell_type', 'snp_eGene', 'TRANSFAC_amount')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 239,
+ "id": "06ae3596-604f-4ebc-b6e9-66150ffb9559",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "overview = merge(amount_enrichments_old, transfac_enrichments, all.x = TRUE, all.y = TRUE)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 240,
+ "id": "7b372d6d-1e65-4750-9414-6cd3b5294a05",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "### Result of comparisoon"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 245,
+ "id": "6754a2a0-cdef-4126-9042-5820a8f65f62",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "overview[is.na(overview)]= 0"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 246,
+ "id": "6fc4ba13-519b-4ccd-bf51-967295a82d06",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "A data.frame: 19 × 4\n",
+ "\n",
+ "\t | cell_type | snp_eGene | ReMap_amount | TRANSFAC_amount |
\n",
+ "\t | <chr> | <chr> | <dbl> | <dbl> |
\n",
+ "\n",
+ "\n",
+ "\t5 | CD4T | rs1131017_RPS26_positive | 125 | 51 |
\n",
+ "\t16 | monocyte | rs1131017_RPS26 | 145 | 40 |
\n",
+ "\t18 | NK | rs1131017_RPS26 | 132 | 20 |
\n",
+ "\t1 | B | rs1131017_RPS26 | 82 | 3 |
\n",
+ "\t14 | DC | rs7935082_MS4A7 | 0 | 2 |
\n",
+ "\t3 | CD4T | rs1131017_RPS26 | 134 | 1 |
\n",
+ "\t4 | CD4T | rs1131017_RPS26_negative | 93 | 1 |
\n",
+ "\t7 | CD4T | rs7605824_SH3YL1 | 58 | 1 |
\n",
+ "\t19 | NK | rs12151742_GNLY | 0 | 1 |
\n",
+ "\t2 | CD4T | rs111454690_HLA-DRB5 | 14 | 0 |
\n",
+ "\t6 | CD4T | rs4147638_SMDT1 | 14 | 0 |
\n",
+ "\t8 | CD4T | rs7632486_CMTM8 | 4 | 0 |
\n",
+ "\t9 | CD4T | rs9271520_HLA-DQA2 | 5 | 0 |
\n",
+ "\t10 | CD8T | rs1131017_RPS26 | 62 | 0 |
\n",
+ "\t11 | CD8T | rs4147638_SMDT1 | 78 | 0 |
\n",
+ "\t12 | CD8T | rs6708265_PASK | 3 | 0 |
\n",
+ "\t13 | CD8T | rs7605824_SH3YL1 | 9 | 0 |
\n",
+ "\t15 | monocyte | rs111454690_HLA-DRB5 | 1 | 0 |
\n",
+ "\t17 | monocyte | rs9271520_HLA-DQA2 | 4 | 0 |
\n",
+ "\n",
+ "
\n"
+ ],
+ "text/latex": [
+ "A data.frame: 19 × 4\n",
+ "\\begin{tabular}{r|llll}\n",
+ " & cell\\_type & snp\\_eGene & ReMap\\_amount & TRANSFAC\\_amount\\\\\n",
+ " & & & & \\\\\n",
+ "\\hline\n",
+ "\t5 & CD4T & rs1131017\\_RPS26\\_positive & 125 & 51\\\\\n",
+ "\t16 & monocyte & rs1131017\\_RPS26 & 145 & 40\\\\\n",
+ "\t18 & NK & rs1131017\\_RPS26 & 132 & 20\\\\\n",
+ "\t1 & B & rs1131017\\_RPS26 & 82 & 3\\\\\n",
+ "\t14 & DC & rs7935082\\_MS4A7 & 0 & 2\\\\\n",
+ "\t3 & CD4T & rs1131017\\_RPS26 & 134 & 1\\\\\n",
+ "\t4 & CD4T & rs1131017\\_RPS26\\_negative & 93 & 1\\\\\n",
+ "\t7 & CD4T & rs7605824\\_SH3YL1 & 58 & 1\\\\\n",
+ "\t19 & NK & rs12151742\\_GNLY & 0 & 1\\\\\n",
+ "\t2 & CD4T & rs111454690\\_HLA-DRB5 & 14 & 0\\\\\n",
+ "\t6 & CD4T & rs4147638\\_SMDT1 & 14 & 0\\\\\n",
+ "\t8 & CD4T & rs7632486\\_CMTM8 & 4 & 0\\\\\n",
+ "\t9 & CD4T & rs9271520\\_HLA-DQA2 & 5 & 0\\\\\n",
+ "\t10 & CD8T & rs1131017\\_RPS26 & 62 & 0\\\\\n",
+ "\t11 & CD8T & rs4147638\\_SMDT1 & 78 & 0\\\\\n",
+ "\t12 & CD8T & rs6708265\\_PASK & 3 & 0\\\\\n",
+ "\t13 & CD8T & rs7605824\\_SH3YL1 & 9 & 0\\\\\n",
+ "\t15 & monocyte & rs111454690\\_HLA-DRB5 & 1 & 0\\\\\n",
+ "\t17 & monocyte & rs9271520\\_HLA-DQA2 & 4 & 0\\\\\n",
+ "\\end{tabular}\n"
+ ],
+ "text/markdown": [
+ "\n",
+ "A data.frame: 19 × 4\n",
+ "\n",
+ "| | cell_type <chr> | snp_eGene <chr> | ReMap_amount <dbl> | TRANSFAC_amount <dbl> |\n",
+ "|---|---|---|---|---|\n",
+ "| 5 | CD4T | rs1131017_RPS26_positive | 125 | 51 |\n",
+ "| 16 | monocyte | rs1131017_RPS26 | 145 | 40 |\n",
+ "| 18 | NK | rs1131017_RPS26 | 132 | 20 |\n",
+ "| 1 | B | rs1131017_RPS26 | 82 | 3 |\n",
+ "| 14 | DC | rs7935082_MS4A7 | 0 | 2 |\n",
+ "| 3 | CD4T | rs1131017_RPS26 | 134 | 1 |\n",
+ "| 4 | CD4T | rs1131017_RPS26_negative | 93 | 1 |\n",
+ "| 7 | CD4T | rs7605824_SH3YL1 | 58 | 1 |\n",
+ "| 19 | NK | rs12151742_GNLY | 0 | 1 |\n",
+ "| 2 | CD4T | rs111454690_HLA-DRB5 | 14 | 0 |\n",
+ "| 6 | CD4T | rs4147638_SMDT1 | 14 | 0 |\n",
+ "| 8 | CD4T | rs7632486_CMTM8 | 4 | 0 |\n",
+ "| 9 | CD4T | rs9271520_HLA-DQA2 | 5 | 0 |\n",
+ "| 10 | CD8T | rs1131017_RPS26 | 62 | 0 |\n",
+ "| 11 | CD8T | rs4147638_SMDT1 | 78 | 0 |\n",
+ "| 12 | CD8T | rs6708265_PASK | 3 | 0 |\n",
+ "| 13 | CD8T | rs7605824_SH3YL1 | 9 | 0 |\n",
+ "| 15 | monocyte | rs111454690_HLA-DRB5 | 1 | 0 |\n",
+ "| 17 | monocyte | rs9271520_HLA-DQA2 | 4 | 0 |\n",
+ "\n"
+ ],
+ "text/plain": [
+ " cell_type snp_eGene ReMap_amount TRANSFAC_amount\n",
+ "5 CD4T rs1131017_RPS26_positive 125 51 \n",
+ "16 monocyte rs1131017_RPS26 145 40 \n",
+ "18 NK rs1131017_RPS26 132 20 \n",
+ "1 B rs1131017_RPS26 82 3 \n",
+ "14 DC rs7935082_MS4A7 0 2 \n",
+ "3 CD4T rs1131017_RPS26 134 1 \n",
+ "4 CD4T rs1131017_RPS26_negative 93 1 \n",
+ "7 CD4T rs7605824_SH3YL1 58 1 \n",
+ "19 NK rs12151742_GNLY 0 1 \n",
+ "2 CD4T rs111454690_HLA-DRB5 14 0 \n",
+ "6 CD4T rs4147638_SMDT1 14 0 \n",
+ "8 CD4T rs7632486_CMTM8 4 0 \n",
+ "9 CD4T rs9271520_HLA-DQA2 5 0 \n",
+ "10 CD8T rs1131017_RPS26 62 0 \n",
+ "11 CD8T rs4147638_SMDT1 78 0 \n",
+ "12 CD8T rs6708265_PASK 3 0 \n",
+ "13 CD8T rs7605824_SH3YL1 9 0 \n",
+ "15 monocyte rs111454690_HLA-DRB5 1 0 \n",
+ "17 monocyte rs9271520_HLA-DQA2 4 0 "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "overview[order(overview$TRANSFAC_amount, decreasing = TRUE),]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 247,
+ "id": "c04f7c9b-1e74-401d-bcf4-569919447df6",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "write.csv(overview, paste0(path, \"transfac_results/TRANSFAC_ReMap_comparison.csv\"))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "80ddea9d-1cc5-4ce3-b595-e15d06593b83",
+ "metadata": {},
+ "source": [
+ "## Compare the TFs"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 254,
+ "id": "8dce9b80-35b0-4f3e-9023-9912c1348657",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Paper: six TFs—RBM39, TCF7, LEF1, KLF6, CD74 and MAF—whose binding sites were enriched in the promoter region of the rs1131017–RPS26\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 280,
+ "id": "fce20036-c368-467e-9f62-07dd7cf63b6e",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "enrichment$tf = str_extract(enrichment$term_name, '.*;')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 281,
+ "id": "8ffb3678-a8e1-4648-bcfc-d9fc3d1b30c3",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "enrichment$tf = str_replace(enrichment$tf, 'Factor: ', '')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 282,
+ "id": "9b91aee3-698d-488c-8e7f-d68cc00bdb17",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "enrichment$tf = str_replace(enrichment$tf, ';', '')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 283,
+ "id": "ea937e43-2fdf-47c3-8f1a-e9919889e5f5",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "enrichment$tf = str_replace(enrichment$tf , 'motif.*', '')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 284,
+ "id": "0855320a-54d6-422c-9991-d2d9329c3fb8",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "enrichment$tf = str_replace(enrichment$tf , '-', '')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 285,
+ "id": "9f0f674c-8690-4e2c-84e2-949048f3e891",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "enrichment$tf = toupper(enrichment$tf)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 286,
+ "id": "891df001-7839-41b9-96f5-6b2521e3b6eb",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "enrichment$tf = str_replace(enrichment$tf , ' ', '')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 292,
+ "id": "2873020c-ae31-4cfb-bb8b-953da1a03c61",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "enrichment$tf = str_replace(enrichment$tf, 'CETS-1', 'ETS1')\n",
+ "enrichment$tf = str_replace(enrichment$tf, 'C/EBPBETA|C/EBPBETA|C/EBPbeta|C/EBPBETA|GCMA:CEBPB', 'CEBPB')\n",
+ "enrichment$tf = str_replace(enrichment$tf, 'C/EBPDELTA|C/EBPDELTA|TEF3:CEBPD', 'CEBPD')\n",
+ "enrichment$tf = str_replace(enrichment$tf, 'C/EBPGAMMA', 'CEBPG')\n",
+ "enrichment$tf = str_replace(enrichment$tf, 'ELK1:HOXB13', 'ELK1')\n",
+ "enrichment$tf = str_replace(enrichment$tf, 'GTF2IRD1ISOFORM2', 'GTF2I')\n",
+ "enrichment$tf = str_replace(enrichment$tf, 'MEIS1:ELF1', 'ELF1')\n",
+ "enrichment$tf = str_replace(enrichment$tf, 'PU.1', 'SPI1')\n",
+ "enrichment$tf = str_replace(enrichment$tf, 'TEF3:ERG', 'ERG')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 293,
+ "id": "f2c5345b-0fdd-40fb-a982-96794b5f6440",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "A data.frame: 2 × 16\n",
+ "\n",
+ "\t | query | significant | p_value | term_size | query_size | intersection_size | precision | recall | term_id | source | term_name | effective_domain_size | source_order | cell_type | snp_eGene | tf |
\n",
+ "\t | <chr> | <lgl> | <dbl> | <int> | <int> | <int> | <dbl> | <dbl> | <chr> | <chr> | <chr> | <int> | <int> | <chr> | <chr> | <chr> |
\n",
+ "\n",
+ "\n",
+ "\t1 | query_1 | TRUE | 0.04961083 | 2342 | 27 | 22 | 0.8148148 | 0.009393681 | TF:M00665 | TF | Factor: Sp3; motif: ASMCTTGGGSRGGG | 5705 | 7882 | DC | rs7935082_MS4A7 | SP3 |
\n",
+ "\t2 | query_1 | TRUE | 0.04961083 | 2303 | 27 | 22 | 0.8148148 | 0.009552757 | TF:M03582 | TF | Factor: TWIST; motif: CACCTGG | 5705 | 8844 | DC | rs7935082_MS4A7 | TWIST |
\n",
+ "\n",
+ "
\n"
+ ],
+ "text/latex": [
+ "A data.frame: 2 × 16\n",
+ "\\begin{tabular}{r|llllllllllllllll}\n",
+ " & query & significant & p\\_value & term\\_size & query\\_size & intersection\\_size & precision & recall & term\\_id & source & term\\_name & effective\\_domain\\_size & source\\_order & cell\\_type & snp\\_eGene & tf\\\\\n",
+ " & & & & & & & & & & & & & & & & \\\\\n",
+ "\\hline\n",
+ "\t1 & query\\_1 & TRUE & 0.04961083 & 2342 & 27 & 22 & 0.8148148 & 0.009393681 & TF:M00665 & TF & Factor: Sp3; motif: ASMCTTGGGSRGGG & 5705 & 7882 & DC & rs7935082\\_MS4A7 & SP3 \\\\\n",
+ "\t2 & query\\_1 & TRUE & 0.04961083 & 2303 & 27 & 22 & 0.8148148 & 0.009552757 & TF:M03582 & TF & Factor: TWIST; motif: CACCTGG & 5705 & 8844 & DC & rs7935082\\_MS4A7 & TWIST\\\\\n",
+ "\\end{tabular}\n"
+ ],
+ "text/markdown": [
+ "\n",
+ "A data.frame: 2 × 16\n",
+ "\n",
+ "| | query <chr> | significant <lgl> | p_value <dbl> | term_size <int> | query_size <int> | intersection_size <int> | precision <dbl> | recall <dbl> | term_id <chr> | source <chr> | term_name <chr> | effective_domain_size <int> | source_order <int> | cell_type <chr> | snp_eGene <chr> | tf <chr> |\n",
+ "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
+ "| 1 | query_1 | TRUE | 0.04961083 | 2342 | 27 | 22 | 0.8148148 | 0.009393681 | TF:M00665 | TF | Factor: Sp3; motif: ASMCTTGGGSRGGG | 5705 | 7882 | DC | rs7935082_MS4A7 | SP3 |\n",
+ "| 2 | query_1 | TRUE | 0.04961083 | 2303 | 27 | 22 | 0.8148148 | 0.009552757 | TF:M03582 | TF | Factor: TWIST; motif: CACCTGG | 5705 | 8844 | DC | rs7935082_MS4A7 | TWIST |\n",
+ "\n"
+ ],
+ "text/plain": [
+ " query significant p_value term_size query_size intersection_size\n",
+ "1 query_1 TRUE 0.04961083 2342 27 22 \n",
+ "2 query_1 TRUE 0.04961083 2303 27 22 \n",
+ " precision recall term_id source term_name \n",
+ "1 0.8148148 0.009393681 TF:M00665 TF Factor: Sp3; motif: ASMCTTGGGSRGGG\n",
+ "2 0.8148148 0.009552757 TF:M03582 TF Factor: TWIST; motif: CACCTGG \n",
+ " effective_domain_size source_order cell_type snp_eGene tf \n",
+ "1 5705 7882 DC rs7935082_MS4A7 SP3 \n",
+ "2 5705 8844 DC rs7935082_MS4A7 TWIST"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "head(enrichment,2)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 299,
+ "id": "6ff9d9b7-e3b8-46d7-93ae-8b2f765f381a",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "colnames(enrichment) = paste0('TRANSFAC_', colnames(enrichment))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 296,
+ "id": "b940e752-4002-4c52-b066-bb3c2ff83e36",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "### Merge with ReMap REsults"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 298,
+ "id": "60ff3520-ffac-4660-bb4b-9744db63c309",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "A data.frame: 2 × 13\n",
+ "\n",
+ "\t | Cell.type | eQTL..SNP.eGene. | TF | TF.is.a.co.eGene. | enrichment.p.value | X..TF.overlap...co.eGene | X..TF.overlap...background | X..no.TF.overlap...co.eGene | X..background.gene...not.co.eGene | enrichment.fdr | eQTL.SNP | SNP.overlaps.TF. | Names.of.overlapping.SNPs |
\n",
+ "\t | <chr> | <chr> | <chr> | <lgl> | <dbl> | <int> | <int> | <int> | <int> | <dbl> | <chr> | <lgl> | <chr> |
\n",
+ "\n",
+ "\n",
+ "\t1 | CD4T | rs111454690_HLA-DRB5 | CDK8 | FALSE | 9.630369e-06 | 14 | 5 | 2778 | 8515 | 1.640373e-03 | rs111454690 | FALSE | |
\n",
+ "\t2 | CD4T | rs111454690_HLA-DRB5 | SNRNP70 | FALSE | 1.209254e-09 | 11 | 8 | 649 | 10644 | 6.179288e-07 | rs111454690 | FALSE | |
\n",
+ "\n",
+ "
\n"
+ ],
+ "text/latex": [
+ "A data.frame: 2 × 13\n",
+ "\\begin{tabular}{r|lllllllllllll}\n",
+ " & Cell.type & eQTL..SNP.eGene. & TF & TF.is.a.co.eGene. & enrichment.p.value & X..TF.overlap...co.eGene & X..TF.overlap...background & X..no.TF.overlap...co.eGene & X..background.gene...not.co.eGene & enrichment.fdr & eQTL.SNP & SNP.overlaps.TF. & Names.of.overlapping.SNPs\\\\\n",
+ " & & & & & & & & & & & & & \\\\\n",
+ "\\hline\n",
+ "\t1 & CD4T & rs111454690\\_HLA-DRB5 & CDK8 & FALSE & 9.630369e-06 & 14 & 5 & 2778 & 8515 & 1.640373e-03 & rs111454690 & FALSE & \\\\\n",
+ "\t2 & CD4T & rs111454690\\_HLA-DRB5 & SNRNP70 & FALSE & 1.209254e-09 & 11 & 8 & 649 & 10644 & 6.179288e-07 & rs111454690 & FALSE & \\\\\n",
+ "\\end{tabular}\n"
+ ],
+ "text/markdown": [
+ "\n",
+ "A data.frame: 2 × 13\n",
+ "\n",
+ "| | Cell.type <chr> | eQTL..SNP.eGene. <chr> | TF <chr> | TF.is.a.co.eGene. <lgl> | enrichment.p.value <dbl> | X..TF.overlap...co.eGene <int> | X..TF.overlap...background <int> | X..no.TF.overlap...co.eGene <int> | X..background.gene...not.co.eGene <int> | enrichment.fdr <dbl> | eQTL.SNP <chr> | SNP.overlaps.TF. <lgl> | Names.of.overlapping.SNPs <chr> |\n",
+ "|---|---|---|---|---|---|---|---|---|---|---|---|---|---|\n",
+ "| 1 | CD4T | rs111454690_HLA-DRB5 | CDK8 | FALSE | 9.630369e-06 | 14 | 5 | 2778 | 8515 | 1.640373e-03 | rs111454690 | FALSE | |\n",
+ "| 2 | CD4T | rs111454690_HLA-DRB5 | SNRNP70 | FALSE | 1.209254e-09 | 11 | 8 | 649 | 10644 | 6.179288e-07 | rs111454690 | FALSE | |\n",
+ "\n"
+ ],
+ "text/plain": [
+ " Cell.type eQTL..SNP.eGene. TF TF.is.a.co.eGene. enrichment.p.value\n",
+ "1 CD4T rs111454690_HLA-DRB5 CDK8 FALSE 9.630369e-06 \n",
+ "2 CD4T rs111454690_HLA-DRB5 SNRNP70 FALSE 1.209254e-09 \n",
+ " X..TF.overlap...co.eGene X..TF.overlap...background\n",
+ "1 14 5 \n",
+ "2 11 8 \n",
+ " X..no.TF.overlap...co.eGene X..background.gene...not.co.eGene enrichment.fdr\n",
+ "1 2778 8515 1.640373e-03 \n",
+ "2 649 10644 6.179288e-07 \n",
+ " eQTL.SNP SNP.overlaps.TF. Names.of.overlapping.SNPs\n",
+ "1 rs111454690 FALSE \n",
+ "2 rs111454690 FALSE "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "head(old_enrichments,2)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 300,
+ "id": "1e378133-c45d-4ca4-bfe0-b6b89e2dd7f2",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "colnames(old_enrichments) = paste0('ReMap', colnames(old_enrichments))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 301,
+ "id": "2f103548-f736-4a81-ba6c-af85ac4da9c4",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "combined = merge(enrichment, old_enrichments, by.x = c('TRANSFAC_cell_type', 'TRANSFAC_snp_eGene', 'TRANSFAC_tf'), by.y = c('ReMapCell.type', 'ReMapeQTL..SNP.eGene.', 'ReMapTF'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 303,
+ "id": "2b4a65ee-ecf1-4d93-9718-88b5f9f49d20",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "31"
+ ],
+ "text/latex": [
+ "31"
+ ],
+ "text/markdown": [
+ "31"
+ ],
+ "text/plain": [
+ "[1] 31"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "nrow(combined)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 306,
+ "id": "0ae3f173-266e-4720-bea0-fbd297c726d5",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "