This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Mapping neurotransmitter systems to the structural and functional organization of the human neocortex
This repository contains code and data created in support of my project "Mapping neurotransmitter systems to the structural and functional organization of the human neocortex", now published in Nature Neuroscience (see tweeprint here). All code was written in Python. Below, I describe all the folders and files in details.
The code folder contains all the code used to run the analyses and generate the figures.
If you use this code, don't forget to change the path
variable.
I regularly use netneurotools, a handy Python package developed in-house.
This folder contains the following files (in an order that complements the manuscript):
- parcellate will parcellate all the PET
nifti
images into the Schaefer parcellation and spit outcsv
files. Code can easily be modified to suit a different parcellation. - make_receptor_matrix.py will load the
csv
files made by parcellate, take weighted averages of maps that use the same tracer, and save a pre-zscored region-by-receptor matrix. It also plots all the receptor maps (corresponding to Figure 1 in the paper). - rsimilarity.py covers Figure 2's analyses including making the receptor similarity matrix and calculating the first principal component of receptor density.
- connectivity.py covers Figure 3's structure/function analyses. Highlights include a Python-translated version of Rick's Matlab code for making degree and edge-length preserving null structural connectivity matrices (see this paper). This also covers the structure-function coupling analysis and Figure S1, Figure S2.
- dynamics.py covers Figure 4's MEG analyses and Figure S3.
- cognition.py covers Figure 5's receptor-Neurosynth PLS analyses as well as Figure S6. Highlights include the use of the pyls Python package to run PLS and code to run distance-dependent cross-validation.
- disease.py covers Figure 6's receptor-ENIGMA analyses and Figure S7. The enigma_atrophy.csv data comes from my hansen_crossdisorder_vulnerability repo where I mostly use the enigmatoolbox.
- autoradiography.py covers all the replication analyses using autoradiography-derived receptor density data. This includes Figure S4 (corresponding to Figure 4), Figure S8 (corresponding to Figure 2 and 3), Figure S9 (corresponding to Figure 5), and Figure S10 (corresponding to Figure 6).
- supplement.py covers Figures S11, S12, and S13, where we compare results using different parcellation resolutions, PET tracers, and test for age effects.
The data folder contains all the data used to run the analyses. If you use any of the PET data, please cite (1) the paper(s) that originally collected the data (citations can be found in Table_S3.xlsx) and (2) this paper (!). Here are the details:
- PET_nifti_images has a bunch of group-averaged volumetric PET images. PET data is also available on neuromaps, a handy toolbox that makes comparing brain maps and converting brain maps between template spaces and parcellations easy! Naming convention is:
<receptor_name>_<tracer>_<number of healthy controls>_<data reference>.nii.gz
. Note: some of this data was originally available elsewhere. See Copenhagen's Neurobiology Research Unit for serotonin and GABA atlases, and JuSpace for a collection of PET maps, some of which come from NeuroVault. Also: there is one map that is not yet available in volumetric form (VAChT_feobv_hc3_spreng.nii
) but will be, soon. The parcellated versions are in the PET_parcellated folder. - PET_parcellated has the parcellated PET maps in
csv
format - autoradiography is just a copy of Al Goulas' repo (in support of this paper) but the data originally comes from Karl Zilles and Nicola Palomero-Gallagher's Table S2 in this paper.
- lausanne has the structural and functional (group averaged/consensus) networks for the Lausanne atlas, which is the atlas I used for the preprint (but ended up replacing this with Schaefer during the review process).
- schaefer has the structural and functional (group averaged/consensus) networks for the Schaefer atlas.
- MEG has parcellated group-average power maps for 6 power distributions (order: delta, theta, alpha, beta, low gamma, high gamma) from 33 unrelated subjects in HCP. Note that HCP data redistribution must follow their data terms, including registration with ConnectomeDB, agreement of their terms, and registration for Open Access Data here. Please also cite relevant publications as mentioned here.
- neurosynth has parcellated Neurosynth association maps for 123 terms from the Cognitive Atlas. See more on how to get these maps from this course I taught.
- colourmap.csv is my colourmap!
- enigma_atrophy.csv are the ENIGMA-derived cortical thinning maps (see the enigmatoolbox). Disorder names can be found here
- mesulam_scale033.csv classify brain regions by the Mesulam classes of laminar differentiaion (see this).
- receptor_names_pet.npy are the names of the receptors in receptors_scalexxx.csv.
This folder contains the outputs from the analyses except the PLS outputs because they were too large.
This folder contains paper, the preprint, and supplementary Table S3.