Hi! Is the tracer connectivity data between different layers available for the mouse brain?
In particular I would need the connectivity information of the layers of the Entorhinal cortex.
Apparently, afferent and efferent connections of Entorhinal layers are shown in the Brain explorer 2, however I am not able to retrieve this information using the mouse connectivity cache.
Hi!
Yes, you can use the Mouse Connectivity Cache to download projection data by layer. The key is to find the structure ids for layers within structures. The code snippet below shows how to find structure ids for all the substructures within the entorhinal cortex (including layers) and then download the quantified injection and projection volumes by layer for all the injections we have performed in entorhinal cortex.
from allensdk.core.mouse_connectivity_cache import MouseConnectivityCache
mcc = MouseConnectivityCache(manifest_file='mouse_connectivity_manifest.json')
structure_tree = mcc.get_structure_tree()
ent_descendants = structure_tree.descendant_ids([ia_map['ENT']])[0]
ia_map = structure_tree.get_id_acronym_map()
ai_map = {item:key for key, item in ia_map.items()}
print([ai_map[structure] for structure in ent_descendants])
experiments = mcc.get_experiments(injection_structure_ids=ent_descendants)
print(len(experiments))
expt_ids = [experiment['id'] for experiment in experiments]
unionizes = mcc.get_structure_unionizes(experiment_ids = expt_ids, structure_ids = ent_descendants)
injection_data = unionizes[unionizes['is_injection'] == True]
projection_data = unionizes[unionizes['is_injection'] == False]
Note that the injection_data and projection_data dataframes have one row for each structure id and hemisphere (1=left, 2=right, 3=both), so there will be more than one row for most structures. You can use the structure ids for each layer (from the ent_descendants list) to find injection volume (injection_data[‘projection_volume’]), projection volume (projection_data[‘projection_volume’], or projection_data[‘normalized_projection_volume’] if you want to normalize by injection volume), or projection density.
The transgenic mouse line each experiment was performed in can be found in “experiments” under the “transgenic_line” key. To match mouse lines to unionize data, use the “experiment_id” key from the unionizes dataframe to index the “id” in experiments corresponding to the experiment id. The “id” key in the unionizes dataframe is a unique identifier that does not correspond to an experiment id.
More examples on how to work with unionize data (projection data quantified by structure) can be found in this Jupyter notebook. Feel free to follow up if you need more help!
Good morning,
I follow up on this question beacuse I had some problems identifying the exact injection layer of each experiment.
In particular, in the proposed code snippet ent_descendants takes value:
[‘ENTl’, ‘ENTl1’, ‘ENTl2’, ‘ENTl2/3’, ‘ENTl2a’, ‘ENTl2b’, ‘ENTl3’, ‘ENTl4’, ‘ENTl4/5’, ‘ENTl5’, ‘ENTl5/6’, ‘ENTl6a’, ‘ENTl6b’, ‘ENTm’, ‘ENTm1’, …
where I reported just the first few entries. What I noticed is that the function get_experiments only returns experiments for inputs ‘ENTl’, ‘ENTm’, etc., which are not layers but are their parent structures.
Therefore, I am unable to pinpoint exactly which layers constitutes the injection structure of each experiment, is there a way to do so?
I am trying to build a connectome for structure layers, hence I need to associate each injection layer to outputs on other layers.
Thanks,