A layered sheet from progenitors (semi-supervised)
Idea. Draw what is known by hand — the sheet, its layer boundaries — and let development do the rest:
progenitors advance through cell cycles and exit (cell_cycle_clock), progressively restrict their laminar competence
(temporal_competence), differentiate from their competence at cycle exit (differentiate), migrate to the target
layer of their cell type (migrate), grow axons with laminar targeting (grow_axons), and refine connections with
spontaneous activity (refine_by_activity → prune). Genes control the rates, the timing and the guidance; the
scaffold constrains them.
Stages. seed_cells (in a Sheet2D or CurvedSheet) → cell_cycle_clock (C14) → temporal_competence (C15) →
proliferate (C2, repeated across 3 cycles) → differentiate (C7, cell types from competence at cycle exit) →
migrate (C4, stop at the target layer of each cell’s type in a LayerStackField) → grow_axons (C8, laminar
targeting) → refine_by_activity (C11, STDP) → prune (C10).
Run the worked example.
python examples/layered_sheet.py --cpu --out example_out
Layered sheet grown: 112 cells, 686 synapses (587 exc, 99 inh).
Cells per type (0: deep exc, 1: mid exc, 2: superficial exc, 3: superficial inh): [22, 22, 51, 17]
Birth cycle vs laminar depth rank correlation: 0.872 (p=3.41e-78)
Connection matrix (pre \ post):
[48, 30, 4, 1]
[21, 47, 35, 9]
[5, 45, 274, 68]
[1, 11, 69, 18]
Delay distribution: min=1, max=20, mean=6.79
This produces project.json (Project schema), network.json (for the 3D viewer), and stats.json.
Quantitative comparison of birth-order rules (in this simulation)
Rule |
Target layer formula ( |
Spearman rank correlation \(r(\text{generation}, z)\) (seed 42) |
5-seed range ( |
|---|---|---|---|
Inside-out (later-born cells migrate to more superficial layers) |
|
|
|
Outside-in (later-born cells remain in deeper layers) |
|
|
|