{ "cells": [ { "cell_type": "markdown", "id": "92e7d3ea", "metadata": {}, "source": [ "### analysis/plot_model_outputs.ipynb\n", "\n", "For the model chosen from the parameter sweep (where ORN columns are scaled by 0.1, eLNs by 0.04, iLNs by 0.02, and PNs by 0.4), plots:\n", "- raster of all neurons\n", "- firing rates of all neurons\n", "- firing rates of ORNs & PNs to compare to experimental values in [Bhandawat et al 2007](https://doi.org/10.1038/nn1976)" ] }, { "cell_type": "code", "execution_count": 1, "id": "77efc76e", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "from matplotlib.gridspec import GridSpec\n", "from scipy.spatial.distance import pdist" ] }, { "cell_type": "code", "execution_count": 2, "id": "b24b089a", "metadata": {}, "outputs": [], "source": [ "import os\n", "import sys\n", "file_path = 'C:/Users/dB/deBivort/projects/ALVariability/analysis/plot_model_outputs.ipynb'\n", "project_dir = os.path.join(file_path.split('ALVariability')[0], 'ALVariability')\n", "sys.path.append(project_dir)\n", "\n", "from utils.data_utils import make_df_AL_activity_long, make_orn_upn_frs, make_glomerular_odor_responses\n", "from utils.plot_utils import set_font_sizes\n", "from utils.plot_utils_EXTRA import plot_sim_raster, plot_mini_raster\n", "from utils.odor_utils import load_door_data\n", "\n", "set_font_sizes()" ] }, { "cell_type": "code", "execution_count": 3, "id": "bca6539f", "metadata": {}, "outputs": [], "source": [ "from utils.data_utils import get_AL_activity_dfs, \\\n", " make_d_neur_inputs, make_orn_upn_frs, make_glomerular_odor_responses, make_df_AL_activity_long\n", "from utils.make_output_figures import plot_sim_spikes2, plot_neur_I_contribs, plot_psths, \\\n", " plot_synapse_scale_hmap" ] }, { "cell_type": "code", "execution_count": null, "id": "350dc7d5", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 4, "id": "517a5e71", "metadata": {}, "outputs": [], "source": [ "# load simulation \n", "jdir = '../run_model/save_sims_sensitivity_sweep/2021_8_19-5_25_2__0v12_all0.1_ecol0.4_icol0.2_pcol4.0_sweep_Bhandawat_odors_5_25_2/'" ] }, { "cell_type": "code", "execution_count": 5, "id": "6b4629ba", "metadata": {}, "outputs": [], "source": [ "from datetime import datetime\n", "import pickle\n", "import re" ] }, { "cell_type": "code", "execution_count": 6, "id": "6ba246e9", "metadata": {}, "outputs": [], "source": [ "thermo_hygro_glomeruli = np.array(['VP1d', 'VP1l', 'VP1m', 'VP2', 'VP3', 'VP4', 'VP5'])\n", "\n", "# get list of files\n", "jdir_files = os.listdir(jdir)\n", "# get time tag\n", "jdir = os.path.abspath(jdir)\n", "time_tag_re = re.findall('(\\d+)\\_(\\d+)\\_(\\d+)-(\\d+)\\_(\\d+)\\_(\\d+)', jdir)[0]\n", "time_tag = datetime(*[int(t) for t in time_tag_re])\n", "run_tag = os.path.basename(os.path.normpath(jdir))\n", "spliton = '__0v12'\n", "job_tag = spliton + jdir.split(spliton)[1]\n", "job_tag = job_tag.strip('/')\n", "# get seed dict for params\n", "jdir_params_seed = pickle.load(open(os.path.join(jdir, 'sim_params_seed.p'), 'rb'))\n", "# get synapse dictionary\n", "job_synapse_ws = jdir_params_seed['custom_scale_dic']" ] }, { "cell_type": "code", "execution_count": 7, "id": "c70c57fc", "metadata": {}, "outputs": [], "source": [ "# load simulation outputs\n", "sim_output = pickle.load(open(os.path.join(jdir, 'sim_output.p'), 'rb'))\n", "sim = sim_output['sim']\n", "V = sim_output['V']\n", "I = sim_output['I'].toarray()\n", "Iin = sim_output['Iin'].toarray()\n", "Spikes = sim_output['Spikes'].toarray()\n", "odor_names = [r[0] for r in sim.odor_list]" ] }, { "cell_type": "code", "execution_count": 8, "id": "a318b599", "metadata": {}, "outputs": [], "source": [ "pdf_folder_name = 'model_outputs_2021-09-02'\n", "if not os.path.exists(pdf_folder_name):\n", " os.makedirs(pdf_folder_name)" ] }, { "cell_type": "code", "execution_count": null, "id": "750630df", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 9, "id": "45815351", "metadata": {}, "outputs": [], "source": [ "DPI = 250\n", "\n", "savepicsdir = os.path.join(jdir, pdf_folder_name)\n", "if not os.path.exists(savepicsdir):\n", " os.makedirs(savepicsdir)\n", "\n", "df_AL_activity, df_AL_activity_long = get_AL_activity_dfs(sim, Spikes)\n", "# remove non olfactory glomeruli\n", "df_AL_activity_long = df_AL_activity_long[~df_AL_activity_long.glom.isin(thermo_hygro_glomeruli)]\n", "df_neur_ids = sim.df_neur_ids.copy()" ] }, { "cell_type": "code", "execution_count": 10, "id": "ed865aa8", "metadata": {}, "outputs": [], "source": [ "df_orn_frs, df_upn_frs = make_orn_upn_frs(df_AL_activity, odor_names, df_neur_ids,\n", " sub_pre=True, olf_only=True)\n", "df_orn_glom_onoff, df_upn_glom_onoff = make_glomerular_odor_responses(df_orn_frs, df_upn_frs, df_AL_activity)" ] }, { "cell_type": "code", "execution_count": null, "id": "aba72a81", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 11, "id": "d94269fc", "metadata": {}, "outputs": [], "source": [ "savepdfstoo=False" ] }, { "cell_type": "code", "execution_count": 12, "id": "70e87864", "metadata": {}, "outputs": [], "source": [ "# plot Bhandawat version\n", "bhand_gloms = ['DL1', 'DM1', 'DM2', 'DM3', 'DM4', 'VA2']\n", "df_neur_ids_bhand = df_neur_ids.copy()[((df_neur_ids.altype == 'ORN') & (df_neur_ids.glom.isin(bhand_gloms))) | \n", " (df_neur_ids.altype == 'LN') | \n", " ((df_neur_ids.altype == 'uPN') & (df_neur_ids.glom.isin(bhand_gloms))) |\n", " (df_neur_ids.altype == 'mPN')\n", " ]\n", "df_AL_activity_bhand = df_AL_activity.copy()[((df_AL_activity.neur_type == 'ORN') & (df_AL_activity.glom.isin(bhand_gloms))) | \n", " (df_AL_activity.neur_type.isin(['iLN', 'eLN'])) | \n", " ((df_AL_activity.neur_type == 'uPN') & (df_AL_activity.glom.isin(bhand_gloms))) |\n", " (df_AL_activity.neur_type == 'mPN')\n", " ]\n", "df_AL_activity_long_bhand = make_df_AL_activity_long(df_AL_activity_bhand)\n", "df_orn_frs_bhand, df_upn_frs_bhand = make_orn_upn_frs(df_AL_activity_bhand, \n", " odor_names, \n", " df_neur_ids_bhand.reset_index(),\n", " sub_pre=True, olf_only=True)\n", "df_orn_glom_onoff_bhand, df_upn_glom_onoff_bhand = \\\n", " make_glomerular_odor_responses(df_orn_frs_bhand, df_upn_frs_bhand, df_AL_activity_bhand)" ] }, { "cell_type": "code", "execution_count": 13, "id": "5907579c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | benzaldehyde | \n", "butyric acid | \n", "2,3-butanedione | \n", "1-butanol | \n", "cyclohexanone | \n", "Z3-hexenol | \n", "ethyl butyrate | \n", "ethyl acetate | \n", "geranyl acetate | \n", "isopentyl acetate | \n", "4-methylphenol | \n", "methyl salicylate | \n", "3-methylthio-1-propanol | \n", "octanal | \n", "2-octanone | \n", "pentyl acetate | \n", "E2-hexenal | \n", "gamma-valerolactone | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
glom | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
DL1 | \n", "62.369048 | \n", "37.184524 | \n", "2.601190 | \n", "5.255952 | \n", "-4.113095 | \n", "3.500000 | \n", "7.815476 | \n", "8.101190 | \n", "6.880952 | \n", "119.910714 | \n", "71.755952 | \n", "189.077381 | \n", "11.458333 | \n", "21.261905 | \n", "65.232143 | \n", "11.446429 | \n", "6.827381 | \n", "50.476190 | \n", "
DM1 | \n", "14.720930 | \n", "-5.947674 | \n", "85.476744 | \n", "5.825581 | \n", "12.226744 | \n", "41.645349 | \n", "130.052326 | \n", "165.970930 | \n", "9.313953 | \n", "58.604651 | \n", "5.174419 | \n", "4.930233 | \n", "-7.197674 | \n", "14.279070 | \n", "-9.348837 | \n", "75.447674 | \n", "12.377907 | \n", "-9.668605 | \n", "
DM2 | \n", "30.803797 | \n", "56.740506 | \n", "48.873418 | \n", "80.784810 | \n", "-10.348101 | \n", "16.867089 | \n", "115.341772 | \n", "58.025316 | \n", "-2.405063 | \n", "128.367089 | \n", "42.582278 | \n", "9.303797 | \n", "29.924051 | \n", "-3.544304 | \n", "-2.449367 | \n", "124.012658 | \n", "19.575949 | \n", "89.879747 | \n", "
DM3 | \n", "3.750000 | \n", "-4.926471 | \n", "9.970588 | \n", "-4.507353 | \n", "-2.250000 | \n", "36.639706 | \n", "12.441176 | \n", "28.176471 | \n", "12.647059 | \n", "86.558824 | \n", "7.352941 | \n", "3.573529 | \n", "178.117647 | \n", "-9.235294 | \n", "76.345588 | \n", "225.588235 | \n", "6.308824 | \n", "1.029412 | \n", "
DM4 | \n", "-0.158333 | \n", "18.725000 | \n", "93.525000 | \n", "26.516667 | \n", "-3.000000 | \n", "27.325000 | \n", "27.583333 | \n", "156.933333 | \n", "11.575000 | \n", "24.475000 | \n", "4.908333 | \n", "0.075000 | \n", "11.625000 | \n", "41.816667 | \n", "56.991667 | \n", "31.366667 | \n", "4.508333 | \n", "8.050000 | \n", "
VA2 | \n", "4.494845 | \n", "-7.376289 | \n", "180.603093 | \n", "-6.628866 | \n", "-8.298969 | \n", "-6.350515 | \n", "44.231959 | \n", "39.103093 | \n", "2.154639 | \n", "-6.201031 | \n", "-6.170103 | \n", "-1.010309 | \n", "-4.448454 | \n", "-10.448454 | \n", "-7.907216 | \n", "8.845361 | \n", "25.726804 | \n", "69.762887 | \n", "