Microtubule-Dependent Radial Neuronal Migration Agent-Based Model

models/neuronal_migration_abm/

A one-dimensional, stochastic agent-based model of radial migration along a cortical column, in which six birth cohorts of neurons move from the ventricular zone through the intermediate zone to a cortical plate that grows inside-out as they settle. Authored in this repository rather than curated from a publication: each of its five rules transcribes a node or causal edge of this module (an apparatus perturbation that is cell-autonomous, slows nucleokinesis and can arrest a neuron in the intermediate zone, scored as dyslamination and ectopia when the developmental window closes), and the spec records per rule which curated edge it encodes and which choices the edge did not itself make. The one rule with no curated source, inside-out settling, is the null model of normal lamination the module's failure claims presuppose, and is labelled as a background assumption. The curated intervention is encoded as a swept fraction of the perturbation removed. The model asserts no biology of its own and nothing in it is fitted to data: every rate is a placeholder chosen so that the wild-type scenario completes migration inside the window, so the results are orderings of regimes, never quantities.

Authored in this repository discrete-time, one-dimensional, stochastic agent-based model (seeded) Runs in this page Not fitted to data

Where this model is curated

The entry card says what the model is for: which mechanism nodes it links to, how faithfully, and what it found. This page holds the model itself.

Run it in the browser

Pick a committed scenario to replay it neuron by neuron, or move a slider to run a new one. Depth runs from the ventricular surface (bottom) to the pia (top); each lane is one birth cohort, earliest-born on the left. In a normal cortex later cohorts settle above earlier ones (inside-out). Hollow markers are neurons carrying the perturbation; a cross marks an arrested neuron.

t = 0

Committed scenarios

From models/neuronal_migration_abm/results.json (seed 20260925). Readouts are scored when the developmental window closes. Every rate is a placeholder, so read these as orderings of regimes rather than quantities.

ScenarioPerturbationAffectedArrest rateRescuePlateArrestedIn transitFidelityDelayBandOutcome
wild_type
No apparatus perturbation. Must lay the cortex down inside-out or the wiring is wrong.
0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.9999 75.91 — normal
no phenotype activated
delayed_migration
Every neuron carries a moderate perturbation that slows but never arrests it.
0.5 1.0 0.0 0.0 0.7517 0.0 0.2483 0.9093 145.94 — diffuse ectopia
arrest_dominant
The same slowing plus a per-step chance of permanent arrest in the intermediate zone.
0.5 1.0 0.01 0.0 0.44 0.475 0.085 0.9109 141.68 0.2526 migration failure
severe_constitutional
A severe perturbation in every neuron.
0.85 1.0 0.01 0.0 0.0 0.7 0.3 — — 0.7619 migration failure
mosaic_severe
The severe perturbation in half the neurons and none in the other half. This is the regime in which a heterotopic band beneath a normally laminated cortex could emerge from the curated cell-autonomous edge.
0.85 0.5 0.01 0.0 0.5083 0.3667 0.125 0.9998 72.73 0.7455 band heterotopia
severe_constitutional_rescued
severe_constitutional with the curated intervention removing 60% of the perturbation (a swept value, not a measurement).
0.85 1.0 0.01 0.6 0.7133 0.2833 0.0033 0.9738 112.76 0.1882 diffuse ectopia
Pattern thresholds
band_half_width5.0
band_min_affected_arrested_fraction0.5
band_min_band_score0.6
band_min_unaffected_plate_fraction0.9
failure_max_plate_fraction0.5
normal_min_lamination_fidelity0.95
normal_min_plate_fraction0.95

Parameter sweeps

One input varied at a time with the others held fixed.

perturbation_no_arrest vary perturbation; fixed affected_fraction=1.0, arrest_rate=0.0

perturbationPlateArrestedIn transitFidelityDelayBandPatternPhenotypes
0.0 1.0 0.0 0.0 0.9998 75.97 — normal —
0.1 1.0 0.0 0.0 0.9979 84.66 — normal —
0.2 1.0 0.0 0.0 0.9926 95.17 — normal —
0.3 0.9983 0.0 0.0017 0.9798 108.82 — normal —
0.4 0.9317 0.0 0.0683 0.9577 125.23 — diffuse ectopia HP:0002269
0.5 0.7583 0.0 0.2417 0.8989 145.73 — diffuse ectopia HP:0002269
0.6 0.4917 0.0 0.5083 0.8157 175.5 — migration failure HP:0002269
0.7 0.15 0.0 0.85 0.6461 210.09 — migration failure HP:0002269
0.8 0.0 0.0 1.0 — — — migration failure HP:0002269
0.9 0.0 0.0 1.0 — — — migration failure HP:0002269
1.0 0.0 0.0 1.0 — — — migration failure HP:0002269

perturbation_with_arrest vary perturbation; fixed affected_fraction=1.0, arrest_rate=0.01

perturbationPlateArrestedIn transitFidelityDelayBandPatternPhenotypes
0.0 1.0 0.0 0.0 0.9999 76.03 — normal —
0.1 0.925 0.075 0.0 0.9976 84.64 0.2889 diffuse ectopia HP:0002269
0.2 0.8633 0.1367 0.0 0.9918 93.52 0.2561 diffuse ectopia HP:0002269, HP:0002282
0.3 0.7967 0.2033 0.0 0.9818 106.38 0.1885 diffuse ectopia HP:0002269, HP:0002282
0.4 0.6317 0.3467 0.0217 0.9598 121.67 0.2404 diffuse ectopia HP:0002269, HP:0002282
0.5 0.4467 0.4717 0.0817 0.9327 139.6 0.2509 migration failure HP:0002269, HP:0002282
0.6 0.225 0.5883 0.1867 0.8262 168.36 0.2465 migration failure HP:0002269, HP:0002282
0.7 0.0567 0.6733 0.27 0.7034 213.68 0.3119 migration failure HP:0002269, HP:0002282
0.8 0.0 0.715 0.285 — — 0.4802 migration failure HP:0002269, HP:0002282
0.9 0.0 0.665 0.335 — — 0.8797 migration failure HP:0002269, HP:0002282
1.0 0.0 0.0 1.0 — — — migration failure HP:0002269

affected_fraction_severe vary affected_fraction; fixed arrest_rate=0.01, perturbation=0.85

affected_fractionPlateArrestedIn transitFidelityDelayBandPatternPhenotypes
0.0 1.0 0.0 0.0 0.9999 75.75 — normal —
0.1 0.9083 0.0533 0.0383 0.9999 75.26 0.6875 band heterotopia HP:0002269, HP:0032409
0.2 0.815 0.1283 0.0567 0.9998 74.54 0.6623 band heterotopia HP:0002269, HP:0002282, HP:0032409
0.3 0.69 0.23 0.08 0.9997 73.49 0.6594 band heterotopia HP:0002269, HP:0002282, HP:0032409
0.4 0.6433 0.2483 0.1083 0.9995 73.55 0.6309 band heterotopia HP:0002269, HP:0002282, HP:0032409
0.5 0.4833 0.355 0.1617 0.9997 71.74 0.7183 band heterotopia HP:0002269, HP:0002282, HP:0032409
0.6 0.4083 0.4283 0.1633 0.9999 71.54 0.6887 band heterotopia HP:0002269, HP:0002282, HP:0032409
0.7 0.27 0.52 0.21 0.9998 70.38 0.734 band heterotopia HP:0002269, HP:0002282, HP:0032409
0.8 0.2067 0.5517 0.2417 1.0 70.33 0.6888 band heterotopia HP:0002269, HP:0002282, HP:0032409
0.9 0.0833 0.6367 0.28 1.0 68.28 0.6885 band heterotopia HP:0002269, HP:0002282, HP:0032409
1.0 0.0 0.6783 0.3217 — — 0.7076 migration failure HP:0002269, HP:0002282

rescue_severe vary rescue; fixed affected_fraction=1.0, arrest_rate=0.01, perturbation=0.85

rescuePlateArrestedIn transitFidelityDelayBandPatternPhenotypes
0.0 0.0 0.7233 0.2767 — — 0.6866 migration failure HP:0002269, HP:0002282
0.2 0.0783 0.675 0.2467 0.805 201.87 0.279 migration failure HP:0002269, HP:0002282
0.4 0.4333 0.4517 0.115 0.9064 144.64 0.2509 migration failure HP:0002269, HP:0002282
0.6 0.7067 0.2917 0.0017 0.9796 111.09 0.1714 diffuse ectopia HP:0002269, HP:0002282
0.8 0.875 0.125 0.0 0.9937 90.33 0.2 diffuse ectopia HP:0002269, HP:0002282
1.0 1.0 0.0 0.0 0.9998 75.93 — normal —

Rules and where each comes from

Each rule transcribes a node or causal edge curated on Microtubule-Dependent Neuronal Migration Failure Module. A rule no curated edge states is marked as a background assumption.

Inputs

perturbation
Degree of microtubule-apparatus disruption in an affected neuron, 0 = wild type. The module curates this node qualitatively (DYSREGULATED microtubule cytoskeleton organization, GO:0000226); the scalar is the model's way of asking how much of it is needed, not a measured quantity.
Range 0–1
affected_fraction
Fraction of neurons that carry the perturbation. 1 for a constitutional variant present in every neuron; below 1 for a defect present in only some neurons. This is representable because the curated evidence states the migration defect is cell-autonomous (PMID:9697693), so an unaffected neuron next to an affected one migrates normally.
Range 0–1
base_motility
Per-step probability that an unperturbed neuron completes a nucleokinesis step. Unfitted.
Default 0.8
arrest_rate
Per-step probability, scaled by the effective perturbation, that an affected neuron in the intermediate zone arrests permanently. Kept separate from slowing so the two curated failure modes ("delayed migration" and "arrested cells") can be told apart in the sweeps.
Default 0.0
rescue
Fraction of the perturbation removed by the curated intervention (see interventions). 0 = no intervention.
Default 0.0; range 0–1

Interventions

CRISPRa_isotype_compensation
multiplies the effective perturbation of every affected neuron by (1 - rescue)
Provenance:
  • curated_edge
Decision. treatments#CRISPRa beta-tubulin isotype compensation carries a curated target_mechanisms link, treatment_effect RESTORES, onto Microtubule Apparatus Perturbation. The cited work (PMID:42589608) reports restoration of the microtubule network in cells; it reports nothing about migration, so the model's rescue of migration is an implication of the curated edge, not a reported result. It is preclinical and cell-based and must not be read as an available therapy.

Rules

effective_perturbation
e = perturbation * (1 - rescue) if affected else 0
Provenance:
  • pathophysiology#Microtubule Apparatus Perturbation (role trigger)
  • treatments#CRISPRa beta-tubulin isotype compensation -RESTORES-> Microtubule Apparatus Perturbation
Decision. Cell-autonomous: an agent's perturbation depends only on its own `affected` flag. Grounded in the PMID:9697693 snippet on the motility node ("delayed neuronal migration by a cell-autonomous" mechanism).
arrest
if migrating and in intermediate zone and random() < arrest_rate * e, state <- arrested (permanent)
Provenance:
  • Microtubule Apparatus Perturbation -> Microtubule-Based Neuronal Motility Failure (hypothesis_groups microtubule_migration_model)
Decision. The motility node describes both "delayed migration" and "arrested cells in intermediate/subventricular regions". Arrest is encoded as a separate absorbing event rather than as the limit of slowing, so the two can be swept independently. Arrest is confined to the intermediate zone because that is where the curated text places arrested cells.
slowed_nucleokinesis
if migrating and random() < base_motility * (1 - e), position <- position + step_length
Provenance:
  • Microtubule Apparatus Perturbation -> Microtubule-Based Neuronal Motility Failure (hypothesis_groups microtubule_migration_model)
  • pathophysiology#Microtubule-Based Neuronal Motility Failure, biological_processes neuron migration (GO:0001764) DECREASED
Decision. Linear in e. The module says migration is decreased and does not say by what function of the apparatus defect; linear is the least-committed monotone choice and the sweeps report where its consequences change qualitatively.
inside_out_settlingbackground assumption
if migrating and position >= plate_top, state <- settled; settle_rank <- n_settled; plate_top <- plate_top + settled_cell_thickness
Decision. NOT a curated edge. Normal inside-out lamination (each arriving neuron passes the neurons already settled and stops beneath the marginal zone) is the null model the module's "abnormal lamination" claim is measured against, and the module presupposes it without stating it. It is the one rule in this file with no `provenance` inside the module.
end_of_window
at t = last_birth + migration_window, score every agent; settled = in cortical plate, otherwise ectopic
Provenance:
  • Microtubule-Based Neuronal Motility Failure -> Cortical Dyslamination and Neuronal Ectopia (hypothesis_groups microtubule_migration_model)
Decision. The module says the outcome depends on "the gene and developmental window". The window is a fixed, unfitted length; a neuron still migrating when it closes is ectopic in the score, and the results distinguish those (in_transit) from arrested neurons so a reader can see which kind of ectopia a scenario produces.

Run it locally

uv run python models/neuronal_migration_abm/run.py --printuv run python models/neuronal_migration_abm/run.py --checkuv run python models/neuronal_migration_abm/run.py

Files