Companion Data Page

Olfactory Loci of Individuality

Matthew A. Churgin1,*, Danylo Lavrentovich1,*, Matthew A. Smith1,2, Ruixuan Gao3,4,5, Edward Boyden3,6, and Benjamin de Bivort1,**

1 Organismic and Evolutionary Biology & Center for Brain Science, Harvard University, Cambridge, MA, USA
2 Current affiliation: Department of Entomology, University of Wisconsin-Madison, Madison WI, USA
3 McGovern Institute for Brain Research & MIT Media Lab, MIT, Cambridge, MA, USA
4 Janelia Research Campus, Howard Hughes Medical Institute, Ashburn, VA, USA
5 Current affiliation: Biological Sciences/Chemistry, University of Illinois Chicago, Chicago, IL, USA
6 Department of Biological Engineering, MIT Center for Neurobiological Engineering, Department of Brain and Cognitive Sciences, Koch Institute, & Howard Hughes Medical Institute, Cambridge, MA, USA

* These authors contributed equally
** Corresponding author: debivort@oeb.harvard.edu


Computational antennal lobe model files (Python 3.6, Jupyter notebooks)

All code is available on GitHub.
neuron information and connectivity matrix
connectomics/get_AL_neurons_v1.2.ipynb Jupyter notebook that uses ORN/LN/PN IDs provided by Schlegel, Bates, et al 2020 and queries the hemibrain Python API to retrieve neurons and their connections for the antennal lobe model. Also incorporates PN neurotransmitter assignments from Bates, Schlegel, et al 2020. Produces df_neur_ids.csv and AL_block.csv, described below
connectomics/hemibrain_v1_2/df_neur_ids.csv Dataframe of neuron information listing bodyId, cell type, glomerulus (for ORNs/PNs), and polarity (for ORNs/PNs) for the 3062 neurons of the model
connectomics/hemibrain_v1_2/AL_block.csv 3062 x 3062 dataframe of synaptic weights between the neurons listed in df_neur_ids.csv
downloaded literature data files for model tuning and evaluation
BatesSchlegel2020/mmc4.csv CSV file containing PN metadata, available as Data S3 in Bates, Schlegel, et al 2020. Used in connectomics/get_AL_neurons_v1.2.ipynb to set PN neurotransmitters
Bhandawat2007/fig3_responses/fig3_firing_rates.csv CSV file containing ORN/PN firing rates in Figure 3 of Bhandawat et al 2007. WebPlotDigitizer was used for quantification. Used in analysis/plot_model_outputs.ipynb and analysis/analyze_sensitivity_parameter_sweep.ipynb to evaluate model outputs
DoOR/get_door_data.R R script that uses the DoOR R package to produce the subsequently listed files for setting glomerulus-odor responses
DoOR/DoOR_datasets_info.csv CSV file storing DoOR dataset meta information
DoOR/DoOR_mappings.csv CSV file storing mappings between receptors, sensilla, glomeruli
DoOR/DoOR_odor.csv CSV file storing DoOR odor name - InChiKey code mappings
DoOR/DoOR_response_matrix.csv CSV file representing a glomerulus-odor response matrix not adjusting for spontaneous firing rate
DoOR/DoOR_SFR_response_matrix.csv CSV file representing a glomerulus-odor response matrix adjusting for spontaneous firing rate
GrabeBaschwitz2016/Grabe_Baschwitz_2016_Table_S1_Glom_Volumes.csv CSV file containing glomerular volumes, extracted from Table S1 in Grabe, Baschwitz, et al 2016. Used for glomerular volume analysis in analysis/analyze_connectivity.ipynb
SchlegelBates2020/S3_hemibrain_ALRN_meta.csv CSV file containing hemibrain ORN metadata, retrieved from Schlegel, Bates, et al 2020. Used to set the list of ORNs in the model in connectomics/get_AL_neuron_v1.2.ipynb

Note: this file and the LN, PN metadata files below were downloaded from the supplementary information on bioRxiv on December 22, 2020, before publication in eLife
SchlegelBates2020/S4_hemibrain_ALLN_meta.csv CSV file containing hemibrain LN metadata, retrieved from Schlegel, Bates, et al 2020. Used to set the list of LNs in the model in connectomics/get_AL_neuron_v1.2.ipynb
SchlegelBates2020/S3_hemibrain_ALPN_meta.csv CSV file containing hemibrain PN metadata, retrieved from Schlegel, Bates, et al 2020. Used to set the list of PNs in the model in connectomics/get_AL_neuron_v1.2.ipynb
imputation of missing glomerulus-odor responses for odors used to calibrate/run the model
odor_imputation/impute_odors.ipynb Jupyter notebook that retrieves glomerulus responses for odors used in Bhandawat et al 2007 and the odor panel in the current study from the DoOR database. Produces df_odor_door_all_odors.csv, a dataframe of responses with NaNs, then produces an imputed response dataframe after running ALS_imputation.m
odor_imputation/df_odor_door_all_odors.csv CSV file with glomerulus-odor responses for the 18 odors used in calibrating and/or running the model, 40% of which are NaNs. Generated by odor_imputation/impute_odors.ipynb
odor_imputation/ALS_imputation.m MATLAB script that takes in the glomerulus-odor responses from df_odor_door_all_odors.csv and imputes values using alternating least squares, producing a text file, df_odor_door_all_odors_imput_ALS.txt, that is converted to a CSV by impute_odors.ipynb
odor_imputation/df_odor_door_all_odors_imput_ALS.csv CSV file with imputed glomerulus-odor responses for the 18 odors used in calibrating and/or running the model. Generated by odor_imputation/impute_odors.ipynb
running circuits/batches of circuits, either manually or using a computing cluster
README.md Markdown file containing "Running a model" section with short instructions on how to set up and run an AL simulation
run_model/run_model_schematic.PNG Schematic accompanying README.md to illustrate which files are used to run an AL simulation
run_model/run_example_simulation.ipynb Jupyter notebook
  • used for running a short AL simulation with two odor presentations in around a minute on a personal computer
  • features the essence of the code used to run the circuit and perform visualization of outputs
Intended use: Run the cells of the notebook, including the leaky-integrate-and-fire equation integration, to get model outputs
run_model/autolaunchsim.sh Shell script
  • used for running a single simulation job on a research computing cluster
  • runs export_sim_settings.py to create 1) a directory for a simulation seeded with desired parameter settings specified in export_sim_settings.py, and 2) a run_sim.py script in that directory that, when executed, runs the simulated AL model
  • changes directory to the desired simulation directory and runs sbatch submit_job.sh to execute run_sim.py as a job on the cluster
Intended use: edit export_sim_settings.py with desired settings (column sensitivity parameters, odors on the odor panel, etc.), then run ./autolaunchsim.sh in the command line of a computing cluster
run_model/launch_col_sweep.sh Shell script
  • used for submitting multiple simulation jobs on a research computing cluster with different class-wise sensitivity parameters
  • starting with a set of desired ORN, eLN, iLN, PN scalar multipliers on the hemibrain connectivity matrix, runs export_sim_settings.py to create simulation directories for each parameter set, then submits cluster jobs to run the models, similar to autolaunchsim.sh
Intended use: edit the lists of ORN, eLN, iLN, PN scalar multipliers as desired in this file, edit export_sim_settings.py with desired settings (for instance, which odors to use as stimuli), then run ./launch_col_sweep.sh in the command line of a computing cluster
run_model/launch_resamples.sh Shell script
  • used for submitting multiple simulation jobs on a research computing cluster with cell type bootstrapping and/or glomerular synapse density variation in each circuit
  • similar to launch_col_sweep.sh, starting with a number of desired cell type bootstraps (e.g. 200 ORN bootstrapped circuits, 200 ORN+LN+PN bootstrapped circuits, etc.), runs export_sim_settings.py to create simulation directories for each circuit, then submits cluster jobs to run the models
Intended use: set the number/type of cell type bootstrapping samples, indicate whether to vary PN glomerular synapse counts, edit export_sim_settings.py with desired settings (for instance, which odors to use as stimuli), then run ./launch_resamples.sh in the command line of a computing cluster
run_model/launch_resamples_synNoise.sh Shell script
  • used for submitting multiple simulation jobs on a research computing cluster with cell type bootstrapping and/or synapse weight noise randomly drawn in each circuit
  • similar to launch_resamples.sh, starting with a number of desired cell type bootstraps (e.g. 200 ORN bootstrapped circuits, 200 ORN+LN+PN bootstrapped circuits, etc.), and a strength of synapse weight noise, runs export_sim_settings.py to create simulation directories for each circuit, then submits cluster jobs to run the models
Intended use: set the number/type of cell type bootstrapping samples, indicate the magnitude of the synapse weight noise (N(0, 20%), N(0, 100%), for instance), edit export_sim_settings.py with desired settings (for instance, which odors to use as stimuli), then run ./launch_resamples_synNoise.sh in the command line of a computing cluster
run_model/export_sim_settings.py Python script
  • used for specifying parameters of a simulation (cell type sensitivity multipliers, the on/off times for odors to present as stimuli, etc.)
  • exports appropriate simulation information into a dedicated simulation directory (the path of which you should set in this file) via a Python pickle object. This file also produces a run_sim.py script, which, when executed, runs the model using the settings deposited in the simulation directory
Intended use: edit this file directly to set parameters such as which odor stimuli to present, which LNs to set as excitatory, etc. Then, run python export_sim_settings.py to make a directory seeded with settings to be used in a model run and run python run_sim.py yourself to run the model. This file was used with ./launch_col_sweep.sh to run sets of cell type sensitivity parameters to pick the best one for subsequent circuit idiosyncrasy simulation experiments.
run_model/export_resampling_sim_settings.py Python script
  • an expanded version of export_sim_settings.py, used for specifying parameters of a simulation (cell type sensitivity multipliers, the on/off times for odors to present as stimuli, which cell types to bootstrap, whether to draw synapses to add synapse density variation as a circuit idiosyncrasy source, etc.)
  • exports appropriate simulation information into a dedicated simulation directory (the path of which you should set in this file) via a Python pickle object. This file also produces a run_sim.py script, which, when executed, runs the model using the settings deposited in the simulation directory
Intended use: edit this file directly to set parameters such as odor stimuli, which cell types to bootstrap, etc. Then, run python export_resampling_sim_settings.py to make a directory seeded with settings to be used in a model run and run python run_sim.py yourself to run the model. Or, run ./launch_resamples.sh to run those lines instead.
run_model/run_sim_template.py Python script
  • loads desired simulation settings and odor stimuli, then integrates the model and produces simulation outputs including voltage/current traces, spike times, etc.
  • is read in by export_sim_settings.py and saved in a desired simulation directory as run_sim.py
Intended use: not meant to need much editing. Once a run_sim.py is created in a dedicated simulation directory with a Pickle object after export_sim_settings.py or export_resampling_sim_settings.py is run, then you can manually run the model with run_sim.py , or use a shell script such as autolaunchsim.sh to run this all on a computing cluster.
run_model/submit_to_cluster_template.sh Shell script
  • used for submitting a run_sim.py simulation job to a research computing cluster
  • is read in by run_model/export_sim_settings.py and saved in a desired simulation directory as submit_job.sh
  • running sbatch submit_job.sh in the desired simulation directory then submits the job to the scheduler
Intended use: edit this file with cluster job details such as memory use or job duration. Once in a simulation directory, run sbatch submit_job.sh to submit a job yourself, or use a script such as autolaunchsim.sh to handle that all for you.
run_model/collect_col_sweep_frs.py Python script
  • used in conjunction with launch_col_sweep.sh, for collecting neuron identities and firing rates from simulations with different cell type sensitivity scalings and saving them into a Python pickle object for downstream analysis.
  • produces a dictionary with entries encoding a particular model's sensitivity parameter set and a dataframe, df_AL_activity (firing rates of all neurons when odors are on or off)
Intended use: edit this file with the path to a directory housing a sensitivity parameter sweep directory with multiple simulation directories. Then run python collect_col_sweep_frs.py .
run_model/collect_bhandawat_comparisons.py Python script
  • used for collecting neuron firing rates from multiple simulations and producing comparison plots between model features and features described in Bhandawat et al 2007.
  • produces PDFs with figures comparing model outputs to Bhandawat et al 2007 features in a desired directory
Intended use: edit this file with the path to a directory housing simulation directories, and to a directory in which to save figures. Then run python collect_bhandawat_comparisons.py .
run_model/collect_df_al_activities.py Python script
  • used for collecting neuron identities and firing rates from multiple simulations and saving them into a Python pickle object for downstream analysis.
  • produces a dictionary with keys that are individual model runs and values including df_neur_ids (dataframe of neuron identities) and df_AL_activity (firing rates of all neurons when odors are on or off)
Intended use: edit this file with the path to a directory housing simulation directories. Then run python collect_df_al_activities.py .
model selection, model output plots, and PCA loadings analysis
analysis/ORN_LN_PN_bootstrapping/df_neur_ids_example_bootstrap.csv CSV file containing neuron ordering for an example ORN + LN + PN bootstrapped circuit.
Analyzed in analysis/analyze_connectivity.ipynb
analysis/analyze_connectivity.ipynb Jupyter notebook that
  • visualizes synapse strengths between different hemibrain cell types
  • examines relationship between glomerular synapse counts and glomerular volume, fitting a model used for drawing glomerulus synapse counts
analysis/sensitivity_sweep_20210427/all_simulations_frs.p Python pickle object storing firing rates for all neurons of simulations with varying sensitivity parameters (scalings of ORN, eLN, iLN, PN columns of the hemibrain connectivity matrix).
Analyzed in analysis/analyze_sensitivity_parameter_sweep.ipynb
analysis/analyze_sensitivity_parameter_sweep.ipynb Jupyter notebook that
  • loads simulation info from a parameter sweep of cell type sensitivity parameters (scalings of ORN, eLN, iLN, PN columns of the hemibrain connectivity matrix)
  • visualizes simulations along various axes describing matches to experimental features, such as uniform PN firing rates
  • picks a model configuration to be used for main circuit idiosyncrasy simulations
analysis/make_connectivity_matrices.ipynb Jupyter notebook that
  • generates connectivity matrices for circuits made idiosyncratic via cell type bootstrapping and glomerular density resampling, to be used for making an animated GIF
analysis/make_connectivity_matrix_gifs.ipynb Jupyter notebook that
  • reads in connectivity matrices generated by make_connectivity_matrices.ipynb to make an animated GIF
analysis/plot_model_outputs.ipynb Jupyter notebook that
  • loads simulation information for the chosen configuration (with ORN columns of the hemibrain connectivity matrix scaled by 0.1, eLNs by 0.04, iLNs by 0.02, and PNs by 0.4)
  • plots a spike raster
  • plots the distribution of all individual neuron firing rates
  • plots the ORN-PN transfer function, ORN/PN firing rate histograms, and odor projections in ORN/PN PC coding space to compare to respective plots in Bhandawat et al 2007
analysis/process_and_save_sims_ORN_LN_PN_resampling.ipynb Jupyter notebook that
analysis/process_and_save_sims_ORN_LN_PN_resampling_with_PN_synapse_density.ipynb Jupyter notebook that
  • takes average PN glomerulus-odor firing rates across simulated circuits with bootstrapped cell populations (e.g. bootstrapped ORNs, bootstrapped LNs, bootstrapped ORNs+LNs+PNs, etc.) AND PN synapse density variation
  • performs PCA
  • saves firing rates and loadings in analysis/PCA_analysis/ , further analyzed in analysis/analyze_all_simulation_PCAs.ipynb
analysis/process_and_save_sims_synapse_noise.ipynb Jupyter notebook that
analysis/analyze_all_simulation_PCAs.ipynb Jupyter notebook that
  • loads firing rates and PCA loadings from analysis/PCA_analysis/ for the different sources of circuit idiosyncrasy
  • plots PC loadings for all circuit idiosyncrasy strategies
  • simulates behavior scores to assess separability of simulated behaviors under each circuit idiosyncrasy source
auxiliary functions used in setting up, running, and analyzing AL circuit models
utils/model_params.py Python script containing parameter values obtained from the literature that are set as fixed in the model
utils/simulation_class.py Python script that defines the Sim class, meant to store all information about an AL simulation, including the neuron list, the connectivity matrix, the odor stimuli, current/voltage traces, etc.
utils/data_utils.py Python script with helper functions used to work with the Sim class, such as set_params, which reads in parameters from model_params.py and stores them in an instance of a Sim class
utils/odor_utils.py Python script with a helper function that stores the tables found in datasets/DoOR/ into an instance of a Sim class
utils/LIF_funcs_cython.pyx Python script with functions necessary for leaky integrate and fire implementation of the model
utils/cython_setup.py Python script that converts leaky integrate and fire code described in utils/LIF_funcs_cython.pyx into C using Cython, giving a ~30% speedup. Prior to running the model, run python cython_setup.py build_ext --inplace. This will produce files LIF_funcs_cython.html and LIF_funcs_cython.c and will help the code run properly
utils/make_vols.py Python script with functions to help draw glomerular synapse counts to implement PN synapse density variation. Used also in analysis/make_connectivity_matrices.ipynb
utils/analysis_utils.py Python script with functions often used in analysis/, including performing PCA, plotting comparisons with plots in Bhandawat et al 2007, etc.
utils/plot_utils.py Python script with helpful plotting functions, notably for connectomic data, such as connectivity matrices and glomerulus meshes
utils/plot_utils_EXTRA.py Python script with helpful plotting functions, notably for model outputs, such as ORN/PN firing rate histograms, rasters, etc.
utils/make_output_figures.py Python script with helpful plotting functions, notably for model outputs, such as ORN/PN firing rate histograms, rasters, etc.
utils/plot_model_outputs.py Python script with a single function, process_jdir(), that uses the above plotting utility files and is called by run_model/run_sim_template.py to make an output PDF immediately after running the model

Experimental data files, analyses, visualization functions and scripts (MATLAB 2018a)

All code is available on GitHub. Raw images are available here.
utility functions and .mat files used throughout the repository
utilities/SET_DIRECTORY_PATH.m MATLAB script for you to input your local path to the experimental analysis directory. This creates analysis_dir_path.mat, which is then loaded by all of the MATLAB scripts in this directory
utilities/analysis_dir_path.mat Produced as a result of running SET_DIRECTORY_PATH.m after specifying your local machine's path to this directory
utilities/ORN_PN_COLORS.mat Stores colors for ORNs and PNs used throughout this directory and the paper figures
utilities/odorPanel_12_DoORData.mat Stores publishedOR, a struct containing receptor names, glomerulus names, and published OR odor responses, loaded by all of the MATLAB scripts in this directory
utilities/dblab-utility-functions/ Contains many used plotting functions. Downloaded from GitHub
utilities/distributionPlot/ Contains violinPlot, used in plotting. Downloaded from Mathworks
utilities/raacampbell.shadedErrorBar/ Contains shadedErrorBar, used in plotting. Downloaded from Mathworks
Brp-Short immunohistochemistry (IHC)
IHC/*.mat Raw behavior files and microscopy images for Brp-Short analysis.
Main analysis script is IHC/analyze_IHC_brpshort.m
estimating fraction of biological signal variance
powerAnalysisModel/modelExplainedBehaviorVariation.m MATLAB script for modelling behavioral variance as a function of behavioral persistence
calcium imaging analysis
ORNvsPN_analysis_ALLDATA/* Directory with the majority of paired behavior - calcium imaging analysis.
Main analysis script is ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m
ORN_analysis_oct_vs_air_choice/* Raw OCT vs AIR behavior and ORN calcium imaging files.
Main analysis script is ORN_analysis_oct_vs_air_choice/evaluate_all_data.m
ORN_analysis/* Raw OCT vs MCH behavior and ORN calcium imaging files.
Main analysis script is ORN_analysis/evaluate_allORNdata.m
PN_analysis_oct_vs_air_choice/* Raw OCT vs AIR behavior and PN calcium imaging files.
Main analysis script is PN_analysis_oct_vs_air_choice/evaluate_all_data.m
PN_analysis/* Raw OCT vs MCH behavior and PN calcium imaging files.
Main analysis script is PN_analysis/evaluate_allData.m
raw microscopy images
raw_images/*.czi CZI files for microscopy images appearing in paper figures


Figures that appear in the main text and supplement are generated by numerous MATLAB and Python scripts. The following table maps each paper subpanel to the script (and figure number within the script, if applicable) from which it was generated.

type figure subpanel content script that makes the subpanel figure number in script notes
experiment Figure 1 a AL schematic na na
experiment b experimental outline na na
experiment c individual ethograms na na
experiment d microscopy schematic na na
experiment e ORN/PN glomerulus masks 190321_makeORNandPN_glomeruliFigure/makeORNandPNglomerulusfigure.m Figure 1, 2 (showClusters)
experiment f df/f vs. time for DM2/DC2 ORN/PN OCT/MCH ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m Figure 3
experiment g heatmap ORN/PN glom vs odor responses ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m vectorPixels in script, near lines 736. Colorbar is Figure 5 of script
experiment h heatmap odor/glom vs individuals ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m vectorPixels in script, near line 513
experiment i cumulative variance explained vs. principal component ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m Figure 22, Figure 34, Figure 33
experiment j Euclidean distance in full coding space ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m Figure 48
experiment k preference prediction R2 for PC models OCT-AIR, unshuffled/shuffled behavior ORN_analysis_oct_vs_air_choice/evaluate_all_data.m Figure 17, Figure 18
experiment PN_analysis_oct_vs_air_choice/evaluate_train_data.m Figure 14, Figure 15
experiment l measured pref vs predicted OCT-AIR PN PC1 train PN_analysis_oct_vs_air_choice/evaluate_train_data.m Figure 8
experiment m measured pref vs predicted OCT-AIR PN PC1 test PN_analysis_oct_vs_air_choice/evaluate_trainedModel_on_testdata.m Figure 7
experiment n measured pref vs predicted OCT-AIR ORN PC 1 ORN_analysis_oct_vs_air_choice/evaluate_all_data.m Figure 5
experiment o preference prediction R2 for PC models OCT-MCH, unshuffled/shuffled behavior ORN_analysis/ORNtrainDataPCRCrossValidationAnalysis.m Figure 3, Figure 4
experiment PN_analysis/trainDataPCRCrossValidationAnalysis.m Figure 3, Figure 4
experiment p measured pref vs predicted OCT-MCH PN PC2 train PN_analysis/evaluate_allData.m Figure 7 need to use PN_analysis/train in manualLabelHome vs PN_analysis/allData
experiment q measured pref vs predicted OCT-MCH PN PC2 test PN_analysis/evaluateTrainedModelOnTestData.m Figure 7
experiment r measured pref vs predicted OCT-MCH ORN PC 1 ORN_analysis/evaluate_allORNData.m Figure 9
experiment Figure 2 a PN PC1 loadings, inset measured vs predicted PN_analysis_oct_vs_air_choice/evaluate_allData.m Figure 9, Figure 7
experiment b interpreted PN PC1 loadings PN_analysis_oct_vs_air_choice/evaluate_allData.m Figure 10
experiment c measured pref vs predicted pref from ^ PN_analysis_oct_vs_air_choice/evaluate_allData.m Figure 16
experiment d ORN PC1 loadings, inset measured vs predicted ORN_analysis_oct_vs_air_choice/evaluate_all_data.m Figure 7, Figure 5
experiment e interpreted ORN PC1 loadings ORN_analysis_oct_vs_air_choice/evaluate_all_data.m Figure 8
experiment f measured pref vs predicted pref from ^ ORN_analysis_oct_vs_air_choice/evaluate_all_data.m Figure 14
experiment g PN PC2 loadings, inset measured vs predicted PN_analysis/evaluate_allData.m Figure 9, Figure 7
experiment h interpreted PN PC2 loadings PN_analysis/evaluate_allData.m Figure 10
experiment i measured pref vs predicted pref from ^ PN_analysis/evaluate_allData.m Figure 18
experiment j example yoked control fly na na
experiment k open-loop odor experience vs. predicted odor experience PN_analysis/yokedControlExperiment.m Figure 4
experiment Figure 3 a experiment flowchart na na
experiment b Brp-Short microscopy image from z stack raw_images/fly2.czi Slice 29
experiment c example segmentation masks IHC/analyze_IHC_brpshort.m Figure 25
experiment d ORN Brp-Short-based OCT-MCH preference prediction R2 IHC/analyze_IHC_brpshort.m Figure 16, Figure 17
experiment e ORN Brp-Short PC 2 loadings IHC/analyze_IHC_brpshort.m Figure 7 toggle trainingonly = 1
experiment f OCT-MCH preference predicted by ORN Brp-Short density PC2 (train) IHC/analyze_IHC_brpshort.m Figure 8 toggle trainingonly = 1
experiment g OCT-MCH preference predicted by ORN Brp-Short density PC2 (test) IHC/analyze_IHC_brpshort.m Figure 20 toggle trainingonly = 1
experiment h OCT-MCH preference predicted by ORN Brp-Short density in DM2 minus DC2 IHC/analyze_IHC_brpshort.m Figure 12
experiment i microscopy image expanded DC2 raw_images/fly18_40x_rightLobe.czi Slice 65
experiment mask with puncta IHC/expansion_experiment/191120_or13a_brpshort_behaviorAndExpansionImaging_age10days/analyze_expansion_spots.m Figure 6
experiment j preference score vs. puncta density IHC/expansion_experiment/191120_or13a_brpshort_behaviorAndExpansionImaging_age10days/analyze_expansion_spots.m Figure 4
experiment k preference score vs. median puncta volume IHC/expansion_experiment/191120_or13a_brpshort_behaviorAndExpansionImaging_age10days/analyze_expansion_spots.m Figure 5
model Figure 4 a model flowchart na na
model b LIF equation na na
model c connectivity matrix ALVariability/connectomics/get_AL_neurons_v1.2.ipynb final plot
model d mini raster ALVariability/analysis/plot_model_outputs.ipynb na
model e bootstrapping schematic na na
model f individual PN responses ALVariability/analysis/all_simulation_PCAs.ipynb na
model g-k PN PC loadings ALVariability/analysis/all_simulation_PCAs.ipynb na
experiment Sup Fig 1 a odor tunnel schematic na na
experiment b scatter OCT-AIR persistence 3 h fly_behavior/PAPERFIGURE_oct_vs_air_persistence/persistence_3h/oct_air_persistence_3h.m Figure 1
experiment c scatter OCT-AIR persistence 24 h fly_behavior/PAPERFIGURE_oct_vs_air_persistence/persistence_24h/oct_air_persistence_24.m Figure 1
experiment d scatter OCT-MCH persistence 3 h fly_behavior/PAPERFIGURE_oct_vs_mch_persistence/oct_mch_persistence.m Figure 1
experiment e scatter OCT-MCH persistence 24 h fly_behavior/PAPERFIGURE_oct_vs_mch_persistence/oct_mch_persistence.m Figure 2
experiment Sup Fig 2 Average glomerulus-odor time-dependent responses ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m Figure 2
experiment Sup Fig 3 PN/ORN heatmaps individual glom-odor responses ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m vectorPixels, near line 489
experiment Sup Fig 4 a PN vs ORN peak response df/f ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m Figure 6
experiment b heatmap correlation matrix PN vs. ORN ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m Figure 8
experiment c calcium response vs DoOR response ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m Figure 9
experiment d calcium response vs DoOR sep. by gloms ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m Figure 10
experiment Sup Fig 5 a individual identity decoding accuracy vs. %  variance retained ORNvsPN_analysis_ALLDATA/predictIndividualFromNeuralResponses.m Figure 1 takes 12 hours to run
experiment b PC2 vs PC1 ORN/PN left/right trials glom-odor responses ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m Figure 37, 38, 35, 36
experiment c within/across lobe/fly ORN/PN euclidean distance ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m Figure 39, 40, 41
experiment Sup Fig 6 Calcium response correlation matrices ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m vectorPixels in script, before any figures. Colorbar is Figure 2 of script
experiment Sup Fig 7 a ORN PC loadings grouped by glom ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m Figure 24
experiment b PN PC loadings grouped by glom ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m Figure 23
experiment c ORN PC loadings grouped by odor ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m FIgure 26
experiment d PN PC loadings grouped by odor ORNvsPN_analysis_ALLDATA/plotRandomSubsetPNandORN.m Figure 25
experiment Sup Fig 8 a algorithm for estimating fraction of signal variance na na
experiment b heatmap fraction of behavioral variance explained powerAnalysisModel/modelExplainedBehaviorVariation.m Figure 2
experiment Sup Fig 9 a AIR-OCT summary prediction na na
experiment MCH-OCT summary prediction na na
experiment Sup Fig 10 a OCT-AIR pref prediction vs time, PN PC1 PN_analysis_oct_vs_air_choice/evaluate_all_data_allTimePoints.m Figure 8
experiment b OCT-AIR pref prediction vs time, ORN PC1 ORN_analysis_oct_vs_air_choice/evaluate_all_data_all_timepoints.m Figure 8
experiment c OCT-MCH pref prediction vs time, ORN1/PN2 PN_analysis/evaluate_all_data_useAllTimePoints.m Figure 7
experiment d odor decoding accuracy vs time ORNvsPN_analysis_ALLDATA/predictOdorFromNeuralResponses.m the only figure takes 12 hours to run
experiment Sup Fig 11 a volume of left vs right AL IHC/analyze_IHC_brpshort.m Figure 1
experiment b Brp-Short fluorescence left vs right IHC/analyze_IHC_brpshort.m Figure 1
experiment c Brp-Short fluorescence density left vs right IHC/analyze_IHC_brpshort.m Figure 1
experiment d volumes of four glomeruli IHC/analyze_IHC_brpshort.m Figure 2
experiment e Brp-Short fluoresence for 4 glomeruli IHC/analyze_IHC_brpshort.m Figure 3
experiment f Brp-Short fluorescence density for 4 glomeruli IHC/analyze_IHC_brpshort.m Figure 4
experiment g PC loadings training data IHC/analyze_IHC_brpshort.m Figure 6 toggle trainingonly = 0/1
experiment h PC loadings all data IHC/analyze_IHC_brpshort.m Figure 6 toggle trainingonly = 0/1
experiment i OCT-MCH preference predicted by ORN Ca ORN_analysis/evaluate_allORNData.m Figure 11
experiment j pref predicted by PC2 ORN Brp-Short IHC/analyze_IHC_brpshort.m Figure 8
experiment k pref predicted by DC2 Brp-Short IHC/analyze_IHC_brpshort.m Figure 15 toggle glomtouse = 3/1
experiment l pref predicted by DM2 Brp-Short IHC/analyze_IHC_brpshort.m Figure 15 toggle glomtouse = 3/1
experiment Sup Fig 12 a hist average PN df/f across coding dimensions PN_analysis_oct_vs_air_choice/evaluate_all_data.m Figure 13
experiment b scatter OCT-MCH pref vs ^ PN_analysis_oct_vs_air_choice/evaluate_all_data.m Figure 14
experiment c hist average ORN df/f across coding dimensions ORN_analysis_oct_vs_air_choice/evaluate_all_data.m Figure 11
experiment d scatter OCT-MCH pref vs ^ ORN_analysis_oct_vs_air_choice/evaluate_all_data.m Figure 12
experiment e hist PN DM2-DC2 deltaf/f PN_analysis/evaluate_allData.m Figure 15
experiment f scatter OCT-MCH pref vs ^ PN_analysis/evaluate_allData.m Figure 16
experiment g hist ORN DM2-DC2 Brp-Short density IHC/analyze_IHC_brpshort.m Figure 9
experiment h scatter OCT-MCH pref vs ^ IHC/analyze_IHC_brpshort.m Figure 10
model Sup Fig 13 a-b raster plot of model neurons ALVariability/analysis/plot_model_outputs.ipynb
model Sup Fig 14 a-d literature-model comparisons ALVariability/analysis/plot_model_outputs.ipynb
model Sup Fig 15 a-b PN-synapse vs. glomerulus volume plots ALVariability/analysis/analyze_connectivity.ipynb
model Sup Fig 16 a-c PCAs under all sources of circuit idiosyncrasy ALVariability/analysis/all_simulation_PCAs.ipynb
model Sup Fig 17 Classifiability of idiosyncratic behavior ALVariability/analysis/all_simulation_PCAs.ipynb
experiment Movie 1 Odor vs air behavioral assay na
experiment Movie 2 Odor vs odor behavioral assay na
experiment Movie 3 Confocal image stack of expanded DC2>Brp-Short raw_images/fly18_40x_leftLobe
model Movie 4 Simulated connectivity matrices under glomerular density resampling ALVariability/analysis/make_connectivity_matrix_gifs.ipynb
model Movie 5 Simulated connectivity matrices under ORN resampling ALVariability/analysis/make_connectivity_matrix_gifs.ipynb
model Movie 6 Simulated connectivity matrices unde LN resampling ALVariability/analysis/make_connectivity_matrix_gifs.ipynb