OSCR

Spatial continuity of neurons explains non-random network architecture.

Code ↔ Paper

9 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 9 matches
  1. [1] § STAR★Methods › Method details › Selecting a subset of connections to analyze in the MICrONS data ↔ src/Match and compare to microns.ipynb, lines 340–427 · score 0.69 · L5ET, L5NP, L5a, L5b, cells, MICrONS
  2. [2] § STAR★Methods › Method details › Reference for graph structure - MICrONS ↔ src/pnagm/util.py, lines 54–113 · score 0.66 · classification_system, excitatory_neuron, MICrONS
  3. [3] § STAR★Methods › Method details › Stochastic geometric spread graph model (SGSG) ↔ src/pnagm/util.py, lines 115–148 · score 0.65 · stochastic spread graph, dimensional space, random geometric graph, nodes, model
  4. [4] § Results › Central hypothesis: Neuron physicality shapes network structure ↔ src/Nearest neighbor 1d prob increase.ipynb, lines 1–51 · score 0.59 · post synaptic neuron, connection demonstrates, future potential connections, probability function, oriented, pre
  5. [5] § STAR★Methods › Method details › Reference for graph structure - MICrONS ↔ src/Nearest neighbor 2d prob increase.ipynb, lines 86–108 · score 0.58 · classification_system, excitatory_neuron, classes
  6. [6] § Results › A simplified model of the axon physicality effect leads to non-random micro-structure ↔ src/pnagm/util.py, lines 54–113 · score 0.55 · soma locations, excitatory neurons, MICrONS
  7. [7] § STAR★Methods › Method details › Graph control models ↔ src/connalysis/randomization/randomization.py, lines 537–571 · score 0.54 · Bishuffled model, bidirectional connections, match, graph, network
  8. [8] § STAR★Methods › Method details › Stochastic geometric spread graph model (SGSG) ↔ src/connalysis/randomization/randomization.py, lines 957–1106 · score 0.51 · stochastic spread model, candidate, outgoing, graphs, edge, node
  9. [9] § Results › Testing the hypothesis in excitatory connectomes ↔ src/Nearest neighbor 1d prob increase.ipynb, lines 1–51 · score 0.50 · MICrONS, modeled network, post synaptic, synaptic neurons, potential connections, pre

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

Python · 149 lines · 5.6 KB · GPL-3.0 · 3 matches

  1. import numpy
  2. import h5py
  3. import pandas
  4. import os
  5. # For the random or non-random generation of neuron locations in space
  6. def make_points(cfg):
  7. """
  8. Generate a random point cloude from a parameterization dict.
  9. """
  10. n_nrn = cfg["n_nrn"]
  11. tgt_sz = cfg["tgt_sz"]
  12. if not hasattr(tgt_sz, "__iter__"):
  13. tgt_sz = [tgt_sz, tgt_sz, tgt_sz]
  14. tgt_sz = numpy.array(tgt_sz).reshape((1, -1))
  15. pts = numpy.random.rand(n_nrn, 3) * tgt_sz - tgt_sz/2
  16. return pts
  17. def no_categorical_dtypes(N):
  18. """
  19. Utility function: Turns categorical node properties into non-categorical ones. This is required
  20. for some analyses for technical reasons.
  21. """
  22. import pandas
  23. for col in N._vertex_properties.columns:
  24. if isinstance(N._vertex_properties[col].dtype, pandas.CategoricalDtype):
  25. N._vertex_properties[col] = N._vertex_properties[col].astype(str)
  26. def load_all_instances_from_file(fn):
  27. """
  28. Utility function to load all ConnectivityMatrix objects from an .h5 file. This function is not very
  29. clever and strongly assumes that any group found in the .h5 file contains a ConnectivityMatrix, without
  30. additional checks.
  31. """
  32. import conntility
  33. grp_tuples = []
  34. with h5py.File(fn, "r") as h5:
  35. for prefix in h5.keys():
  36. if isinstance(h5[prefix], h5py.Group):
  37. for grp_name in h5[prefix].keys():
  38. if isinstance(h5[prefix][grp_name], h5py.Group):
  39. grp_tuples.append((prefix, grp_name))
  40. matrices = [conntility.ConnectivityMatrix.from_h5(fn, group_name=grp_name,
  41. prefix=prefix)
  42. for prefix, grp_name in grp_tuples]
  43. matrices = conntility.ConnectivityGroup(
  44. pandas.DataFrame({"instance": range(len(matrices))}), matrices
  45. )
  46. return matrices
  47. def points_from_microns(cfg, return_additional_controls=False):
  48. """
  49. Generate a point cloud by looking up soma locations from a reference connectome. The reference could
  50. be the MICrONS EM connectome, hence the name. But in principle any source can be used, as long as it
  51. provides soma locations.
  52. Args:
  53. cfg: dict configuring the process, i.e., which connectome to load and which subvolume to select.
  54. """
  55. import conntility
  56. if "root" in cfg:
  57. fn = cfg["root"] + "/" + cfg["fn"]
  58. else:
  59. fn = cfg["fn"]
  60. try:
  61. N = conntility.ConnectivityMatrix.from_h5(fn, "condensed")
  62. except:
  63. N = conntility.ConnectivityMatrix.from_h5(fn)
  64. no_categorical_dtypes(N)
  65. sz = cfg["tgt_sz"]
  66. cols = ["x_nm", "y_nm", "z_nm"]
  67. for _col in cols:
  68. if _col in N._vertex_properties.columns:
  69. N._vertex_properties[_col[0]] = N._vertex_properties[_col] / 1000.0
  70. tl_col_dict = {
  71. "ss_flat_x": "x", "ss_flat_y": "z", "depth": "y"
  72. }
  73. for _col_in, _col_out in tl_col_dict.items():
  74. if _col_in in N._vertex_properties.columns:
  75. N._vertex_properties[_col_out] = N._vertex_properties[_col_in] + numpy.random.rand(len(N)) * 1E-9
  76. cols = ["x", "y", "z"]
  77. center = N.vertices[cols].mean()
  78. for k, v in cfg.get("filters", {"classification_system": "excitatory_neuron"}).items():
  79. if isinstance(v, list):
  80. N = N.index(k).isin(v)
  81. else:
  82. N = N.index(k).eq(v)
  83. for _col in cols:
  84. _col_o = "o_" + _col
  85. if _col_o in cfg:
  86. _o = cfg[_col_o]
  87. N = N.index(_col).le(center[_col] + _o + sz/2).index(_col).ge(center[_col] + _o - sz/2)
  88. print(len(N))
  89. pts = N.vertices[cols].values
  90. if return_additional_controls:
  91. additional_controls = {}
  92. for add_ctrl_name, add_ctrl in cfg.get("additional_controls", {}).items():
  93. ctrl_fn = add_ctrl["fn"]
  94. if "root" in add_ctrl.keys():
  95. ctrl_fn = os.path.join(add_ctrl["root"], ctrl_fn)
  96. additional_controls[add_ctrl_name] = load_all_instances_from_file(ctrl_fn)
  97. return pts, N, additional_controls
  98. return pts, N
  99. def create_neighbor_spread_graph(pts, cfg, reference=None):
  100. """
  101. Utility function that combines generation of a random geometric graph and generation of a stochastic
  102. spread graph on the first graph.
  103. Args:
  104. pts (numpy.array; m x n): Locations of m nodes in n-dimensional space.
  105. cfg (dict): Configures generation of the two graphs. For details, see README and the docstrings of
  106. pnagm.nngraph.cand2_point_nn_matrix and instance.build_instance.
  107. reference (optional; conntility.ConnectivityMatrix): If "per_class_bias" is used for the generation of
  108. the random geometric graph, then a reference connectome is required. See README and
  109. nngraph.generate_custom_weights_by_node_class for details.
  110. """
  111. from . import nngraph, instance
  112. w_out_use = None
  113. w_in_use = None
  114. if "per_class_bias" in cfg:
  115. assert reference is not None, "When using per class bias, must provide reference ConnectivityMatrix"
  116. if "outgoing" in cfg["per_class_bias"]:
  117. prop = cfg["per_class_bias"]["outgoing"]
  118. w_out_use = nngraph.generate_custom_weights_by_node_class(reference, prop, 1)
  119. if "incoming" in cfg["per_class_bias"]:
  120. prop = cfg["per_class_bias"]["incoming"]
  121. w_in_use = nngraph.generate_custom_weights_by_node_class(reference, prop, 0)
  122. M = nngraph.cand2_point_nn_matrix(pts,
  123. custom_w_out=w_out_use, custom_w_in=w_in_use,
  124. **cfg["nngraph"]).astype(bool).astype(float)
  125. mdl_instance, a, b = instance.build_instance(pts, M, **cfg["instance"])
  126. return mdl_instance, M

util.py at commit 0902376, under GPL-3.0 · at the source

Overview

Authors: Michael W Reimann1, Daniela Egas Santander1,2,3, Lida Kanari4, Natalí Barros-Zulaica1
  1. Open Brain Institute, Lausanne, Switzerland
  2. Max Planck Institute of Molecular Cell Biology and Genetics, Dresden, Germany
  3. Center for Systems Biology Dresden, Dresden, Germany
  4. Department of Mathematics, University of Oxford, Oxford, UK
Journal: iScience, volume 29, issue 6, article 116144
Dates: received 13 October 2025; accepted 12 May 2026; published online 1 June 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1016/j.isci.2026.116144 · PMID 42291180 · PMCID PMC13253143 · OpenAlex W7163002029
Open access: gold, a free copy (OpenAlex)
Status: code verified
Methods: Statistics, Connectivity, Graphs, Machine learning
Keywords: biological sciences
Topic: Neural dynamics and brain function (Cognitive Neuroscience, Neuroscience), according to OpenAlex
Funding: UK Research and Innovation; UK Research and Innovation Medical Research Council (MR/Z504804/1)
Citations: not cited yet (Europe PMC); 82 references in the paper

Abstract

Neuronal networks are characterized by complex and functionally relevant connectivity motifs. We developed an intuitive explanation for its emergence. While a class of neurons on average innervates its entire surroundings, each individual neuron can only cover a small part of the space. That region is different for each neuron but not completely random, as it is physically constrained by the spatial continuity of the axon. This hypothesis was successfully tested against a morphologically detailed model and an electron-microscopic reconstruction of cortical connectivity. We distilled it into a stochastic algorithm that generates networks, which accurately match the reference data. Our work bridges previous efforts to capture network complexity with top-down or bottom-up methods, that is, by adding complexity constraints to simple stochastic models or by predicting synapses from neuron appositions. It may improve the understanding of the impact of neuron malformations and the functional role of non-random network structure in simplified models.

Reproduced under the paper's license (CC BY), from the paper cited above.

Repositories

Its files are read in the Code ↔ Paper reader above, with 9 matches between paragraphs and lines of code.

Zenodo 20084936

License: apgl-v3
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Size: 1 file
Software Heritage: not checked
Found in: the resources table
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: NumPy (16 files), SciPy (16 files), pandas (14 files), Matplotlib (6 files), NetworkX (4 files), seaborn (1 file), statsmodels (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
  • 27 September 2026: the link answers (HTTP 200)
35 files
At the source:

Zenodo 10059227

License: CC-BY-4.0
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Size: 1 file
Software Heritage: not checked
Found in: the resources table
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: pandas (39 files), NumPy (38 files), SciPy (19 files), Matplotlib (12 files), h5py (4 files), rpy2 (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
  • 27 September 2026: the link answers (HTTP 200)
56 files
At the source:

Zenodo 20055048

License: GPL-3.0
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Size: 1 file
Software Heritage: not checked
Found in: the resources table
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: NumPy (14 files), pandas (14 files), SciPy (14 files), Matplotlib (11 files), h5py (3 files), NetworkX (3 files)
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
  • 27 September 2026: the link answers (HTTP 200)
18 files
At the source:

bluebrain/connectomeutilities

License: Apache-2.0
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: f0186b2cda2abc4e4604f26303ee1f2dc7cef21f, 26 February 2025
Languages: Python (42), Jupyter (12)
Size: 81 files, 54 scripts
Software Heritage: archived
Found in: the Zenodo archive record
Holds: README, license file, environment (pyproject.toml, requirements.txt), tests, continuous integration, 12 notebooks
Not found: CITATION.cff, documentation
Tools: pandas (39 files), NumPy (38 files), SciPy (19 files), Matplotlib (12 files), h5py (4 files), NetworkX (1 file), rpy2 (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
56 files

mwolfr/local_connectivity_model

License: GPL-3.0
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: 09023767614a9e5e5d5fb1af9b966b8cc9049024, 6 May 2026
Languages: Jupyter (11), Python (5)
Size: 28 files, 16 scripts
Software Heritage: not archived
Found in: the Zenodo archive record
Holds: README, license file, environment (src/requirements.txt), 11 notebooks
Not found: CITATION.cff, tests, continuous integration, documentation
Tools: NumPy (14 files), pandas (14 files), SciPy (14 files), Matplotlib (11 files), h5py (3 files), NetworkX (3 files)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
18 files

openbraininstitute/connectome-analysis

License: AGPL-3.0
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: 2ecb81ac962d83e331e947d5927efe2b5ea5b9dc, 3 September 2026
Languages: Python (20), Shell (7), Jupyter (6)
Size: 72 files, 33 scripts
Software Heritage: not archived
Found in: the Zenodo archive record
Holds: README, license file, environment (poetry.lock, pyproject.toml, requirements.txt), tests, continuous integration, documentation, 6 notebooks
Not found: CITATION.cff
Tools: NumPy (16 files), SciPy (16 files), pandas (14 files), Matplotlib (6 files), NetworkX (4 files), seaborn (1 file), statsmodels (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
35 files

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:

  • 6 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 206 scripts, each with its path and the digest of its content;
  • 9 matches 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 and code availability

This work uses connectomics data in a custom, hdf5-based format for the modeling of connectivity and to enable comparisons to reference data. All such connectomes have been deposited on Zenodo. Accession numbers (DOIs) are listed in the key resources table.

Original code executing and analyzing the model, and generating the figures has been archived on Zenodo. DOIs are listed in the key resources table. The code depends on two custom software packages developed by the authors, “connectome-analysis” and “connectome-utilities,” that are listed on the pypi tracker and archived on Zenodo. Accession numbers (DOIs) are listed in the key resources table.

Any additional information required to reanalyze the data reported in this paper are available from the lead contact upon request.

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, 4 authors, 1 keyword, 2 funders, 78 references.

Cite

This paper

Reimann, M. W., Egas Santander, D., Kanari, L., & Barros-Zulaica, N. (2026). Spatial continuity of neurons explains non-random network architecture. iScience, 29(6), 116144. https://doi.org/10.1016/j.isci.2026.116144

BibTeX

@article{reimann2026spatial,
author = {Reimann, Michael W and Egas Santander, Daniela and Kanari, Lida and Barros-Zulaica, Natalí},
title = {{Spatial continuity of neurons explains non-random network architecture}},
journal = {iScience},
year = {2026},
month = jun,
volume = {29},
number = {6},
pages = {116144},
publisher = {Elsevier},
issn = {2589-0042},
doi = {10.1016/j.isci.2026.116144},
url = {https://doi.org/10.1016/j.isci.2026.116144},
pmid = {42291180},
pmcid = {PMC13253143}
}

RIS

TY - JOUR
AU - Reimann, Michael W
AU - Egas Santander, Daniela
AU - Kanari, Lida
AU - Barros-Zulaica, Natalí
TI - Spatial continuity of neurons explains non-random network architecture
T2 - iScience
J2 - iScience
PY - 2026
DA - 2026/06/01
VL - 29
IS - 6
SP - 116144
SN - 2589-0042
PB - Elsevier
DO - 10.1016/j.isci.2026.116144
UR - https://doi.org/10.1016/j.isci.2026.116144
LA - en
ER -

CSL-JSON

{
"id": "10.1016/j.isci.2026.116144",
"type": "article-journal",
"title": "Spatial continuity of neurons explains non-random network architecture",
"container-title": "iScience",
"author": [
{
"family": "Reimann",
"given": "Michael W"
},
{
"family": "Egas Santander",
"given": "Daniela"
},
{
"family": "Kanari",
"given": "Lida"
},
{
"family": "Barros-Zulaica",
"given": "Natalí"
}
],
"container-title-short": "iScience",
"volume": "29",
"issue": "6",
"page": "116144",
"DOI": "10.1016/j.isci.2026.116144",
"PMID": "42291180",
"PMCID": "PMC13253143",
"ISSN": "2589-0042",
"publisher": "Elsevier",
"URL": "https://doi.org/10.1016/j.isci.2026.116144",
"language": "en",
"issued": {
"date-parts": [
[
2026,
6,
1
]
]
}
}

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.1038/s41467-026-75959-w [code]
Charting higher-order models of brain function beyond pairwise interactions.
Journal: Nature communications
In common: NetworkX, h5py, statsmodels, 5 other tools, 2 references
[2] doi:10.1016/j.isci.2026.116055 [code]
Mapping the transcriptional diversity of calcium signaling in the mouse and human brain.
Journal: iScience
In common: rpy2, NetworkX, h5py, 6 other tools
[3] doi:10.1038/s41593-026-02267-3 [code]
Spatial proteomic analysis in human Alzheimer's disease brains enables identification of microenvironment-dependent microglial cell states.
Journal: Nature neuroscience
In common: rpy2, NetworkX, h5py, 6 other tools
[4] doi:10.1016/j.stemcr.2026.103015 [code]
Brain injury reactivates a developmental program driving genesis and integration of transient LGE-class interneurons.
Journal: Stem cell reports
In common: NetworkX, h5py, statsmodels, 5 other tools, 1 reference
[5] doi:10.64898/2026.03.04.709586 [code]
Mapping Higher-Order Topology in OCD Brain Networks with Hodge Laplacian
Journal: bioRxiv (preprint)
In common: NetworkX, h5py, statsmodels, 5 other tools, 1 reference
[6] doi:10.1038/s41467-026-72152-x [code]
Centralized brain networks controlling antennal grooming coordination.
Journal: Nature communications
In common: NetworkX, h5py, statsmodels, 5 other tools, 1 reference
[7] doi:10.1016/j.xcrm.2026.102766 [code]
A longitudinal single-cell and spatial multiomic atlas of pediatric high-grade glioma.
Journal: Cell reports. Medicine
In common: rpy2, NetworkX, h5py, 5 other tools
[8] doi:10.1016/j.crmeth.2026.101342 [code]
Interpretable learning of temporal cellular dynamics from single-cell data.
Journal: Cell reports methods
In common: rpy2, NetworkX, h5py, 5 other tools
[9] doi:10.1371/journal.pcbi.1014346 [code]
StPedf: Cell trajectory inference of spatial transcriptomics via spatial proximity embedding and spatial density-adaptive fusion.
Journal: PLoS computational biology
In common: rpy2, NetworkX, statsmodels, 5 other tools
[10] doi:10.1016/j.celrep.2026.117073 [code]
Single-cell epigenomics uncovers heterochromatin instability and transcription factor dysfunction during mouse brain aging.
Journal: Cell reports
In common: rpy2, NetworkX, seaborn, 4 other tools, 1 reference

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.

Request its removal

To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).

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.