From 37cff51476c1120c5eca5d9dd3234015077e5ce2 Mon Sep 17 00:00:00 2001 From: "Cedric (Huchuan) Xia" Date: Thu, 8 Mar 2018 14:33:47 -0500 Subject: [PATCH] second commit --- .../Cedric_gene_functions-checkpoint.ipynb | 76 + .../Select_Probes-checkpoint.ipynb | 6 + .../forOne_PlotGenesOnBrain-checkpoint.ipynb | 200 +++ .../forOne_selectProbe-checkpoint.ipynb | 607 +++++++ Cedric_gene_functions.ipynb | 76 + Cedric_gene_functions.py | 51 + Cedric_gene_functions.pyc | Bin 3924 -> 5017 bytes Genes_to_Parlces_Communities.ipynb | 522 ++++++ LearnNiBabel.ipynb | 1600 +++++++++++++++++ Select_Probes.ipynb | 113 ++ Somone.ipynb | 242 +++ forOne_Genes_to_Parlces_Communities.ipynb | 521 ++++++ forOne_PlotGenesOnBrain.ipynb | 200 +++ forOne_gene_parcel_exp.ipynb | 617 +++++++ forOne_selectProbe.ipynb | 268 +++ 15 files changed, 5099 insertions(+) create mode 100644 .ipynb_checkpoints/Select_Probes-checkpoint.ipynb create mode 100644 .ipynb_checkpoints/forOne_PlotGenesOnBrain-checkpoint.ipynb create mode 100644 .ipynb_checkpoints/forOne_selectProbe-checkpoint.ipynb create mode 100644 Genes_to_Parlces_Communities.ipynb create mode 100644 LearnNiBabel.ipynb create mode 100644 Select_Probes.ipynb create mode 100644 Somone.ipynb create mode 100644 forOne_Genes_to_Parlces_Communities.ipynb create mode 100644 forOne_PlotGenesOnBrain.ipynb create mode 100644 forOne_gene_parcel_exp.ipynb create mode 100644 forOne_selectProbe.ipynb diff --git a/.ipynb_checkpoints/Cedric_gene_functions-checkpoint.ipynb b/.ipynb_checkpoints/Cedric_gene_functions-checkpoint.ipynb index 1536981..ebaf14f 100644 --- a/.ipynb_checkpoints/Cedric_gene_functions-checkpoint.ipynb +++ b/.ipynb_checkpoints/Cedric_gene_functions-checkpoint.ipynb @@ -1,5 +1,30 @@ { "cells": [ + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook Cedric_gene_functions.ipynb to script\n", + "[NbConvertApp] Writing 5930 bytes to Cedric_gene_functions.py\n" + ] + } + ], + "source": [ + "!jupyter nbconvert --to script Cedric_gene_functions.ipynb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## geneMNItoSchaefer" + ] + }, { "cell_type": "code", "execution_count": 76, @@ -97,6 +122,57 @@ " print 'Saved variables at ' + variables_filename + '\\n'\n", " print 'Saved csv at ' + csv_filename + '\\n'" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## selectProbe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def selectProbe (donor):\n", + " import os\n", + " import pandas as pd\n", + " \n", + " # Set up the working directory\n", + " # All paths after this are relative path to the root of chead\n", + "\n", + " wk_dir = '/Users/hxia/Desktop/BBL/' # this is where I have mounted chead to on my laptop. \n", + " # Change the above to an empty string if working directly on chead \n", + "\n", + " # Set up the project directory\n", + " project_path = os.path.join(wk_dir,'data/joy/BBL/projects/prsConnectivity')\n", + " \n", + " # set paths\n", + " donor_path = os.path.join(project_path,'ABI','normalized_microarray_donor%s' % donor)\n", + " probes_info = pd.read_csv(os.path.join(donor_path,'Probes.csv'))\n", + " gene_expr = pd.read_csv(os.path.join(donor_path,'MicroarrayExpression.csv'),header=None)\n", + " sample_info = pd.read_csv(os.path.join(donor_path,'SampleAnnot.csv'))\n", + " \n", + " # get probes with available gene names\n", + " valid_probes = probes_info['entrez_id']>0\n", + " gene_expr = gene_expr[valid_probes]\n", + " probes_info = probes_info[valid_probes]\n", + " \n", + " # collapse rows\n", + " probe_names = probes_info['gene_symbol'][probes_info['probe_id'] == gene_expr[0]]\n", + " datCollapsed = gene_expr.groupby(probe_names).max()\n", + " \n", + " # create column names\n", + " gene_col_names = ['probe_id']\n", + " structure_ids = list(sample_info['structure_id'].astype(str))\n", + " gene_col_names.extend(structure_ids)\n", + " datCollapsed.columns = gene_col_names\n", + " \n", + " # output\n", + " return datCollapsed" + ] } ], "metadata": { diff --git a/.ipynb_checkpoints/Select_Probes-checkpoint.ipynb b/.ipynb_checkpoints/Select_Probes-checkpoint.ipynb new file mode 100644 index 0000000..2fd6442 --- /dev/null +++ b/.ipynb_checkpoints/Select_Probes-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/.ipynb_checkpoints/forOne_PlotGenesOnBrain-checkpoint.ipynb b/.ipynb_checkpoints/forOne_PlotGenesOnBrain-checkpoint.ipynb new file mode 100644 index 0000000..58f4818 --- /dev/null +++ b/.ipynb_checkpoints/forOne_PlotGenesOnBrain-checkpoint.ipynb @@ -0,0 +1,200 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "%gui qt4" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import os.path as op\n", + "import numpy as np\n", + "from numpy import arange\n", + "from numpy.random import permutation\n", + "import nibabel as nib\n", + "from surfer import Brain\n", + "import pickle\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Set up the working directory\n", + "# All paths after this are relative path to the root of chead\n", + "\n", + "wk_dir = '/Users/hxia/Desktop/BBL/' # this is where I have mounted chead to on my laptop. \n", + "# Change the above to an empty string if working directly on chead \n", + "\n", + "# Set up the project directory\n", + "project_path = os.path.join(wk_dir,'data/joy/BBL/projects/prsConnectivity')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "donor = 15496\n", + "numParcel = 100\n", + "numNetwork = 7\n", + "mm = 1\n", + "parcel_annot_file = os.path.join(wk_dir,'data/joy/BBL/studies/pnc/template/Schaefer/FreeSurfer5.3/fsaverage/label',\\\n", + " 'lh.Schaefer2018_%sParcels_%sNetworks_order.annot' % (numParcel,numNetwork))\n", + "gene_coord_file = os.path.join(project_path,'ABI','gene_mapping','%sdonor_%sParcels_%sNetwork_%smm.pkl'\\\n", + " % (donor, numParcel, numNetwork, mm))\n", + "gene_coord = pickle.load( open( gene_coord_file, \"rb\" ) )\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['Cont', 'Default', 'DorsAttn', 'Limbic', 'NotAssigned',\n", + " 'SalVentAttn', 'SomMot', 'Vis'], dtype='|S11')" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "community_list = np.unique(gene_coord[4].values())\n", + "community_color_list = ['orange','red','green','lightgreen','black',\\\n", + " 'violet','blue','purple']\n", + "\n", + "#community_color_list = ['orange','red','green','lightgreen',\\\n", + "# 'violet','blue','purple','orchid','salmon','black'\\\n", + "# 'teal','gold','darkblue','crimson','beige','plum','silver']\n", + "community_list" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "brain = Brain('fsaverage', \"lh\", \"inflated\",background='white',alpha=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "brain = Brain('fsaverage','lh', \"inflated\",views=['lat','med'], background='white',alpha=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 268, + "metadata": {}, + "outputs": [], + "source": [ + "brain = Brain('fsaverage', \"lh\", \"sphere\", background='white',alpha=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "for idx, community in enumerate(community_list):\n", + " if community != 'NotAssigned':\n", + " filtered_dict = {k:v for k,v in gene_coord[4].iteritems() if community in v}\n", + " brain.add_foci(pd.DataFrame.as_matrix(gene_coord[0].loc[filtered_dict.keys()]),hemi='lh',map_surface='pial',\\\n", + " color=community_color_list[idx],scale_factor=0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 269, + "metadata": {}, + "outputs": [], + "source": [ + "brain = Brain('fsaverage', \"lh\", \"sphere\",background='white')\n", + "for idx, community in enumerate(community_list):\n", + " if community != 'NotAssigned':\n", + " filtered_dict = {k:v for k,v in gene_coord[4].iteritems() if community in v}\n", + " brain.add_foci(pd.DataFrame.as_matrix(gene_coord[0].loc[filtered_dict.keys()]),map_surface='sphere',\\\n", + " color=community_color_list[idx],scale_factor=0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 294, + "metadata": {}, + "outputs": [], + "source": [ + "brain.add_annotation(parcel_annot_file, borders=False,alpha=0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "brain.add_annotation(parcel_annot_file, borders=False,alpha=0.5, hemi='lh')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "brain = Brain" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "myenv2", + "language": "python", + "name": "myenv2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/.ipynb_checkpoints/forOne_selectProbe-checkpoint.ipynb b/.ipynb_checkpoints/forOne_selectProbe-checkpoint.ipynb new file mode 100644 index 0000000..a4cfbb4 --- /dev/null +++ b/.ipynb_checkpoints/forOne_selectProbe-checkpoint.ipynb @@ -0,0 +1,607 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import os\n", + "import itertools" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Set up the working directory\n", + "# All paths after this are relative path to the root of chead\n", + "\n", + "wk_dir = '/Users/hxia/Desktop/BBL/' # this is where I have mounted chead to on my laptop. \n", + "# Change the above to an empty string if working directly on chead \n", + "\n", + "# Set up the project directory\n", + "project_path = os.path.join(wk_dir,'data/joy/BBL/projects/prsConnectivity')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# Get the list of Genes and their associated GWAS p-val from Ripke et al. Nature 2014\n", + "# Article and its supplement from www.nature.com/articles/nature13595\n", + "\n", + "gene_nature_supplement_file = os.path.join(project_path,'data','nature108genes.csv')\n", + "gene_nature_supplement = pd.read_csv(gene_nature_supplement_file)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "# Get the list of genes sampled by Allen Brain Institute\n", + "donor = 12876\n", + "donor_path = os.path.join(project_path,'ABI','normalized_microarray_donor%s' % donor)\n", + "\n", + "probes_info = pd.read_csv(os.path.join(donor_path,'Probes.csv'))\n", + "gene_expr = pd.read_csv(os.path.join(donor_path,'MicroarrayExpression.csv'),header=none)\n", + "sample_info = pd.read_csv(os.path.join(donor_path,'SampleAnnot.csv'))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/anaconda2/envs/myenv2/lib/python2.7/site-packages/ipykernel_launcher.py:2: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n", + " \n" + ] + } + ], + "source": [ + "valid_probes = probes_info['entrez_id']>0\n", + "gene_expr = gene_expr[valid_probes]\n", + "probes_info = probes_info[valid_probes]" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "probe_names = probes_info['gene_symbol'][probes_info['probe_id'] == gene_expr[0]]\n", + "probe_ids = gene_expr[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [], + "source": [ + "datCollapsed = gene_expr.groupby(probe_names).max()" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": {}, + "outputs": [], + "source": [ + "gene_col_names = ['probe_id']\n", + "structure_ids = list(sample_info['structure_id'].astype(str))\n", + "gene_col_names.extend(structure_ids)" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": {}, + "outputs": [], + "source": [ + "datCollapsed.columns = gene_col_names" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 1058685\n", + "1 1058684\n", + "2 1058683\n", + "3 1058682\n", + "4 1058681\n", + "5 1058680\n", + "6 1058679\n", + "7 1058678\n", + "8 1058677\n", + "9 1058676\n", + "10 1058675\n", + "11 1058674\n", + "12 1058673\n", + "13 1058672\n", + "14 1058671\n", + "15 1058670\n", + "16 1058669\n", + "17 1058668\n", + "18 1058667\n", + "19 1058666\n", + "20 1058665\n", + "21 1058664\n", + "22 1058663\n", + "23 1058662\n", + "24 1058661\n", + "25 1058660\n", + "26 1058659\n", + "27 1058658\n", + "28 1058657\n", + "29 1058656\n", + " ... \n", + "57796 1070313\n", + "57797 1070314\n", + "57804 1070321\n", + "57810 1070327\n", + "57813 1070331\n", + "57815 1070333\n", + "57816 1070334\n", + "57817 1070335\n", + "57820 1070338\n", + "57821 1070339\n", + "57822 1070340\n", + "57823 1070341\n", + "57824 1070342\n", + "57825 1070343\n", + "57826 1070344\n", + "57827 1070345\n", + "57840 1070359\n", + "57842 1070361\n", + "57843 1070362\n", + "57844 1070363\n", + "57845 1070364\n", + "57846 1070365\n", + "57847 1070366\n", + "57851 1070370\n", + "57852 1070371\n", + "57854 1070373\n", + "57855 1070374\n", + "57856 1070375\n", + "57857 1070376\n", + "57858 1070377\n", + "Name: 0, Length: 48171, dtype: int64" + ] + }, + "execution_count": 154, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gene_expr[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['4143',\n", + " '4151',\n", + " '4149',\n", + " '4142',\n", + " '4135',\n", + " '4143',\n", + " '4273',\n", + " '4270',\n", + " '4178',\n", + " '4135',\n", + " '4089',\n", + " '4280',\n", + " '4901',\n", + " '4291',\n", + " '4288',\n", + " '4114',\n", + " '4121',\n", + " '4120',\n", + " '4090',\n", + " '4099',\n", + " '4113',\n", + " '4230',\n", + " '4106',\n", + " '4090',\n", + " '4158',\n", + " '4072',\n", + " '4013',\n", + " '4158',\n", + " '4151',\n", + " '4087',\n", + " '4015',\n", + " '4136',\n", + " '4178',\n", + " '4135',\n", + " '4088',\n", + " '4087',\n", + " '4113',\n", + " '4099',\n", + " '4143',\n", + " '4230',\n", + " '4120',\n", + " '4113',\n", + " '4099',\n", + " '4201',\n", + " '4193',\n", + " '4186',\n", + " '4200',\n", + " '4121',\n", + " '4121',\n", + " '4120',\n", + " '4186',\n", + " '4194',\n", + " '4193',\n", + " '4187',\n", + " '4186',\n", + " '4214',\n", + " '4207',\n", + " '4014',\n", + " '4224',\n", + " '4223',\n", + " '4023',\n", + " '4031',\n", + " '4030',\n", + " '4905',\n", + " '4904',\n", + " '4903',\n", + " '4224',\n", + " '4224',\n", + " '4039',\n", + " '4048',\n", + " '4024',\n", + " '4030',\n", + " '4051',\n", + " '4051',\n", + " '9677',\n", + " '9677',\n", + " '9598',\n", + " '9677',\n", + " '9543',\n", + " '9614',\n", + " '9698',\n", + " '9677',\n", + " '9642',\n", + " '9598',\n", + " '9561',\n", + " '9520',\n", + " '9561',\n", + " '9642',\n", + " '9520',\n", + " '9492',\n", + " '9698',\n", + " '9492',\n", + " '9161',\n", + " '9492',\n", + " '9146',\n", + " '9022',\n", + " '9492',\n", + " '9074',\n", + " '9067',\n", + " '4524',\n", + " '4523',\n", + " '4507',\n", + " '9074',\n", + " '4518',\n", + " '4507',\n", + " '4432',\n", + " '10151',\n", + " '4648',\n", + " '4637',\n", + " '4506',\n", + " '4417',\n", + " '4308',\n", + " '4296',\n", + " '4295',\n", + " '4593',\n", + " '4311',\n", + " '4301',\n", + " '4322',\n", + " '4310',\n", + " '4440',\n", + " '4506',\n", + " '4409',\n", + " '4288',\n", + " '4258',\n", + " '4257',\n", + " '4254',\n", + " '4329',\n", + " '4379',\n", + " '4342',\n", + " '4322',\n", + " '4444',\n", + " '4440',\n", + " '9708',\n", + " '4281',\n", + " '4258',\n", + " '4255',\n", + " '4254',\n", + " '4322',\n", + " '9103',\n", + " '4782',\n", + " '4782',\n", + " '4428',\n", + " '4409',\n", + " '9067',\n", + " '9054',\n", + " '4518',\n", + " '4506',\n", + " '4437',\n", + " '4432',\n", + " '4417',\n", + " '4400',\n", + " '4395',\n", + " '4282',\n", + " '9075',\n", + " '4669',\n", + " '4679',\n", + " '4675',\n", + " '13005',\n", + " '4672',\n", + " '4395',\n", + " '13008',\n", + " '4667',\n", + " '4641',\n", + " '4400',\n", + " '4395',\n", + " '4637',\n", + " '4641',\n", + " '4573',\n", + " '4596',\n", + " '4542',\n", + " '4313',\n", + " '4301',\n", + " '10145',\n", + " '4322',\n", + " '4291',\n", + " '4409',\n", + " '9708',\n", + " '4444',\n", + " '4440',\n", + " '4428',\n", + " '4256',\n", + " '4255',\n", + " '4251',\n", + " '4254',\n", + " '4254',\n", + " '4251',\n", + " '4360',\n", + " '4360',\n", + " '4379',\n", + " '4367',\n", + " '4351',\n", + " '9708',\n", + " '9074',\n", + " '4256',\n", + " '4251',\n", + " '4322',\n", + " '4288',\n", + " '4417',\n", + " '4282',\n", + " '4281',\n", + " '4720',\n", + " '4724',\n", + " '4723',\n", + " '4728',\n", + " '4726',\n", + " '4741',\n", + " '4742',\n", + " '4738',\n", + " '4738',\n", + " '4744',\n", + " '4245',\n", + " '4244',\n", + " '4244',\n", + " '4230',\n", + " '4074',\n", + " '4244',\n", + " '4107',\n", + " '4136',\n", + " '4089',\n", + " '4090',\n", + " '9222',\n", + " '9222',\n", + " '4901',\n", + " '4280',\n", + " '4063',\n", + " '4099',\n", + " '4098',\n", + " '4089',\n", + " '4088',\n", + " '4149',\n", + " '4149',\n", + " '4088',\n", + " '4015',\n", + " '4224',\n", + " '4224',\n", + " '4223',\n", + " '4223',\n", + " '4136',\n", + " '4143',\n", + " '4142',\n", + " '4013',\n", + " '4215',\n", + " '4215',\n", + " '4231',\n", + " '4121',\n", + " '4193',\n", + " '4186',\n", + " '4114',\n", + " '4098',\n", + " '4214',\n", + " '4200',\n", + " '4023',\n", + " '4030',\n", + " '4224',\n", + " '4223',\n", + " '4273',\n", + " '4013',\n", + " '4031',\n", + " '4030',\n", + " '4051',\n", + " '4048',\n", + " '4024',\n", + " '4048',\n", + " '4224',\n", + " '4224',\n", + " '4060',\n", + " '4051',\n", + " '4039',\n", + " '4223',\n", + " '4023',\n", + " '4039',\n", + " '4023',\n", + " '4224',\n", + " '4114',\n", + " '4231',\n", + " '4208',\n", + " '4150',\n", + " '4151',\n", + " '4136',\n", + " '4169',\n", + " '4142',\n", + " '4280',\n", + " '4087',\n", + " '4014',\n", + " '4178',\n", + " '4098',\n", + " '4194',\n", + " '4200',\n", + " '4149',\n", + " '4207',\n", + " '4114',\n", + " '4079',\n", + " '4079',\n", + " '4024',\n", + " '4030',\n", + " '4045',\n", + " '4031',\n", + " '4024',\n", + " '4023',\n", + " '4045',\n", + " '4722',\n", + " '4722',\n", + " '4720',\n", + " '4724',\n", + " '4723',\n", + " '4727',\n", + " '4725',\n", + " '4728',\n", + " '4727',\n", + " '4726',\n", + " '4725',\n", + " '4719',\n", + " '4718',\n", + " '4719',\n", + " '4718',\n", + " '4742',\n", + " '4740',\n", + " '4741',\n", + " '4740',\n", + " '4736',\n", + " '4735',\n", + " '4734',\n", + " '4736',\n", + " '4735',\n", + " '4734',\n", + " '4739',\n", + " '4739',\n", + " '4744',\n", + " '4743',\n", + " '4743',\n", + " '4288',\n", + " '4282',\n", + " '9222',\n", + " '4296',\n", + " '4295',\n", + " '4288',\n", + " '4282',\n", + " '4244',\n", + " '4160',\n", + " '9222',\n", + " '4231',\n", + " '4245',\n", + " '4244',\n", + " '4160',\n", + " '4270',\n", + " '4166',\n", + " '4193',\n", + " '4200',\n", + " '4193',\n", + " '4142',\n", + " '4143',\n", + " '4063',\n", + " '4114',\n", + " '4230',\n", + " '4088',\n", + " '4014',\n", + " '4194',\n", + " '4224',\n", + " '4223',\n", + " '4012',\n", + " '4904',\n", + " '4051',\n", + " '4048']" + ] + }, + "execution_count": 128, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "myenv2", + "language": "python", + "name": "myenv2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Cedric_gene_functions.ipynb b/Cedric_gene_functions.ipynb index 1536981..69b054f 100644 --- a/Cedric_gene_functions.ipynb +++ b/Cedric_gene_functions.ipynb @@ -1,5 +1,30 @@ { "cells": [ + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook Cedric_gene_functions.ipynb to script\n", + "[NbConvertApp] Writing 5955 bytes to Cedric_gene_functions.py\n" + ] + } + ], + "source": [ + "!jupyter nbconvert --to script Cedric_gene_functions.ipynb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## geneMNItoSchaefer" + ] + }, { "cell_type": "code", "execution_count": 76, @@ -97,6 +122,57 @@ " print 'Saved variables at ' + variables_filename + '\\n'\n", " print 'Saved csv at ' + csv_filename + '\\n'" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## selectProbe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def selectProbe (donor):\n", + " import os\n", + " import pandas as pd\n", + " \n", + " # Set up the working directory\n", + " # All paths after this are relative path to the root of chead\n", + " # this is where I have mounted chead to on my laptop. \n", + " # Change the above to an empty string if working directly on chead \n", + " wk_dir = '/Users/hxia/Desktop/BBL/'\n", + "\n", + " # Set up the project directory\n", + " project_path = os.path.join(wk_dir,'data/joy/BBL/projects/prsConnectivity')\n", + " \n", + " # set paths\n", + " donor_path = os.path.join(project_path,'ABI','normalized_microarray_donor%s' % donor)\n", + " probes_info = pd.read_csv(os.path.join(donor_path,'Probes.csv'))\n", + " gene_expr = pd.read_csv(os.path.join(donor_path,'MicroarrayExpression.csv'),header=None)\n", + " sample_info = pd.read_csv(os.path.join(donor_path,'SampleAnnot.csv'))\n", + " \n", + " # get probes with available gene names\n", + " valid_probes = probes_info['entrez_id']>0\n", + " gene_expr = gene_expr[valid_probes]\n", + " probes_info = probes_info[valid_probes]\n", + " \n", + " # collapse rows\n", + " probe_names = probes_info['gene_symbol'][probes_info['probe_id'] == gene_expr[0]]\n", + " datCollapsed = gene_expr.groupby(probe_names).max()\n", + " \n", + " # create column names\n", + " gene_col_names = ['probe_id']\n", + " structure_ids = list(sample_info['structure_id'].astype(str))\n", + " gene_col_names.extend(structure_ids)\n", + " datCollapsed.columns = gene_col_names\n", + " \n", + " # output\n", + " return datCollapsed" + ] } ], "metadata": { diff --git a/Cedric_gene_functions.py b/Cedric_gene_functions.py index 9210584..b6d3548 100644 --- a/Cedric_gene_functions.py +++ b/Cedric_gene_functions.py @@ -1,6 +1,14 @@ # coding: utf-8 +# In[6]: + + +get_ipython().system(u'jupyter nbconvert --to script Cedric_gene_functions.ipynb') + + +# ## geneMNItoSchaefer + # In[76]: @@ -88,3 +96,46 @@ def geneMNItoSchaefer (donor, numParcels, numNetworks, mm): print 'Saved variables at ' + variables_filename + '\n' print 'Saved csv at ' + csv_filename + '\n' + +# ## selectProbe + +# In[ ]: + + +def selectProbe (donor): + import os + import pandas as pd + + # Set up the working directory + # All paths after this are relative path to the root of chead + + wk_dir = '/Users/hxia/Desktop/BBL/' # this is where I have mounted chead to on my laptop. + # Change the above to an empty string if working directly on chead + + # Set up the project directory + project_path = os.path.join(wk_dir,'data/joy/BBL/projects/prsConnectivity') + + # set paths + donor_path = os.path.join(project_path,'ABI','normalized_microarray_donor%s' % donor) + probes_info = pd.read_csv(os.path.join(donor_path,'Probes.csv')) + gene_expr = pd.read_csv(os.path.join(donor_path,'MicroarrayExpression.csv'),header=None) + sample_info = pd.read_csv(os.path.join(donor_path,'SampleAnnot.csv')) + + # get probes with available gene names + valid_probes = probes_info['entrez_id']>0 + gene_expr = gene_expr[valid_probes] + probes_info = probes_info[valid_probes] + + # collapse rows + probe_names = probes_info['gene_symbol'][probes_info['probe_id'] == gene_expr[0]] + datCollapsed = gene_expr.groupby(probe_names).max() + + # create column names + gene_col_names = ['probe_id'] + structure_ids = list(sample_info['structure_id'].astype(str)) + gene_col_names.extend(structure_ids) + datCollapsed.columns = gene_col_names + + # output + return datCollapsed + diff --git a/Cedric_gene_functions.pyc b/Cedric_gene_functions.pyc index 6e9adb2adea030980cb661cc5f7f2f283ddd23a5..da193bc39d9616475f222d0d16e7b477afbf7ee7 100644 GIT binary patch delta 1052 zcmZuw&1%~~5T3Ox+wxDGLK7+|siC3qB_W4WD7_?vQW{7o$}JZmYqyRRSrWVJ)Gkte zaNocb+85}(+EhQ^WlL zmwJLi04xDw1{@Uzj5GKMa9#smGl~V=g0o>Aq0{Fm;%PqDLJrbVn59=j>cQ@=&IT%! zQLYE856-3?<@0p(ZU3;zo?gr5JI0PzKU?3~$@N#~SDp1&pVs6eWSDCWmyPQPmpVWT z7RNRcfD)BTXHc46N(%}GaSdWrOjFAml=WN2I&ge#C;&E>7L=$V`ZmG_-T(|+vIUfl zyWCB3^HxO$E1P#=oGJyBEhrkm+u-sJT-KpgK+!W_3=c&Id?U|>edO{q z`isx1WxujL;(7JQe!OU-@Ir4%WRsD=GsDi63jHsUlJ+p-6sTDF|DRP#Y~Hod(TiE(m;7M zO{RjTLC?AOnhc9$l*l0tS(awf&jWp7dN;i)KT6+b=6dEX0{JjrWeBLebeXFliMU_I z{15ljU?P;cEf4fjmLx&01lQD$$romBaswg)DoQFw)apfZM^wc`B0_CG5^<}DAz)qB zwHx&f>ml1>+ic5PXKmKT(}v|Rm-U!qotod%q!" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Parcellation\n", + "img = nib.load(parcel_filename)\n", + "img_data = img.get_data()\n", + "plotting.plot_img(img,draw_cross=False,title='Schaefer 100 Parcels',colorbar=True)\n", + "\n", + "# Community Assignment\n", + "community = pandas.read_csv(community_filename,delim_whitespace=True,header=None)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Genes\n", + "gene = pandas.io.parsers.read_csv(gene_filename,delimiter=',')\n", + "gene_mni_coord = gene.iloc[:,-3:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Parse the Community File" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "community_assignment ={parcel[0]: parcel[1].split('_')[2] \n", + " for idx, parcel in community.iterrows()}\n", + "community_assignment[0] = 'NotAssigned'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Map MNI to Image Coordiantes" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# Initiate an empty dataframe of nrow = num gene, ncol = 3 for x y z coordinates\n", + "gene_vox_coord = pandas.DataFrame(np.zeros(gene_mni_coord.shape))\n", + "gene_vox_coord.columns = ['img_x','img_y','img_z']" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# Loop through each gene coordinate in MNI space\n", + "# and then apply FSL std2imgcoord to transform the points\n", + "# to the image voxel coordiates\n", + "\n", + "for ridx, row in gene_mni_coord.iterrows():\n", + " coord_cmd = \"echo %f %f %f|std2imgcoord -img %s -std %s -vox \" \\\n", + " % (row[0],row[1],row[2],parcel_filename,parcel_filename) # a shell command to apply FSL std2imgcoord\n", + " vox_coord_str = subprocess.check_output(coord_cmd, shell = True) # get the output from the shell\n", + " vox_coord_str_list = vox_coord_str.split()\n", + " for cidx, coord in enumerate(vox_coord_str_list): \n", + " vox_coord_float = float(coord)\n", + " gene_vox_coord.iloc[ridx][cidx] = vox_coord_float\n", + "gene_vox_coord_rd = np.round(gene_vox_coord).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Loop up parcel and community assignment for each gene\n", + "gene_parcel_assignment ={idx: img_data[tuple(gene)].astype(int)\n", + " for idx, gene in gene_vox_coord_rd.iterrows()}\n", + "gene_community_assignment = {idx : community_assignment[gene_parcel]\n", + " for idx, gene_parcel in gene_parcel_assignment.iteritems()}" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [], + "source": [ + "# Concat a master loopup table of gene assignment\n", + "gene_assignment = pandas.DataFrame([gene_parcel_assignment, gene_community_assignment]).T\n", + "gene_assignment.columns = ['d{}'.format(i) for i, col in enumerate(gene_assignment, 1)]\n", + "gene_assignment.columns = ['parcel','community']\n", + "gene_assignment = pandas.concat([gene_mni_coord,gene_vox_coord,gene_assignment],axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Save the Variables" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [], + "source": [ + "variables_filename = os.path.join(project_path,'ABI/gene_mapping','%sdonor_%sParcels_%sNetwork_%smm.pkl' \\\n", + " % (donor,100,7,2))" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [], + "source": [ + "with open(variables_filename, 'w') as f:\n", + " pickle.dump([gene_mni_coord, gene_vox_coord, gene_vox_coord_rd,\n", + " gene_parcel_assignment,gene_community_assignment,gene_assignment],f)" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [], + "source": [ + "#write gene_assignment to a csv\n", + "csv_filename = os.path.join(project_path,'ABI/gene_mapping','%s_100Parcels_7Network.csv' % donor)\n", + "gene_assignment.to_csv(path_or_buf=csv_filename)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### A preview of the outputs" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ex_gene = 40\n", + "plotting.plot_img(img,draw_cross=True,cut_coords = tuple(gene_mni_coord.ix[ex_gene]),\\\n", + " title='Parcel: ' + gene_parcel_assignment.values()[ex_gene].astype(str) + \\\n", + " ' as '+ gene_community_assignment.values()[ex_gene], colorbar=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj8AAADeCAYAAADSK2E5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xl8E3X+P/DXNIVCKeW+C3S5KyIVKIiLAq4cFhdFZLlkQW5XUUQUPH5yCYuCLrBy6qKCXwtyCHiAgoIoIHdVRKCitUApSFtasBxNMr8/yoQkzSSTZCYzybyej8fnYZtj8mlo7avvzyWIoiiCiIiIyCSi9O4AERERUSgx/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkalE690Bd7Vr18a5c+f07gYZSK1atZCTk6N3N4iIKEIIRtvkUBAEvbtABmSwb1MiIgpjHPYiIiIiU2H4ISIiIlNh+CEiIiJTCYvwM2XKFIii6GhnzpzB2rVr0ahRI7275uKdd97B/v37/X7e0KFDXb4+qY0ZM0b2Of/5z38giiLmzJkTTJcDUrNmTRQXF2PChAke74+OjkZubi4WLlwIANi+fTvWrFkTyi4SERHJMtxqLzkXL15Ez549AQCNGjXCjBkz8OWXX6Jly5YoKirSuXfq6Nq1K65cueL4/Ndff/X4uKSkJAwfPhwFBQWh6pqL8+fPY/v27RgwYADeeOONUvf36NEDVatWRVpaGgDgX//6F4qLi0PdTSIiIo/CJvxYrVbs3bsXALB3715kZWXh22+/RWpqKtauXRvwdWNiYnDt2jW1uhmU/fv3488///T5uAULFmD+/PkYMmRICHrlWVpaGpYvX45GjRqVCmkDBgzAqVOn8O233wIAfv75Zz26SERE5FHYhB93Bw8eBAAkJiYCAO644w48//zzaNeuHSpVqoSMjAzMmTMHH3zwgeM5Q4cOxbvvvov27dvjtddeQ4cOHTBr1iy88sorKFeuHKZNm4b+/fujdu3ayM7OxqpVq/DCCy84nj9ixAg8/fTTaNKkCXJycrBw4cKQDzv17dsXSUlJeOCBBxSHnyFDhmD06NG45ZZbIAgC0tPT8eyzzzreQwC45ZZb8Prrr6N9+/aIiYlBVlYW3nzzTSxatMjjNdevX49FixZhwIABmDVrluP2mJgY9O7dG0uXLnXctn37dly4cAH9+vUDANSrVw9vvPEGunTpgooVKyI7OxsffPABXn755UDeEqKI0y2qn95doAix1c4pB56ExZwfT6TQI21+17BhQ+zatQsjR47E3//+d6xbtw7vvPMOBgwYUOq5aWlp+OSTT5CamopPPvkEALBx40Y89thjWLhwIVJTUzFlyhRUr17d8ZyJEydi8eLF2LBhA+6//34sXrwYM2bMwOOPP+61n6IoYsqUKYq+ppMnT6K4uBjHjh3D6NGjS91frlw5vP7665g8ebJfQ32JiYlYsWIF+vXrh0GDBuH06dPYuXMn/vKXvzges2nTJthsNjzyyCPo3bs3/vvf/6JixYqy1ywoKMCWLVtKvb/3338/4uPjHUNenqxYsQL169fH6NGjcd9992HmzJmIiYlR/PUQEZFxzJ8/H7feeitatmyJefPmAQC+//57dOzYEa1atcLf//53FBYW6txLV2FV+bFYLABK5vwsWrQIhYWF2LZtGwBg9erVLo/duXMnEhISMGrUKKxatcrlvgULFmDBggWOz7t3747u3bujd+/e+Pjjjx23r1y5EgBQsWJFTJkyBa+88gqmT58OANi2bRtiY2Px0ksvYfHixbDb7R77bLVaZe+TnD17Fi+99BL27dsHi8WCgQMHYunSpYiNjXV8IwHA888/j7Nnz+L999/3ej13M2bMcHwsCAK2bt2KlJQUPPLII5gxYwaqVauGxo0b48EHH8SRI0cAAF999ZXP66alpWH16tVISkpyDG0NGDAAx48fx+HDh2Wf1759ewwcONARPL/++mu/vh4iIjKGI0eO4K233sK+fftQtmxZ9OzZE7169cLIkSMxd+5cdO7cGcuXL8ecOXNcfhfpLWwqP9WrV4fVaoXVasWJEyfQqFEj9O/f31H5qVy5MubPn4/MzEwUFxfDarVizJgxaNasWalrffrppy6f33PPPcjNzXUJPs46duyIuLg4rFmzBhaLxdG++uor1K5dGwkJCbL9LlOmjM9/8C+++AIzZ87E1q1bsWXLFgwdOhSrV6/GSy+95NjxOjExERMnTsT48eO9XsuTFi1aYP369cjJyYHdbofVakWLFi0c701eXh6ysrKwZMkS/OMf/0CNGjUUXffjjz/GpUuXHNWfChUqIDU11WvVBwDS09Px73//G0OHDkX9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Shh+iIgM5vDhwxg3bhw2bNiAGjVqOG5/4YUXXIKNe5OTkpKCb775xlHpOXz4ML755htTzvmh0Dlz5gzq16/v+DwhIQFnzpzx+pw7e7RHXutfZFv16tVV6Rvn/BARGczGjRuRn5+PTp06OW676667sHnz5oCu17lzZ0ydOhUPP/wwzp07hxo1auCFF15A9+7d1eoyUSmih9VZgiB4fU6ozvRk+CEiMpipU6di6tSpql7ziSeewBNPPKHqNYm8SUhIwKlTpxyfnz59GnXr1tWxRzdx2IuIiIhUl5KSgoyMDPz222+4fv06Vq1ahd69e+vdLQCs/BAREYCt9jV6d4EiTHR0NN5880306NEDNpsNw4cPR8uWLfXuFgBAED0NyhERERFFKA57ERERkakw/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkan8f+VdiAQC7GLmAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ex_gene = 354\n", + "plotting.plot_img(img,draw_cross=True,cut_coords = tuple(gene_mni_coord.ix[ex_gene]),\\\n", + " title='Parcel: ' + gene_parcel_assignment.values()[ex_gene].astype(str) + \\\n", + " ' as '+ gene_community_assignment.values()[ex_gene], colorbar=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mni_xmni_ymni_zimg_ximg_yimg_zparcelcommunity
0-29.25.8-2.6119.2131.869.40NotAssigned
1-10.15.9-8.4100.1131.963.60NotAssigned
28.98.5-7.481.1134.564.60NotAssigned
37.90.8-6.782.1126.865.30NotAssigned
416.90.9-9.173.1126.962.90NotAssigned
537.0-0.54.153.0125.576.176SalVentAttn
613.42.20.276.6128.272.20NotAssigned
724.81.7-22.165.2127.749.980Limbic
819.20.7-14.970.8126.757.10NotAssigned
918.11.6-22.171.9127.649.90NotAssigned
\n", + "
" + ], + "text/plain": [ + " mni_x mni_y mni_z img_x img_y img_z parcel community\n", + "0 -29.2 5.8 -2.6 119.2 131.8 69.4 0 NotAssigned\n", + "1 -10.1 5.9 -8.4 100.1 131.9 63.6 0 NotAssigned\n", + "2 8.9 8.5 -7.4 81.1 134.5 64.6 0 NotAssigned\n", + "3 7.9 0.8 -6.7 82.1 126.8 65.3 0 NotAssigned\n", + "4 16.9 0.9 -9.1 73.1 126.9 62.9 0 NotAssigned\n", + "5 37.0 -0.5 4.1 53.0 125.5 76.1 76 SalVentAttn\n", + "6 13.4 2.2 0.2 76.6 128.2 72.2 0 NotAssigned\n", + "7 24.8 1.7 -22.1 65.2 127.7 49.9 80 Limbic\n", + "8 19.2 0.7 -14.9 70.8 126.7 57.1 0 NotAssigned\n", + "9 18.1 1.6 -22.1 71.9 127.6 49.9 0 NotAssigned" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gene_assignment.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "myenv2", + "language": "python", + "name": "myenv2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/LearnNiBabel.ipynb b/LearnNiBabel.ipynb new file mode 100644 index 0000000..cbb8410 --- /dev/null +++ b/LearnNiBabel.ipynb @@ -0,0 +1,1600 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Import Modules" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "ename": "ImportError", + "evalue": "No module named nipype.interfaces.fsl", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0msurfer\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mBrain\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mnipy\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0malgorithms\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mnipype\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minterfaces\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfsl\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mWarpPointsToStd\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mImportError\u001b[0m: No module named nipype.interfaces.fsl" + ] + } + ], + "source": [ + "import os\n", + "import subprocess\n", + "import numpy as np\n", + "import nibabel as nib\n", + "from nilearn import plotting\n", + "import pandas\n", + "from surfer import Brain\n", + "from nipy import algorithms\n", + "from nipype.interfaces.fsl import WarpPointsToStd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Set up files paths" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Parcellation" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "schaefer_path = '/Users/hxia/Desktop/BBL/data/joy/BBL/studies/pnc/template/Schaefer/MNI'\n", + "parcel_filename = os.path.join(schaefer_path, 'Schaefer2018_100Parcels_7Networks_order_FSLMNI152_1mm.nii.gz')\n", + "community_filename = os.path.join(schaefer_path,'Schaefer2018_100Parcels_7Networks_order.txt')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Genes" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "ABI_path = '/Users/hxia/Google Drive/GraduateSchool/Courses/BE566/Project1/ABI/'\n", + "donor='10021'\n", + "gene_filename = os.path.join(ABI_path,'normalized_microarray_donor'+donor,'SampleAnnot.csv')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load files\n", + "* Parcellation" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj8AAADeCAYAAADSK2E5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xd4FOX6PvB7EyBASCOhhBqqRPDAEUHEQhNRFET9IdgQCwgiiqLSDhrwoBTBhnyxcQCPB5BzBAQFjIAFBKQYVIqAEkNLEJKYgkLK/P5YZ7JtZmd2Z2Znd+7Pdc1FsmV2QhZy53mf930dgiAIICIiIrKJqFBfABEREZGZGH6IiIjIVhh+iIiIyFYYfoiIiMhWGH6IiIjIVhh+iIiIyFYYfoiIiMhWqoX6Ajw1bNgQeXl5ob4MIp8aNGiA3NzcUF8GEREFwWG1RQ4dDkeoL4FIkcX+yRARkUYc9iIiIiJbYfghIiIiW2H4ISIiIlsJm/Bz//33Y/fu3SgqKkJ+fj727t2LuXPnajrHsWPHMGfOHIOu0JvD4cD8+fORm5sLQRDw/PPPG/I6o0ePxrp163D27FkIgoAePXr4fFx6ejo+//xzlJaW4uTJk5g2bRqiorzfApMmTUJOTg7Onz+PL7/8Eh07dvR7DVu2bIEgCBAEAWVlZTh69CjmzZuHuLi4oL8+PZn9HiAiIusJi/AzceJEvPvuu9i4cSNuv/12DBs2DGvWrMHAgQNDfWmKbr/9dowZMwaTJk1Ct27d8O677xryOsOGDUPdunWxceNG2cckJibi888/hyAIuPXWWzF9+nSMHz8e06ZNc3vcxIkTMXXqVMyaNQsDBgxASUkJPv/8czRo0MDvdWzevBndunVDz549MX/+fIwYMQKLFi0K+usjIiLSlWAxALyOEydOCPPnz/d5n5bj2LFjwpw5c4I+j9pjypQpwrlz53Q5V82aNWXvczgcAgChffv2giAIQo8ePbweM3HiRCE/P1+Ii4uTbnvmmWeE0tJS6baYmBihsLBQmDp1qvSY2rVrC2fOnBFeeOEFxevbsmWLsHLlSq+vXxAEISUlJeCvOyoqSqhevbpu3xM93gNERBTeLLfOjy+JiYmq1lapWbMmpk2bhiFDhqBhw4Y4deoUli9fjsmTJ7s9bty4cRg/fjxiY2OxceNGjBo1Cr///jsAoHbt2pg1axb69u2Lpk2bIi8vD59++ikmTZqE4uJi6RwOhwPPPvssHn74YTRt2hS//vorZsyYgaVLlwJwDgP17NkTAKSp0Wlpafj111/RtGlTzJ49GzfccANq1qyJr7/+Go8//jgOHz4MAGjevDmys7Nxzz33oF+/fhg4cCB2796Nvn37+vy6BRVTr2+66SZs3LjR7WtYvnw5Zs+ejR49emDdunXo3r07EhIS8OGHH0qPOX/+PNauXYubbroJU6dO9fs6rvbs2SN93WfPnsV9992HkSNH4tJLL4XD4UBWVhaeeeYZ6XEA8K9//QsdOnTAP//5T8yYMQNt27ZF7969sXXrVjRr1gwzZ85E3759Ubt2bRw9ehQzZ87EsmXLAAAxMTGYPn067rrrLtSvXx+HDh3CpEmTsH79etlrvPTSSzF37lx07doVMTExyMnJwfz587FgwQJNXyuRnvpGDQ71JVCEyKxcGepLsKSwGPbau3cvxo4dKw3vyFmzZg1Gjx6NN998E/3798fzzz+PlJQUt8fceeed6NOnD0aOHIkJEybglltuwYsvvijdX7t2bURHR2PKlCnSD/zevXtj5Ur3N9Abb7yBf/zjH3j77bdx8803Y9WqVVi0aBFuvvlmAMCjjz6Kd999F4WFhejWrRu6deuG06dPIykpCVu3bsUll1yCUaNG4c4770RsbCw+//xz1KxZ0+01Xn75ZRQXF2Pw4MFu1xiIdu3a4dChQ263HT9+HKWlpWjXrp30mPLychw5csTtcQcPHpQeo0VaWhoASME1LS0NS5cuxeDBg3H33XfjxIkT+Oqrr9CiRQuv582ePRsvvfQS+vfvj2PHjqFevXrYvn07unTpgqeffhoDBgzAe++9h6ZNm0rP++9//4vhw4fjxRdfxIABA7Br1y58/PHHij1LH3/8MSoqKnDvvfdi4MCBeOONNyzXp0REpJcHH3wQ9evXR4cOHXQ535IlS9CmTRu0adMGS5YsAeD8pfnmm29Gu3bt0L59e0ycOFGX19JTWFR+xowZg9WrV2PJkiWorKzEwYMH8b///U8KBwBwww034IYbbsDAgQOxdu1a6bnvv/++27nKysowaNAgVFRUAHD+5j906FCMGTMGAHD27Fk8+uij0uOjo6Nx7NgxbNu2DU2bNsXx48fRqlUrjB49Gg888IBU6dm0aRNSU1Px/PPP45NPPsHBgwdx4sQJlJeXY+fOndL5/vGPfyA2NhadOnVCQUEBAGDbtm3Izs7Ggw8+6FZx2LFjBx577DFd/g6TkpJQWFjodXtBQQGSkpKkx5SUlKCystLrMbGxsahevTrKyspkX8PhcCA6OhrR0dHo2rUrpkyZgl27duHEiRMAgBdeeMHtsZmZmejSpQvuvfdet/tSUlJw/fXXY9++fdJtL774IhISEtC5c2cpTG3evFm6v3fv3rjlllvQo0cPfPXVVwCAzMxMtG3bFlOmTMGdd97pdb3Jyclo1aoVBg0ahB9//NHrnEREkWb48OF47LHHMGzYME3P69mzJxYvXiz9UgsA+fn5mDZtGnbv3g2Hw4HOnTtj4MCBiImJwdNPP41evXrh4sWL6NOnD9avX4+bbrpJ568mcGFR+fnhhx+Qnp6OAQMGYMGCBXA4HHjuueewe/duxMbGAnD+8Dt37pxb8PFly5YtUvABgAMHDqB+/fqoXr26dNu9996LvXv3ori4GOXl5di2bRsAoG3btgCAPn36oLKyEqtWrZJ+2EdHR2PTpk3o1KmTzxlUouuvvx6ZmZkoKiqSnldcXIw9e/bgiiuucHvsJ598ou0vyg9fw2MOh8PtdrnHyN3n6o477kB5eTkuXLiAr7/+Whq6E7Vr1w4fffQRcnNzUVlZifLycrRr1076exWdOHHCLfgAzu/vhg0bZIc/r7/+epw+fRrbtm3z+p54/r2K8vPzkZOTg4ULF+LOO+9EvXr1FL8+IqJwd91113mNoPz888+48cYb0blzZ1x77bVeowRyNm7ciL59+6Ju3bpISkpC3759sWHDBtSuXRu9evUCANSoUQOXX3659EuwVYRF5QcALl68iHXr1mHdunUAnKW79957Dw899BBef/11JCcn4/Tp037P41n9uHjxIqKiolCjRg2pKvT+++9jwYIFmDx5MvLz85GamorVq1dLw1IpKSmoVq0aioqKfL5GamoqTp486fO+lJQUXHXVVRg6dKjXfZ9//rnb53rucVZQUIDExESv2xMSEqS/k4KCAsTFxSEqKsqt+pOYmIjS0lKUl5crvsamTZswYcIElJeX49dff3X7u65Tpw4+++wz5OXl4amnnsKvv/6KP//8E++++67XcJ+vrzs5ORm7du2Sfe2UlBSkpqb6vEa56xYEATfccANmzJiBRYsWoVatWti2bRsef/xxZGVlKX6tRESRYuTIkVi4cCHatGmDnTt34tFHH1VVBT958qRb60GTJk28fvYVFhZi7dq1eOKJJ1RdS79esTiXXyF7f0pqT2zYsEHVuZSETfjxtGjRIsyePVvqRTl37hxSU1ODPu/gwYOxY8cOaRgMcCZlV/n5+SgrK8PVV1/tNUQEAGfOnJE9f35+PtasWeM2zCNybUYG1DUyq3Xo0CGvvp0mTZqgTp06Uso/dOgQqlWrhtatW0vN14DvfiFfCgoK3JqXXV111VVo2rQp+vbti59++km6PSEhweuxvr5uf9/f/Px8nDhxAoMGDfJ7na5++ukn/L//9/9QrVo1XHvttZg1axY++eQTNGnShHt4EVHEKykpwTfffIPBg6ua7C9cuADAOQHltddeAwAcPXoU/fv3R40aNdCiRQusWrVKcaQAcP7iedddd+Hxxx9Hy5YtVV3P2fwK7NzYRPb+brecVXUef8Ii/NSrVw+//fab220pKSlISEiQqgRi1eHmm28OarioVq1a0jde5Dp0Azj7QqKjo5GQkOBVrfFn06ZNuPPOO7F//378+eefAV+nVuvXr8czzzyDOnXqoKSkBAAwZMgQaSFDAPjmm2/w+++/Y/DgwZgxYwYA59/HgAED8Pbbbwf1+rVq1QIAt7/bq666Ci1atJANTK42bdqExx9/HPXr1/cZLjdt2oTx48ejpKTELVypVV5eji1btmDevHlYtmwZEhMTpZ4sIqJIVVlZicTERJ/V7gceeAAPPPAAAN89P02aNMEXX3whfX7ixAlpljPgrCi1adMG48aNU309AgSUCfKVH72ERfj54YcfsGbNGnz22Wc4c+YMmjdvjqeffhrnz5+XusszMzOxYcMG/Oc//8H06dOxd+9epKam4rrrrsOoUaNUv1ZmZqY05LVz5070798fffr0cXvM4cOHsXDhQmmq+O7du1GzZk20b98ebdu2xYgRI2TPP2/ePNx7773YvHkz3njjDZw8eRINGjRAjx49sHXrVixfvlzz30/nzp2RlpYmlR979OiBlJQUZGdnS8Fi4cKFePzxx/HRRx9h1qxZaNmyJTIyMjBv3jyp4nThwgXMnDkTU6dORUFBAQ4dOoSnnnoKUVFReOONNzRfl6sdO3aguLgY77zzDmbPno0mTZogIyND9TjwK6+8gmHDhuHrr7/GjBkzcPz4caSnpyM2NhZz5sxBZmYmNm7ciMzMTMyaNQv79+9HfHw8OnXqhJo1a3otdwAAl112GV5++WWsWLECv/zyC5KSkjBhwgRkZWUx+BCRLcTHx6NFixZYuXIlBg8eDEEQ8P3336ta2b9fv36YPHmy9P/lZ599hpdeegmAc3LP77//HtDivpXwHlHRW1iEn+nTp+PWW2/F66+/jrp16yI3NxfffPMNhgwZguzsbOlxt912G1544QWMGzcO9erVw6lTp/Cf//xH02u99dZbaNmyJZ544gnUrFkTmZmZuPvuu91mbAHOGWiHDx/GiBEjMH36dBQVFeHAgQN47733FM9/7tw5dOvWDTNmzMArr7yCxMREnD59Glu3bsX333+v6VpFjz32GIYPHy59Lq7avHjxYim1FxYWok+fPpg/fz7Wrl2LwsJCvPLKK8jIyHA718yZMxEVFYVJkyYhOTlZWl9IaShPjTNnzmDw4MF4+eWXsWbNGhw5cgSjRo3Cs88+q+r5Z8+exdVXX43Zs2fj1VdfRUxMDI4cOSL9QwOcK2pPnjwZ48aNQ7NmzZCfn4+srCzZ4Jabm4u8vDxMmTIFjRo1QmFhIbZs2YIJEyYE9bUSEVnVXXfdhS+++AJnz55FkyZNMG3aNHzwwQcYPXo0/vnPf6KsrAxDhw5VFX7q1q2LqVOnokuXLgCA5557DnXr1sWJEycwY8YMtGvXDpdffjkA58+phx9+2O85nZUf48OPQ7BYY4PreCGRFVnsnwxFoGAWOVxx6m3UbZjkdXt+bgGGNBoZzGWRQeS+Z6Jgvnfhtshhp441sGl9fdn7+w1siN27dwf9OmFR+SEiInXkfogq/XCl0PL3vbHT904ATKn8hMU6P0REpF5aWprmyRgUWmlpaahVqxbq1KmDhg0bYvjw4dLkFLupVDj0wvBDRERkAWvXrkVJSQmysrLw3XffufU02oUgCLiocOiFw15EREQW0rBhQ/Tr18+Wi60K0LfCI4eVHyIiIgs5ceIE1q9fj9atW4f6UkwnwIEyQf7Qi6UqP8HMcCAyC9+nRMbLfuEq6eO0qdtVP6/Td1Ufp9bw3szZ1fr23lv+hNKgQYPgcDhQUlKC3r17S8uW2E0FjJ/1banwAwA1EIOLuOD/gUQhUAMxob4EoojgGm7UPDaqwoFmGd8oPm5xzlYAwKvnrlF13pv2O8ORVULQ6tWrcf311+PLL7/E3XffjbNnz/rckzGSOWd7GT8oZbnwc51jQKgvgYiILCgno7tsAHKt+GhltRDUo0cPDB8+HE8//TRWr14d6ssxlQBzKj/s+SEiikBlZWX4888/paO8vDzUlwTAWcXRUvXxlJPR3eft45K3BnxOkRiCrGDcuHHIzMy0XdOzs+cnWvbQC8MPEVEE6t+/P2rVqiUdnlvZmC2Y0BNV4V4J8AxA4nCXSAxCpy9qr+TctL/QEiGoXr16GDZsGF544YVQX4qpxMqP3KEXyw17ERFRcFz3PHTV98XQNOsHU+nxDD6ePIOPK38Nz0rMHgrz9T37v//7P1Ne20qclR/jownDDxER6SqYsOPKX/BRMi55K1YUdwj6Gm7aX2iZXiC7sOVsr0ApbQzHDf2sycjN/IjsKj+3QHZjUzMEG3zEae1yvT1aDIn7EQCCDkGew2B6hyG575nr/XYhCA5de3vkREz4UXrj2GlTuHDCzfyI9Gf2Lww5z1WFlMrqgW8/4LmWT7OMb3QJQIB7WNGjn8f1HHoEIf6SV8XZ82N8O3JENTxzM7/ww838iMKXa/DR/dw6BR9PHMKyNrHnR+7QS0SFHwpP3MyPKLzkPNfd0OATTqwwMyzSVAgO2UMvDD9kGXbezI+IAjO8mbrVnF2x+mNdrPyQ7dh5Mz+icGFExcez30fvIS+l6fB6sMraQJFA7PmRO/TC8EMhN2jQIMTFxaFp06aoX7++bTfzI7I6peATaLOzlk1L9WRE9YcBKHhc4ZlsY/Xq1SguLsYXX3yBQ4cO4ezZs6G+JCLSIJhZXp60Vn2MruqQuQQBqBCiZA+9MPyQZbhu5kdE1qJU9YkqcyCqTHszqtHDXa7MCkms/gSHlZ8AWXUzP1LHrpv5EVmZ2j4fLQFIj+GuYMOSUY3PDEDBYc9PAKy2mR9pY9fN/IjCXc2zzqP2af8ByFfw0RpkjFgAUU8MQIExq/ITMSs8A/Kb+ZF1cTM/ovBX06NNTww3vra6CFWDs5L17RNlw4rSff5wXzDtBACVOvb2yImo8ENERPrSOrW9/oJvpI+1BB09t7MIhBhSfAUWzwBU01Hmdv+fQnWf5/R8HPknVn6MFjHDXkobv9lpU7hw4u/7wu8bUWiFwyrOgSxyqESuUiPe7ivQ1HSU+TwoMBVwyB56iZjKDzeGCz/8nhFZl9rg4znkFYxmGc6qkdoKkPh4tRbnbA0qLK1vn4jbDvym6Tm3HfgNqy6tF/Br2o0gOFBWaXw0iZjKDxER6SMcKj7hRGtgsjNOdSciIkvzrPq49vsEQ21FZ3HOVtMXOWQVx1jOhmeH7KEXhh8iIpJoqfr8meI8AP2Cj1qbH5yt+Tl69QcFEoBY/VGHU92JiMiymk03N+xYjRiAtISad3K2YoTODdqRqNKEugzDDxERaRKOwUfvWWFa9a/zU0hfP1wIAlBWyfATcS707+L2+R/Jyt+CxPe1LQiWvkf+fCfOe0/hLL6Wm4gSkVOkNjobGXwCqQCRPAEOUxY5ZM+PSS707+IVfNQovM97hVRf0vdU0xx8ACDu6xTN10REFGq9Fz2r6nFmVXxWXVpPqu70r/OT1yF6JwJ3of/pp5/QqVMn6YiPj8err76KjIwMNG7cWLr9008/9XsuAUCZECV76IXhxwRKoafWOf8br/oLQEqhRw0GICKyWtVH6xo+voRiqMuOw1uXXHIJsrKykJWVhT179qB27dq47bbbAABPPvmkdF///v1VnM1Z+ZE79MLwY6BAqz2+yAWgYIOPiAGIiNQyKyj5C0Bqqz9miMSKTiA2bdqEVq1aoXnz5gE9XxDMqfyw58cCap0r99v7AzgDkGsPkF7BRyQGIPYB2YOjc3uft5+bVobk5733KhL27Df6kiiMiAHI6ObnQPf8Mqrq02xnrNvnU1M3GvI64Wr58uW46667pM/nz5+PpUuX4oorrsDcuXORlJTk9xzc2DSMaa34aAlAV43bFehlqRL3dQoDUITLX9cWyc9re46jc3vNAUhpyFZrMz9Zi6PC+efxKd7BpOkMfQORXACSW+tH7+DjGXjIt4sXL+Ljjz/GSy+9BAAYPXo0pk6dCofDgalTp2L8+PFYtGiR4jkEOFDO8ENEenGv9Mhvuuir6iN3vmCqQZ6VTAqdQIaxxPXmxBDk6viU7qh7qAL57aJ1D0JA1XDY8AxnyBFXeTY79ARa9YnU9X7Wr1+Pyy+/HA0aNAAA6U8AGDFiBG655Ra/5xBXeDYaw48B9Orz0VOT2oWyM758YfUn8pyb5gw8cuFGbrjLVf66ttI5nOdri7q3HA74msTKEENQ+BKifQeg/HbOdHR8SnddApBS/0+o1vB54XQ/ABz6Ei1btsxtyOv06dNITU0FAKxatQodOnTwfxLBgfJK/VZylsPwE6RjM6vK+i0mbg8q+Kgd+goUAxABVSEoEL7CUf463wFI7TINno9lECIrUDvUxeDjdP78eWRmZuKtt96Sbnv22WeRlZUFh8OBtLQ0t/vkCAAqwcqPZV3o3wWnrqvmdVswYj7dhZi/Ptbyg8PTwc7y0+fjvtZ2rmE/HZc+XnpJ00AviUxQ3rszAKDa5j0+7xerNXLVHbXDXb7OV6DjEBaDEIULBp8qtWvXxrlz59xue//99zWfRwBQzhWerUkMOY2+8r9Gj1oxnxrbxCwqvvZswNPaxSDEEGQ9YvBx/dhXCNIacPzR+3ye2BcUGUrvuBKx/9sZ6svQDUOPsczo+eE6PxoZ0c/jK/hY4T/82+p/5/N212oQhVZ5785uwUeJkVPVrfB+JeuKpOBDxhJne8kdemHlRwOzgo8VyAUf0bCfjrMCFGJyoSdm6mkAQMVmM6+GyD7ERmeAVSDdCZztZRlGzd5SCj7B9PzoYdWZv0sfywUh1+EzNkYbS211BwAuvOCcXVENp7zuE/bsl13cULzfk9bHA8a/f7NnuJ8/bQorTxQ+InGau17M6vnhsJcfoQg+ViIXfFzDEcDtMYykJfj4IxdkhD37ZYOM0nCZr/OZGXx2DJuLHcPmeoUhMo+vae6RIOfK0lBfgi05d3WXP/TC8KMgVOv1hLrq42rVmb97BR3AGYo8gxEDkL609POoFUlbVCT/IODmZ56SPhcDEIOQedQEHyMWOTRLzpWleKbhZ6G+DNupEKJkD70w/Miw4kKFaum955cWJz+SHyIh9fQOPa6MDEBKQ2R6Sv5BkD7utnS81/3ZM65iCDJYpAcfrVz7gChwwl89P0ZXftjz48KswGPGkFf6nmqK6/0YpV29PICLIwZFr+BT3ruz7Jo/nr0/SltVODq3V1wfyDPwJB0ocvu84NJ4LZctkZtB5hp8zl3m/p+hZ+ARP2dPkL6S91dIKzgDQN1DziTkeptdgg9Dj94cqGDPj3miOrRDrZziUF+GKUNeZgSTkx+1ZxUoAHpWfEpTldfgEcOOUr8PENyK0P6CT+L723WZJu8aiEg7o3dmD2djm1+t+TkMRMERBIfsoRdWfsgQrZOdAevoR+3R+PbI6TMxSqChx7Wy4+scv9/TDQkf7JB9vtzsrmACjz+eYSeYwK829LACpI/k/VVjXWK1x5V4m13X9XENPZ77fj1+7A6XR+aZeVlhRRCAikpOdTdFVId2ob4E1RLf3w6MU/dtC9XQl6vWyWcZgPwwsr8nEMKe/Uh+3piqndGLISb/IHgNhbliCAqMa+ghbcQQVK9miXRbTqguJkwo7e2lVyyydfjxFXoclc4/A2kqd+3lkesf0qPf52DnctObmsUZX+IML18zwMSdeKtFuf9H2Tr5LPBlA/zRg7/tuNI79FTbvMftnLGnndWbNrticKTLBU3ncq0I+WpiVuoP8uQv8Ij3u1aAossEFA/tJn0+8YWl0sczp1bd7krL0Ff2jKsYgFzkPNfdLeCcax+Nht863z9lseyOIPMIfnp+9PrJZ+vwY6SYT3dpbqDWUv4PRQBy5TnN3TUMiSHIUy0GIDdiWDnXPka6LXm/tpAid05PgQQgkZbZYcKe/chf1xaAc98vvSo9M6cOU/1Yf9UfEatAVTwrO4FUesRfHCNRzpWlqnd5V6PZzliuI6RAMKGFz7aR3rPq82eTOPzZJE763FEJnLqumtfO7ZFC76ZnucBDyqpt3oMGb7g3m2YPqI7sAdXdHuNL9oDqOPqK7yoI4Gx4Fpue12/1rtQZpe4thwFon1IvBqXoMnObl+0+Jb70jit93l4WG6VY9XFUuh+RTu+womeYiiSCAFRWRskeerFt+FGj8RfB9cvEfLrL6zCbUdUhucUP/an1ZQMDriYyiFWftLVVzcZi8JELQHJcZ3rdkpQFAIpBSW9iAAoVzv7SLv5AvurH2iHsmOHnD8z7pSSccJ0fA/3ZJA41T1RNba95otit8uPKtfrT6CvfgSjYYOPo3B5JB4pQ1Mb3NXjSI9Soqf64rtp8W/3vpMBTXhmNwQ13B/S6HP7yVtyyEsUt3aemZw+ojtYum5OKAai8d2e3ytDRV7qh9ZM73J5Xbzfw2xVAvb++RW8O+JfzgwHAmLUPAADqZHv/7lPrbKXi7DBVX8vQbuj6TNV7Q0vTfeL72916fdQQ+4G0DI15svMQmGvoiT+Qj6JL6wZ1vtqr7DnTS6stR53Dwz9/8He0ukd5I2m7qeRsL2NcvLGLW/CRCz2As/pzsmfVX9Op66p5BaBw2acrEK4BadXX/C1FL3lju0vDXXljuyPuF2cA8uQZbAC4BR8x1LzyZLrbY367wvlnxjTn/WLgEfkKPgDwR0oU/niiu9ttDV/zvQbMQ4ePYcab9wAAYvPcr/3bOVdIAUgM6mpDUNzyHZoCkK/Qo6bnxxc2QqsLQEKUPas/evT+fJXdSqeriUwC9F3PR47th72Ugo/Ic/jL9R+92cGneGi3kDU6B9sn9NOZ+jpdSWTIG9sdeWO7+3+ggjFrH/AKNp5hyZeStEpMGfOBqtfIfaI7cv8KRLlPdMdDh4/hocPHVD332zlX4Ns5ziRWPLSb22GUQIOPHUWnt/F5e/yBfMVhMLngw6qPOhXl7JGUZdL2FrYNP54Nzv40/qJcOgDnP349g09RmzjVQ17h5Kcz9d1Cj/h5zsqfpC0PAAAd40lEQVTLQnhV1hT3i+9/jkdf6ebWr9P6yR1+A46aAKSVGIDEao/4pxwx9Hh+LFIKQXHLd0gHGUMu+LjyFYAYfAK35Whbn8GHvT8eBIVDJ7Yb9orq0E6xv4fUW5nr/QONghP3S5TP4a+fhyxEvyc7ud2mJgBJw2GveN/vL7wo8XxuaQNncPMc/lKjeGg3xZDjep+aipHaqe5y7DL05bjgvoq3EON7OxQ9+oDsTuzvUcLenyrs+dGZ6/R2PQLQxRu7oMYGfao/Wvsc1NJzhedaXzZAeYDj/BzyUuYr8HgSqz+uocezIiRHvM9zxpevoa9gQlGgIcj1ve8vCDEABa9ay7SAnseqj3Zqgo+IAeivAg97fvTja10f16ZnK9CzxH+wc7nuwUcrf4HHzkNfnmv7+NNqxSiv2zaeypI+1jrM1frJHbI9P1PGfOB1n9r+ID34CzccEguOXPBxXChzqwZ5Vobs2OAciK+yW2HL0bbSoZXth8AEQKh0yB56sVXlx5UYfIKtAOlZ/dFDqPfyIuOJ1ZtWK7wrQWqeV/WxuqZlMfi4BqBgqkNq+BsKE4mPMaJqGunVHzmeoQeo2qj0/G2+F0SkKmxmDpa+IUeObcOPVWntbxAx9FhTtbRm0sfl2b63M1Qz5CUnkOCjVjDVnmB6gES+3v9ygcioYWPyHYaIDGXCGqUMP3BWfyp/PATAWcnRyqjqj9x/6N/OucJto0cA6H0EeLON9hKr3lwXL2wG58dKw1s5Ky9Ds8E/GH5dZnINPHK3nxzQJODz/zxkIQDfQ2EiLWFHroqjdz+QHpQqQoH+4mAnWnt9GHzIdH8NexmN4cdDjQ27AgpAke6PHnmKfT9csVmbxmtPSAFInOKutQLkawYYoN82FqEOOnLEYGNGz49dh77k1F61k0NfZAKGH1OIVR+R1gBkVM+P1t9exxw5bGj1hwEnskz65C7ZlZ7DgVIViAsdegt0hheR6Uxormf4kaE2AJnZ7Oz2H/0Lpr0sGcS1+qO26uM55NUa7j/8zdy8VInclhiAOUNSYrVGjx3bWf2pwqqPskBmd/li6ynvAgATproz/ChQCkBmhB6lJk6xwjPmyGG3z8naDk5PQfpzVduEuAYgtaTg82RwwUdts3Suy15fSqFGLc9qTTBhyN8QmGtoCSYIMQARmUcwofITvjXvEDK72qPU2/Bmm7ZhH3wiab0fuWZnVwenp7h93njtCdXnV2pyVkvN9hiuGr72jXQYxfU9blQvj53DS7BDXtVapnHYTIVerQ+H+hIig+CQP3TC8KPAs+pTY8OukK3pwwXdrE9N8AmUONwVDK2hxyzie9s16Gt9v5sxlKbHEJrVHB/USDooeHoNewE2XuxQcC6oKXfoheGHDBdpU9l9URt80p876zbsZRYrhh5/AglA4iEOB3sKtvoTjgHIs2LjK/A0XX0qqNdgL5C+wcfeFKo+OlZ+bNHz47m1hRJfPT5WWsGZrEePik+715w/fE4OaOKz+TnQ4a5wDD16GXPkMGZOHQbAPUgF2wwtPs+Ow2jx+/JQ1FH7VjeRLtjgs+bqBW6f37rt0aDOF/Y428tcDD6hE4mLHRrh5yELVQehSAg+ga7cLIYeJXrOCAtnWqs+DED68Aw84S4tLQ1xcXGIjo5GtWrVsHv3buTn52PIkCHIzs5GWloaPvzwQyQlJfk/GVd4Npfn7C4GHzKT66KHSlPfpf6fIUC/Rt6LHEYao1duTpuy3RYBSK6vx3P4q/yXbABcF0gtpaqP53T1edmRXS3csmULUlKqJnTMnDkTffr0wcSJEzFz5kzMnDkTs2bNUj6JADhMWOGZPT8exKZmBh9Sw8gmZ1/0mO0VzoycCSYeO4bNNeQ1wo0Ygki7Vvd8p0vwCfem5zVr1uD+++8HANx///1YvXq1uicKCodObBF+HBUVbgcFptnOWOnQInvF31BZ6UClCWneLNXSmukefBqvPYHGa0+g0fIjcFQADpm3qlwAEmdzWXVWl16Mnvk4tGl3xX4eMSRFopzb3atDcgEofp/3au92bHpmk3MVh8OBG264AZ07d8bbb78NAMjLy0NqaioAIDU1FWfOnFF3LkH+0AuHvQBEp7dBxcEjqh9feof7P/LY/+3U+5IsxzPwiJ/nXFmq+LzsFX9z+7yy0oGoKBMGdA2kd+gRSv/wuq3trJ9xcGZzRBXxn6gv3MVdX4LCr8Hlv2RzCEwDXyszR/pwFwBs27YNjRo1wpkzZ9C3b1+0a6d+opEbAQCHvYwRaCWo9I4rvYKPeHskU6r0aK0CkZNQ+od0KJGr4LT+zyhb9Pso4dpX6uTc3gg5tzeCEAXZwx9fFaD4fXleFSA7VH+2HG0rHZ58DXUFEnzWXL0g7BqiGzVyVg3r16+P2267Dd9++y0aNGiA06dPAwBOnz6N+vXrqzoX1/mxEH8BJ1IDkJpw41nd8Xd7pA2BGSV94q8AImPWllECDUA5Gd39PuaL++bgi/vmSJ9HlTkQVWbf962WITC7ce3xEQOPHtWecAlApaWlKC4ulj7+7LPP0KFDBwwcOBBLliwBACxZsgS33nqruhOy58caIjXYBOur7Fb4KrtVqC/D8lyrPP4qPa4qfvtN+pgBSD9i8FETgHq+/4zs8+2ITdDu1R1fjc12lJeXh2uuuQYdO3ZE165dcfPNN+PGG2/ExIkTkZmZiTZt2iAzMxMTJ070ey6HSSs8s6FAAUOPPM/QI1Z50oZ87/a5knCs/mjt9xF+L/7riVX/1LQEIFcMQL6pmQovF1hyMrqjWYbvPct6L3pW9rfDxTlbAQDDm12j/kLDxKmnnX9XjV72/ffiqwdIrP7YJRzJBR479Pb40rJlS+zbt8/r9uTkZGzatEn7Cbmru3k8m56j09sg/kA+AKDo0rqhuqywoyb0hDPh92I4EuJUPY7MZ1YjdO9FzwIAmsG4zV5DTSkE+VoLyC7BR45dg48R9KzwyGH4cRGd3ibUl2A5OVeW+uz7uS7tZwDeFaBAiRWjcCGGG9cg5Os2rQ7OSHP5LA1tR3K9KS0CCT5K1R9yhiClKhCR7rjCM5H1eVZ5tFR93MMOBUscAnMNQQXtvAevNj84W6reBIqBiUSs+uhIYOVHNxUHjwRV1Yk/kI+iS+tK3xBfU0Mjea0fueqPXsK16uP5sRauoSd9SrbP2wEgul49t8Zn0o9rAPKs/rj2CDHkEJmMlR/riD+Qj+J2zt4fpRBE2oRT8IlWsyFfAA7OSHMLQK4YfALjq9rjTyTO4hL7dvQ6j9zwFxlnXvZ2PJUW+XvPudJzJWc5tvnxrWUFZ1/E4ONKnHoXyVUff8TeH/KjvBwHZ6RJhy8cAtMPqzVEYYzr/OjLcaEsoOf5Cj5URW0AqiiP9jrs4uCs1sr3+wg+bHYOPYYod3pVkohkcZ0fY3gGICGmuuLjlYJP7VX2rfhooRRyxF2LuVCYU7tx+1F5/nyoL8MW/DU8M/gQhQh7fvQjtzGfGIb8hSDSxk5VHb20HbkLJkxyIKIwUFgZE+pLCAkHONsrJBwXyqQg5DrDi/wLJvD8/MHfLV/9qSgoCLjpOX3CUQD+h79IH76alzc/OFv181n1iQyH37sCbR/abfjrPJV2la7T3cXgkxh1Qbdzhg3BnIZnhp+/uA6HiQFIbGS2w07FwWKlp8rBWa2lsKMW+3vME+z6Pp7BikHJGOG2zIPeAcjWWPkJHTXN0edvu5J9PzqxetVHpKb64yv4KFV8GHz046/i4xp8Ag0tzTK+se2q0GZOddcr+Bx+7wrZ+/SuChlVAbIbVn5CpKhjA+cHHRsw3OhkRfe3FO+fjK4mXYm1MPgExzPsiAsX+hviCja42DH4kDqsAAVJACs/Rjs+qBGarj7l93G1V+3k0BfpiqFHH762qRCDj3i75+eu7FrBCYQZVZ/oevXcPj88wbl3YKund2g+l1LFB9C/6uPKc1FCMQzNONkfADCl8adez7FrlccXVn4MdHxQI+lPMQBJFR8XDD2B81ftIdJCLqhoaWR2PRdZi2vwEUOPkcxqhgacYSh5W9VwuVIIIs72MoQYenzdlnCswuzLiQhbjrYN6vmTW4TXkFdFQYH0sb/+H87uCp5rUPEOLVu9Hu9Z4RGHweRC0vCMa4K+xkhnVq/P4Qmt0HaWeavGi9UhM0LQuasL3AIQ4B6CEqMu+Kz+TG95ueHXZjnc3kI/5b9k+ww+FBy54KO26hNuwceTaxCS49kArXUmGJEdiNUeM6o+Xq/tZ4iMzOMQlA+92K7yQ2SmtiN3AUlJboFHTWAip4LhVyEuu+p/vOI0h/SxZyUn2CnsdhDzu/Pv8kJC1d+j8NcqFQ6PwrfR1R7P/h45gfT7BMKMYTBf1R9Avt/HllUfcNjLdL+3cP4vwOEvdYId7op0YsgJZnFEuykYrm73aq19PmpmgEWiRi9/o3o/LiHaGYC4c7v5nv5pMF6+ZKX0MQDE32TjTaPZ8Kyf00+pb3D8vUW0qgBk92nwrkNbQ755RPPz/xQi9+3nWd1htUcfcdmCW/VHLTsGH1HM7wL+rKvu78ys4KO26mM2M5ugRceKnPtHiqHH9gRWfkJKTQCy0yKHOVeWotnOWNn71fT4+Ao7z/2yN+xLu54N0Aw6gUtavN1v9ScuW8Ctzz0DAFgzfY7X/UpBx3NoTJw9ZrdVm4VooGa+89frlKySqttNeG01wce16TmS6vDJ25KksKPk5UtWYjrC+//FoLDyQ5Eikqs8rhh8gpe02H2BOKUwJIaZuGwBcRB8hqFA+JoKH86BSAw6AKQqkK9qkKPLZRB2/WDadbmSm+UVyDYXVmhgPrzAfTJHwxbnUFSk7rlP/zQY8bDvsBcrP2QLkVD9IeOIYchXCHJthvYkVofcpFV9KFf1kSM+LhxDkNphLwqeGHoatjgn3ZZ7LFnTOWzd7wNzFjm0zVR3o3ARRKLwEZctSEdORnfkZHR3u03usa7CbYHE5Hfkt1posrnY6zZHl8uMvJyAWLVHyNXhBV3dqj25x5KlQ/ycVBC3t5A7dMLKD6nmr+/HF7sMd5E1+Kz2yPBVNZKrJClVmMKBOOzlWgHyFXxEoRz+CkeeQ1wUOAe4vUXIqZ31ZSdaA1BNRzkDEAVN7RR48i35ne04N+Iq1MwX3BqclchVgIINRRW//WZoJUdrv0+ws7v8BR/X4S817D7kBQCOSuPTD38q+eE6m8tziEu8L//Bqv+Y6y6K/N18c64sBVC1E/uLx74N5eVQhOv0HQBsx5bXrBGAPBuyw0XyO9t1GdISzxEJlSGzp7WTCgK4vUWopc6Tb2y0yxR3NfxtUVHTUW7SlVAkUhN6ej2xHb2eMDaUJC3eHrbBxwhG9gYJpaXSIVJTLdJS9TEr+Hj2/ihh1cfJUSl/6IWVHw3kAo/Wao/dKkX+cKYXKUlavB1Zi4EkOP+tOCtBTmIw2vLaVc5wAvmZYXJ6PSFfVWLYUWZ0b5AjVluPYThj8Kmi1POjV1GI4ccAYrixU7CZ3KKr4vAXe3/ITK6hRSkIidUi8U8xBEVq6BF2/WDJ2VyuXKs9rh87YmMDWvPHF72qPmx0NoBJKzxz2EtnrlUdK+mSZXzj9uQWXcN+l3ayvqy/Ow+15IKMr2EyDm2Zo+K333yGGNewo+W+cCE3/MWqjwdB4dAJfxWXodTvo8RXtceqgcgok1t0xXO/7FX1WA55UaCy/l41FOaP57YZvoKPlkAVzvSu/ug19KU23MhVfw6/3QVqfjqyydnaHOBsL12lzvtG0+amp5/qHnAA8lR30XZLBCBf1Z9dnaJ1O7/awCNi8CEzuVZ0shaH7jqoSsVvvyGqdm0dT+ixknW0+w9RqwQfsfrTsMU5Vn184ArPIaYlLCmxQvDxJZTBh4gIACrPn1f9WM8ZYH55hiGLiZRVn48fP45evXohPT0d7du3x2uvvQYAyMjIQOPGjdGpUyd06tQJn376qf+TCYCjQv7Qi63CTyCVnNNPdQ8qBFk1+AD69QF1yarA+qKO0ueuHxOR9Qi7frDUOj1aAhAAr2qRc8grvLR99Fu0fTQy1kirVq0a5s6di4MHD2LHjh148803ceDAAQDAk08+iaysLGRlZaF///7qTmhCz4+twk8w9KoChYpcladLVkVQISjQ53LIiyj0rBaAtIagUAs0vERK6BGlpqbi8sud/6fHxcUhPT0dJ0+eDOxkgrPnR+7Qi216fkRae39cqekD0lLpsdJU+ED6gTyfI1f9uSl+n9vjGHyIwkv08TOoaFof0cfPeN1XnpsXgisiq8rOzsZ3332HK6+8Etu2bcP8+fOxdOlSXHHFFZg7dy6SkpL8noM9PwYJppFZaRjM6sFHzx4fVnyIIlv08TPSYSa11Z/Db3eRDkUVDqDCYZlm50hWUlKCO+64A6+++iri4+MxevRo/Pzzz8jKykJqairGjx/v9xzO2V7Gr/Bsy/ATrJhCwdK9PFZxU/w+t6oPgw+R9XgOfckFHvG2iqb1pduMqvroPfzVduQuXc/ndu4I6t0JRllZGe644w7cc889uP322wEADRo0QHR0NKKiojBixAh8+62KvydBUD50wvCjIKZQ8HkEK5TDXVqqP3LVHTMWTCQi84gBSK7KU9G0vnRQcCIxKAmCgIceegjp6el46qmnpNtPnz4tfbxq1Sp06NBB1fm4t5eBlHp/1AYcu1V/tIae9UUdpcoPqz5E1qY0vGWlXh9HTExIXtevWn/9//iHfu0F4WLbtm14//33cdlll6FTp04AgBdffBHLli1DVlYWHA4H0tLS8NZbb6k6nxk9P7YNP0BV74/dQowWwVZ51hd11LXXiIiMUZ6bh2oNG4T6MsLS4X91rvqkVoVsAIrEqg8AXHPNNRB8DEmpntruSgBQwRWeTWGVFZiJiELJygHIKhUft6AjxyMARWroMQpne0UgK01vNwOrPkSRyeiQ5IiNNfT8gVAVfES12BsZKDPW+WH4ISKigISySpQ+4aipr6cp+Lhg1UcjpdWduau7/sSKDIe/9MGKDxEFpbw8vIa6SBcOAA4Ten5Y+fFQd9F2w4am7DbkRUThpzw3D+W5eRDO/yEdSoyo/kSrWAVYi2D2/goq+HDoKyAOQZA99MLwIyOSg4rRVRlWfYjCX0VRkfSxawByDUXiER0fj+j4+FBcpvEuKPx/diFa/gDQ9oE9Jl1kBBEEoFLh0AnDjwI9A1AkhynRrk7RDD5EEcQ1AMlxxMdJH4shKJgwpKXqY3Tfz+GFXZ0fKAUgGQw+gXMI8ode2PPjR6SGFi2bljLQEJHc8JdQVCz7nOj4eFUByoqk4CO6EA3EqBvGajuKTc4BE8zp+WH4IZ8YeIgIcFZ/ghnSMjIAHZzV2pDzylJRAWLw0YGOvT1yOOxFRESGUjsUprXRWcuwl5amZ6+qj0oMPvrgOj9ERBRyelZuTG2MrnS4Hyow+FgAd3UnIiIrqCgq0i0E6RqAPAOOQtjxF2wYfELPIQhwVMgfemH4ISIi1cK1gdkoDD4GqKyUP3RiqYbnFafeRt2G+i5u5Sk/twBDGo009DUo9PheIjKOGICCbYR2PRcAVBQU6L7AoafDC7t6BRZWfCxEAKCUcXSai2Opyo9eP6wuXLiABx98EPHx8WjYsCHmzZun+2uQtenxfVZ6H+n1GkThzApVoLajvg0qhDD4WI+jslL20IulKj96ycjIwJEjR/Drr78iNzcXvXr1wqWXXoobb7wx1JdGYYTvIyL/QjkVvqKgQPq47ahvAw4yWjH4GEnfxmY5lqr8AMCcOXNwxx13uN02duxYjBs3TvU5li5diqlTpyIpKQnp6ekYMWIEFi9erPOVkpX9/PPPqFu3Lvbu3QsAOHXqFFJSUvDFF1+oPgffR0TmCNXWGIGEJQYfgwkAKgT5QyeWCz/33nsvNmzYgMLCQgBAeXk5VqxYgfvuuw+PPvooEhMTfR5/+9vfAAAFBQU4deoUOnbsKJ2zY8eO2L9/f0i+HgqNVq1aYdasWbjnnntw/vx5PPDAAxg+fDh69uzJ9xGRzsSZYMEMg0nrAFVUOI8AqA0mhxd21RR8xKE1Bh9zmLGxqeWGvVJTU3Hddddh5cqVGDFiBDZs2ICUlBR07twZnTt3xoIFCxSfX1JSAgBISEiQbktISEBxsfwS7BSZRowYgbVr1+LKK6+Ew+HAxx9/DABYsGAB30dEBgl2GKzqRBVAtHx3q+uQl5EYeEwmAKjQr7dHjuUqPwBw//3349///jcA4N///jfuu+8+1c+tU6cOAKDI5TeQoqIixMXFyT2FItiIESPw448/YuzYsYiJiVH9PL6PiAKnWyN0gBUgvTD4hILCAoeRvsjhoEGD8P333+PHH3/EunXrcM899wAARo0ahTp16vg82rdvDwBISkpCamoq9u3bJ51v37590v1kHyUlJRg3bhweeughZGRkID8/HwDfR0RmCHpRxOhoxcqPHD0CC4e4QsyEdX4cgmBCW3UARowYgZ07dyIlJQWbN2/W9NyJEydi+/btWL16NfLy8tCrVy/861//kmbp9I0abMQlk4VkVq7EQw89hOLiYnz44YcYOXIkCgsL8eGHH6o+h7/3EcD3EpFamofCdBjyUtvXE8lBJ7NyZagvQZOEmIbo3vhe2ft/q/sFdu/eHfTrWLLyAziHvn744QdNQ16iadOmoVWrVmjevDl69OiBZ555htOTbWbNmjXYsGEDFi5cCACYN28e9u7diw8++ED1Ofg+ItKPXttj6NnrwwqPFQlAZYX8oRPLVn5ycnLQrl075ObmIl7naZD8bT3ymfXbDt9LRMGRrQj5qPwEGnx8VYDsEnrCrvJTowG6N7xL9v7f6m/VpfJjudleAFBZWYl58+Zh6NChugcfIiKyDjNWibZL0IkYOvb2yLFc+CktLUWDBg3QvHlzbNiwIdSXQ0RERKYxZ4Vny4Wf2NhYaY0Vo4RbGZCsi+8lMgKHU8m2BJiyxIHlwg8Rkd2tOPW2oRvn5ucWYEijkYadnygodqz8EBHZnZHBx4zzEwVMECCYUPmx7FR3IiIKjCAImDBhApKTk5GcnIxnn30WFp3YS+StUpA/dMLKDxFRhHn77bexevVq7Nu3Dw6HA3379kXLli0xatSoUF8akTJBMKXnh5UfIiKLWbFihdu2KzExMejZs6fq5y9ZsgTjx49HkyZN0LhxY4wfPx6LFy827HqJdGXXvb2IiOxsyJAhKCkpQUlJCU6dOoWWLVvirrvuwsyZM5GYmCh7iPbv34+OHTtKn3fs2BH79+8PxZdCpJGz50fu0AvDDxGRRVVWVuLuu+9Gz5498cgjj2DixIkoLCyUPUQlJSVISEiQPk9ISEBJSQn7fsh0GzZswCWXXILWrVtj5syZ/p8gwJSeH4YfIiKLmjJlCoqLi/H6669rel6dOnVQ5LJyclFREerUqQOHw6H3JRLJqqiowJgxY7B+/XocOHAAy5Ytw4EDBxSfIwCs/BAR2dXy5cuxbNky/Pe//0X16tUBAC+++KJbL5DnIWrfvj327dsnfb5v3z60b9/e9K+B7O3bb79F69at0bJlS9SoUQNDhw7FmjVrlJ8kCIBQKX/ohLO9iIgs5rvvvsPYsWORmZmJevXqSbdPnjwZkydP9vv8YcOGYd68eejfvz8cDgfmzp2LsWPHGnnJRF5OnjyJpk2bSp83adIEO3fuVHxO935dcfbsUdn7U1JSdLk2hh8iIotZs2YNCgoKcM0110i3XXvttVi/fr2q5z/yyCP45ZdfcNlllwEAHn74YTzyyCOGXCuRHF89Zv6GXs3a09MhsAOOiMh2uH+YPYRy/8Ht27cjIyMDGzduBAC89NJLAIBJkyaF7JpE7PkhIiIi3XXp0gVHjhzBsWPHcPHiRSxfvhwDBw4M9WUB4LAXEZEthbIiQPZQrVo1zJ8/H/369UNFRQUefPBByzTec9iLiIiIbIXDXkRERGQrDD9ERERkKww/REREZCsMP0RERGQrDD9ERERkKww/REREZCsMP0RERGQrDD9ERERkKww/REREZCsMP0RERGQrDD9ERERkKww/REREZCsMP0RERGQrDD9ERERkKww/REREZCsMP0RERGQrDD9ERERkKww/REREZCsMP0RERGQrDD9ERERkKww/REREZCsMP0RERGQrDD9ERERkKww/REREZCsMP0RERGQrDD9ERERkKww/REREZCsMP0RERGQr/x/9icVGjc6pEQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "img = nib.load(parcel_filename)\n", + "plotting.plot_img(img,draw_cross=False,cut_coords=(0,0,0),title='Schaefer 100 Parcels',colorbar=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "image = img.get_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "parcel_filename_chead = '/data/joy/BBL/studies/pnc/template/Schaefer/MNI/Schaefer2018_100Parcels_7Networks_order_FSLMNI152_1mm.nii.gz'" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/Users/hxia/Desktop/BBL/data/joy/BBL/studies/pnc/template/Schaefer/MNI/Schaefer2018_100Parcels_7Networks_order_FSLMNI152_1mm.nii.gz'" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "parcel_filename" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mni_xmni_ymni_z
0-29.25.8-2.6
1-10.15.9-8.4
28.98.5-7.4
37.90.8-6.7
416.90.9-9.1
537.0-0.54.1
613.42.20.2
724.81.7-22.1
819.20.7-14.9
918.11.6-22.1
1020.31.7-19.8
11-8.91.5-9.2
121.03.34.8
132.14.57.1
14-12.32.8-2.2
15-33.6-1.81.7
1630.4-18.08.0
17-31.2-17.03.0
18-1.2-5.118.6
1919.5-42.44.3
2021.7-41.27.7
2120.6-41.27.7
2220.6-41.26.6
2321.8-41.26.6
2421.7-38.714.6
2512.120.6-5.0
2625.619.8-2.5
27-24.921.0-7.5
28-12.520.1-7.4
2929.18.8-6.2
............
863-3.2-17.411.4
8644.7-19.66.9
8652.4-18.63.3
866-5.4-20.0-0.2
867-12.0-19.3-8.5
8681.3-17.47.9
869-8.7-20.0-0.2
87014.9-16.7-9.8
87127.2-15.6-14.6
87227.2-15.7-18.2
873-24.4-18.3-6.3
874-26.6-17.3-7.5
875-25.5-17.5-13.4
87620.4-17.30.9
87711.3-17.111.4
8781.3-18.65.6
879-8.7-19.2-6.1
8803.5-19.68.1
88111.5-17.7-5.0
882-9.8-19.3-8.5
883-4.2-20.1-4.9
884-14.2-17.4-15.8
8858.1-18.7-0.2
8864.6-16.113.7
88721.7-15.9-22.9
88821.6-15.7-15.8
88933.9-15.5-17.0
89026.0-15.4-8.8
89127.2-15.4-8.8
89226.0-15.4-9.9
\n", + "

893 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " mni_x mni_y mni_z\n", + "0 -29.2 5.8 -2.6\n", + "1 -10.1 5.9 -8.4\n", + "2 8.9 8.5 -7.4\n", + "3 7.9 0.8 -6.7\n", + "4 16.9 0.9 -9.1\n", + "5 37.0 -0.5 4.1\n", + "6 13.4 2.2 0.2\n", + "7 24.8 1.7 -22.1\n", + "8 19.2 0.7 -14.9\n", + "9 18.1 1.6 -22.1\n", + "10 20.3 1.7 -19.8\n", + "11 -8.9 1.5 -9.2\n", + "12 1.0 3.3 4.8\n", + "13 2.1 4.5 7.1\n", + "14 -12.3 2.8 -2.2\n", + "15 -33.6 -1.8 1.7\n", + "16 30.4 -18.0 8.0\n", + "17 -31.2 -17.0 3.0\n", + "18 -1.2 -5.1 18.6\n", + "19 19.5 -42.4 4.3\n", + "20 21.7 -41.2 7.7\n", + "21 20.6 -41.2 7.7\n", + "22 20.6 -41.2 6.6\n", + "23 21.8 -41.2 6.6\n", + "24 21.7 -38.7 14.6\n", + "25 12.1 20.6 -5.0\n", + "26 25.6 19.8 -2.5\n", + "27 -24.9 21.0 -7.5\n", + "28 -12.5 20.1 -7.4\n", + "29 29.1 8.8 -6.2\n", + ".. ... ... ...\n", + "863 -3.2 -17.4 11.4\n", + "864 4.7 -19.6 6.9\n", + "865 2.4 -18.6 3.3\n", + "866 -5.4 -20.0 -0.2\n", + "867 -12.0 -19.3 -8.5\n", + "868 1.3 -17.4 7.9\n", + "869 -8.7 -20.0 -0.2\n", + "870 14.9 -16.7 -9.8\n", + "871 27.2 -15.6 -14.6\n", + "872 27.2 -15.7 -18.2\n", + "873 -24.4 -18.3 -6.3\n", + "874 -26.6 -17.3 -7.5\n", + "875 -25.5 -17.5 -13.4\n", + "876 20.4 -17.3 0.9\n", + "877 11.3 -17.1 11.4\n", + "878 1.3 -18.6 5.6\n", + "879 -8.7 -19.2 -6.1\n", + "880 3.5 -19.6 8.1\n", + "881 11.5 -17.7 -5.0\n", + "882 -9.8 -19.3 -8.5\n", + "883 -4.2 -20.1 -4.9\n", + "884 -14.2 -17.4 -15.8\n", + "885 8.1 -18.7 -0.2\n", + "886 4.6 -16.1 13.7\n", + "887 21.7 -15.9 -22.9\n", + "888 21.6 -15.7 -15.8\n", + "889 33.9 -15.5 -17.0\n", + "890 26.0 -15.4 -8.8\n", + "891 27.2 -15.4 -8.8\n", + "892 26.0 -15.4 -9.9\n", + "\n", + "[893 rows x 3 columns]" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gene_mni_coord" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [], + "source": [ + "vox_coord = pandas.DataFrame(np.zeros(gene_mni_coord.shape))" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(0, 119.2)\n", + "(1, 131.8)\n", + "(2, 69.4)\n" + ] + } + ], + "source": [ + "for idx, string in enumerate(foo_str_list):\n", + " foo_str_float = float(string)\n", + " print(idx,foo_str_float)" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [], + "source": [ + "for ridx, row in gene_mni_coord.iterrows():\n", + " coord_cmd = \"echo %f %f %f|std2imgcoord -img %s -std %s -vox \" % (row[0],row[1],row[2],parcel_filename,parcel_filename)\n", + " vox_coord_str = subprocess.check_output(coord_cmd, shell = True)\n", + " vox_coord_str_list = vox_coord_str.split()\n", + " for cidx, coord in enumerate(vox_coord_str_list): \n", + " vox_coord_float = float(coord)\n", + " vox_coord.iloc[ridx][cidx] = vox_coord_float" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
012
0119.2131.869.4
1100.1131.963.6
281.1134.564.6
382.1126.865.3
473.1126.962.9
553.0125.576.1
676.6128.272.2
765.2127.749.9
870.8126.757.1
971.9127.649.9
1069.7127.752.2
1198.9127.562.8
1289.0129.376.8
1387.9130.579.1
14102.3128.869.8
15123.6124.273.7
1659.6108.080.0
17121.2109.075.0
1891.2120.990.6
1970.583.676.3
2068.384.879.7
2169.484.879.7
2269.484.878.6
2368.284.878.6
2468.387.386.6
2577.9146.667.0
2664.4145.869.5
27114.9147.064.5
28102.5146.164.6
2960.9134.865.8
............
86393.2108.683.4
86485.3106.478.9
86587.6107.475.3
86695.4106.071.8
867102.0106.763.5
86888.7108.679.9
86998.7106.071.8
87075.1109.362.2
87162.8110.457.4
87262.8110.353.8
873114.4107.765.7
874116.6108.764.5
875115.5108.558.6
87669.6108.772.9
87778.7108.983.4
87888.7107.477.6
87998.7106.865.9
88086.5106.480.1
88178.5108.367.0
88299.8106.763.5
88394.2105.967.1
884104.2108.656.2
88581.9107.371.8
88685.4109.985.7
88768.3110.149.1
88868.4110.356.2
88956.1110.555.0
89064.0110.663.2
89162.8110.663.2
89264.0110.662.1
\n", + "

893 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " 0 1 2\n", + "0 119.2 131.8 69.4\n", + "1 100.1 131.9 63.6\n", + "2 81.1 134.5 64.6\n", + "3 82.1 126.8 65.3\n", + "4 73.1 126.9 62.9\n", + "5 53.0 125.5 76.1\n", + "6 76.6 128.2 72.2\n", + "7 65.2 127.7 49.9\n", + "8 70.8 126.7 57.1\n", + "9 71.9 127.6 49.9\n", + "10 69.7 127.7 52.2\n", + "11 98.9 127.5 62.8\n", + "12 89.0 129.3 76.8\n", + "13 87.9 130.5 79.1\n", + "14 102.3 128.8 69.8\n", + "15 123.6 124.2 73.7\n", + "16 59.6 108.0 80.0\n", + "17 121.2 109.0 75.0\n", + "18 91.2 120.9 90.6\n", + "19 70.5 83.6 76.3\n", + "20 68.3 84.8 79.7\n", + "21 69.4 84.8 79.7\n", + "22 69.4 84.8 78.6\n", + "23 68.2 84.8 78.6\n", + "24 68.3 87.3 86.6\n", + "25 77.9 146.6 67.0\n", + "26 64.4 145.8 69.5\n", + "27 114.9 147.0 64.5\n", + "28 102.5 146.1 64.6\n", + "29 60.9 134.8 65.8\n", + ".. ... ... ...\n", + "863 93.2 108.6 83.4\n", + "864 85.3 106.4 78.9\n", + "865 87.6 107.4 75.3\n", + "866 95.4 106.0 71.8\n", + "867 102.0 106.7 63.5\n", + "868 88.7 108.6 79.9\n", + "869 98.7 106.0 71.8\n", + "870 75.1 109.3 62.2\n", + "871 62.8 110.4 57.4\n", + "872 62.8 110.3 53.8\n", + "873 114.4 107.7 65.7\n", + "874 116.6 108.7 64.5\n", + "875 115.5 108.5 58.6\n", + "876 69.6 108.7 72.9\n", + "877 78.7 108.9 83.4\n", + "878 88.7 107.4 77.6\n", + "879 98.7 106.8 65.9\n", + "880 86.5 106.4 80.1\n", + "881 78.5 108.3 67.0\n", + "882 99.8 106.7 63.5\n", + "883 94.2 105.9 67.1\n", + "884 104.2 108.6 56.2\n", + "885 81.9 107.3 71.8\n", + "886 85.4 109.9 85.7\n", + "887 68.3 110.1 49.1\n", + "888 68.4 110.3 56.2\n", + "889 56.1 110.5 55.0\n", + "890 64.0 110.6 63.2\n", + "891 62.8 110.6 63.2\n", + "892 64.0 110.6 62.1\n", + "\n", + "[893 rows x 3 columns]" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vox_coord" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0, 0)" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vox_coord.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'77 133 50\\n'" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "subprocess.check_output(coord_cmd, shell = True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(182, 218, 182)" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "image.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [], + "source": [ + "image = img.get_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "100.0" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.max(image)" + ] + }, + { + "cell_type": "code", + "execution_count": 225, + "metadata": {}, + "outputs": [], + "source": [ + "cmty = pandas.read_csv(community_filename,delim_whitespace=True,header=None)" + ] + }, + { + "cell_type": "code", + "execution_count": 263, + "metadata": {}, + "outputs": [], + "source": [ + "cmty_1 = np.where(image_data <=9)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "%gui qt4" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "brain = Brain('fsaverage', \"lh\", \"sphere\", alpha=0.5,background='white')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "brain = Brain" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "brain.add_foci(gene_mni_coord,color=\"gold\",scale_factor=0.1)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "aparc_file = os.path.join(\"/Applications/freesurfer/subjects\",\n", + " 'fsaverage', \"label\",\n", + " 'lh' + \".aparc.a2009s.annot\")" + ] + }, + { + "cell_type": "code", + "execution_count": 326, + "metadata": {}, + "outputs": [], + "source": [ + "labels, ctab, names = nib.freesurfer.read_annot('/Users/hxia/Desktop/BBL/data/joy/BBL/studies/pnc/template/Schaefer/FreeSurfer5.3/fsaverage/label/lh.aparc.a2005s.annot')" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "brain.add_annotation('/Users/hxia/Desktop/BBL/data/joy/BBL/studies/pnc/template/Schaefer/FreeSurfer5.3/fsaverage/label/lh.aparc.a2005s.annot',borders=False,alpha=0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 336, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(82, 5)" + ] + }, + "execution_count": 336, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ctab.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "labels, ctab, names = nib.freesurfer.read_annot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Genes" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "gene = pandas.io.parsers.read_csv(gene_filename,delimiter=',')" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "gene_mni_coord = gene.iloc[:,-3:]" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "gene_xyz_coord = gene.iloc[:,-6:-3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Mapp genes to parcels" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [], + "source": [ + "image_data = img.get_data()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "M = img.affine[:3, :3] #rotation/zoom matrix\n", + "abc = img.affine[:3, 3] #translation" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "def f(i,j,k):\n", + " return M.dot([i,j,k]) + abc" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 90., -126., -72.])" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nib.affines.apply_affine(img.affine,[0,0,0])" + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "unexpected EOF while parsing (, line 1)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m np.arange(len(gene_mni_coord)\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m unexpected EOF while parsing\n" + ] + } + ], + "source": [ + "np.arange(len(gene_mni_coord)" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "metadata": {}, + "outputs": [], + "source": [ + "gene_Schafer_coord_cols = ['mni_x','mni_y','mni_z','new_x','new_y','new_z','community']\n", + "gene_Schafer_coord = pandas.DataFrame(0,index=np.arange(len(gene_mni_coord)),columns=gene_Schafer_coord_cols)" + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "metadata": {}, + "outputs": [], + "source": [ + "gene_Schafer_coord.iloc[index][:3] = row" + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "metadata": {}, + "outputs": [], + "source": [ + "for index, row in gene_mni_coord.iterrows():\n", + " gene_Schafer_coord.iloc[index][0:3] = row\n", + " gene_Schafer_coord.iloc[index][3:6] = row + (np.array(image_data.shape)-1)/2\n", + " if gene_Schafer_coord.iloc[index][3:6]\n", + " gene_Schafer_coord.iloc[index]['community'] = 1\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "mri_voxel_x 120\n", + "mri_voxel_y 91\n", + "mri_voxel_z 71\n", + "Name: 0, dtype: int64" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gene_xyz_coord.iloc[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 174, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAg0AAADeCAYAAAC+LTM8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzsfXe4FsXZ/n3O4VAsCSIWRIpg7xFrbKDYa9TE3qIk4C+W2GJi8qXHT40ajTE2bPGzxBIi1qiIvdeINSoIoqiIoR9O+/0xc+/s3Ltz3oNSzgvPfV3n2rO7s7Ozs7PzPs89T6lpbW1thcFgMBgMBkMF1C7uBhgMBoPBYKgOmNBgMBgMBoOhXTChwWAwGAwGQ7tgQoPBYDAYDIZ2wYQGg8FgMBgM7YIJDQaDwWAwGNoFExoMBoPBYDC0CyY0GAwGg8FgaBdMaDAYDAaDwdAumNBgMBgMBoOhXTChwWAwGAwGQ7tgQoPBYDAYDIZ2odPiboDBYDAYll78+c9/BgAsu+yyAIBlllkGANClSxcAQH19PQCgT58tAAAtLS0AgHHjHgYAHHHEEe2+11VXXQUA2OOjjwAANf5465dfRnU3NTUBAAassYYrcMYZ8/FESzaMaTAYDAaDwdAu1FhqbIPBYDAsKtx6660AgBVXXBEA0KvXtwAANTU1UTnu19TU+q07zl+slpZmAMDs2Q0AgM0375W858e//S0AoMszzwAAagcPjguQafCVt3rGobnZ3aPRMw8NDe5eSzMDYUyDwWAwGAyGdsGYBoPBYDAsNFx//fUAgD59+gAIzEJtbZ3fxgxD+Emq8eeVaXDn582j/UEjAGD27NkAgKeeui2rq3fv3gCAXW+4AQDQqZMz46vxdWKHHVydnmnINQIA0KyMQ6O71zzPOJCBGPjXv7bRA0sWjGkwGAwGg8HQLpj3hMFgMBgWGC666CIAwQuif//+AIDVVtsMQGAOdEso+U1GAiDD0Bydp+1DXZ0r17lz5+zckJEj3bmuXV1dvkxmP8F7y/GsDZ5J4H6tP9/Je3SwvkmnnAIAaPGMRF/vEbIkwpgGg8FgMBgM7YIxDQaDwWCYb4z0WnyvXs5rgZr+Djt8D0CIedCli9Pyqa1TiVdrOjIKwYnC/fPNbzpbhc8+6xzV29raEl1PloB2C67OWp4sfYa6J5905Xh+k00ABBuGJl+O+/SuYL2d/DOTcWDbPvrxj92+v472HEuCt4UxDQaDwWAwGNoFYxoMBoNhKUH//v1x9dVXY+jQoV+5jttuc94Jm232HQB5WwJ3vrnZ6efz5s0DEBiBwBCQYoi9J4KZgTu+0kqunsZGMhCTfT09o3qUwYjiPdSkPDNi8BkaTzsNADDtiy8AAMv85S9R21l3yi5Dtyz/+dSpAIAGz0D0Xm01d+N2MA/9+/fHlClTUFdXh+WWWw677747Lr30Uiy33HIVr10YMKbBYDAYDIYOjNGjR2PmzJl45ZVX8PLLL+Occ85ZbG0xpsFgMBgMFXGDj3WwwQZ7AgjaedjGDAJtC2gPEJT81uh48J5wWvnKK7vjjATJKIyNjSsDAFpaYo8GsgCMEBmxCQU2ojV3JxQMK9jmzAMji0rpGQbuC5NAqF2FMg71/vgnU6YAAFY9/3x3YTttHVZddVXstttueOWVV9pVfmHAmAaDwWAwGKoAkyZNwn333Yc111xzsbXBmAaDwWAwJHHZZZcBCDYMRKa1Z+v8btvS4o7X1XWKypFhIIOgUNsGMhEzZ870+9/09ZNZIHsQ20owQyUAvODjJ2x16aVstNuQAfD3IFtCJoExJiYddRQAYMVrr43aqvEcin1RW1pviz/eze+3l3HYf//9UVNTg5kzZ2KnnXbCr3/969JyiwLGNBgMBoPB0IExatQozJgxA2PHjsVbb72Fzz//fLG1xZgGg8FgMBTwZx/VcNCgAwGktWv1Wgi5JJxO2tJSF5UnyDjQW6JnzyZ/3P0s0ZZhzpwevp7GqB4yEqyHWn3+PjNmzAAQ2Ae1TWjVuAtZbIkuAIDu3bu7494WoegBEqOSd0WNvx6+vq4+UuXkyc4zZLXSWgN23HFHHHPMMTj99NMxatSoCqUXDkxoWMT45z/Lj++334K/1199EhXSfHt6KmzAgAGuQI8eC78RhqoG3etS+O53v7uIWmJYUGhsbMTcuXOz/U6dOkUBkQwdG6eccgr69++PV155BZtuuukiv7+NFIPBYFiKsOeee0b7Z599Nn73u98BAP70pz9lx9dee20A+VwO8bq9ekOQMaA2Th+FujqnZVN50eMUWDxRkF3/xRfd/P3m+fpjrV0ZDx7P557Y7vLL3T8+V0Qrs1ay5eJNUXf44e6fm28GAHzjG98AAEw5/ngAQPerrnLXJ+6ttgzKfhTzarjyXTzj8P4JJwAABng7kjKstNJKOOqoo/Db3/4Wd9xxR7LcwoIJDQsYF198MQDg44/3B1AcPBwkq68eu+L4iKyFFKw1NXcBAE7wg6kMDOfas6cLevLtt98GABzkz/MjbPIDc+LEie7ErFkAcq5Lvu1MMGPMQ/XjzjvvBBDGE7c6iSntmprkCB6/+uqrC+dqxE1NKdujjz76Kz+P4eth/Pjxi7sJhvlE2Tv762JMxW1Cg8FgMBgAIHLlW221bQAEm4EgSDI6YnztvHmMUUBbhlgLp/xJmwcyDIzLwPgOgZGIFS4Kn83Nce4Jlq8RzwcgZKPM6vDHM3+O1jhmBIVq+P16fz1tG7IcExUYBj4b79fE3BX0/JAEHGw7bSkwn/EbFiVMaPiaILMwZcoBAID6+oMBAMssEzMLqnV17lweHISDuHNnN1jnzHGMxRVXXBHVB4QBup8Pedpp+nRXp6fn+GG0yEfVyg/IMw9ZG/y9aZQzj8zDySdX7gjDYsG9994LIBiNccsQvk2S2lfTCOtkp8wDJ9MQoKfcxazsGkLL0oUvReVqYBxO3AcffHDlDjEYDAsVJjQYDAbDUo45c+bgjjvuwFprrZUdU+EtKMfxUtakST7aYb3bbrqpM7Kk58K8ec7gWgXWlVZq9vdxyguFTmr7lD1TgmuI1xBv1157SPYMtbU3R/fMvCbAZylfpmMb2Afdujn7ihknnQQA6HzJJe46X54MBAXcZp9jouaCC0qfoVmWA1skOuYHfkmiz/Tp6OTtKjoKliihYUEkY2kvqPn37dsXADB9uhtUqsHlApa6Pb87ZYo737t3HNCElJ7SVbNm7eHrvzuriylpyTDUCauRGSSRQqOlkUctJwVhQbLJwpcf7xmHu/z5k/yHsyDQ0ZKxdFQ8/PDDAEKgmzlz5gAIzAIZhWCE5qDa/FA/AZ39z60AFI3a/rD/swCAs+7cwh+PA+kMHvwAgDA5ljENbAsnXk32Q3Cf5fgsKcr3mmuuie7N7SGHHALD18PiMKgzVMbEn/4Ua9DGrIMsVSxRQoOhOjF69GgMHToUn3zyCXbbbTecc845+P3vf7+4m2UwLDVYaaWVAABdu66bHdP4BymviU6daqLytCmgFwOFQaJLF3o5dImOU7icPXs2AKCx0dXTLPYAKXagqYnaehBO3/75zwEAG517rjuntg1SR7CbiFkNCrBUZhp8NkwKyJkQ7ZW8Vn/80yOPBAB8k14XftlQnyXLTUGBuUvom/fefRcAMBAdAyY0fEWsssoqAIBx43YAANTXxx+WblOMg9o8APFgUm2rqWmvrI6t33I+9LV+wBY+CBaUgZm5F0ndWXIW/8Hwo2/0A30vrxFe6kOy/uhHP8KCREdIxtJRMGbMGADAf//7XwDALO/pol4QSntmQWo8W/TII7sACBP6Lgc87/fjcVlT48bIz0ZtGe2r88TYsbsBAHbf/VEAwEMP7ZSd22WXR6I2KNimxkbHmjU1xQF2iOZmt19ff68v1xTVyx+hFANxpJ+oDQbDgocJDYYOAyZj2WmnnSoXNhgMXxvXX389gJC5Mqdq5LwT1HjW7U+aVBvtq1eEZoxM5WdQDwYuvX3xxXsAgOWWWwdAfumWLWQ9NKAtugkX2AkyComIjUSXYcPcPzfdFLWZfUAbB1UO9VnmVWAWtF7dB4Bll13W/fO//+u2Z52FxQkTGtqJadPc9txzJwAAll12OwBA584MTBK/dB3gqfXcjz922969IefjcgyE0tpamytTXmcWxJVtkWfJPpQvv3R1r7xyXIAsB418WN7Xt48/fq1P4sKPvK1YEm2hIyVjWdwYPXo0gGBExsh9arOg9gOqrXP/D/s/ByBMkhwdxfgLen1cj052ZBjOOeCF3DWOuh3j266sBxmGor0PKeK4DU1Ne0blaK7RufN9/nxTtCUDcZWngsk8HHPMMTAYDAsGJjQYFjtGjRqFoUOH4tFHH8Vhhx2Gzz//PPOLNhgMCx7MK7H++usDCBkp81CjWgp3VFyYU4IMwzbb0NU21tpVi08FDCsu1Tp88cW/AQArrrhxdL6oNLltY2PIcrmOj3TZLEuwlIrrhPXI6k60ZX5BgXmCD7fe/9ZbS59B7593W6bw+6EPytf3a7Xo68OEhgTOPPMDAMChh8bHa2t90I6Elh8+kPLEJjpYDj/ceT7wA33kkUruNW0MYmqDvg1T990XQFgXp9ZKjwyGSO313HNRG1JRAkkzcrv3C07LnOfX16nhDSO1N5/oCMlYFjX+9a9/AQC+9KyPekXoxM1x88YbTgtfZx3HTGiAG74zekEUbW3iUL8yl5akH6aNTWwLcba3gQCA3+/nPC9mzHAub50731967+I9CyF3Sp+ZW9r1sE1dutzvj8eMA+0+LvehhDn5cvya7YPBMP9Y4oQGS8ZS3VjcyVgMhqUBvf16aI8emwEIy59lCEpEFi4OQAiF37s359u2bRcI9YbQclzDp1JDbwpdAi64lnv0OvOwcC91K+c9+WxhHThqQ+sNN5T2AaH31memYPrNb34zavu0H/wAALDKdddF5Ykiu1Osc3HbNixxv6ZtJWNpD846y9ksUCsZNSruotpaWqu7l1tXF2vlwbCGyVvi6HgcAEce6fztqWXx+q23dpkon3yypz9fbsVeBh3YHGR0geK9mY6Vxjxf7rgjAGA5HwuAgUcaJZ1sV1++3n+IrXQL8uf38IzFxGeeAQDcubGjE0+ej4iSizsZy8LGE088AQD4wkfxnO5jbFA71gmVeP11Zw8gcxzeemsfAMDaa7v0qcoS7bij08IffXT36HzQ5mMjNv2BoDFcYAdIo/packPup/9wrMZOOz0EAJg7Nx77iuKYVkM2ts3v1ZQzFPPmub7p1u1fvu1xZErWR6M0MhDMm8Hv4YgjjmizvQaDYQkTGiwZS/WhoyVjMRgMBkMaS5TQ8FVw5ZVXAgDef9/5n6ubUJZ4RKLXBf94+pDHjEFwT2JMf3f8iCNmRMfVGv7pp1f25bPkrX6/6E6UykjILdtAuo/PRBaFz8YYAN34TJ5h4Lae13WKPUVaBg1y+8+6tWzGfWj124PGjQMQIkoujTksXn75ZQDBruTzzz8HECI7atbJf/97t9J61M1Mj5PhUo8C4g/fcSzQTyXSI9HSEter5zm+g5ZftD8YOtTFlmhoaIzaEPJaILpG2QplOdQGrdgHcTmOZ9aj+xrTQvNzMN7D97//fSypuPDCCwEAG2ywAYC0d1f+mG5XWMGxY5xX6uu7tFmeSHn4EBzDZEB79HDhp0Oq63guLtpe+XYXH7vgctkqhodcvmj2LqidEvcgUssK+uzsI9qRZWPPh5nu5sNRp0Jl5+vivD3hAReVtd9iWp5IL2QZDAaDwWAw5FDTmvJ/WQLBSIZAMLJ56y3nb66BSVQb17Ss1FKo7SgzocleDj30y9LjrIfGPk88sSKA4rqs+usDwCFzbonamrEbzBbot7O+972oH4IVuquLWnDPJ58EENbXg3V6l9L7NL/4onsGWquLdtvqDRmzJDD+WfstwNwVHRVkGGi7QIaB71k1itdecwyDKnxq01Jc1481oYED/xFdz/H29NP7RMepzW+1VeylomwVx+kLL7gsrumQwoGd2H77+6JnpLdDKlJkMQERWTZ+kzFrp5omt8su+1B0fpNNdo7qWelEl6Pi00tu8s8Ue10QHOcc90cddVRpu6sRN/lgReuuS2bVR5PNbLHCAFQDRW579Zrnr43nMr0uFfhI33cqyBPnRs5H06fTs8yV43tTxijvrtj/58e6e0hOoHqZ58kwcB7XNqVyumibtQ8UrIfPRJaX8wINJFs9Sxtd6+/F34JVfVRi+LYvKhjTYDAYDAaDoV1YKmwaaFj3ySffyY59+qmXOOsTURUrBN9obWWUu9jGQSVQIiWV8zpd21YredUw88dK1FMARek4H5q07N6arrWT2DDUqpa5ySbuPmRdfNwGrg/i1VddeV8OXor/0AeWAYC+J56IJRHTfAhRMgzUDth3r722a1S+yCDwjEZkzK6IrtMcJZqj4tvfdtlRn3pqn6ieYG9QPmYC01YrWzYklGebWSe1ttmz4yBAasOgcRkUqfLcpddEU1NsT8Q2jhnjtjv/xQfWaYnZwUGDdovqJwPBd8bIp8cee2yb7awG9OzpvLIK33ZmsxLmp3CseA4o2mNVmjuJSoxDxgZ4FoDlund3dkDTpjGRVXlcGdX6gTAnkX3l8zeMHAkA6CJjRtuqz1jJnkyvJ1J9lv0+vPWWu07man8RgNAviwvGNBgMBoPBYGgXlgqmwWAwGJZm/OlPfwIAbLmli+BJ+xCN8JlnfQLpRI3e2Qx8+CG9HKb4Otw+bUDUBirFsqrWreW4Dd4T8PU79q6hYfnoOFNj521UyJ7yh45sqbJhKRZW46ZknmPSds0FQ4aP9hbd73UZW3kXbrv6iLAZI8E+KjE11H6Z8OGHAIB+hZILF0u00MDgLZMn7wcgGFQBZZQZZL88UY9mIUvleE8ZlHGrgzK0i66bPBLT1hFFKAmqCm33+8ve5lJozz3kEJShNfC/rg38sOQjpktlKnNctp8IsV0nxkgAMNEbp/ZZwGm2FwceeeSR7P/PPvsMQKC4g0HhEAAAU0/PL3Q86vjgJKjjS5e/OM6efdZ9Gzvs4Ch5nQQ58Z97oFt6+vldW0f3zY8+tonpsxllMEVPb5lFoOaSB58tRYCSKnZ7Xbs617N58+KkXRxnXJYIfRUv8dBQUvt0yy1dgDguU3DiXxpcMg2GSliihQaDwWAwhKiwyyyzHoCi0EmUpZWmNwttCBob3XbWrG/6umhPEwuJzz7rfl4OO8zHe/ECqNoNUDungM0InSyvjAM93xoaOkfXs+3jx4fMq+v7OpT1aPJeCnUJLwmNHqqeYyyv+U6YO2aF+5wHUb0X2hs03DQVsSbG+Sn3QMn/n9l+iBKGo49220XkRbFECg3X+QExdqxL2LTWWu542YsI++2rO3wgMdMQXOjgt+WBSwjV1p9/fjV/JmUcVtLAlBGOGOtouUpGnnXCLGRtZ736DGxhWWzhkvvU5jqbhkkTvbFqnx12cCd88JlqwKOPPgogsAtAmEQ4Tl580TEMYRjIO/IIrzAOpbzxxk7r5Th78026McaT/9y5Tkvu1MmFlVa6dMstnUtmMdCX244ZswuAEAwqq73wgZQFG4vLptzOttpKavLXLbfcw1GbOV7mzo3dUdXNTX80UkZpPkp6dr8hQ+J2aIjszTd34alffNH1PfuQjAMQ+tFCUBuWFiyRQoPBYDAYAkJ0zPi4ynV55xnG3VDGISwjUQOmEBcrUJtv7vYnTHA2DmusEXuYqScCPY0oBK6++uoAAvOgiZtWXTVmQObMcdf17Ll59gxN3/62uyfjL9CGIcEwMFIrFQAmnKKdBsFnpHIwdepU16YxLiqq+m+ooNvqn7FlJxcnqJOXaFPpwcuOpeKeLGwsUULDFVdcAQB46qkDAQCdO9O9ptydDEhrRSnXG2p2aqMQ6i7XsrUeXWtur23E8suPyepqmek/Zs4EdOMRhqFF6K06MQZSAyRlDrKBzGdQqo3lN3MZ8+ADG0EZBnELjO7FvPNjxwLIGfd0YMaByac4YXACAYCXXnKTgWqvhJBC+TP+fGyrwL7jeNloI7eeP27cHv46V3D8eFdu/fW7ROV1mxpfQ4Y4w6yzR9EllO+Q7XHlfr+/YyIe8oHB8nU/9pgmxyp/Rv7YcEzTfk2p5Hnz4smxtrbVH3fPPmuW+5aWXda5lX7++VAAIZlc4e6+XQ8/7LY778x6dVJ220GD+Dxu3L/88oNZGdLYN954IwBjHAxLPpYoocFgMBgMRYTYFXpGlaXW3P/lcReCYEsGQpeDuObu9pifh94NqTgD1PLfeOMNAIF52GijjQCEnBTaPgqXyy23XLQftym+RpU0Zpt9wceamTHD5QjaZpttSq+j0sdIjozL0sMLzlkqblHEiJb73ZIXJdPahL1HHmrg3lbZhYklSmh44gkX6rZLl9iAhi5DeTYnlfO9aJVe/mIOP9wNMg6u227rGZ0vpsCODWiooTAFNqk/foiBkYgHaV6bfWqddQAA277zjrtGbA+oz9eKRbxq/KTelO7K+kSovIK9BickHmBAIPbFa6+5ckxwlXOhyuryz5dNDB98EG/33hsdDQwRzVCweQaFDMP228fXPP54+7wmwvq9+ycLdyvhp5Wx4Ljbw9Ord3XvDiCeSPNQwy9Sw9tue09Un3q+3PtZHOo33yZeSxp5F0/x/myUc5fo1u3h6FkaGmIGUA3mevZ04c2/+GK76JnnzCGD1er39436or0Bd9LeGjzP/1y5zTYLgbleecWFribLYoyDYUnHEiU0GAwGg6EIzQSpbEGpoXWJW23+mhDDIFZCyvJYAMBttzmFgN4UKrwxIyS9Iz6gwuCx/vrrAwieIIXWliw1p5gF7lPgZ66Yd7wCRnsKjRFBaFyGDPSqSOWi8HEZdMm2UK4dMKbha+Dvf/87AKC+3mkAHLwDB1JDZmyE0Mkc+HV1bYc8TTEO6ga0336To3I0oKmpiSk1Dlq1ZSCFR6qPCOFG4cuFwchEUxy4mRuP2CA0+4uXv/12AMAcH6+BbaWh0TTvucDEVSmDJe0D9ljWR9RqfcKqWh9OurZLnEK3rE5qmZM++ggAsHrv3uio+PJLl4RMDbQAYMcdn4vKPvbYltH+SSe5537yybHR8RdeGBzVya7acUe3Tj9mjLNlCOPA1TNgQFy+aW/nhrWH79/HH3d2AxpiWT0QUvscr21NVBooh+/2QT9OBw9muGcxChPWTyd49Y6YO7dt75906uRyLyJ6VQwdWs5IFGNjhDniW99y3ia0czDGwbCkY4kQGgwGg8GQBpeRdE2+zDhcoUumxVwRjGFQnp+E2wMPnOXr6RzVw9gGbFOfPn0AAN390hqXgMkCrLnmmgCCDUOxvcUlQH1O2iKwTtpPDBw4MGqD9pcqlVRyyH5UEsprvNVtJ8ageOih0npjV+b2LbMtKlS10HDxxRcDAKZNOxxAcdCOH+9e3BprlLEFrsMPd5dm5265RTWpWIM74ghny6ChU1N2AinvDA6mp592g3LDDctjKFCraWykpXnQZneZNMkX8YwKKbOEzUFqkHG9e/nlXVjWObvuGj2TWu6T0lvpqafgG+s29JrYYouoXZAQrS35diQMlTr7j+r9998HAAy421nGdwTbBmqRtC8hrZq3Gwgubu75TjmF2i+i4zopfetbTu19+eWdS6/j+OIkdPLJ7ji7evRot+38859EbR78h/MAAK+8wvFVvo7f2PhkVD+3OumqrUP+fx3DkyZtCwD43uxro2d/pF8/f8846ZtSv8Fz6BEAwOzZg6O2pJgGbetBL54Z1f/3b/1vtN/SUu7ppPXE1bsdMg4vveTYFPOqMCypqGqhwWAwGAyVQQGXW7IHxeWmvD0AfNl4mSiAmTKpXGjGzHIBNbUERlAIJJNABYzKChWJNdZYA0BQdrT+PPgMZDU+9HkbyDiwLjIGFPpZngbaqgymPDeaW+L+5Za2Duq2ruHb20KBJVpEkSCJqhYaSCHNmME4A7RliNc0yxRsDuSbb6aXg9uSeVDGgV4QNTVMFRxrWhr8o5LWE7QyMhTl12nuiv/+d/esrvrO/+fOyVpwpdwQhMaY0A+B0FTZ1KxnDR0at9VTb9/wORg4/LP2yBp2GVgXab9uTKvtKcqOAE40+m5aW7fOyuj8Grwb3JbGYzvs4Prs0UdjK3zaPGhXKY1JG4edd3bj4oBnz3L3/8P5pW3fYvT/AABe2Pd3UXv4Y9Gli/NQKNp/xQ1hPfnx/fw+vwEA+Dk912a35Zi/tdsxAIDvTXSRFW/x+xwnPXvG3hUZtevv1aOHsx/4/POdff1tMw08f9tm50b3YamhQ3W+KP9O2vKo4iWbbuq+CTIOZuNgWNJQ1UKDwWAwGCpDFYSwRq/xG4LAFCI9xpotDV5DALLYIFVDm6+yygxf3v3cMB6DJhij4pXKLEkWgEL7e++9ByDYIVCZKQPzWkycODFqAw3WNc+FLjcry6IB8nj91N1cyPMVz3RLYa2DB7v6aEzbwvwd3hCecR3asGkgChk1/bWLGlUpNNCW4eWXndReX+9e3Nprl4fgVCvtPPiybrhBtRV3/phjyDDEgyn1klNUm1qG8wMZNIj2BuWuN6n6gGLiEnpP1Or6c0ITS7Eaeq9UzgodxKQ+swyLvp5W70XRwmfJ3acw4ay7rjv+9tsAQj+N93X3x+LD9Z4GTFn3d+mSf65YO33pJXfOh6rIZcB15+kd8cgjTkMlg6CTWYHu9PfmdZ13d4zDdgk257m9HRtQW4g8Ge+H58j+i46/sO9vS2p3ZQYMiFkSes6RYSD+vuz3fVt4L3f9F1/s4q93FZB5UPuKFVd07AwZMPbVJ5/sGNVXycsiBCHKuLHSckRZvo3guhg/i36/N998MwDg0EMPhcFQjahKocFgMBgM7Qe19M6d4xDdqTDnQDHC4+OPO8Fohx0ohLntU0+5rQYyW2GFqb6cswegTQK9IXS5k67fKhyqtwYVCUZhZDwH2iXkI06yrkneaJzX8J5qvMt7sI7Aqri+oJu7ek0QmjRQu5Xu8FSgmhnDnKH8H3wwake+zmLKgsWDqhQaVl11VQDFYCKV7AjK3Fgyrbi5OSrLOq+5xg2K739yIdG/AAAgAElEQVR/dnRPrUcHeKoc6+fA54eTGgip3BR5ZFSa+rn78/X+HjO/+123n7i+GG1Q/dNjaCjVHt6bopF9ITYVRL4+fXfZx7KeS+HLxC6cUOAZCPhomIsCt956a7TPtmj63LJ3w0cdNCj2ggiIJ4QhQ5znisZj2H77naKrHnrovujeOo7JPLBfaTtBJmHzu37l7ivGFmQiis9RPgZaI9ao/Nn693fbDz4o19hT36syD8ow6I8Ln3211R4HAHz00Xal9el2zBjXjiFD2I74hyTETmmV/bSHxWabOZr65ZcZmyJO/3znnXcCAA444AAYDNWEqhQaDAaDwdB+UDOeMeN1AECPHi65XBDaXbkyxerxx2Mhy8d+y8J319Y6oe2JJ2LB/zvfcT8vFGxpR6ACLhUsCuOVGAcNpvbxxx8DKDIWQPB++MgHi2Psh2L0ynhLpY79xnqoIKmyE5KrOUViwi9+AQDo/dhjKAPd4HWJuXZPl9q+5sEHC9dkz++VvybfpkWNqhQa7r57CACga9f4xVGTGTAA0fEyBiKV5S+1vs8BrslWlAFQuit1H5bbd985/pliI54yt6H8/YCgydNmoV5iA0zd18Xi5wdQJ/RWJUYm5eXA6/kBMTLi8glWJLW2HB0TwyK9VyrJzcLEXXfdFbWBVCTbz4mE2mNDw6PZtd26uTG6+eaqfrfdt+yPnXba1ZeLz9PLQj1aOIFyyzZuu+3g8vvzHcnkt+XdziuCjAPvU+YtAQDP7vXrQt3tYSXySLFsKS8IMg+0dVC2heV69YonbNY3ebLw6FJ/+A54nExGzCrmnylcG/8IM37Diy8+ELV1RgfyBjIY5gdVKTQYDAaDoTIuvfRSACGfQ1hKi3NOUNjJC3Zjx85fDIFUKH7aMqgHAu9FA2oqBlRy2FZ1uVVWgALYlClTonqAINjrPVLLory3enJQMSA0dwX7V5d6W2TJtyWxnFUw1t09uNZrUr9WpqPPJS9clKgqoeGyyy4DANTVHQygLRsGtw02KcVyKUYhtf+3vznXnGHD4hdVaT02ZfOgg4SMA8+PHh0HGdHoeABQ+9a7busDj9T4srPPPhsAQBOdVPhXbUvKOyLlAcIPqY/PYsmAJhDtK2m3kPv/v9u59eeeU6dGbVbXpwk+KEu/RWDTwInmb3/bMWoLJ1j2w8EH/ysqDwBdu7YvxGt6/MVePE884WJfKANF9oOU7Dbb7OCvK9f2t77X0aZkGJ7zsRX4TFvd80sAgXFQMBYDUdPGYwat2xXy0X8LcRxSfVApTC7jNOi3tdJKLs9GytNp5ZVdX3JMffwx+0w9mNie8r7MX5MyKNT3oJ5GtJc5+OCDk/cwGDoSqkpoMBgMBkNlXHjhhQCCUEkN+/XXnS0DVwG59eYGKEvnoIamugwVlJJY6SBTwHV+Fd40eBfLc4mNbU+FF1dbCSoxbSX1I1LeEoz8SIGSdRejYSJqA+9NJS/lkp8JwvORNyIlRGeK1DnnAAD6/fSn7a7z66CqhAaG6ixqUXFnvv++O//rXzvaioPo+uvjcKNRDYkYBZVsFIgUNZfyeki5E9FOoKkpdvUp1Rzb8B8vu3fK37yS10nxtvGzvu89HQa8+WZ8Xur96FvfAhBHz+RH2tUfm96rFwBgWW+4pM/UibPcQvSiGDVqVNRujdERjru23HKLW7duzAVbGT7c9f3zz3tvhc3b7lt9V50P2i8ud8op0XkyC4zvoDE1FKym+ZcuvkKn39BGIdaQlUmohMQQ8YjjNRT3U3VWjo+Qh76XqVNdn2iESTV+I3r3fsLXX27rEH4kEdXjWxud02dNMYuck0hv33///QCA3XO0tMHQEVFVQoPBYDAYKoPaumrQKmARfkm+dCmmqIzocmYcCXLPPV3GyIaGedH1qnjpvi695b0g8udpp0ADbLVXKDOaVrsKdXmn5wX7SVkSbbMu8bINrI/1v7+1Cy2/xjPPuOv4rOKWXptQQsvuqWhJGM0vLFSV0KCDIdBifKHuRfzyl7RMdhoBXyRjLQDAtde6QVIp6iE/hOOOi91bUuVTthIprUmpPw7uhoZuUbl+/dygIxMBAC3jygfssr9zeQWm+VCmqbVdReqj1uOshx9YpuH5D4Tn2R5qZiuIpX/+HFGw3VAGSMovDLAN117r7CyYkAcSqiVEFHRtijxb/P9bbNF2nytzpTE2Gm//pzv+mNOW2aecUHX86jacZ5vdloxCbmpKtC9uZ+6Mb29r4VgRpKudr95qq+k93HWpuApZLYlvqNK3SG8LxndI1fP662MBAOutt0Pp87Q1eYe2lBsNbraZ84ZhTgp+7/xRIo1uMHR0VJXQYDAYDIbKoGBOjffmm51AT5mbMRa22KJc2Mz/H5ZlKICmDJtj5YLCd8qQmtB6GiWnAp+BbMAXX3wRbalMUpDOJ9yjXcTkyZMBANOnTwcQMmPS62E5MeZIJf9LeTtoKnkqEnwPhQV1Mg4snxD+o3tS+WMbpU3jfQCN/ttui4WJqhIa+CKUYQix4v2eRGUs0wzIHJBxUBx77Kzo2tSaccqOgFBjnxTNxeMcxPwAeP0qq6wS1QMAHw4fDgBY+7rrouclw6ADnB9jyggopa1qm/lRqpGVarepSJ1lcRqSlvJiH1FXgS35OmCUvoL7k7ijcdyxKaFfAgty9dWclDk2NTFQfC2PZ5PQHXdF5bRvt956++i4ImWP8sILz5TWm2K+qAkvs8zg6LqZM52HQt4+hRMvJ2RO8oEK3jC6B8cy2bPu3V3gIbJt48dvVfpMKSZCnynFOKy66qNROYLtevXVOOPooEEuumOK2s/Xpa8j1UaCfUCDO4Oho6OqhAaDwWAwVAYjH6pdQEsL17+dEPv881RynLQzaFAZ0xAzDHV15cLbrrs64+Xm5liJ0CVIQpcxuU9BtUlCyGscBypYhCYuy1/LNtAegmW5xMq28t4aVC7lfq7PokyDPnvKrZ02DlmywbxNg9+2CvuBLbZw14gyCJ9nA6uvjoWBqhAa/vjHPwIABjDUY4bWaEspny+uk0RIzL/o666jJ0ZcI+0egmZY7jVRSRtXQxlqU5988gmAoFms7l/sCiusACAMsr33niX190UKs3/+8+jeNfIB8J4MftKnTx8AwIorrgigmJQlFTGSUMaBSOUCSDEVQPgoC1qk3AvSrwsDbP/112/v2xkbeIUwFC3R/jV/cP163NmrZnXV1bVEZVPxFyDBdbTL2+v5ktUm+88++4RvazzhaCTJlG0P2YP6eucZw0l2wICNAcTpiNW4jEhNtLrP/qeNTt++LjzwZ599BiBQy2xjiK/QNuOg95syZTAAoE+fp6Jy2gepqKxl96hkw0RohEhldO644w4AwIEHHljx3gbD4kBVCA0Gg8FgqIwbbrgBANC7d28AwDXXbAIgGImTaQhLbLGw3tSUZxq4zMufCc3TUBfVUUnYSgVso5CZSh7I8+rpsJq3qGV5NcwGAtPAslTOtCwZCApvPK5Lr9q2AmMg+TT4rB9ssw0AYI2nn46fmTYTwjiULTu2iMcFvJBe6wX/Tv7eH4wf7+61NDMNfPF33ukMPDp3Tq8ttoW8/YK+lMAwlNedCqGaYho0vgMHI4OAjPcvlmld+/XrBwDo378/gLAurPXk26XPQA3t88+dy9O777qIkUzoQhuElVZaKbpeWZFUpEi9r9pE6LNSc9ScAGVpXwv2DuL4njEP/Aj5YSyAOA233347AODaa934osFX0RaDTWJ/uefKMwwEn2PECNeXl1/OCbhtT4yUjUJ7oyQSTz45FkB4F2QBmCGWY4Bjoq1xVrY/P2gvtavGe6SfOeHT8I1pjj/6qDwGQmpC17E2aZJ73we/+jP4AgCAx/bYIyr/738/AiCM8w02GJxrfYppqC09z3tvvrmLx/Dcc/cCKNp3GAwdFVUhNBgMBoOhMigMclmpqYnuwGQSXLn6emr1sUD11FNBOdpqq/JMkKpY7bzzRH+PuC3FBGCxsqHLokkFwoPnKejml8aAIGRSUAaCAErBkcoYFdFUmH9C4y6ozUNqOVqjWLLNrK9FbBgaGeUyET0TAFp3iJfjWKJOXNvJWiws24aqEBrUmEUHL+kxbnWdNjAMRS2NXhJlCVvyaK9tA6FrldyngRLtM9555x0AwHPPPQcAeNNHVSS9yO3KK68cPRsQ1nhpq8D0r/QC2HzzzQEETW3gwIEAwgBWJoCopM2qd4rSiKrp5T/iFJLaYigQnc+8KBZAZMgibVpuXxDsD+KxQMYhn7sgjE3XR8OHuzJXXBF7XhSdsQqt8/codwFTPPPM4wACo8V3vdZaawEIXjiVsobquK4Uyjf/v9qyEGr4ppk52Sb9znm+l48WSlucVVZxtjqPPrpqdN9UrpPUt3rrJn+IH94Rc5mXhfb9G288mhVdf/0dUAa1WcmZs0XlttjCsRpPPz0aQJy/xGDoiKgKocFgMBgMaVx++eUAgA022AAAcNFF6wIoejoQTU1cs2dQOcZUCAoEdYmamjjnRFAaYu26krCWMqDW69XmQV3teT0VMGa5HDduHIBY8KKhOYVnshHaBmUAVDjXpVhVhCoFHlNBODOLZv3++gbGthg8OKsrU84Qoy6R56Ilp1gCWOCMQ1UIDcocBLuBctpMO/GYY2ZG18X/l7/s1IdQaW1ZB51q8azvm990WTNpw/DAAw+U1kccdNBBAIKmCISPZOzYsaXX9OzZE0DQMknNpazWCf1QtO2VNDdNM8tBr5pgGVIMg76tmjbqaC9oqc7Ij4yzoNkOAzSmASfD2Kgs/z+f/fjjXRm6uDFSZMpUoNOB+7p7UbMfMcLfszxnCb0kOJlxciO7RLapGOukPNAOj7M+NRRT5iF/jIwDJ29uNVYJ28JxwvHJb4MUu44j7vft6zyKDjiAcR3GAwiBfCZP3j7qI6WQK3k8pLyD8t/LW2/F3ik8t/HGOyFG7OGVYirZd2QLDzjgABgMHQlVITQYDAaDIQ3aMoSl3HL7AyJ4S5AVcEJLQ0NYbvrGN1zitv/+l4JLbPBMVArqpkJiYV0/EThP76OCqoapZy4KGn4DQeFczyfVo9eE2iSk2pYKy64eH5UMhSls03aBygCfWL0o8lHCtI26zZQwYWIoRFMxXVCoCqGBWlNzc+zTTr0z9Fm5dt/WC2VZrgFTo1I3HrUy14GuMQp0UIZniLVtalfMbsdsd4pPP/20cCzFMBCk5mgwpB+GxrGY349WbSJWuO++6Lo53/lOdJ8yhiHpNUD7CL5LCXrydaz5b7vtNgCBYQhuZ2p9n7Uy2k8xK3Gb3P+zZrmy11zj+t6boWDkSAaPKX+extvdhF33nX0AFCOLPvSQ6+sUm8N3TzsAZRhSkSBZ/7Rp06It2QLWwx8nfh/5/zmmNUYJbXC45XFO9vT6Yd2kkvmDSHc5tXHi/fjD0KNHD9+eFwAA//nPoKi8frsptkW3Gugn/7+O49decxEzN9xwSOm9uP/ss3dHx5WlMRg6GqpCaDAYDAZDGhSoLrzQGQQzMFkQZhiZkIIQBZ/YaLWxMQj21NIHDXoNADBu3BZRHanlS0IFU13uSS35KoOgipka3FLgoo0DhVIg70USX5tiR3QJK6WcqBKYKq/G4JlCKwbG87yQmLUrF0lS+0OFXxWC6ZFRr7YNCwhVITSkwpByTbmxkQPCHf/Zz9xA+cMfnC2DBugAgiSv2s/jj69Rem9+QAce6NZPqeGlclHocXXxUcaB67gp8Bn0w2sL1MDUsIjPotppyr+d9+SHx9wAzMzX9wm3rjtXaLTOPv4B92fvv39Ufx6Za5Jfj05pf6n9+UEq30N7cxqQ0VK7Bd8tvkx87ezZsYfPsce64z/4gcteucMOXAPnROr2Zt3sGIfGB10uCk0CxElQQ+6SYejczomDEUoZ24OxENTWZtddXbZGZRWA8MPFreag4Bgne0Fmgffms9CwjeOM5ckgMNYE78Nvkd8IPY7IVCy/vPNQeuUV94OaMtjTMaf0eVloYLZZv8uQUllpbu6jFGpLYjB0NFSF0GAwGAyGIq688koAwEYbbQQgb4xbLmQHLVXtEjT6YxAMKZSpoXmlkO7qLaHMgTINZbkjgKIBqi4F8zoKiRQagbCsTFDIU4GQwrXaNKRsFvTZ1JhckfUZn5kCq/RFzY47RvXm/0/aMni0SFvr50PBnB9UhdCgqVdpPsIX2tBQ/sJUC8j7lE+dOhUA8OCDTiNranLUVmtrnHBEmYFRo9zAJOOgtFMqdgHB4yzPdV0d3ArGaSAF1xb23HPP0rZo1kGi0jo3Pyjuk5VZ7VHnr94o1Jz2Rd23vw0A6ObjSMzJfdRENiGk6D4x9vkquPHGGwEAN920s6+yfO26iNjynQkJWf4b3yj3wS9HfA+On0cfJePg2sbnHzPmHn9vVzeZBH4TZMw4zjTTJJFibnj/N954A0AIQ5yC2vzk1945Lvht0XuHNglsEz2AOA5pr8PraV+kGSB5b5Yjm8Kt2u6Q2dhwQ5dd85136qN6tC9Sdkqsr1+/b0fnAeA//3k0Kqs/NiuecgQA4POL/gYAmDcvjhSp84N6oBgMHQ1VITQYDAaDoQgGuqIAVvRciLNYFtkC9QoISy8Ujp5/3gldTMIWbJLLjZhTXhO6HKrnNRy95qJIuYITVG7yAnMqIV4qaJm2hUjZLCjTkOoTNT7P6pPzzcIqACGQnfYjr81yUWgAPHpRTJgAAOjPCr9mvIaqEBrCC4g14KIRSnmWOm7zOevJMKhRDQdLpXVualgaVlTpLtVeNOkKr2d9++zjrOW5jkttjT7peZZgf28jMGrUqKht1LB4b2qnZDP0o1QfcaXalAZMuSMR2XvxqVubs/VdV66bt1sAgNleS1zOZ+Ik09AsHxXjMrRywuBHlbB3KUNxAil/xykDrf/+N7ZlUA8J2ti4a7SPIPtxnwdm4YHS4yHbpHsGjmW+q5TNSyrTqLJGlRiG3XbbDUDRW6PM3kizq7KtGtGR4zQV80QZB/YJvS34zZA54DdCNo5tI81+8MGunokTnS3FmDErRffT9z5gwPbR+TA3h7lAXe+UcZh87o2+U2LXRo6dPW66ydXty9/1ve9F9V177bUAgGNpBGMwLGZUhdBgMBgMhiK4jn/++WsCAOrrVRCmkWeseDFzAeM5NDfHYc8B4NZbnbvoNts4IbBzZypU8HXHbUnlkKiUBE0FT3X/1XpT7u1Evr5KieD0XmqvQWE85XWRCgKobv80Fm+RZ8m2vlyZvUiNMA2ZIirPXbBx8Oe7LGAviqoQGqhxBA0Xfr/tuAK//W1Pf5yW5l2zc/PmOS1lo41k/V1ejO7vvfcX/vpYe1Y/ayKl3bM+fvTc19Ss6g+fT9JCK/IhQ4ZEbaVVua5vp7ILqm+40ob6QbFNb33rWwCAdV58Mboum56eesrVs/XW0X3rcoN7GR+IhZ9Yi/Rn1lbWyXvw/JprohIuuugiAECfPn0AhMluxgz3zworxJMaPbaWX7412g+eDZwgYoaBOShcmfK23Hylq4zj4J7H3PGUtTy1Zr5/eqzQq2EHn8SG70azJeqErJMn7Q+23HJLACEHytChQwEUkwoRGr8ESHsQaGZXjjfaNnB8plzp9MdC7YEYzEcndDIZal9ERmKZZWqielLsono+hNEI9O/vMmW+/faYqGzo9/IfTJYjE5FFF33prujZzbbB0NFQFUKDwWAwGIoIhrGxG/Hw4fESGoWUK65AVI4CUJmGS9ahuZnCWl10nHjkkf4AgN13d8JbKqEdUSkUfyoeg5ZXoVKXiMrOaZh1XepOnSdUoNRnTD1bi7RD95u3dcJnfUmguKS3Cm0Y+KyJ8gs6XkNVCA3Urg455GkAwP/935bR+bA2jWhLFDWFfN6A+OW3tsbGJDrgU644qch6oY3lGofaOJA94AdDLY37ec1RWQgyDLRWp5aqkR+1LfqxpXJLsBzXtXnfGqHLMgMd9gX7itpwjrpLhZAlWGez9q/Qf21B1+HJMHCi5b6Om1yMmOh8iPQaT1q3XDUjVzalrcbPu+f2bt181MMPR23kO+S4+OILx3DdddddUZsee8xRFXvttReAsL5PewLN10AwFsIEbyTFcjvttFPUPtojkFGg9k6GLB8HQp+V9+Q4ZV2MAcGJmTYOfFY+Q4p5UMaBDJlGlOT45L4yDgcc4L6t115zmWX//e/1AQDbb0+7j/gdrvYT5wmRn7w/+t+/RceKjGUcd0OH+bhx/4qeNWWPZTB0FFSF0GAwGAyGgEsvvRQAMGjQoOg4lSEKtMFbgoJyXA8FYXpN0LYBAOrr3c/Ds886wWW77WKtW0HBqSyZWX4/lUOCUIPsVMZJVTjIEszKRVlLBc1L2U1om4lU4sGU0qhtLThzy5JbIRtmCdOQBBWU3/wmqruWS+G+Xz446SQAwBpLg/fEj370IwDAyJEjAQANDa4TNHlIkOpjaZ2vLD8g+FG9/LKrY+ut+WI4EMuTr+hLDvWV73MgFzN0ltsLUDui9sU15zLPBtZBLZBrxPxQUuvROsCV/qtEG1JDzHIA0ChIPiAGLmmSZCxRZsRUohZtI7e+Df133rm0jWVgey+8cBvX3rqYaShmtdT+4pbjiu5VnBhidgoIk8TBw5aPrr3piv9G+/c+/njURjIMHAefffYZAOCf//xnm8+olO6UKVMAhAmU9i08/5GPmcH62XZq+ZkRlWcLlK2pHNuiOHGSSSDjQPaE41UZAjIIOvZTVLB6V/BZMkZM2spnYgyUbbeNPV2I9jzrwIHOtkQ9uYh33nE2DxrXpRKzUClokMGwqFEVQoPBYDAYAigIXXQRc0044WPYMGrQ8VIk7RB+8AMnzFx5pTv+xz+6ZarTTotdeoHAWtTXU9gvVy5US1alJOU1kdLuK4XmV68JbikkcukNSLMelZgFNSBW4U2VwFTK+koxLFq3c0nzOmkGyxz7MssvM+u1y59xRtzoRD9ntg0LKEJkVQkN7NCDD34SAHD77ZTuuSbvyhWDgJQxDa7M5psz9gAZgHh9mx/fXns5za25OWEWzzsJk6AGNoUAHaLFkDUhe8APgB8EtSggaFa63kyGQetWbVQHVSrhTCrSIyeYCd6Ip7/3lsgmC1+u5fnn3fXei6Iu9x6awktzZYRZaPL3yKhKzD+K9F5Kc9SYCtyWMzK3XeO0+IxKzNXHMvSWaMk0ybgugtoutV+u+6eynipo+6KxNKitk1FgOR2PHBNPP/10VO+OPqwtGQu+c00xnEfqR0W/Sx3TZFk4fsk8KNOgEzHLc/yzL5VhSLmkkQHxXZNOVsQfmtz9K+VIYVH1JFHo2GK9p556aml5g2FxoaqEBoPBYDCUhYLnlhpv5vgMAGBWSwqJI0Z4gd4LJxdc4JaMTjstuHRrUL3nn3cC6NZbc5mIcRtiYVCjJGruhFSiMBWkVdtXwUoNYinY0oW2rIy6vKcESi2n23QSRZ9hUrwvCmyJN4Cu8e3T3BczvKExAHSti9/VN4RhyETYhLVtpsiSafAKyVeNDFnBwsJgMBgMBoPBoSqYhksuuQQAsM46bv0uxBZ30hkp34YGugSWp3pmOSAfiCfugkAPuu1uu33kr40ly/mNMZ5KiZ2SWCl5UmKlQWQ+FDbL0MgtM0wUiV7T7abaoNHPiJTrJeslDaz3bRZXy0zaz/tRa/9wn7H0mbGNyxS88CtJy7HmpJpUVipbjihfy9WMdeG61sL/rbLcco93keR5Uul8vokTJwII4Z239Us/7GP24SOPPBLd+1GfPIwukxqoS40MuaSlWhuDOimdzqUEPru63eafQQOiaRAxulBTI+R4YeprjcbH753fFJ+N96HRsCZ107DhGj+AWz5bUxNdk+HvF6/RTzznhqg+/T9/LccUXSo1QJ1qtqmlE4Oho6EqhAaDwWAwBIT4GE5oOeEEpaRjYTxYA9FQ0m1J6VOoPP/8YER4+ulxplSitpaie2zzdO+9zntrr71c1lIKbZ0TwYUq5XpJhaVWRY0CL71x8i6XFDDVBkcFSEVqqUQFY0I91VQB00i3rF+VzC+9fc3ysvwE5Awftb/kmTJVSKPq/v737p8//7n0mduLqhAa+EKoHV1yyQYAgPr6WIMIoXS5rsREVY3+fNBwt9oq1iKCdhlrn+orXIj/LQM4FbY3tXaWWt8jaKSlbmRA0LBSmdxUw9J7KlJZ6Agd8E2yHlcjBoHZs/ltAw0lBw8O90yE7tXEYcm2t4NxYHt//GNn5PenP23r62K/xO9cfd2ztmbW4W7/u8e5SfXWqyUKFIrMCV0rlWHgZDHZJ/Hi8zJRGc/TnZbaORObjR49OrrvmDFjSnogYGfvqkrtnT8WbBffJd8tg0QxvPQ222wT1ZcPI806OWY1mRPbTqaBkzsZBk1QpUyFBilj23k9DSF17KSi9pG9e+eddwAAPXtuEt2HWO3Mw911fv/j827KndUfa/g6x0bPoiwV76Ft0jV4g6GjoSqEBoPBYDAEUBD6f/+vXMAtaus8Hi8tUhkpyyVy3nmuzJlnMkCSE3BeeSVWjLbbLhaAuHQV4ue0HfSJSEWqLWYzjj3NeP6hhx4q1Lmmz03DJStFKjV2iv1QDzLNx6Pec5kA6nPEtDCyrwjpU/313b3Avdzpp5e2N9+WzCNLYt2of18h7s5vf+u2jCk+n6gKoUEfmsF00kmmqBFTqnfXzZkTmIaePe8FAEydum9Udxi48HXEAzcVR12Pp8JIK3OhH4BqHPyIqXnSdQ4ILmrU4FQ70YGeamtKq9F+177QZ2RoZ7VTULosf3e1rM7eIRkIMjCJ/m8PuD4f0k2zP+J3UEyVrXYsiJ5LGYZ8f/H93sfsdn6fjAGfm++Tkw4ZCJbnu1UGgPWQOXjYh6GuBJbbzvuHczKlls7xxvuR3mXkQbaLtjV55ovHaGPDOtSWgW7EfOcsx3HF8nxvrJdMBMvx3izH+rNfc3sAACAASURBVDXJF8HrGW76ww8/BAD07u3C0iuzwbDRH/mkUhquHigGgiLULkjZOD77+uvv4utxFb3yyj0ALKiToeOiKoQGg8FgMASk1vdT0Vz1PLfTprnMr3Pnvuu3IY4El5vOPTdWNs48M7gDAsALL7jj553nhOja2ph5SIZWFkVKlRJVTlIMBZkNCtD54E4qmKZYDGUYUsvMGkdDl8B0uS+Lu+KX4qZ7JYBKQw/fx929i+U3zjyz9Bnz99S2q5KmQZ4K578mqkJoGDFiBIBgMc4156J/cHlmMu5vu20YCJMmOQm/vt4NSOaV1yjhY8euAQDYbjv3USkzkNLaU0Y+qXCxGgqXWw72soxxKTpPgzdp4p/2fhCVIrFpOubUIG7y96/1Kby7dA0pypVpIMNQe+650b2ayRJwUvOJvfCXv6ASNKCRtp/R8tJppJXiLZ+88oZH9z/pApCxT5iIjPeYNm0agLAez37gJJPX4IHwLmkvQAaga64v5wdkqXr37h3Vyz5i/TyuTJAmVMu3Wb0bNPU6+0QncrIcbAPro+1DJS8e3odMAscl61t9daZod8+89V9+4p/pr669wm5BfhB43w8/DAGwUlEJ2bZ8hMV8Odb1+usPlNZzZhs/HgbD4kRVCA0Gg8FgCFAhI8U8BCWjfFmVAvCsWQMAAHPmjMvKUCCkwTWXsC64wAlx9K7gLVJu5JXaqMbOKuylmAYKk9wyyy8FXaCYYZVCeUqpI1Q5VPsMva6YLTk+TuWAgrHm7+l+1lnR/cuWOjMhWdJrqyCqUC+Lr4uqEhooxYeoZ/GLGzHCvdCrrqIngnuB22zDFLphMOuaY3E9uzy8c1gXL/f51vKEfjiaZU1jKWgYYK7X0q0of0w9MPixs016by2vLEfBVkH2+Wz6QUIGcaO/jkxDfV1Ro9ePsuaccwDkwkmLNvlV/NdP90ZF11xzTb6ZuX5on51E6qNkm+733iFA0faA92IiKdqocKJjH6bGlY4nWv5zIt9///0BAKNGjWrzGfbbbz8AQP/+/UvrI2gPwHLKCGlyKCBo+Pos+k3oM3FM076DfUd7DmWGUrS1xiHRBFern+VsFMgk1NLryO8zzfXqZx0JoMygzG379g0eJGQddF5QFzxl43T+IcxrwtDRUVVCg8FgMBgCwpKZxjSIywVv6Jh5YKbWsAS5QXbNzJn/BhAEINo4UEs+//zpUZ0q6IZ7lxuJU3BKJbhKJbaiUsRMrRRSKejmBWyWYV19+vSJyqbamlL6iJQruD6relekmA4klt7y/2eKkzAHWf8kwkhni6xLk00DQRqKnTd8eNzxTC41bBivcAPiueeKCZlSOcpTTAMtwqnNMGIf2Q9+UCzHwUGmQD+IVNRG9XTQiHz5tW4NzKIx31MxIrjlZKCMAzU81s/rlf7jM7BPNE6DDnal9sra1JQwhkp5bMwPOEn9v/83FkCgCi++eDvfBk4MbF/8If995PRoX9mivPZILwjigw8+ABD6jluNOaAftrqvcYJkH37DG1CxLUO83YhGjNxrr70ABOaA9yE7wHdJZoR9o+9MJ8W8TQXHPtvILdkIjmXem8/EMU1vBk7oSilrf3PLb2y99Yb6+uHbLgxHJ3pBxM9AhoGY5PfpPcE4DdmPWK7s+OHDo2fiD6oyDCl7IG1LioEwGDoKqkpoMBgMBkM+LkD5eQ1nrSjaOnCb16g3BgA0N0/wdZav+6cYhtRae0roTrm3U+ij0MlAaBRGNex4XhCjQEkFiMuDq/tgcKnAeGpcq8m3iBRTofWo0pjKKMwl3XyofWUYMtZDXNqzNqAcX8VdvQxVJTRwkBx77LMAgObmrQAUXxT7u74+Xi/PUz4hLkJqjTyuU8OHsi5NXa0W5PpBpDSMVCCTlIZSVjYVl0GjTaqhEc9zn0wDPxgaQpXRf2X72ZPx/l77VQt8IFisN/3mN1HbaNPQIgxD9g7b4TWh4MRBOwD2x+mnu/H0xz9yPGUP4B/DbZ994w0AwLnnDvJtcm05/nhnAU8tPf+snKSI1IRIbVo9XdQ7gu+Iz8Dy7NN+/foBCDkk+C7JfPC+tIfhdfSmSHlLpCbD/KSpXhBk38hoffrpp1GbU7Y4/IZ4D2UalHWaO9c960svufObbRYb5K3+06PYQADhfU728ReIwo8i/1FWsoTm1W9MlwuIVGyZSm6FBkNHQVUJDQaDwWAIAnwqnL0GIktp+21pn6klKT2vAhOXbtUtWN1PUzYLurRDwffjjz+Oto/70OxM0sbr80oMBcyxY8cCAHbccUcAQbClMK1Gtioca9u1/lSaAULfQyEVNxU6Mhs5BTd7d5WYBXlPBb8Z37b3338fADCg9Ikqo6qEhvAiXYz4oGVpnvbYGGizzdxjPv98eNzOnd0gaGigxXWcI57Yc88p/nw8iPjS6UqjzIMyBPqRVqKK1EhIP6yyY2rBXclbgtDrCa5R8zpqgKolp9iTrNz55wMA6mh74VkFIHwAuk6dCjlb/xXjEgDAqaeeCgC48UanYWaZMzMbEL4rve4ZAMCcOW4SPP74f0Xne/RY2V8XLuREx/gMZAbIPFDT10Q4/DFgm6hlk2Gg1s7jnKD5rqjdU2tn1ky+O96PrAsZBrX217GlNCzfT96bhzYJPLf22msDAHr16hX1Sd7jIn8Ptpk/NmxTiAw5OCofGDWOdzcOX3vNtXXzzf24RIxKP4Kpb5Rvt+xqHb/aRkI9RzTGikWCNHR0VJXQYDAYDEszLr74YgDApptuCiAISvObGZJoD+Mwe/aavszc6LgaMVMoZOCylBEoDVw1eZe6zlKwVXdzMgwEk7TtvffeUX1AMUgaU8jvu69LH0AhWw3TK3lRFJfI5kbPpAbxqeiY2fthvW3FXGDb9ByPt3M/5QTQXlSV0MC1dR1kTU3UkOMXHTRsah6BRXjuuViTbW6mRhW/EKZ73XXXj/y94kGig4iaHwe6Zu5TDZoaJq3g6aFASk8/uOYy2sqDHxnbwI+PUBpRbR/44WhbNLcFn4UfnKJFKDhqjJkVu4/2mK9L687aJB9dLZ//pJPc9pJLStvQFqjpcv2edZ9yylPRvS+80EUQ5CSn2r5mZ8yn5CXtyfdIOpRMFN+RGnlxjGvbqH1r1ES+My3PSYv1a94HMhpsX4pJSEU05Q/D+PHjs2voiaHMFCdOvZfGB9G4DDwe2JgHfL07R+UIektw++qrfnvo/wEA9r71yKg8n633WfFxPT/pf2/07eW3GL67uW+7XB5rrrlj9ExvvhknT6qU8IjP8pOf/KS0LQZDR0FVCQ0Gg8GwNOPkk08GADz22GMA8poxGYdyQ8xKSzJtnWOIfdVQdZ9CIgVTConc1+UnIpUNU5kLvU5x9913Awg5KIDALCgotNMTY7etnBH0m95eQm0YdNmIy40UiHVZmkIhz+vScIr5KX0basuQeqe6vCbHa3n8ayzxAlUiNJCSW3fddQEE5kAHGdkC2idQ4+ALpx0DUJanojwrpRrlFDMmxlo7r6M2SvCDotZKrZTlqGFSu1eGgYMvHyJVLe/5kfJeup6trkma14L7upbM8rr2rHEedLCqNqWZPIG0BwgZhow25AX+POMerIH5x49+9CMAwbaBjAnvzef+wQ+ctsj4H9TeOWHwHTKaIt8hUNSq2QdkcTQjJO/NyYfjQA2n1NNFs1JqXgf1ymA/085Ag9ykvHXYDrI07P+8fcLTT4ecDEDwJmGb2Gb2t+ZX4Y/CM888E9Wz/fbbA8jHIbkjqjdEKOW3sZdvs9vj3HrPIYzH4A7s7RkGjq27D4m9KYhNhGH4z3/GZufWWmtw6b0YM4LXBC+t+If47bfHRM9uMHR0VIXQYDAYDIaAsLypuRBiZSdseWW57X0xYmRR2Nd1/5TXBAVJCte6nq+JyijYqhJCAZuC7f/8jzOsPfRQ146HHoqXgIj2pokHguD5wn/+AyAI4alolQSftVJad136Tdk0TPHG4d398lRescrK+v2CwW5CaatRDw0qsgz7/xVRFUJDStsiwiAuj21A5qGpKVyndhEalyEVRyHlh802cYBTO+cgUn97ahbU2unDzkFLai6wJO6Fd+/ePauDA5MGQjzHZ+P5M844AwBwvvdi4EfKj1JDnIbAMfHHTqQClqQiT6pvet4uI5U2ty7xrsG2LIBAJUcc4SL+3XHHHVH7NaYG2R2yAnw3+s7yLBDfm7I0GmmRk49GkNTJRushlClQa32+U07kHCM6VvTdKdPGdk6YMAFAsF94KpdvQ0Hq95NPPgEQMjf++c9/BhDYFDIPZGq4/8ADzoZB87GokRq/DfYRTXlS41NDJ3N61r7l+RdfVEp5h6zMK6/EZTfdlOPS7b/8cuxzEdrgjnbp4t5X3h7GYOjIqAqhwWAwGAwBIUJhLGyHxHuunDIMReYBUfmyUPsDB85mKbkmXv7lMh0FSi6LUhikwExBVpUUXdJVxemss5yE9vHHcbn5AeM0kAXZezsXQl5tGFIMw7/9kq8mFNTlZz4bhfOU4SvB4+/65HoDzzsvnJTw/AUhOCtWzkAUXOw7f/X+A6pEaDjllFMABM2jrq5cKypGrdNwpSEOwcYb06c7psSIsF/ZJaktsB4OImpR1CyYgbESRo4cCSB8eADw7rvvAghr9JdddhkA4IQTTgAA7LrrrlEd1Er5EVNzVtuGVDjY1MBn33zoP8DVvZEW0ZZRUSp6ZY0wDi0y8BdUmlcAOPDAA9tVbvTo0QACs0MNmGv3eTaJE16qbzlp0chLs1aqbYIyV0rppiY5pU/JLvG4vltllzgpkqlQBqUtcKyeRE8XjxNPPDHav/nmmwGECbZ3794AgLXWWgsA8OabbwIIrBzvzT7guKZXRSG+QmYcGB//50HXxeUTTENb0DKBeYjnolRdfJ9nSWpkg6GjoiqEBoPBYDAEBGNkCiOxIXZqyVBzThRtGYJgpbklUiGuKTzTrZeCJo16uWVsCQYUU+VEDZFPOcUFRmtsXNFv+wIALr/c1X/vvfeWtqctqL1EKqw3wWd+zwv1vI5tJKvCrQr1q622GoDikq+CS21c4vygRIjktWv+8Y/uwC67uOMPPhidz7bitg/ftjX69y9tQ3tRVUIDB2NdXawdBU8ITXiSjgO/0kqOZjrooNhb4R//cNrOXnt9GtX10kv9/L4r17//W1HbUslZCE2RmmcM2oPjjjsOAHDddddlx8gwEGQYUuCA15wAqSQqKdsETfKi9hyfe4aDH07zwQcDAJbxthVlk092r8RH3CLxGwYM+KpBUL869tlnHwBhTV7tDvKToGax1D7kPlkfdStTzxhex0mJ70BzF2hAHU7kbIeGH1avH0KzbzKnBVMLkykjKwAAN910E4Dg7cA4FpXAZ2ZbybqsuaYLKsTkQu+9917UVvUo2u3DawEAd/c63vdBORW/98dX+XLDomdVViDNEoT91I9ApWBKnTu7qKKzZ5vXhKG6UFVCg8FgMBjCctHyy1NZKV8rV8E+eEKU20DkmYY115zt6257aZaCKtfz1fNAk/6xLeppQPbk9NOdkHj11XGGSSpsCyJ7eCqCJqEK0zq5ZHQA8PqkSQCCsK8h9ikAc5mSCpven6ACp0HZgGKMiEk//zkAoO/zz7t77r57dO8aepWwoySY2tdFVQkNHJTdunH91m3r60mjlWeiZLm8VqBrzXxJ3/3uTH+t02L4wgYNcvQTNayGBvW+iKFa+6RJG0Rtqa19oD2PXMAxxxzzla4DgtaowVR0QlFakse51TXl1HmNyzD57LMBAD1/+cusTZU8LbJ0sBJRb3HgyiuvBFBkAzj55UPWaswLZQ44rvhO6EmgWS5ZTlkeQuOIcP+zzz4DENzStvP2Jrw/kQqbq+9QPUt4Ph8V9KijXDZJepVoCN4UOKbJVDAh0cGeoWLYYLX/ueiiiwCEPnvEMxOrLPcCAGDLV18FEPqEDMS9vX8IAOjZI/b8mDp1m2g/lQo6/8O6zydX+7odaxEYR3oYuf5qaLgTQD5wkauDHiUGQ7WgqoQGg8FgMAR34UceccoMGQOFKpfqPUH307JYhO1detFw4GQOKBBzXZ8CJrVvtYH45S9dHIaRI8kwlC/5PvbYV1O4AOCRRx4BEIyfNUlfwSA74Ua+rk9ER1sGlqNSSQVCQ/mn+lQN5vPlNDCbXlOwZdhtN1feZ/Zs0eu/Quj9PKpKaKDV+oorxpbixXXjTtG2LD9dKlEJoRHxqDVxTfiNN/r6ck5z6NfP2TikYvZz3LP87Nkz2v3ceVxwwQXZ/6eddtp8XUv6T+PfK1OgWr9a8Ou+1lNgC3xfsu8++9Wvsjat9vvfR/fMIhDKu808YBYEN/kVwQngiSeeAAAMGTIEQLkngUb4Yxmuv/O8rs+nPE14XHOS8J1yy9gI//jHP6J6NEKkToap88pkaK6QvB0HM3oqTV0JHNO079BxTe8pxY9//OPS47Q5meWZh8Hey6gYI8E9K/ty5ZWfi/aVeSD29uxCHnt+dAUA4D5vfzF9uqOt+QP5yxy7ZjBUM6pKaDAYDAZDgC5fff45GQcnGa2yCu0JYkWASkz//k55KTOGpp2EnksFEKNxNwOBUTFbRewBaAfAcr/73Yb+fhRIIfeNvSy+qvs7EJbpdBmQUDsMXarVZTsGZWN9VAZUYNZw7CkvF13OzLexkMyvrrxfWj2zkylefpmvUTJ+flVUldBAb4F773VrnjTmaWqKX3wxqqPb9uv3eVamubl8XT/1MvWlDhrk1owDDRWvVf/nP07LKa5xxlo3vSGoKarm2bNnTwDBkGbQoEHZM/zrX84Cm2vI/Ag5YFkXP2YONt7rWz7G/7tDh0Z9oIyCMgspRiHltsR2UMvOxzOo9/2QQWwXlFqjJf3XpdjaA+amUI8Egs/F56ERE1DMi0BoKN1KiWyU9eGkxHV/Rltksp4UGANBI0hqVEVldlJMg7YvXxf7hVp2Chy/HNNkEvlNfFX7HY0DQTR7mxT2wezZkt9EfoxWXNHl0mAfbPP66wDimCEPey8eGiaedPzxX6nNBkO1oKqEBoPBYDAETJrkhOq11ip3n5461W0ffzxemjntNAbriuvLa68pZSCVTE+XpzRMOJf3KPj+/vcbRW3iMrIqcscdR4bDlTrsMLe/9dYudT0TnO25556FZ+C9aGtQKVy6MjdEarmaXhUUGmmnQQWLAqoaEhOqYOlSe1mbM7bCK1CZoE/Fg+/nkEPc1itejddf7ypsZzC7FKpSaJg0yUXm69fvOwCAmhrSN/D7bqshVN95J2iCfBH9+zvthlqwah2pGAbqfcHB+eqrq/rryr0qllnmcV+fux992ckOMBAKtdb1118fQPjw8mvlvPck7/7DzIMcmPpM9H9X45x1xoyJnvGjffeNnlGZhhQrQ4QInHFm0O4+8l/NWyHGBXuJr6pVmIbmxWjLQGOza691/v86BjR7Yx5kH5TdSaUqVrsSHYd875yQP/roIwDAfffd165nYUAdjbGh+5q1NRVpsuzdsx/43n/4wx+WtoVMwm7eYIv34Djm9YwAO378+Dbray9+8IMftHn+0ksvBRDenU7S93jaN8+2jPAeIwbD0oKqFBoMBoPBABx7rAu2dcstbrm0c2cnbPbqRWXHldPlrz/+0S13nnjiZ9HxvIadMprVnBNUKhjoi1q9JkWjIKpGv0Hbd4IpZTt6hDBtANt4zTUueNwBB/wdQAi6VhbjQJOdsQ27bLFF1AZVVvhsynrosiOPcwlYt3mX5Hw7Con4BPllyuXEYLfVx2doEoZBoc/c/6c/bfOe7UVVCg3UGO6+22lbNTXxemzwkkgH8OCAnDDBWWwPHOhoJc1GmYrFz8FYXMdP3Tum9DjAyTSQBSBUi1Xr9nxbNCsj76l5BqilatpW3fa9557o2T476CAAxWiEGlFS28w17Z633eaOk3rLswbrrefqePvtqA0Z0+C31NQXhS2DIkVZalCbfAZSjeGgBlLsO4439ZpQuxTusw2MlsgJk3kxFPTw0DTF+s41i2tqS5RlnKV9T/auBBdffDGAMJGy33r16gUgeE/wWdmfM79mKt/2QiOsXnjhhQCKiZTa6xViMCyJqEqhwWAwGAwBPXs6QaZbtzjoHKM5Bo8E+ONue9FFzu5gxAhnWJtXSlQZITR0OQVP2jDQWFm1ce4rIxDyhZVr38p0pBLrlWXLTEVe1GXAVOyJSkuwGl+Bihq9KmjToMn91D6EbEJYUQ/tKYSI33hjV+SFF6I2ZWb/rNu/v0zI3abchXh+UdVCw957OzrsnnvcgFfrbdXy8y8+fDyuzPjxbsCvscaXUV0K2hyMG9cnqpOeHCGjnqQj9ZEgNTIgDWjo+UAtbcqUKQCCdTy1sTwTwmtYVpOe0BqdA5nXKkOh/aVaJW0ReJz3mX300QDCB6AMQ0ZTyuRS67MXAkAN25A7BgAt3lKdda6R0KQXBajpknLcaaedABTtDPK2DewTat/cKn2pXgtKixLqzcDr11hjDQDAHnvsAaBo46BpiVOTX2qbjooYXw+Eb2PEiBEoA9kUsmoP+kQ7a6/tgvpwfPLb4LfQ3iykCxqnnnrqYrmvwdCRUdVCg8FgMBiAN964HQCwyiqHAQCefJIacpxbQpe/KQRefrlTwE4+ObilUyDUiIRqi6C2DTS6pRCtIcqVMQhtiZfMVEBNMQ30WNB08kAQ6Cm0kwFIuYenmIfQxrhNn8uzk22hsJ5aXtRl165UUkOozsK9s1D6zz1X2sZasiIsJ0vqCwpLhNDwzju3AADWXtsFsUgZmZS5sZAQ+vhjshHupX/2mSu71VYuEAlf0Ntv9wcAtLQ0RtczEApJIo09363bowCArl2dxqe2EdTSvk5uCYJW4Bq9jwObWue/Bg4EAOz2/vuu5WK/kdI6lVrThDPc7+dT19LJiK5AzbnBXnA5evNNAECjr6P37bfPz6MvFDDy4GWXXQYgTJqcCDgxkfEBAgWrMSrY98qKqQeG9rFSwvpOabNA0B2NkyTvpzTp/AbKUYO5vP0Cma9KOMNnOzUYDNWHJUJoMBgMhqUZJ510EgBg2DDaJsSeB0GZ8XuS1ZL7l1zSM6szJVD+5Cdu2ZHCMwVZCqZcZtJlz5QgTKTsCnS5lEvBN9/sXMMPOMAbWnvBO1+vto1LtamgfilM9EodhWVNWU/hnTYMVA5USKewTyWxpxf250lY+Xx7Mobl5ZcBAK0amZP95MvXyFLngMMOa/PZ5hdLhNBATfDOO12cAn2hpOjIHrhjbltbywHt9qkskip79llaxPNlxlbttFUIA5vHaYTS5NvE+8UvnJoaQ6suCNAK/K9//Wt0zxQtqJb6qY+3zGI+f/3Kd9wBIMdM+PPZB1BSP411eKTJfzyrdQCGQXHCCScACP3KiYiTFWlSIDALZAA0I2gqO2WKJVOmIDWhbrXVVgDC5Mj7q5dEKmqneuAQyjBwS5scIO3lwFwQqUiNBoOherBECA0Gg8FgCGv3GoitCF1GTWvaamNw3nlu6e3ss2PtWJOYsQ0aKCwlsKaWR2fMoDuw23btGttIqECdD77Fe3K5cLsNN2xXGxTKnuj1VAq45XkqVNynkpi5aXvlomBwnKu/lsyMD7deRwP/Z5+NnjsLwe+3//Ch5k8ofaKvjiVKaDjgAGdJPnKki9/QuTM14+KASOWWINSPXb0kOnVyHwbHZ3jp1ADj6/khadQ8ehqkMvZ9HdCK/XofPpT31DwaRPYMwmEWDJD8Pr0qNIwpkYqqGTENYmzV23smdGSwX2k7olEbgTCRVYq4qH2i+0pvsl6+S/YbJyNeT4MszYqpYWy1HSk7Fv0h4Dhm3hOgGOeASBmVGQyG6sMSJTQYDAbD0owbb3QJtI47zqVITy0ppgLh5SIFlIDCf7lAqQJoJQH4iivcct7w4SEoWv68uswTc+fGifVuvdWlEzj88KJbNsswoFgquFkqLsNn4vWQUjZ5H2VXUs+0ho9locuT2XvJLTu2JGxDarfc0hXw3hRc6mXIfS6nLmgskUJDc7OLaNjaur8/UjR2SedP4Mvze9lgQlSO6VrpKaMaGst37+6SqXAwqU//8YsgKx6NbghSaGQanvTBQgZ7z4Ua6RsNzgLRmokCWyPHVZsFQv9mAUgW0kBfGCCzoNo3EPpcw8gS6q6mUE1fJ17eizYFZKzYFrp8cbLT+6Tq1fsqw8F9MgztscWhkZ7BYKh+LJFCg8FgMCzNGDnSJdf64Q/jwG/z62KbhzIH557r1uN/9jO3NKah31NGtSnG4Yc/jEOdz5sXK2ZB0HX7jY1cZnX3W8VnnMwvu1J438nnmshUw3YmYtP+Si25av9q6HkVwlNsTFnKg1TcikKgNV/udp/M7mQsHCyRQgNzU9xyi4vf0Ni4M4C4k/VF6OAh9HyldXpdvqUVPTVpRsM7+eSF9UqL0LXmq6++GkDw4U9RdilqU119MlSYkMo+CH5c/fv1q/wgHQynnXYaAOCCCy4AEEcR/ewzlwiIXgzKOCjrkvKOyELH+uO0XWBMBDINGmCHLl8KTmJqNJaKgKpBcD7/3AX/mTzZ0d/Dhw8vvc5gMCyZWCKFBoPBYDCEUO5UXtTduq0w4e0NAJZafkxp7SlF7a9/dUtdRx3V3ZfTWBOIrmPbGxrKBWEgCNHqKlwwzhWF5lNJSJiKTqnbVGK3Skpp5i2RCN+eR9a/VFg32wwA0OiXS0/eb7/ktQsCS7TQcMghhwAAbrrpJgBAU9PQ7FyloB7hQ4iDoygCzRUb7ay88svRffZbyC9yfkA7CjIx1ErVl7+tPAP58imGQsuppwQA9F7N0ajVZMugIOPwpz/9KTvGZ5wwYQKAkMRHJ++UmxnfAW0VyDBwQqQ9hb4zzYZasEfxoE0EbWw066ZOrmQWGPVS7WQMBsPSgSVaaDAYDIalGfSmOOaYDwEUNW+iLP5Aylg8pWipVp3ySEi5HBNOTwAAD/xJREFUt/O6kSPd0t73v98TMdSbIq7/nHNc6PQf/vDe7AraOaSWlYkaiVLJ3qmsVMZ9pPYclVz5s/r8tpbLhznvi1QY/1Z6S3hFYvX+/UvbuqCRivxhMBgMBoPBEKGmdSmKvHLxxRdn/zMTW0PDkKhMMZhTbAimrpkaRprXL7/8kwAWX1rf+cHll18OANhn0iQAaQtflZrVWpp9oH3GRFUNnhLvf+65C+EpOhYY+InLC+wTNYxkrPqUgWIqTr8aRDKENTWrTTfdFEDQLHVpSWPg03VS/c5paMm1cbaLxsaG6sAvfuG2U6Z8AiCMC7qOq0s5AHzwQTlDwLE4cqRbItOxqzYNhM6ROm9oMjZef9xxPf1xlmuM9jkXMxpmnmno27cvAGCLddeN2q4ZN2tl3p8qcRYUvD7F2KS8KTgfcFlwNf871KJLvfk4DWRipE0se/s//wkgHVxtQcOYBoPBYDAYDO3CUsU0fB3QTZEGZmqwphLn0UcfvQhbt2AxcuRIAMHYThNa7fWhWx8dOMCtl1azEePCRnuTNV1yySUAQoIpGkxqqG9NjsUtj6+zzjoAgDXXXBNAUQvU9WO+4w8+cMneJk6cCAA4/fTT2/2MhurB97/v2ESOr4kTqRGTTQxlBwxwO8o4UDu/+uo4dHkq9kGlQGK61XmH+yec0BsA0NQUMxGapv3O60PAMTJ5hLKhZNSyBGzCfigKIfVl3k8lBeTvBJ+FDB+Zh37eIDxl85BvE+viN9934MDSti4sGNNgMBgMBoOhXTDviXZiUYR77ig47rjjFncTlhi0Nx20Mla6JqrrvtRYqG2QASNTkbqeUO2Qa6zGMCzZuOYa5/q7++4uSFeXLlzbL/OecNs111TGwR1PegJIsDhFyptCtXcyB+pezLaq7VSZ9p+5Nvt9DdreVpyK9rS90nGCbSSzQTd3tVnKvtOSevhmmvxcsagZBm2HwWAwGAwGQ5swpsFg6EDQdUv1/6bWlU/DDQRvDK5Vq7cFoevSXFOlF4Zh6QA9DTp1orZOdiBouO+/HzML9FL485+dR01DQ6zxq0dCe83lVDtXj5/gkcA089mV0X082RZHtfRbxj+ol++iUpC/VFvnl2lQNoW2Fuyzev8d0kOixXtZAbmQ8mQbc8HxFgeMaTAYDAaDwdAuGNNgMHQA/PjHPwYAXHnllQCCBqKW0oyXwOO0YWAqbNo2qC1DKkHbF198Ed3fsHTg0Uf7AAB22cWFBQ/MVNCUy9gHINgaKDj2NBR5ypsiFceBx1mfMhkaI6e+nsncKjMbqSiX2rZUzohKNgspho/1LOsZHr0fxD6jxX/nANDk2UPW0Ydea4sJxjQYDAaDwWBoF4xpMBg6EOi/TSaB2hV91mmDQG1ugNc6aMugXhOq1VGToQ0DU3gbDAZDe2BCg8FgMCylYNjxqVOdC2acGrtOSjsB9OST3VLYH/7ggryRNtdlC7oVplJmpwwlM8M/CSvdrZs7Pnt229cdfHwwIrzrRresx7DMrRUSV1UK6pQKqa3PpMsRqYzAqQWVfDv4/Pc99BAA4KijjkpctWhgQoPB0IHANNvEeeedBwA488wzo+M33HADgJBDhdAJulni1fM4U1wPHz58QTTbYDAsJVgihYaGhgaMGDECt99+O5ZZZhmceeaZOPXUUxd3swxVBhtHhiUdN97otoMGOcO75ZcPmnf37rFWHcI9O/34jDN6AQD+53/eARAMFxnAiK6T3LbXrVGZhuHDV/T3dUt0nTqxHmr3WkPxPkz6VMPCdGUWw8dUWoBKacLZNzRYXt67RGswKWUklG0hI9KUE/YbPv0UwOJnGIglUmj41a9+hXfffRcTJkzAJ598giFDhmD99dfH7rvvvribZqgidIRxpAwDQT9vTsicYAmlWTkJTp06FQAwefLkBdpOg8GwdKDDeU+cf/75hXTSJ554Ik455ZR213HDDTfgF7/4BVZYYQWst956GDZsGK677roF3FJDR8Z7772HHj164KWXXgLgfiR79uyJsWPHtrsOG0eGpQUvvtgPL77YD7Nnz87+vvyyCV9+2YTm5mY0Nzdj+nT+NWH69CbMnNmCmTNbcOaZa+HMM9dCS0sLWlpa0NTUFP0RNTU1pWxDa2trqX1DbW1tZHOg9be2tvg/Xu/+amqQ/WVHfZnmlpbor9X/se7GxkY0NjZm+2wD2879uro61NXVZfXOmjULs2bNwrRp0zBt2jQ0du6Mxs6ds7a2NDe7P19v6zLLoHWZZYBllwWWXTbbb+7WDc3dumFefX32t+qGG2LVDTdc8C/9K6LDCQ1HHHEE7r//fnz5pYs61tTUhFtvvRVHHnkkTjjhBHTv3r30b+ONNwYATJs2DZMnT8Ymm2yS1bnJJptg3Lhxi+V5DIsHAwcOxLnnnovDDz8cs2fPxrHHHotjjjkGgwcPXiLGUdeuXdG1a9fkxKoT8dy5czF37lxMnDgREydOxIgRIzBixIjF0XSDwVDF6HDLE7169cIOO+yA2267DcOGDcP999+Pnj17YtCgQRg0aBAuu+yyNq9n4h0GveH/dGUzLD0YNmwYRo8eja222go1NTW46667AACXXXaZjSODoQS9e6+e/f/RRy6NdkuLWworkgSxB8EZZ8Tp2On+e8stDf762A5APQ1oT6DGuxo4qaWl2V+PqB69Ll93arkuE6ulDmU+im2IPUY4X6zq54vMU4Spub2rdC37INFOMjO3+rkKaH/Su0WFDsc0AMDRRx+NG72Fzo033ogjjzyy3dcut9xyAOJY+tOnT89i8xuWLgwbNgyvv/46TjzxxMxQqz3o6OOoS5cu6NKlS8Y0KOOg+PTTT/Hpp5/i0EMPxaGHHroIW2owGJYkdDimAQD2339/jBgxAq+//jruvvvuzO1s+PDhmTCh6NevH8aNG4cVVlgBvXr1wquvvopddtkFAPDqq69igw02WGTtN3QMzJw5E6eccgqOO+44/OpXv8KBBx6IHj162DgyGBL4xz/C/9/5jmMdJk1yjAONb7N004XU1uWhlA87rKv/z5X7v/+bHV1HLZtJtKhtpwKUFfX0OKx03vFBvRQqeS8wiBqDp6nXBNvKhHFs82orrBCdJzLGwQdfa2XfCMvC+95x770AOh67kEeHZBq6du2Kgw46CIcddhi23HJL9O3bFwBw+eWXY+bMmaV/+bXmo446Cr/73e8wbdo0vPXWW7jqqqtwzDHHLKanMSwunHzy/2/vfl6izuM4jr/EzKShgtrMzXFi1pWgPQRSVNCxU5B06ucpuxTUUh7MuhSE2ME5dIlqEAKl3GCxOuR/sIGHkPBUbBiMHhJCopV1amYP3+97vn2/+l0/Sj9mpufjImPz+fohpN6f93ze7/fvam9vVzab1cGDB0s9Carh98juNJjoRS17PTc3p7m5OeVyOeVyue+4YwDVoCwzDZL3EUU2m9XAwMCy1167dk1nzpxRKpVSQ0ODuru7Kbf8wTx69Eijo6N68eKFJCmTyWjnzp0aGhrSiRMnnJ7B7xF+ZJZ1sIzD9LRXpmsZh5oa78xZGxm2tLDLop3qvVP18ePe+sHB8PA1O7Vbr4Oenlb/59jpPZwtsMRDcLi3P//s51tGIdIRcsGdBb90ucVvljbr7yGuD4O1c492ubQ7C4v3lVx4j8MyDH88eSJJOnv2bMzK8lG2QUNLS4saGhoWlF+6qK+v18DAwIoCDlSHjo4OdXR0lF4nEgm9evVqWc8o598ju2QWNzHQ/iF+9+6dJOnUqVPfcHcAqlVZBg2FQkGZTEZHjx7VunXrll4AAPgqgozDz5Kk6elpScFsibg5DtFTtWUaikUvM3HypPc5/+3b4YxDMP7d7jbEjbOuCa2zjIaN9JYk+d0pFTP/Iq7T4yb/DoJlHOwOg1VJWIYg3dQU3pNlW2JmTUQzFo3btkmqjAyDKbug4cOHD2psbFQqldLo6Oj33g5Qlvbt2+f0vt/KqCkMgMpXU4wbNQYAQIw9e7yMg41lr6uzsezeadsyC9FMgFVZrFpV57/P+35//9+Sglbndm+gr6/df3+4asPWBXch8qH9SNKfQ/ORPXh7imYYor0l7OuMn/WwvczOzkqSWrduDa2Lzqow0f4L1tehyR9pX4nKsnoCAACUn7L7eAIA8PUUi0VdunRJ2WxWktTZ2akbN244T6E0z555n+fv2uX1cbCGaJZxsDsHQfWEdV200/4n/6t3Sr9wISVJ6uv7118XrpoIOj56z83nLYsQzh581udRk/6EyLg7CLYmWgFioon4X5ubQ3uL/nm02sL2bJmKra2tqnQEDQDwA7lz545GRkY0Pj6umpoaHThwQOl0utTHBPg/BA0AUEGGh4fV2dlZep3P57V3717nCa737t1TV1eXmv1Tc1dXl+7evbvioGFszHvO4cPe67dv30oKxrbHZTCCagf5X73TvlXM9fT8IkmqqwtnGubnvUzEx4/ea7t/YDMpLPMgBZmAOr+KItrNMtpbIpppsCqKgt+bIlp9ETdHw6ojrNoitX37on8HlYg7DQBQQY4cOVLqYDo1NaV0Oq1jx46pr68vdnrrhg0bSusnJibKdnoryh/VEwBQgQqFgg4dOqRkMqlbt245r6utrdXExIS2+6ffly9fqq2tTYVCYdn3GhZjGYc3byYlSWvWeKd0O+1bZiB6jyB6HyDocWDdE70KhPn5f0LrtmzZIinoH3Hx4l+lvSSTSUnhigpJSm7aFHpGdA8m2mchru+CZUGqoTpiKWQaAKACXblyRe/fv9fNmzeXtS6RSCyY3ppIJL5IwIDqx50GAKgwDx480P379zU2NlY6wff29qq3tzd2jX2+vmPHDo2Pj2v37t2Svvz01mBSplcNYZmHyUkv87B2rddJcvVqb1S99W0IOj+Gnxfkwr1Mg3V8tAyDafIrI2ZmZkrfW79+vaRgamXc9Mq4hPtSmQXrFDn8+LEk6fz584s+p5qQaQCACvL8+XOdO3dOIyMj+skfsCRJly9fjp3eagGD5E1vzWQyyuVympqaUn9/f9lMb0X5404DAFSQq1ev6vr166HR6Pv379fTp0+d1heLRXV3d5f6NJw+fXpFfRpWyjIPr197HSDr672Mg3WItM6P9j+TVSLk817nx3TMfYGHDxd+zz66aWtrkyRt3rxZUjCps3njxtD746ohrKOj7aWa7ywshaABAPDNEDRUNoIGAMB3Z8FEnFUxN/AWCxaWMjg4KGnhHYc9fimq3VlI+r0s5E/0BHcaAACAIzINAADACZkGAADghKABAAA4IWgAAABOCBoAAIATggYAAOCEoAEAADghaAAAAE4IGgAAgBOCBgAA4ISgAQAAOCFoAAAATggaAACAE4IGAADghKABAAA4IWgAAABOCBoAAIATggYAAOCEoAEAADghaAAAAE4IGgAAgBOCBgAA4ISgAQAAOCFoAAAATggaAACAE4IGAADg5D9ZuSAsy+A01gAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "nilearn.plotting.plot_roi(img,cmap=plt.cm.bwr,cut_coords=(0,0,0),draw_cross=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "myenv2", + "language": "python", + "name": "myenv2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Select_Probes.ipynb b/Select_Probes.ipynb new file mode 100644 index 0000000..4d26f79 --- /dev/null +++ b/Select_Probes.ipynb @@ -0,0 +1,113 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[NbConvertApp] Converting notebook Cedric_gene_functions.ipynb to script\n", + "[NbConvertApp] Writing 5955 bytes to Cedric_gene_functions.py\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import os\n", + "import Cedric_gene_functions as ced" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Set up the working directory\n", + "# All paths after this are relative path to the root of chead\n", + "\n", + "wk_dir = '/Users/hxia/Desktop/BBL/' # this is where I have mounted chead to on my laptop. \n", + "# Change the above to an empty string if working directly on chead \n", + "\n", + "# Set up the project directory\n", + "project_path = os.path.join(wk_dir,'data/joy/BBL/projects/prsConnectivity')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "donor_list = [10021, 12876, 14380, 15496, 15697, 9861]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "selecting probes for donor 10021\n", + "writing data to /Users/hxia/Desktop/BBL/data/joy/BBL/projects/prsConnectivity/ABI/processedData/donor10021_gene_expression.csv\n", + "selecting probes for donor 12876\n", + "writing data to /Users/hxia/Desktop/BBL/data/joy/BBL/projects/prsConnectivity/ABI/processedData/donor12876_gene_expression.csv\n", + "selecting probes for donor 14380\n", + "writing data to /Users/hxia/Desktop/BBL/data/joy/BBL/projects/prsConnectivity/ABI/processedData/donor14380_gene_expression.csv\n", + "selecting probes for donor 15496\n", + "writing data to /Users/hxia/Desktop/BBL/data/joy/BBL/projects/prsConnectivity/ABI/processedData/donor15496_gene_expression.csv\n", + "selecting probes for donor 15697\n", + "writing data to /Users/hxia/Desktop/BBL/data/joy/BBL/projects/prsConnectivity/ABI/processedData/donor15697_gene_expression.csv\n", + "selecting probes for donor 9861\n", + "writing data to /Users/hxia/Desktop/BBL/data/joy/BBL/projects/prsConnectivity/ABI/processedData/donor9861_gene_expression.csv\n" + ] + } + ], + "source": [ + "for donor in donor_list:\n", + " print 'selecting probes for donor %s' % donor\n", + " datCollapsed = ced.selectProbe(donor)\n", + " \n", + " #write gene_assignment to a csv\n", + " csv_filename = os.path.join(project_path,'ABI/','processedData','donor%s_gene_expression.csv' \\\n", + " % donor)\n", + " print 'writing data to ' + csv_filename\n", + " datCollapsed.to_csv(path_or_buf=csv_filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "myenv2", + "language": "python", + "name": "myenv2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Somone.ipynb b/Somone.ipynb new file mode 100644 index 0000000..7034828 --- /dev/null +++ b/Somone.ipynb @@ -0,0 +1,242 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import nibabel as nib" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "epi_img = nib.load('/Users/hxia/Downloads/someones_epi.nii.gz')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(53, 61, 33)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "epi_img_data = epi_img.get_data()\n", + "epi_img_data.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def show_slices(slices):\n", + " fig, axes = plt.subplots(1, len(slices))\n", + " for i, slice in enumerate(slices):\n", + " axes[i].imshow(slice.T, cmap ='gray',origin='lower')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "slice_0 = epi_img_data[26,:,:]\n", + "slice_1 = epi_img_data[:,30,:]\n", + "slice_2 = epi_img_data[:,:,16]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5,0.98,u'Center slices for EPI image')" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "show_slices([slice_0,slice_1,slice_2])\n", + "plt.suptitle('Center slices for EPI image')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5,0.98,u'Center slices for anatomical image')" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "anat_img = nib.load('/Users/hxia/Downloads/someones_anatomy.nii.gz')\n", + "anat_img_data = anat_img.get_data()\n", + "anat_img_data.shape\n", + "show_slices([anat_img_data[28, :, :],anat_img_data[:, 33, :],anat_img_data[:, :, 28]])\n", + "plt.suptitle(\"Center slices for anatomical image\")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "n_i,n_j,n_k = epi_img_data.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "center_i = (n_i - 1) // 2" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "center_j = (n_j - 1) // 2" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "center_k = (n_k - 1) // 2" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "center_coord = (center_i,center_j, center_k)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "center_vox_value = epi_img_data[center_coord]" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "81.54928779602051" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "center_vox_value" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "myenv2", + "language": "python", + "name": "myenv2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/forOne_Genes_to_Parlces_Communities.ipynb b/forOne_Genes_to_Parlces_Communities.ipynb new file mode 100644 index 0000000..cab7b49 --- /dev/null +++ b/forOne_Genes_to_Parlces_Communities.ipynb @@ -0,0 +1,521 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Map Genes to Parcels & Communities in Schaefer\n", + "#### Cedric Huchuan Xia" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Import necessary modules" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import subprocess\n", + "import numpy as np\n", + "import nibabel as nib\n", + "from nilearn import plotting\n", + "import pandas\n", + "import pickle" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Set up files paths" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Set up the working directory\n", + "# All paths after this are relative path to the root of chead\n", + "\n", + "wk_dir = '/Users/hxia/Desktop/BBL/' # this is where I have mounted chead to on my laptop. \n", + "# Change the above to an empty string if working directly on chead \n", + "\n", + "# Set up the project directory\n", + "project_path = os.path.join(wk_dir,'data/joy/BBL/projects/prsConnectivity')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Parcellation\n", + "schaefer_path = os.path.join(wk_dir,'data/joy/BBL/studies/pnc/template/Schaefer/MNI')\n", + "parcel_filename = os.path.join(schaefer_path, 'Schaefer2018_100Parcels_7Networks_order_FSLMNI152_1mm.nii.gz')\n", + "community_filename = os.path.join(schaefer_path,'Schaefer2018_100Parcels_7Networks_order.txt')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Genes\n", + "ABI_path = os.path.join(wk_dir,project_path,'ABI')\n", + "donor='10021'\n", + "gene_filename = os.path.join(ABI_path,'normalized_microarray_donor'+donor,'SampleAnnot.csv')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Load files" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj8AAADeCAYAAADSK2E5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xl8E3X+P/BXetCDq0CBFgpUoIUCuv2BnIIgiCACisqNyCEsh0cVlcuj4qIcii5WFl1lFVe5/AoIQrEURO5DrICAIHIVKFjaSgtbemR+f4QJSZpJJslkMsm8no/HPGgmk8mEpumr789lEARBABEREZFOBPn6AoiIiIjUxPBDREREusLwQ0RERLrC8ENERES6wvBDREREusLwQ0RERLrC8ENERES6EuLrC7AVExODy5cv+/oyiOyqW7cucnJyfH0ZRETkAYPWJjk0GAy+vgQihzT2I0NERC5isxcRERHpCsMPERER6QrDDxEREemK34SfJ598EgcOHMC1a9eQl5eHgwcP4t1333XpHKdPn8b8+fO9dIUVGQwGpKWlIScnB4Ig4PXXX/fK80ycOBHr169Hbm4uBEFA165d7R6XlJSEzZs34/r167hw4QLeeOMNBAVVfAtMnz4d586dw40bN7Bt2zb87W9/c3oNW7duhSAIEAQBpaWl+P3337FgwQJUrVrV49enJLXfA0REpD1+EX6mTZuGTz75BJs2bcKjjz6KkSNHYu3atejfv7+vL82hRx99FJMnT8b06dPRoUMHfPLJJ155npEjR6JmzZrYtGmT5DFRUVHYvHkzBEHAww8/jFmzZmHKlCl44403rI6bNm0aXn31VcydOxf9+vVDUVERNm/ejLp16zq9ji1btqBDhw7o1q0b0tLSMG7cOCxZssTj10dERKQoQWMAVNiys7OFtLQ0u/e5sp0+fVqYP3++x+eRu82cOVO4evWqIucKDw+XvM9gMAgAhJYtWwqCIAhdu3atcMy0adOEvLw8oWrVquZ9L730knD9+nXzvrCwMKGgoEB49dVXzcdERkYKV65cEd58802H17d161Zh1apVFV6/IAhCdHS02687KChICA0NVex7osR7gIiI/Jvm5vmxJyoqStbcKuHh4XjjjTcwePBgxMTE4OLFi1i+fDlmzJhhdVxKSgqmTJmCypUrY9Om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dfiYTr3aITf3d8n7o6OjFbk2hh8iIo1Zu3Yt8vPz0blzZ/O+Ll26YOPGjbIe/8orr+Dq1atW/XhGjBiBxYsXo1q1avjmm28wdepUTJw4EREREejXrx9mzpyp+OsgfRPsjM4yGAwOH6PWmp4MP0REGpOamorU1FS3H3/69GmH93fv3h379+93+/xEcsTFxeH8+fPm29nZ2ahXr54Pr+g29vkhIiIixbVt2xYnT57E6dOnUVJSguXLl6N///6+viwArPwQEZEdGcZVvr4E8nMhISFIS0tDr169UF5ejjFjxljNN+VLBsFeoxwRERFRgGKzFxEREekKww8RERHpCsMPERER6QrDDxEREekKww8RERHpCsMPERER6QrDDxEREekKww8RERHpCsMPERER6QrDDxEREekKww8RERHpCsMPERER6QrDDxEREekKww8RERHpCsMPERER6QrDDxEREekKww8RERHpCsMPERER6QrDDxEREekKww8RERHpCsMPERER6QrDDxEREekKww8RERHpCsMPERER6QrDDxEREekKww8RERHpCsMPERER6QrDDxEREenK/wd7nGqQJvsryQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Parcellation\n", + "img = nib.load(parcel_filename)\n", + "img_data = img.get_data()\n", + "plotting.plot_img(img,draw_cross=False,title='Schaefer 100 Parcels',colorbar=True)\n", + "\n", + "# Community Assignment\n", + "community = pandas.read_csv(community_filename,delim_whitespace=True,header=None)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Genes\n", + "gene = pandas.io.parsers.read_csv(gene_filename,delimiter=',')\n", + "gene_mni_coord = gene.iloc[:,-3:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Parse the Community File" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "community_assignment ={parcel[0]: parcel[1].split('_')[2] \n", + " for idx, parcel in community.iterrows()}\n", + "community_assignment[0] = 'NotAssigned'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Map MNI to Image Coordiantes" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# Initiate an empty dataframe of nrow = num gene, ncol = 3 for x y z coordinates\n", + "gene_vox_coord = pandas.DataFrame(np.zeros(gene_mni_coord.shape))\n", + "gene_vox_coord.columns = ['img_x','img_y','img_z']" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# Loop through each gene coordinate in MNI space\n", + "# and then apply FSL std2imgcoord to transform the points\n", + "# to the image voxel coordiates\n", + "\n", + "for ridx, row in gene_mni_coord.iterrows():\n", + " coord_cmd = \"echo %f %f %f|std2imgcoord -img %s -std %s -vox \" \\\n", + " % (row[0],row[1],row[2],parcel_filename,parcel_filename) # a shell command to apply FSL std2imgcoord\n", + " vox_coord_str = subprocess.check_output(coord_cmd, shell = True) # get the output from the shell\n", + " vox_coord_str_list = vox_coord_str.split()\n", + " for cidx, coord in enumerate(vox_coord_str_list): \n", + " vox_coord_float = float(coord)\n", + " gene_vox_coord.iloc[ridx][cidx] = vox_coord_float\n", + "gene_vox_coord_rd = np.round(gene_vox_coord).astype(int)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Loop up parcel and community assignment for each gene\n", + "gene_parcel_assignment ={idx: img_data[tuple(gene)].astype(int)\n", + " for idx, gene in gene_vox_coord_rd.iterrows()}\n", + "gene_community_assignment = {idx : community_assignment[gene_parcel]\n", + " for idx, gene_parcel in gene_parcel_assignment.iteritems()}" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [], + "source": [ + "# Concat a master loopup table of gene assignment\n", + "gene_assignment = pandas.DataFrame([gene_parcel_assignment, gene_community_assignment]).T\n", + "gene_assignment.columns = ['d{}'.format(i) for i, col in enumerate(gene_assignment, 1)]\n", + "gene_assignment.columns = ['parcel','community']\n", + "gene_assignment = pandas.concat([gene_mni_coord,gene_vox_coord,gene_assignment],axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Save the Variables" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [], + "source": [ + "variables_filename = os.path.join(project_path,'ABI/gene_mapping','%s_100Parcels_7Network.pkl' % donor)" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [], + "source": [ + "with open(variables_filename, 'w') as f:\n", + " pickle.dump([gene_mni_coord, gene_vox_coord, gene_vox_coord_rd,\n", + " gene_parcel_assignment,gene_community_assignment,gene_assignment],f)" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [], + "source": [ + "#write gene_assignment to a csv\n", + "csv_filename = os.path.join(project_path,'ABI/gene_mapping','%s_100Parcels_7Network.csv' % donor)\n", + "gene_assignment.to_csv(path_or_buf=csv_filename)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### A preview of the outputs" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ex_gene = 40\n", + "plotting.plot_img(img,draw_cross=True,cut_coords = tuple(gene_mni_coord.ix[ex_gene]),\\\n", + " title='Parcel: ' + gene_parcel_assignment.values()[ex_gene].astype(str) + \\\n", + " ' as '+ gene_community_assignment.values()[ex_gene], colorbar=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj8AAADeCAYAAADSK2E5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xl8E3X+P/DXNIVCKeW+C3S5KyIVKIiLAq4cFhdFZLlkQW5XUUQUPH5yCYuCLrBy6qKCXwtyCHiAgoIoIHdVRKCitUApSFtasBxNMr8/yoQkzSSTZCYzybyej8fnYZtj8mlo7avvzyWIoiiCiIiIyCSi9O4AERERUSgx/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkalE690Bd7Vr18a5c+f07gYZSK1atZCTk6N3N4iIKEIIRtvkUBAEvbtABmSwb1MiIgpjHPYiIiIiU2H4ISIiIlNh+CEiIiJTCYvwM2XKFIii6GhnzpzB2rVr0ahRI7275uKdd97B/v37/X7e0KFDXb4+qY0ZM0b2Of/5z38giiLmzJkTTJcDUrNmTRQXF2PChAke74+OjkZubi4WLlwIANi+fTvWrFkTyi4SERHJMtxqLzkXL15Ez549AQCNGjXCjBkz8OWXX6Jly5YoKirSuXfq6Nq1K65cueL4/Ndff/X4uKSkJAwfPhwFBQWh6pqL8+fPY/v27RgwYADeeOONUvf36NEDVatWRVpaGgDgX//6F4qLi0PdTSIiIo/CJvxYrVbs3bsXALB3715kZWXh22+/RWpqKtauXRvwdWNiYnDt2jW1uhmU/fv3488///T5uAULFmD+/PkYMmRICHrlWVpaGpYvX45GjRqVCmkDBgzAqVOn8O233wIAfv75Zz26SERE5FHYhB93Bw8eBAAkJiYCAO644w48//zzaNeuHSpVqoSMjAzMmTMHH3zwgeM5Q4cOxbvvvov27dvjtddeQ4cOHTBr1iy88sorKFeuHKZNm4b+/fujdu3ayM7OxqpVq/DCCy84nj9ixAg8/fTTaNKkCXJycrBw4cKQDzv17dsXSUlJeOCBBxSHnyFDhmD06NG45ZZbIAgC0tPT8eyzzzreQwC45ZZb8Prrr6N9+/aIiYlBVlYW3nzzTSxatMjjNdevX49FixZhwIABmDVrluP2mJgY9O7dG0uXLnXctn37dly4cAH9+vUDANSrVw9vvPEGunTpgooVKyI7OxsffPABXn755UDeEqKI0y2qn95doAix1c4pB56ExZwfT6TQI21+17BhQ+zatQsjR47E3//+d6xbtw7vvPMOBgwYUOq5aWlp+OSTT5CamopPPvkEALBx40Y89thjWLhwIVJTUzFlyhRUr17d8ZyJEydi8eLF2LBhA+6//34sXrwYM2bMwOOPP+61n6IoYsqUKYq+ppMnT6K4uBjHjh3D6NGjS91frlw5vP7665g8ebJfQ32JiYlYsWIF+vXrh0GDBuH06dPYuXMn/vKXvzges2nTJthsNjzyyCPo3bs3/vvf/6JixYqy1ywoKMCWLVtKvb/3338/4uPjHUNenqxYsQL169fH6NGjcd9992HmzJmIiYlR/PUQEZFxzJ8/H7feeitatmyJefPmAQC+//57dOzYEa1atcLf//53FBYW6txLV2FV+bFYLABK5vwsWrQIhYWF2LZtGwBg9erVLo/duXMnEhISMGrUKKxatcrlvgULFmDBggWOz7t3747u3bujd+/e+Pjjjx23r1y5EgBQsWJFTJkyBa+88gqmT58OANi2bRtiY2Px0ksvYfHixbDb7R77bLVaZe+TnD17Fi+99BL27dsHi8WCgQMHYunSpYiNjXV8IwHA888/j7Nnz+L999/3ej13M2bMcHwsCAK2bt2KlJQUPPLII5gxYwaqVauGxo0b48EHH8SRI0cAAF999ZXP66alpWH16tVISkpyDG0NGDAAx48fx+HDh2Wf1759ewwcONARPL/++mu/vh4iIjKGI0eO4K233sK+fftQtmxZ9OzZE7169cLIkSMxd+5cdO7cGcuXL8ecOXNcfhfpLWwqP9WrV4fVaoXVasWJEyfQqFEj9O/f31H5qVy5MubPn4/MzEwUFxfDarVizJgxaNasWalrffrppy6f33PPPcjNzXUJPs46duyIuLg4rFmzBhaLxdG++uor1K5dGwkJCbL9LlOmjM9/8C+++AIzZ87E1q1bsWXLFgwdOhSrV6/GSy+95NjxOjExERMnTsT48eO9XsuTFi1aYP369cjJyYHdbofVakWLFi0c701eXh6ysrKwZMkS/OMf/0CNGjUUXffjjz/GpUuXHNWfChUqIDU11WvVBwDS09Px73//G0OHDkX9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Shh+iIgM5vDhwxg3bhw2bNiAGjVqOG5/4YUXXIKNe5OTkpKCb775xlHpOXz4ML755htTzvmh0Dlz5gzq16/v+DwhIQFnzpzx+pw7e7RHXutfZFv16tVV6Rvn/BARGczGjRuRn5+PTp06OW676667sHnz5oCu17lzZ0ydOhUPP/wwzp07hxo1auCFF15A9+7d1eoyUSmih9VZgiB4fU6ozvRk+CEiMpipU6di6tSpql7ziSeewBNPPKHqNYm8SUhIwKlTpxyfnz59GnXr1tWxRzdx2IuIiIhUl5KSgoyMDPz222+4fv06Vq1ahd69e+vdLQCs/BAREYCt9jV6d4EiTHR0NN5880306NEDNpsNw4cPR8uWLfXuFgBAED0NyhERERFFKA57ERERkakw/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkakw/BAREZGpMPwQERGRqTD8EBERkan8f+VdiAQC7GLmAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ex_gene = 354\n", + "plotting.plot_img(img,draw_cross=True,cut_coords = tuple(gene_mni_coord.ix[ex_gene]),\\\n", + " title='Parcel: ' + gene_parcel_assignment.values()[ex_gene].astype(str) + \\\n", + " ' as '+ gene_community_assignment.values()[ex_gene], colorbar=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mni_xmni_ymni_zimg_ximg_yimg_zparcelcommunity
0-29.25.8-2.6119.2131.869.40NotAssigned
1-10.15.9-8.4100.1131.963.60NotAssigned
28.98.5-7.481.1134.564.60NotAssigned
37.90.8-6.782.1126.865.30NotAssigned
416.90.9-9.173.1126.962.90NotAssigned
537.0-0.54.153.0125.576.176SalVentAttn
613.42.20.276.6128.272.20NotAssigned
724.81.7-22.165.2127.749.980Limbic
819.20.7-14.970.8126.757.10NotAssigned
918.11.6-22.171.9127.649.90NotAssigned
\n", + "
" + ], + "text/plain": [ + " mni_x mni_y mni_z img_x img_y img_z parcel community\n", + "0 -29.2 5.8 -2.6 119.2 131.8 69.4 0 NotAssigned\n", + "1 -10.1 5.9 -8.4 100.1 131.9 63.6 0 NotAssigned\n", + "2 8.9 8.5 -7.4 81.1 134.5 64.6 0 NotAssigned\n", + "3 7.9 0.8 -6.7 82.1 126.8 65.3 0 NotAssigned\n", + "4 16.9 0.9 -9.1 73.1 126.9 62.9 0 NotAssigned\n", + "5 37.0 -0.5 4.1 53.0 125.5 76.1 76 SalVentAttn\n", + "6 13.4 2.2 0.2 76.6 128.2 72.2 0 NotAssigned\n", + "7 24.8 1.7 -22.1 65.2 127.7 49.9 80 Limbic\n", + "8 19.2 0.7 -14.9 70.8 126.7 57.1 0 NotAssigned\n", + "9 18.1 1.6 -22.1 71.9 127.6 49.9 0 NotAssigned" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gene_assignment.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "myenv2", + "language": "python", + "name": "myenv2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/forOne_PlotGenesOnBrain.ipynb b/forOne_PlotGenesOnBrain.ipynb new file mode 100644 index 0000000..58f4818 --- /dev/null +++ b/forOne_PlotGenesOnBrain.ipynb @@ -0,0 +1,200 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "%gui qt4" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import os.path as op\n", + "import numpy as np\n", + "from numpy import arange\n", + "from numpy.random import permutation\n", + "import nibabel as nib\n", + "from surfer import Brain\n", + "import pickle\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Set up the working directory\n", + "# All paths after this are relative path to the root of chead\n", + "\n", + "wk_dir = '/Users/hxia/Desktop/BBL/' # this is where I have mounted chead to on my laptop. \n", + "# Change the above to an empty string if working directly on chead \n", + "\n", + "# Set up the project directory\n", + "project_path = os.path.join(wk_dir,'data/joy/BBL/projects/prsConnectivity')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "donor = 15496\n", + "numParcel = 100\n", + "numNetwork = 7\n", + "mm = 1\n", + "parcel_annot_file = os.path.join(wk_dir,'data/joy/BBL/studies/pnc/template/Schaefer/FreeSurfer5.3/fsaverage/label',\\\n", + " 'lh.Schaefer2018_%sParcels_%sNetworks_order.annot' % (numParcel,numNetwork))\n", + "gene_coord_file = os.path.join(project_path,'ABI','gene_mapping','%sdonor_%sParcels_%sNetwork_%smm.pkl'\\\n", + " % (donor, numParcel, numNetwork, mm))\n", + "gene_coord = pickle.load( open( gene_coord_file, \"rb\" ) )\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['Cont', 'Default', 'DorsAttn', 'Limbic', 'NotAssigned',\n", + " 'SalVentAttn', 'SomMot', 'Vis'], dtype='|S11')" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "community_list = np.unique(gene_coord[4].values())\n", + "community_color_list = ['orange','red','green','lightgreen','black',\\\n", + " 'violet','blue','purple']\n", + "\n", + "#community_color_list = ['orange','red','green','lightgreen',\\\n", + "# 'violet','blue','purple','orchid','salmon','black'\\\n", + "# 'teal','gold','darkblue','crimson','beige','plum','silver']\n", + "community_list" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "brain = Brain('fsaverage', \"lh\", \"inflated\",background='white',alpha=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "brain = Brain('fsaverage','lh', \"inflated\",views=['lat','med'], background='white',alpha=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 268, + "metadata": {}, + "outputs": [], + "source": [ + "brain = Brain('fsaverage', \"lh\", \"sphere\", background='white',alpha=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "for idx, community in enumerate(community_list):\n", + " if community != 'NotAssigned':\n", + " filtered_dict = {k:v for k,v in gene_coord[4].iteritems() if community in v}\n", + " brain.add_foci(pd.DataFrame.as_matrix(gene_coord[0].loc[filtered_dict.keys()]),hemi='lh',map_surface='pial',\\\n", + " color=community_color_list[idx],scale_factor=0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 269, + "metadata": {}, + "outputs": [], + "source": [ + "brain = Brain('fsaverage', \"lh\", \"sphere\",background='white')\n", + "for idx, community in enumerate(community_list):\n", + " if community != 'NotAssigned':\n", + " filtered_dict = {k:v for k,v in gene_coord[4].iteritems() if community in v}\n", + " brain.add_foci(pd.DataFrame.as_matrix(gene_coord[0].loc[filtered_dict.keys()]),map_surface='sphere',\\\n", + " color=community_color_list[idx],scale_factor=0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 294, + "metadata": {}, + "outputs": [], + "source": [ + "brain.add_annotation(parcel_annot_file, borders=False,alpha=0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "brain.add_annotation(parcel_annot_file, borders=False,alpha=0.5, hemi='lh')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "brain = Brain" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "myenv2", + "language": "python", + "name": "myenv2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/forOne_gene_parcel_exp.ipynb b/forOne_gene_parcel_exp.ipynb new file mode 100644 index 0000000..16808f8 --- /dev/null +++ b/forOne_gene_parcel_exp.ipynb @@ -0,0 +1,617 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 159, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import pandas as pd\n", + "import os\n", + "import itertools\n", + "import numpy as np\n", + "from sklearn import preprocessing" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Set up the working directory\n", + "# All paths after this are relative path to the root of chead\n", + "\n", + "wk_dir = '/Users/hxia/Desktop/BBL/' # this is where I have mounted chead to on my laptop. \n", + "# Change the above to an empty string if working directly on chead \n", + "\n", + "# Set up the project directory\n", + "project_path = os.path.join(wk_dir,'data/joy/BBL/projects/prsConnectivity')\n", + "\n", + "pd.options.display.max_rows = 10" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Get the list of Genes and their associated GWAS p-val from Ripke et al. Nature 2014\n", + "# Article and its supplement from www.nature.com/articles/nature13595\n", + "\n", + "gene_nature_supplement_file = os.path.join(project_path,'data','nature108genes.csv')\n", + "gene_nature_supplement = pd.read_csv(gene_nature_supplement_file)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Match aliases of genes\n", + "scz_gene_list = list(gene_nature_supplement['Gene1'])\n", + "scz_gene_list = ['LBA1' if gene=='TRANK1' else gene for gene in scz_gene_list]\n", + "scz_gene_list = ['RP11-259P6.1' if gene=='IGSF9B' else gene for gene in scz_gene_list]\n", + "scz_gene_list = ['AP001931.1' if gene=='BTBD18' else gene for gene in scz_gene_list]\n", + "scz_gene_list = ['RGS6' if gene=='AC005477.1' else gene for gene in scz_gene_list]" + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "metadata": {}, + "outputs": [], + "source": [ + "# Get the list of genes sampled by Allen Brain Institute\n", + "donor = 12876\n", + "donor_gene_path = os.path.join(project_path,'ABI','processedData','donor%s_gene_expression.csv' % donor)\n", + "donor_gene = pd.read_csv(donor_gene_path)\n", + "\n", + "# Get the list of tissue locations\n", + "gene_location = pd.read_csv(os.path.join(project_path,'ABI','normalized_microarray_donor%s' % donor,'SampleAnnot.csv'))\n", + "\n", + "# Get the list of genes-mapping-to-Schaefer\n", + "numParcels = 100\n", + "numNetworks = 7\n", + "mm = 1\n", + "gene_Scachefer_path = os.path.join(project_path,'ABI','gene_mapping','%sdonor_%sParcels_%sNetwork_%smm.csv' \\\n", + " % (donor,numParcels,numNetworks,mm))\n", + "donor_gene_parcel = pd.read_csv(gene_Scachefer_path)\n", + "\n", + "# Combine the above 2 lists\n", + "donor_gene_parcel_location = pd.concat([gene_location,donor_gene_parcel[['parcel','community']]],axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 233, + "metadata": {}, + "outputs": [], + "source": [ + "# Should we standardize or or normalize the data?\n", + "#donor_gene.iloc[:,2:] = preprocessing.scale(donor_gene.iloc[:,2:])" + ] + }, + { + "cell_type": "code", + "execution_count": 232, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0123456789...353354355356357358359360361362
count2.073800e+042.073800e+042.073800e+042.073800e+042.073800e+042.073800e+042.073800e+042.073800e+042.073800e+042.073800e+04...2.073800e+042.073800e+042.073800e+042.073800e+042.073800e+042.073800e+042.073800e+042.073800e+042.073800e+042.073800e+04
mean-1.548680e-162.508040e-16-2.055770e-17-1.014180e-162.069475e-161.726847e-16-9.593595e-182.549155e-16-1.562385e-16-1.110116e-16...-1.370514e-182.329873e-162.055770e-16-1.233462e-17-1.041590e-161.795373e-16-3.056245e-167.126670e-17-7.948978e-17-4.317118e-17
std1.000024e+001.000024e+001.000024e+001.000024e+001.000024e+001.000024e+001.000024e+001.000024e+001.000024e+001.000024e+00...1.000024e+001.000024e+001.000024e+001.000024e+001.000024e+001.000024e+001.000024e+001.000024e+001.000024e+001.000024e+00
min-1.644064e+00-1.694469e+00-1.691303e+00-1.686374e+00-1.622112e+00-1.680970e+00-1.634586e+00-1.660567e+00-1.689539e+00-1.701901e+00...-1.666306e+00-1.660875e+00-1.653132e+00-1.683748e+00-1.646011e+00-1.629923e+00-1.657872e+00-1.682752e+00-1.669342e+00-1.651918e+00
25%-8.222022e-01-8.191775e-01-8.420820e-01-8.564225e-01-8.649453e-01-8.326618e-01-8.350242e-01-8.544921e-01-8.424799e-01-7.881720e-01...-8.269119e-01-8.613034e-01-8.787918e-01-8.159170e-01-8.584238e-01-8.628142e-01-8.332668e-01-7.951214e-01-8.242145e-01-8.315368e-01
50%5.387942e-025.383682e-024.122789e-025.312408e-022.896458e-025.303130e-025.212051e-024.470100e-024.789715e-024.571557e-02...5.081153e-023.964970e-023.036516e-024.333802e-026.735844e-024.481208e-026.833994e-025.445278e-025.008767e-022.721728e-02
75%7.261703e-017.268089e-017.265178e-017.349928e-017.253707e-017.299048e-017.259513e-017.261852e-017.208755e-017.116153e-01...7.248224e-017.249376e-017.245606e-017.194416e-017.311956e-017.324349e-017.325194e-017.139762e-017.204163e-017.227240e-01
max3.556491e+003.735611e+003.744245e+003.644730e+003.729151e+003.668263e+003.541770e+003.768874e+003.743219e+003.700943e+00...3.655365e+003.672944e+003.641652e+003.666557e+003.782848e+003.661159e+003.465495e+003.493549e+003.674348e+003.470825e+00
\n", + "

8 rows × 363 columns

\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 \\\n", + "count 2.073800e+04 2.073800e+04 2.073800e+04 2.073800e+04 2.073800e+04 \n", + "mean -1.548680e-16 2.508040e-16 -2.055770e-17 -1.014180e-16 2.069475e-16 \n", + "std 1.000024e+00 1.000024e+00 1.000024e+00 1.000024e+00 1.000024e+00 \n", + "min -1.644064e+00 -1.694469e+00 -1.691303e+00 -1.686374e+00 -1.622112e+00 \n", + "25% -8.222022e-01 -8.191775e-01 -8.420820e-01 -8.564225e-01 -8.649453e-01 \n", + "50% 5.387942e-02 5.383682e-02 4.122789e-02 5.312408e-02 2.896458e-02 \n", + "75% 7.261703e-01 7.268089e-01 7.265178e-01 7.349928e-01 7.253707e-01 \n", + "max 3.556491e+00 3.735611e+00 3.744245e+00 3.644730e+00 3.729151e+00 \n", + "\n", + " 5 6 7 8 9 \\\n", + "count 2.073800e+04 2.073800e+04 2.073800e+04 2.073800e+04 2.073800e+04 \n", + "mean 1.726847e-16 -9.593595e-18 2.549155e-16 -1.562385e-16 -1.110116e-16 \n", + "std 1.000024e+00 1.000024e+00 1.000024e+00 1.000024e+00 1.000024e+00 \n", + "min -1.680970e+00 -1.634586e+00 -1.660567e+00 -1.689539e+00 -1.701901e+00 \n", + "25% -8.326618e-01 -8.350242e-01 -8.544921e-01 -8.424799e-01 -7.881720e-01 \n", + "50% 5.303130e-02 5.212051e-02 4.470100e-02 4.789715e-02 4.571557e-02 \n", + "75% 7.299048e-01 7.259513e-01 7.261852e-01 7.208755e-01 7.116153e-01 \n", + "max 3.668263e+00 3.541770e+00 3.768874e+00 3.743219e+00 3.700943e+00 \n", + "\n", + " ... 353 354 355 356 \\\n", + "count ... 2.073800e+04 2.073800e+04 2.073800e+04 2.073800e+04 \n", + "mean ... -1.370514e-18 2.329873e-16 2.055770e-16 -1.233462e-17 \n", + "std ... 1.000024e+00 1.000024e+00 1.000024e+00 1.000024e+00 \n", + "min ... -1.666306e+00 -1.660875e+00 -1.653132e+00 -1.683748e+00 \n", + "25% ... -8.269119e-01 -8.613034e-01 -8.787918e-01 -8.159170e-01 \n", + "50% ... 5.081153e-02 3.964970e-02 3.036516e-02 4.333802e-02 \n", + "75% ... 7.248224e-01 7.249376e-01 7.245606e-01 7.194416e-01 \n", + "max ... 3.655365e+00 3.672944e+00 3.641652e+00 3.666557e+00 \n", + "\n", + " 357 358 359 360 361 \\\n", + "count 2.073800e+04 2.073800e+04 2.073800e+04 2.073800e+04 2.073800e+04 \n", + "mean -1.041590e-16 1.795373e-16 -3.056245e-16 7.126670e-17 -7.948978e-17 \n", + "std 1.000024e+00 1.000024e+00 1.000024e+00 1.000024e+00 1.000024e+00 \n", + "min -1.646011e+00 -1.629923e+00 -1.657872e+00 -1.682752e+00 -1.669342e+00 \n", + "25% -8.584238e-01 -8.628142e-01 -8.332668e-01 -7.951214e-01 -8.242145e-01 \n", + "50% 6.735844e-02 4.481208e-02 6.833994e-02 5.445278e-02 5.008767e-02 \n", + "75% 7.311956e-01 7.324349e-01 7.325194e-01 7.139762e-01 7.204163e-01 \n", + "max 3.782848e+00 3.661159e+00 3.465495e+00 3.493549e+00 3.674348e+00 \n", + "\n", + " 362 \n", + "count 2.073800e+04 \n", + "mean -4.317118e-17 \n", + "std 1.000024e+00 \n", + "min -1.651918e+00 \n", + "25% -8.315368e-01 \n", + "50% 2.721728e-02 \n", + "75% 7.227240e-01 \n", + "max 3.470825e+00 \n", + "\n", + "[8 rows x 363 columns]" + ] + }, + "execution_count": 232, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.DataFrame(preprocessing.scale(donor_gene.iloc[:,2:])).describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 234, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Allen Brain sampled 96 genes of the 108 SCZ loci\n" + ] + } + ], + "source": [ + "# Calcualte the overlap between SCZ genes and ABI genes\n", + "gene_overlap = []\n", + "gene_non_overlap = []\n", + "for scz_gene in scz_gene_list:\n", + " if scz_gene in list(donor_gene['gene_symbol']):\n", + " gene_overlap.append(scz_gene)\n", + " else: gene_non_overlap.append(scz_gene) \n", + " \n", + "print('Allen Brain sampled %s genes of the 108 SCZ loci' % len(gene_overlap))" + ] + }, + { + "cell_type": "code", + "execution_count": 235, + "metadata": {}, + "outputs": [], + "source": [ + "# Assemble a dataframe\n", + "gene_overlap_exp = pd.DataFrame()\n", + "gene_p_val_dict = []\n", + "gene_p_val_list = []\n", + "\n", + "# Loop through each overlap gene and assign them to a new DF\n", + "# Loop through each overlap gene and get the GWAS p-val\n", + "for gene in gene_overlap:\n", + " gene_call = gene\n", + " if gene == 'LBA1': gene_call = 'TRANK1' \n", + " if gene == 'RP11-259P6.1': gene_call = 'IGSF9B'\n", + " if gene == 'AP001931.1': gene_call = 'BTBD18'\n", + " if gene == 'RGS6': gene_call = 'AC005477.1'\n", + " gene_overlap_exp = pd.concat([gene_overlap_exp,donor_gene[donor_gene['gene_symbol']==gene]])\n", + " gene_p_val = [gene_nature_supplement['P-value'][gene_nature_supplement['Gene1'] == gene_call].get_values()][0][0]\n", + " gene_p_val_dict.append({gene: gene_p_val})\n", + " gene_p_val_list.append(gene_p_val)\n", + "\n", + "# Get the tissues that have parcel and community assignment in Schaffer\n", + "valid_tissue = list(donor_gene_parcel_location[donor_gene_parcel_location['community'] != 'NotAssigned']['structure_id'].astype(str))\n", + "valid_tissue_info = donor_gene_parcel_location[donor_gene_parcel_location['community'] != 'NotAssigned'][['parcel','community']]\n", + "valid_tissue.insert(0,'gene_symbol')\n", + "gene_overlap_parcel_exp = gene_overlap_exp.loc[:, valid_tissue].T\n", + "gene_overlap_parcel_exp.columns = gene_overlap_parcel_exp.iloc[0].values\n", + "gene_overlap_parcel_exp = gene_overlap_parcel_exp.drop(['gene_symbol'],axis=0)\n", + "valid_tissue_info.index = gene_overlap_parcel_exp.index\n", + "\n", + "# Concatenate two DFs into one\n", + "gene_overlap_parcel_exp = pd.concat([gene_overlap_parcel_exp,valid_tissue_info],axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 236, + "metadata": {}, + "outputs": [], + "source": [ + "parcel_gene_weighted = []\n", + "gene_p_val_list_norm = preprocessing.normalize(-np.log10(gene_p_val_list).reshape(1,-1),norm='max')\n", + "gene_p_val_list_log = -np.log10(gene_p_val_list)\n", + "\n", + "for community in gene_overlap_parcel_exp['community'].unique():\n", + " for idx, row in gene_overlap_parcel_exp.iterrows():\n", + " if row['community'] == community:\n", + " weighted_exp = np.dot(row[:-2],gene_p_val_list_norm[0])\n", + " #print 'parcel %s in %s with weighted gene expression level at:%s' % (row['parcel'], community, weighted_exp)\n", + " #print 'parcel %s in %s with weighted gene expression level at:%s' % (row['parcel'], community, weighted_exp)\n", + " parcel_gene_weighted.append({'parcel': row['parcel'], \n", + " 'community': community,\n", + " 'weighted_exp': weighted_exp})\n", + "parcel_gene_weighted = pd.DataFrame(parcel_gene_weighted)" + ] + }, + { + "cell_type": "code", + "execution_count": 239, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
parcelweighted_exp
community
Cont34.88888920.880319
Default43.56097620.209459
DorsAttn18.47619021.243581
Limbic31.85714319.940234
SalVentAttn26.75862120.335134
SomMot12.58823520.577618
Vis3.06666719.227033
\n", + "
" + ], + "text/plain": [ + " parcel weighted_exp\n", + "community \n", + "Cont 34.888889 20.880319\n", + "Default 43.560976 20.209459\n", + "DorsAttn 18.476190 21.243581\n", + "Limbic 31.857143 19.940234\n", + "SalVentAttn 26.758621 20.335134\n", + "SomMot 12.588235 20.577618\n", + "Vis 3.066667 19.227033" + ] + }, + "execution_count": 239, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "parcel_gene_weighted.groupby(by='community').mean()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "myenv2", + "language": "python", + "name": "myenv2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/forOne_selectProbe.ipynb b/forOne_selectProbe.ipynb new file mode 100644 index 0000000..c56ddb4 --- /dev/null +++ b/forOne_selectProbe.ipynb @@ -0,0 +1,268 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 194, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import os\n", + "import itertools\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Set up the working directory\n", + "# All paths after this are relative path to the root of chead\n", + "\n", + "wk_dir = '/Users/hxia/Desktop/BBL/' # this is where I have mounted chead to on my laptop. \n", + "# Change the above to an empty string if working directly on chead \n", + "\n", + "# Set up the project directory\n", + "project_path = os.path.join(wk_dir,'data/joy/BBL/projects/prsConnectivity')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# Get the list of Genes and their associated GWAS p-val from Ripke et al. Nature 2014\n", + "# Article and its supplement from www.nature.com/articles/nature13595\n", + "\n", + "gene_nature_supplement_file = os.path.join(project_path,'data','nature108genes.csv')\n", + "gene_nature_supplement = pd.read_csv(gene_nature_supplement_file)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "# Get the list of genes sampled by Allen Brain Institute\n", + "donor = 12876\n", + "donor_path = os.path.join(project_path,'ABI','normalized_microarray_donor%s' % donor)\n", + "\n", + "probes_info = pd.read_csv(os.path.join(donor_path,'Probes.csv'))\n", + "gene_expr = pd.read_csv(os.path.join(donor_path,'MicroarrayExpression.csv'),header=none)\n", + "sample_info = pd.read_csv(os.path.join(donor_path,'SampleAnnot.csv'))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/anaconda2/envs/myenv2/lib/python2.7/site-packages/ipykernel_launcher.py:2: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n", + " \n" + ] + } + ], + "source": [ + "valid_probes = probes_info['entrez_id']>0\n", + "gene_expr = gene_expr[valid_probes]\n", + "probes_info = probes_info[valid_probes]" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "probe_names = probes_info['gene_symbol'][probes_info['probe_id'] == gene_expr[0]]\n", + "probe_ids = gene_expr[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [], + "source": [ + "datCollapsed = gene_expr.groupby(probe_names).max()" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": {}, + "outputs": [], + "source": [ + "gene_col_names = ['probe_id']\n", + "structure_ids = list(sample_info['structure_id'].astype(str))\n", + "gene_col_names.extend(structure_ids)" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": {}, + "outputs": [], + "source": [ + "datCollapsed.columns = gene_col_names" + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 187, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gene_nature_supplement['Gene1'][1:].tolist() in list(probe_names.astype(str))" + ] + }, + { + "cell_type": "code", + "execution_count": 195, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([], dtype=int64),)" + ] + }, + "execution_count": 195, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.where(gene_nature_supplement['Gene1'][1:].tolist() in list(probe_names.astype(str)))" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 C8G\n", + "1 C9\n", + "2 C9\n", + "3 MRPL49\n", + "4 MRPL49\n", + "5 MRPL49\n", + "6 ZNHIT2\n", + "7 ZNHIT2\n", + "8 MPPED2\n", + "9 C11orf9\n", + "10 C11orf9\n", + "11 C11orf10\n", + "12 C11orf10\n", + "13 DAGLA\n", + "14 DAGLA\n", + "15 C16orf3\n", + "16 C16orf3\n", + "17 FMNL1\n", + "18 FMNL1\n", + "19 PTTG1IP\n", + "20 PTTG1IP\n", + "21 C21orf2\n", + "22 C21orf2\n", + "23 TMEM50B\n", + "24 TMEM50B\n", + "25 CA1\n", + "26 CA1\n", + "27 CA1\n", + "28 CA2\n", + "29 CA2\n", + " ... \n", + "57796 FAM21C\n", + "57797 STIM2\n", + "57804 CNKSR2\n", + "57810 CXorf38\n", + "57813 TFF3\n", + "57815 NOL9\n", + "57816 TMED5\n", + "57817 ZNHIT6\n", + "57820 CAGE1\n", + "57821 ZC3H12D\n", + "57822 ZNF678\n", + "57823 MBNL3\n", + "57824 MBNL3\n", + "57825 MBNL3\n", + "57826 MBNL3\n", + "57827 IQSEC3\n", + "57840 LRRC37A4P\n", + "57842 FAM122C\n", + "57843 FAM82A1\n", + "57844 CXorf56\n", + "57845 AC068580.3\n", + "57846 RP11-357H14.1\n", + "57847 C11orf87\n", + "57851 TSPAN18\n", + "57852 GABRG3\n", + "57854 LOC442293\n", + "57855 TRPC5OS\n", + "57856 ZEB2\n", + "57857 ZEB2\n", + "57858 KLHL5\n", + "Name: gene_symbol, Length: 48171, dtype: object" + ] + }, + "execution_count": 169, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "probe_names" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "myenv2", + "language": "python", + "name": "myenv2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}