Quantitative anatomy and biophysical modeling of ascending neuromodulatory systems in the developing rat neocortex.
The 1 match
- [1] § Results › In silico predictions about the organization of NM input ↔ circuit.ipynb, lines 1–371 · score 0.52 · rat somatosensory cortex, biological details, neuromodulatory systems, synaptic transmission, morphologies, neuronal
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
Jupyter notebook · 584 lines · 23 KB · CC-BY-4.0 · 1 match
- # %% [markdown]
- # We have reconstructed a neuromodulated version of a rat somatosensory
- # cortex *microcolumn* based on the one presented at the
- # [NMC-portal](https://bbp.epfl.ch/nmc-portal/welcome.html), using the
- # same pipeline used to build the [full scale non-barrel
- # SSCx](https://elifesciences.org/reviewed-preprints/99688#c25).
- #
- # 
- #
- # **FIGURE 1**. Summary of the biologically detailed tissue model of
- # neocortical microcircuitry. Top left: overview of neuronal anatomy in
- # the reconstruction. Top right: summary of neuronal physiology. Middle
- # left: overview of synaptic anatomy. Middle right: fact and figures on
- # synaptic physiology. Bottom left: summary of microcircuit anatomy.
- # Bottom right: overview of microcircuit physiology. (taken from
- # \[cite:@Ramaswamy2018DataDriven\])
- #
- # In the `circuit` directory (we will assume it is the current working
- # directory), you will find `NmNCx` circuit's network and components data,
- # in addition to the circuit's configuration file and a file provide named
- # `node-sets` that we can use to analyze and simulate our reconstruction,
- #
- # ``` bash
- # ls -alt ./circuit/
- # ```
- #
- # ``` example
- # total 12288
- # -rwx------ 1 <user> staff 5219 Dec 16 12:02 circuit_config.json
- # -rwx------ 1 <user> staff 6490 Dec 16 12:02 node_sets.json
- # drwx------ 1 <user> staff 1048576 Dec 15 17:50 .
- # drwx------ 1 <user> staff 1048576 Dec 15 17:45 ..
- # drwx------ 1 <user> staff 1048576 Dec 11 17:00 components
- # drwx------ 1 <user> staff 1048576 Sep 9 13:40 networks
- # ```
- #
- # In `networks` we find the nodes representing four kings of cell
- # populations,
- #
- # ``` bash
- # ls -al ./circuit/networks/nodes
- # ```
- #
- # ``` example
- # ./circuit/networks/nodes/Cholinergic_neurons:
- # total 6144
- # -rwx------ 1 <user> staff 17088 Sep 9 17:22 nodes.h5
- #
- # ./circuit/networks/nodes/Dopaminergic_neurons:
- # -rwx------ 1 <user> staff 12760 Sep 9 17:22 nodes.h5
- #
- # ./circuit/networks/nodes/SSCx_neurons:
- # total 83968
- # -rwx------ 1 <user> staff 40480712 Sep 9 16:47 nodes.h5
- #
- # ./circuit/networks/nodes/Serotonergic_neurons:
- # total 6144
- # -rwx------ 1 <user> staff 12760 Sep 9 17:22 nodes.h5
- # ```
- #
- # and seven kind of edge populations
- #
- # ``` bash
- # NETWORKS=$PWD/circuit/networks/
- # ls -al $NETWORKS/edges/functional/*
- # ```
- #
- # ``` example
- # ./circuit/networks/edges/functional/Cholinergic_neurons__SSCx_neurons__chemical_synapse:
- # -rwx------ 1 <user> staff 196744064 Sep 9 17:52 projections_ST.h5
- # -rwx------ 1 <user> staff 47421629904 Sep 9 17:52 projections_VT.h5
- #
- # ./circuit/networks/edges/functional/Dopaminergic_neurons__SSCx_neurons__chemical_synapse:
- # -rwx------ 1 <user> staff 164224266 Sep 9 17:52 projections_ST.h5
- # -rwx------ 1 <user> staff 2976780662 Sep 9 17:52 projections_VT.h5
- #
- # ./circuit/networks/edges/functional/SSCx_neurons__SSCx_neurons__chemical_synapse:
- # -rwx------ 1 <user> staff 37272440760 Sep 9 17:22 edges.h5
- #
- # ./circuit/networks/edges/functional/Serotonergic_neurons__SSCx_neurons__chemical_synapse:
- # -rwx------ 1 <user> staff 153982252 Sep 9 17:52 projections_ST.h5
- # -rwx------ 1 <user> staff 4744384198 Sep 9 17:52 projections_VT.h5
- # ```
- #
- # The `components` directory contains single-cell models for morphologies
- # and electrophysiologies (`hoc` and `mod` files),
- #
- # ``` bash
- # COMPONENTS=$PWD/circuit/components
- # echo "Circuit components"
- # ls -alt $COMPONENTS
- #
- # echo "Circuit cell models"
- # ls -alt $COMPONENTS/cell_models
- # ```
- #
- # # Circuit configuration
- #
- # The circuit is described in SONATA format. The only variable in the
- # `circuit-config` presented below is `BASE_DIR` which should point to the
- # directory containing circuit `networks` and `components`. We assume that
- # the `circuit` directory is located in the current workding directory,
- #
- # ``` json
- # {
- # "version": "0.0.1",
- # "manifest": {
- # "$BASE_DIR": "./circuit",
- # "$NETWORK_NODES_DIR": "$BASE_DIR/networks/nodes",
- # "$NETWORK_EDGES_DIR": "$BASE_DIR/networks/edges/functional",
- # "$COMPONENTS_DIR": "$BASE_DIR/components",
- # "$CELL_MODELS_DIR": "$BASE_DIR/components/cell_models"
- # },
- # "components": {
- # "morphologies_dir": ".",
- # "synaptic_models_dir": ".",
- # "point_neuron_models_dir": ".",
- # "mechanisms_dir": "$BASE_DIR/components/mechanisms",
- # "mecombo_info": ".",
- # "biophysical_neuron_models_dir": ".",
- # "templates_dir": "."
- # },
- # "node_sets_file": "$BASE_DIR/node_sets.json",
- # "networks": {
- # "nodes": [
- # {
- # "nodes_file": "$NETWORK_NODES_DIR/SSCx_neurons/nodes.h5",
- # "populations":{
- # "SSCx_neurons": {
- # "type": "biophysical",
- # "morphologies_dir": "$CELL_MODELS_DIR/morphologies",
- # "biophysical_neuron_models_dir": "$CELL_MODELS_DIR/hoc",
- # "mecombo_info": "$CELL_MODELS_DIR/mecombo_emodel.tsv",
- # "alternate_morphologies": {
- # "neurolucida-asc": "$CELL_MODELS_DIR/morphologies/ascii",
- # "h5v1": "$CELL_MODELS_DIR/morphologies/h5"
- # }
- # }
- # }
- # },
- # {
- # "nodes_file": "$NETWORK_NODES_DIR/Cholinergic_neurons/nodes.h5",
- # "populations": {
- # "Cholinergic_neurons": {
- # "type": "virtual"
- # }
- # }
- # },
- # {
- # "nodes_file": "$NETWORK_NODES_DIR/Dopaminergic_neurons/nodes.h5",
- # "populations": {
- # "Dopaminergic_neurons": {
- # "type": "virtual"
- # }
- # }
- # },
- # {
- # "nodes_file": "$NETWORK_NODES_DIR/Serotonergic_neurons/nodes.h5",
- # "populations": {
- # "Serotonergic_neurons": {
- # "type": "virtual"
- # }
- # }
- # }
- # ],
- # "edges": [
- # {
- # "edges_file": "$NETWORK_EDGES_DIR/SSCx_neurons__SSCx_neurons__chemical_synapse/edges.h5",
- # "edge_types_file": null,
- # "populations":{
- # "SSCx_neurons__SSCx_neurons__chemical_synapse":{
- # "type": "chemical"
- # }
- # }
- # },
- # {
- # "edges_file": "$NETWORK_EDGES_DIR/Cholinergic_neurons__SSCx_neurons__chemical_synapse/projections_ST.h5",
- # "edge_types_file": null,
- # "populations":{
- # "Cholinergic_neurons__SSCx_neurons__chemical_synaptic_transmission":{
- # "type": "chemical"
- # }
- # }
- # },
- # {
- # "edges_file": "$NETWORK_EDGES_DIR/Cholinergic_neurons__SSCx_neurons__chemical_synapse/projections_VT.h5",
- # "edge_types_file": null,
- # "populations":{
- # "Cholinergic_neurons__SSCx_neurons__chemical_volumetric_transmission":{
- # "type": "chemical"
- # }
- # }
- # },
- # {
- # "edges_file": "$NETWORK_EDGES_DIR/Dopaminergic_neurons__SSCx_neurons__chemical_synapse/projections_ST.h5",
- # "edge_types_file": null,
- # "populations":{
- # "Dopaminergic_neurons__SSCx_neurons__chemical_synaptic_transmission":{
- # "type": "chemical"
- # }
- # }
- # },
- # {
- # "edges_file": "$NETWORK_EDGES_DIR/Dopaminergic_neurons__SSCx_neurons__chemical_synapse/projections_VT.h5",
- # "edge_types_file": null,
- # "populations":{
- # "Dopaminergic_neurons__SSCx_neurons__chemical_volumetric_transmission":{
- # "type": "chemical"
- # }
- # }
- # },
- # {
- # "edges_file": "$NETWORK_EDGES_DIR/Serotonergic_neurons__SSCx_neurons__chemical_synapse/projections_ST.h5",
- # "edge_types_file": null,
- # "populations":{
- # "Serotonergic_neurons__SSCx_neurons__chemical_synaptic_transmission":{
- # "type": "chemical"
- # }
- # }
- # },
- # {
- # "edges_file": "$NETWORK_EDGES_DIR/Serotonergic_neurons__SSCx_neurons__chemical_synapse/projections_VT.h5",
- # "edge_types_file": null,
- # "populations":{
- # "Serotonergic_neurons__SSCx_neurons__chemical_volumetric_transmission":{
- # "type": "chemical"
- # }
- # }
- # }
- # ]
- # }
- # }
- #
- # ```
- #
- # Above we can read the `SONATA-network` `node` and `edge` population
- # names that we have defined for our circuit. While we can use this
- # `base-config` to study the circuit's anatomy (see accompanying notebook
- # `antomy.ipynb`, we will need to generate neuromodulatory system specific
- # `circuit-configs` to run a simulation. We will discuss setup of a
- # simulation with neuromodulation in the accompanying notebook
- # `physiology.ipynb`. In the next section, let us next look at a
- # `SONATA-simulation-config` without *neuromodulation*.
- #
- # # Simulation configuration
- #
- # To run a simulation campaign we will create a folder, `$PWD/simulations`
- # under which we place individual directories, one for each combination of
- # physiological parameters values we want to scan, and value of the
- # random-seed used by the simulation run.
- #
- # ``` json
- # {
- # "version": 2,
- # "manifest": {
- # "$BASE_DIR": ".",
- # },
- # "run": {
- # "dt": 0.025,
- # "tstop": 4000.000,
- # "random_seed": 98671
- # },
- # "conditions": {
- # "extracellular_calcium": 1.7,
- # "v_init": -80.0,
- # "spike_location": "AIS",
- # "randomize_gaba_rise_time": true,
- # "mechanisms": {
- # "ProbAMPANMDA_EMS": {
- # "init_depleted": true,
- # "minis_single_vesicle": true
- # },
- # "ProbGABAAB_EMS": {
- # "init_depleted": true,
- # "minis_single_vesicle": true
- # }
- # }
- # },
- # "target_simulator": "CORENEURON",
- # "network": "$BASE_DIR/circuit_config.json",
- # "node_sets_file": "$CIRCUIT_DIR/node_sets.json",
- # "inputs": {
- # "depol-mosaic": {
- # "module": "noise",
- # "input_type": "current_clamp",
- # "mean_percent": 97.500,
- # "variance": 0.001,
- # "delay": 500.000,
- # "duration": 4000.00,
- # "node_set": "All"
- # },
- # "hypamp": {
- # "module": "hyperpolarizing",
- # "input_type": "current_clamp",
- # "delay": 0.000,
- # "duration": 4000.00,
- # "node_set": "All"
- # }
- # },
- # "output": {
- # "output_dir": "./reporting",
- # "spikes_file": "spikes.h5"
- # },
- # "reports": {
- # "soma": {
- # "type": "compartment",
- # "start_time": 0,
- # "end_time": 4000,
- # "cells": "All",
- # "variable_name": "v",
- # "unit": "mV",
- # "sections": "soma",
- # "dt": 0.1,
- # "file_name": "soma"}
- # },
- # "connection_overrides": [
- # {
- # "name": "verbose-projections",
- # "source": "NM_ChAT_Sources",
- # "target": "NM_ChAT_Targets",
- # "synapse_configure": "%s.verboseLevel = 1"
- # },
- # {
- # "name": "verbose-projections",
- # "source": "NM_SER_Sources",
- # "target": "NM_SER_Targets",
- # "synapse_configure": "%s.verboseLevel = 1"
- # },
- # {
- # "name": "verbose-projections",
- # "source": "NM_DA_Sources",
- # "target": "NM_DA_Targets",
- # "synapse_configure": "%s.verboseLevel = 1"
- # }
- # ]
- # }
- # ```
- #
- # This `simulation-config` summarizes the common parameters for our
- # neuromodulatory campaign but does not contain any
- # `neuromodulatory-inputs`. We can use it to configure a
- # simulation-campaign to study spontaneous responses of SSCx neurons to
- # input values of extracellular-calcium and the amount of depolarization
- # (injected as a current and specified as mean-percent of `rheobase`
- # current in the SONATA config). We have included some results from such a
- # `spontaneous-activity` simulations in the physiology notebook.
- #
- # # Load a SONATA circuit
- #
- # Here we load our `NmNCx` (SONATA) circuit using BBP's package
- # [bluepysnap](https://github.com/BlueBrain/snap). We will not use any
- # other circuit tools. For more extensive analyses we will need the
- # package `nmncx`, and we can find several examples in that repository.
- # Here we begin by importing the necessary code-packages,
- # %%
- import matplotlib.pyplot as plt
- import matplotlib.patches as patches
- from mpl_toolkits.mplot3d import Axes3D
- plt.rcParams.update({'font.size': 16})
- plt.rcParams.update({'axes.spines.top': False})
- plt.rcParams.update({'axes.spines.right': False})
- from matplotlib import cm
- from bluepysnap import Circuit
- from bluepysnap.bbp import Cell
- from bluepysnap.bbp import Edge as Synapse
- import numpy as np
- import pandas as pd
- import time
- # %% [markdown]
- # Next we will need code and data for the NmNCx circuit we want to
- # analyze. Assuming that the circuit data directory is located in the
- # current working directory, we have,
- # %%
- PROJ_ROOT = Path.cwd()/"circuit"
- nmncxt = Circuit(PROJ_ROOT/"circuit_config.json")
- sscx_cells = nmncxt.nodes["SSCx_neurons"]
- central_GIDs = sscx_cells.ids("mc2_Column")
- all_GIDs = sscx_cells.ids("All")
- neuromod_GIDs = {}
- central_neuromod_GIDs = {}
- central_PYR_GIDs = {}
- central_INT_GIDs = {}
- for NM in ["NM_ChAT", "NM_DA", "NM_SER"]:
- neuromod_GIDs[NM] = sscx_cells.ids(f"{NM}_Targets")
- central_neuromod_GIDs[NM] = (
- np.intersect1d(neuromod_GIDs[NM], central_GIDs))
- central_PYR_GIDs[NM] = (
- np.intersect1d(central_neuromod_GIDs[NM], sscx_cells.ids("Excitatory")))
- central_INT_GIDs[NM] =(
- np.intersect1d(central_neuromod_GIDs[NM], sscx_cells.ids("Inhibitory")))
- # %% [markdown]
- # We are interested into analyze how external projections (e.g.,
- # neuromodulatory inputs, cholinergic projections in this case) are
- # defined
- # %%
- nodepops = {
- "NM_ChAT": "Cholinergic_neurons",
- "NM_DA": "Dopaminergic_neurons",
- "NM_SER": "Serotonergic_neurons"}
- edgepops = {
- "NM_ChAT_ST": 'Cholinergic_neurons__SSCx_neurons__chemical_synaptic_transmission',
- "NM_ChAT_VT": 'Cholinergic_neurons__SSCx_neurons__chemical_volumetric_transmission',
- "NM_DA_ST": 'Dopaminergic_neurons__SSCx_neurons__chemical_synaptic_transmission',
- "NM_DA_VT": 'Dopaminergic_neurons__SSCx_neurons__chemical_volumetric_transmission',
- "NM_SER_ST": 'Serotonergic_neurons__SSCx_neurons__chemical_synaptic_transmission',
- "NM_SER_VT": 'Serotonergic_neurons__SSCx_neurons__chemical_volumetric_transmission'}
- LOG.info(
- f"There are {len(all_GIDs)} neuron in the whole O1, {len(central_GIDs)}"
- " in the central column\n\n")
- LOG.info("Number of potential target neurons:\n")
- projection_ST = {}
- projection_VT = {}
- virtual_sources = {}
- for NM in ["NM_ChAT", "NM_DA", "NM_SER"]:
- projection_ST[NM] = nmncxt.edges[edgepops[f"{NM}_ST"]]
- projection_VT[NM] = nmncxt.edges[edgepops[f"{NM}_VT"]]
- virtual_sources[NM] = nmncxt.nodes[nodepops[NM]].ids()
- LOG(f"There are {len(virtual_sources[NM])} virtual sources for {NM}")
- LOG(f"There are {len(neuromod_GIDs[NM])} neuron modulated by {NM} in the whole O1,"
- f"{len(central_neuromod_GIDs[NM])} in the central column")
- # %% [markdown]
- # ``` example
- # ________________________________________________________________________________
- # PLOG-NmNCx INFO: [2024-12-13-16-49]
- # --------------------------------------------------------------------------------
- # There are 163528 neuron in the whole O1, 22898 in the central column
- #
- #
- # ________________________________________________________________________________
- # PLOG-NmNCx INFO: [2024-12-13-16-49]
- # --------------------------------------------------------------------------------
- # Number of potential target neurons:
- #
- # There are 282 virtual sources for NM_ChAT
- # There are 151746 neuron modulated by NM_ChAT in the whole O1,21251 in the central column
- # There are 102 virtual sources for NM_DA
- # There are 156428 neuron modulated by NM_DA in the whole O1,21916 in the central column
- # There are 53 virtual sources for NM_SER
- # There are 90203 neuron modulated by NM_SER in the whole O1,12495 in the central column
- # ```
- #
- # We will need projections data,
- # %%
- all_projections = {}
- all_central_projections = {}
- all_central_projections_PYR = {}
- all_central_projections_INT = {}
- LOG.info("Number of synapses targeting the whole O1 and the central column")
- for NM in ["NM_ChAT", "NM_DA", "NM_SER"]:
- all_projections[NM] = {}
- all_central_projections[NM] = {}
- all_central_projections_PYR[NM] = {}
- all_central_projections_INT[NM] = {}
- for projection, name in zip([projection_ST[NM], projection_VT[NM]], ["ST", "VT"]):
- N_proj = 0
- projs = []
- for target in neuromod_GIDs[NM]:
- proj = projection.afferent_edges(target)
- N_proj += len(proj)
- projs.append(proj)
- N_proj_mc2 = 0
- central_projs = []
- for target in central_neuromod_GIDs[NM]:
- proj = projection.afferent_edges(target)
- N_proj_mc2 += len(proj)
- central_projs.append(proj)
- central_PYR_projs = []
- for target in central_PYR_GIDs[NM]:
- proj = projection.afferent_edges(target)
- central_PYR_projs.append(proj)
- central_INT_projs = []
- for target in central_INT_GIDs[NM]:
- proj = projection.afferent_edges(target)
- central_INT_projs.append(proj)
- LOG(f"{NM}_{name} - {N_proj} synapses in the whole O1,"
- f" {N_proj_mc2} synapses in the central column")
- all_projections[NM][name] = np.concatenate(projs)
- all_central_projections[NM][name] = np.concatenate(central_projs)
- all_central_projections_PYR[NM][name] = np.concatenate(central_PYR_projs)
- all_central_projections_INT[NM][name] = np.concatenate(central_INT_projs)
- # %% [markdown]
- # ``` example
- # ________________________________________________________________________________
- # PLOG-NmNCx INFO: [2024-12-13-16-49]
- # --------------------------------------------------------------------------------
- # Number of synapses targeting the whole O1 and the central column
- # NM_ChAT_ST - 667880 synapses in the whole O1, 93917 synapses in the central column
- # NM_ChAT_VT - 290952862 synapses in the whole O1, 47769462 synapses in the central column
- # NM_DA_ST - 458424 synapses in the whole O1, 64404 synapses in the central column
- # NM_DA_VT - 18494738 synapses in the whole O1, 3016779 synapses in the central column
- # NM_SER_ST - 174565 synapses in the whole O1, 24287 synapses in the central column
- # NM_SER_VT - 16104091 synapses in the whole O1, 2597090 synapses in the central column
- # ```
- #
- # ``` example
- # ________________________________________________________________________________
- # PLOG-NmNCx INFO: [2024-12-05-12-33]
- # --------------------------------------------------------------------------------
- # Number of synapses targeting the whole O1 and the central column
- # NM_ChAT_ST - 667880 synapses in the whole O1, 93917 synapses in the central column
- # NM_ChAT_VT - 290952862 synapses in the whole O1, 47769462 synapses in the central column
- # NM_DA_ST - 458424 synapses in the whole O1, 64404 synapses in the central column
- # NM_DA_VT - 18494738 synapses in the whole O1, 3016779 synapses in the central column
- # NM_SER_ST - 174565 synapses in the whole O1, 24287 synapses in the central column
- # NM_SER_VT - 16104091 synapses in the whole O1, 2597090 synapses in the central column
- # ```
- # %%
- LOG.info("Number of ACTUAL target neurons:\n")
- central_pre = {}
- central_post = {}
- for NM in ["NM_ChAT", "NM_DA", "NM_SER"]:
- central_pre[NM] = {}
- central_post[NM] = {}
- post_ST = projection_ST[NM].get(all_projections[NM]["ST"], Synapse.TARGET_NODE_ID)
- pre_ST = projection_ST[NM].get(all_projections[NM]["ST"], Synapse.SOURCE_NODE_ID)
- post_VT = projection_VT[NM].get(all_projections[NM]["VT"], Synapse.TARGET_NODE_ID)
- pre_VT = projection_VT[NM].get(all_projections[NM]["VT"], Synapse.SOURCE_NODE_ID)
- central_post_ST = projection_ST[NM].get(all_central_projections[NM]["ST"],
- Synapse.TARGET_NODE_ID)
- central_pre_ST = projection_ST[NM].get(all_central_projections[NM]["ST"],
- Synapse.SOURCE_NODE_ID)
- central_post[NM]["ST"] = central_post_ST
- central_pre[NM]["ST"] = central_pre_ST
- central_post_VT = projection_VT[NM].get(all_central_projections[NM]["VT"], Synapse.TARGET_NODE_ID)
- central_pre_VT = projection_VT[NM].get(all_central_projections[NM]["VT"], Synapse.SOURCE_NODE_ID)
- central_post[NM]["VT"] = central_post_VT
- central_pre[NM]["VT"] = central_pre_VT
- LOG(
- f"There are {len(np.unique(pre_ST))}/{len(virtual_sources[NM])}"
- " ACTUAL virtual sources for {NM} for ST"
- f" {len(np.unique(pre_VT))}/{len(virtual_sources[NM])} for VT targeting the whole O1")
- LOG(
- f"There are {len(np.unique(central_pre_ST))}/{len(virtual_sources[NM])}"
- " ACTUAL virtual sources"
- f" for {NM} for ST, {len(np.unique(central_pre_VT))}/{len(virtual_sources[NM])}"
- f" for VT targeting the central column")
- LOG(
- f"There are {len(np.unique(post_ST))}/{len(neuromod_GIDs[NM])}"
- " ACTUAL modulated neurons"
- f" for {NM} for ST, {len(np.unique(post_VT))}/{len(neuromod_GIDs[NM])}"
- f" for VT in the whole O1")
- LOG(
- f"There are {len(np.unique(central_post_ST))}/{len(central_neuromod_GIDs[NM])}"
- " ACTUAL modulated neurons"
- f" for {NM} for ST, {len(np.unique(central_post_VT))}/{len(central_neuromod_GIDs[NM])}"
- f" for VT in the central column\n")
- # %% [markdown]
- # A more detailed analysis of the circuit's anatomy is provided in the
- # accompanying notebook `anatomy.ipynb` or `anatomy.org`, and simulations
- # are further described in `physiology.ipynb / physiology.org`.
circuit.ipynb, under CC-BY-4.0 · at the source
Overview
- Blue Brain Project, École polytechnique fédérale de Lausanne (EPFL), Campus Biotech, Geneva, Switzerland
- Laboratorio Cajal de Circuitos Corticales, CTBUniversidad Politécnica de Madrid, Spain
- Department of Cell Biology, Complutense University, Madrid, Spain
- Instituto Cajal, CSIC, Madrid, Spain
- Department of Electronics, Information and Bioengineering, Politecnico di MilanoMilano, Italy
- CIBERNED, Centro de Investigación Biomédica en Red de Enfermedades Neurodegenerativas, Spain
- Neural Circuits Laboratory, Biosciences Institute, Newcastle University, United Kingdom
Abstract
The hindlimb representation in the somatosensory cortex of two-week old Wistar rats has been a valuable model system for dissecting the microcircuitry of neurons and their synaptic connections. In this study, we present a comprehensive experimental dataset quantifying the fiber length per cortical volume and the density of varicosities for cholinergic, catecholaminergic, and serotonergic neuromodulatory systems within the cortical neuropil using immunocytochemical staining and stereological techniques, along with a methodological framework for generating biophysically detailed computational models from these data. Acquired data were integrated into a biophysically detailed computational model of the somatosensory cortex to explore the anatomical organization and functional implications of neuromodulatory innervation. We found that neuromodulatory innervation, although sparse, substantially impacts network activity. Network simulations support the hypothesis that acetylcholine suppresses slow oscillations and promotes the desynchronization of cortical networks, consistent with the extensive findings in existing literature. Additionally, the temporal properties of acetylcholine modulation are consistent with synaptic rather than volume release. Furthermore, we found that the release of dopamine and serotonin in sensory cortices induces network desynchronization by inhibiting delta oscillations and that serotonin also initiates the emergence of theta oscillations, pointing to previously unexplored aspects of their function in governing cortical network activity. The experimental data and the biophysical computational model are available as an open-access community resource.
Reproduced under the paper's license (CC BY), from the paper cited above.
Repository
Its files are read in the Code ↔ Paper reader above, with 1 match between paragraphs and lines of code.
Zenodo 14587678
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
- 27 September 2026: the link answers (HTTP 200)
2 files
- circuit.ipynb, Jupyter, 584 lines, 1 match
- README.md, Text, 220 lines
The paper's code and data availability statement is in the Data section.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 1 script, each with its path and the digest of its content;
- 1 match between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
No dataset and no data link were found in the paper.
Data Availability
Data on varicosity densities of neuromodulatory inputs are reported in figures and text in this publication and deposited at Zenodo (https://
Reproduced under the paper's license (CC BY), from the paper cited above.
Data and code availability
Data on varicosity densities of neuromodulatory inputs are reported in figures and text in this publication and deposited at Zenodo (https://
Volumetric atlases, neuron reconstructions, the parameterization of connectivity in JSON format, and the description of the model in SONATA format have been deposited at Zenodo and are publicly available as of the date of the publication.
Original code has been deposited at Zenodo and is publicly available at https://
Reproduced under the paper's license (CC BY), from the paper cited above.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 27 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 9 authors, 13 MeSH terms, 10 funders, 122 references.
Cite
This paper
Colangelo, C., Muñoz, A., Antonietti, A., Sood, V., Antón-Fernández, A., Herttuainen, J., Romani, A., DeFelipe, J., & Ramaswamy, S. (2026). Quantitative anatomy and biophysical modeling of ascending neuromodulatory systems in the developing rat neocortex. PLoS computational biology, 22(6), e1014460. https://
BibTeX
@article{colangelo2026qu
author = {Colangelo, Cristina and Muñoz, Alberto and Antonietti, Alberto and Sood, Vishal and Antón-Fernández, Alejandro and Herttuainen, Joni and Romani, Armando and DeFelipe, Javier and Ramaswamy, Srikanth},
title = {{Quantitative anatomy and biophysical modeling of ascending neuromodulatory systems in the developing rat neocortex}},
journal = {PLoS computational biology},
year = {2026},
month = jun,
volume = {22},
number = {6},
pages = {e1014460},
publisher = {PLOS},
issn = {1553-734X},
doi = {10.1371/
url = {https://
pmid = {42361121},
pmcid = {PMC13345462}
}
RIS
TY - JOUR
AU - Colangelo, Cristina
AU - Muñoz, Alberto
AU - Antonietti, Alberto
AU - Sood, Vishal
AU - Antón-Fernández, Alejandro
AU - Herttuainen, Joni
AU - Romani, Armando
AU - DeFelipe, Javier
AU - Ramaswamy, Srikanth
TI - Quantitative anatomy and biophysical modeling of ascending neuromodulatory systems in the developing rat neocortex
T2 - PLoS computational biology
J2 - PLoS Comput Biol
PY - 2026
DA - 2026/
VL - 22
IS - 6
SP - e1014460
SN - 1553-734X
PB - PLOS
DO - 10.1371/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1371/
"type": "article-journal",
"title": "Quantitative anatomy and biophysical modeling of ascending neuromodulatory systems in the developing rat neocortex",
"container-title": "PLoS computational biology",
"author": [
{
"family": "Colangelo",
"given": "Cristina"
},
{
"family": "Muñoz",
"given": "Alberto"
},
{
"family": "Antonietti",
"given": "Alberto"
},
{
"family": "Sood",
"given": "Vishal"
},
{
"family": "Antón-Fernández",
"given": "Alejandro"
},
{
"family": "Herttuainen",
"given": "Joni"
},
{
"family": "Romani",
"given": "Armando"
},
{
"family": "DeFelipe",
"given": "Javier"
},
{
"family": "Ramaswamy",
"given": "Srikanth"
}
],
"container-title-short":
"volume": "22",
"issue": "6",
"page": "e1014460",
"DOI": "10.1371/
"PMID": "42361121",
"PMCID": "PMC13345462",
"ISSN": "1553-734X",
"publisher": "PLOS",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
6,
26
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1126/sciadv.adz6495
- Pupil-linked arousal heterogeneously modulates cell-type-specific sensory processing.Journal: Science advancesIn common: 8 references
- [2] doi:10.1038/s42003-026-10032-2 [code]
- Data-driven mouse motor thalamus model reveals topography and spatial weight scaling govern spindle dynamics.Journal: Communications biologyIn common: pandas, Matplotlib, NumPy, 1 reference, author Alberto Antonietti
- [3] doi:10.1073/pnas.2533168123 [code]
- Dendritic morphology and synaptic nonlinearities enhance functional complexity in human cortical neurons.Journal: Proceedings of the National Academy of Sciences of the United States of AmericaIn common: pandas, Matplotlib, NumPy, rat, 3 references
- [4] doi:10.1093/bioinformatics/btag328 [code]
- eFEL: electrophysiology feature extraction library.Journal: Bioinformatics (Oxford, England)In common: pandas, Matplotlib, NumPy, 3 references
- [5] doi:10.1126/sciadv.aed6417 [code]
- Intrinsic timing, not temporal prediction, underlies ramping dynamics in visual and parietal cortex during passive behavior.Journal: Science advancesIn common: pandas, Matplotlib, NumPy, 3 references
- [6] doi:10.1371/journal.pcbi.1013252 [code]
- Dynamic cholinergic signaling differentially desynchronizes cortical microcircuits dependent on modulation rate and network connectivity.Journal: PLoS computational biologyIn common: Matplotlib, NumPy, 3 references
- [7] doi:10.1073/pnas.2532072123 [code]
- Spatially structured heterogeneity shapes large-scale cortical dynamics in a model of the human cortex.Journal: Proceedings of the National Academy of Sciences of the United States of AmericaIn common: Matplotlib, NumPy, 3 references
- [8] doi:10.7554/elife.110795 [code]
- REM sleep prefrontal high-frequency oscillation chains mediate distinct cortical - hippocampal reactivation patterns compared to NREM sleep.Journal: eLifeIn common: rat, 3 references
- [9] doi:10.1016/j.isci.2026.117130 [code]
- Region-specific weighting of sensory intensity and reward prediction error by dopamine signals.Journal: iScienceIn common: pandas, Matplotlib, NumPy, 2 references
- [10] doi:10.1158/0008-5472.can-25-4018 [code]
- MIF-Induced CD74+ Microglia and Macrophages Promote Progression of Brain Metastasis and Are Clinically Relevant across Central Nervous System Disorders.Journal: Cancer researchIn common: author Alejandro Antón-Fernández
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 1 repository of the authors' code, each at its verified commit and with its license, 1 script, and 1 match between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:ece4c8ebbd0fa417…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[.
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
