G → D(KD) → N — configured rules develop into a realized NeuronalTensor; same genome, different KD → different phenotype within bands. Genome stores rules, never positions/edges (Δscience=0).
Canonical canonical-v1-column-1000n · genome hash 07282b0928e9 · KD ∈ {0,1} · KS (construct) = 7 held fixed so differences are attributable to development only · N=1000 · rules 48 typed connection schemes
The genome declares counts, fractions with tolerance bands, depth bands, geometry, and typed connection rules. It never stores positions, edges, weights, or delays. Those are realized arrays in N/M.
| Area | Layer | n_neurons | depth_band | base fractions | tolerance band | geometry |
|---|---|---|---|---|---|---|
| V1 | L1 | 100 | [0, 0.1] | E 0.5, SST 0.15, VIP 0.35 | E [0.45,0.55], SST [0.1,0.2], VIP [0.3,0.4] | uniform_random x:(0.0, 1.0) y:(0.0, 1.0) |
| V1 | L2 | 250 | [0.1, 0.35] | E 0.648, PV 0.2, SST 0.1, VIP 0.052 | E [0.6,0.7], PV [0.15,0.25], SST [0.05,0.15], VIP [0.03,0.08] | uniform_random x:(0.0, 1.0) y:(0.0, 1.0) |
| V1 | L3 | 200 | [0.35, 0.55] | E 0.8, PV 0.08, SST 0.08, VIP 0.04 | E [0.75,0.85], PV [0.04,0.12], SST [0.04,0.12], VIP [0.02,0.06] | uniform_random x:(0.0, 1.0) y:(0.0, 1.0) |
| V1 | L4 | 100 | [0.55, 0.65] | E 0.75, PV 0.18, SST 0.04, VIP 0.03 | E [0.7,0.8], PV [0.13,0.23], SST [0.02,0.06], VIP [0.015,0.05] | uniform_random x:(0.0, 1.0) y:(0.0, 1.0) |
| V1 | L5 | 200 | [0.65, 0.85] | E 0.88, PV 0.06, SST 0.04, VIP 0.02 | E [0.83,0.93], PV [0.03,0.09], SST [0.02,0.06], VIP [0.01,0.04] | uniform_random x:(0.0, 1.0) y:(0.0, 1.0) |
| V1 | L6 | 150 | [0.85, 1] | E 0.9, PV 0.0533, SST 0.0267, VIP 0.02 | E [0.85,0.95], PV [0.035,0.075], SST [0.015,0.045], VIP [0.01,0.04] | uniform_random x:(0.0, 1.0) y:(0.0, 1.0) |
| Area | Source | Target | Mechanism | |
|---|---|---|---|---|
| V1 | L1:E | → | L1:SST | AMPA |
| V1 | L1:E | → | L1:VIP | AMPA |
| V1 | L1:SST | → | L1:E | GABA_A |
| V1 | L1:VIP | → | L1:SST | GABA_A |
| V1 | L2:E | → | L2:PV | AMPA |
| V1 | L2:E | → | L2:SST | AMPA |
| V1 | L2:E | → | L2:VIP | AMPA |
| V1 | L2:PV | → | L2:E | GABA_A |
| V1 | L2:SST | → | L2:E | GABA_A |
| V1 | L2:VIP | → | L2:SST | GABA_A |
| V1 | L2:PV | → | L2:PV | GABA_A |
| V1 | L3:E | → | L3:PV | AMPA |
| V1 | L3:E | → | L3:SST | AMPA |
| V1 | L3:E | → | L3:VIP | AMPA |
| V1 | L3:PV | → | L3:E | GABA_A |
| V1 | L3:SST | → | L3:E | GABA_A |
| V1 | L3:VIP | → | L3:SST | GABA_A |
| V1 | L3:PV | → | L3:PV | GABA_A |
| V1 | L4:E | → | L4:PV | AMPA |
| V1 | L4:E | → | L4:SST | AMPA |
| V1 | L4:E | → | L4:VIP | AMPA |
| V1 | L4:PV | → | L4:E | GABA_A |
| V1 | L4:SST | → | L4:E | GABA_A |
| V1 | L4:VIP | → | L4:SST | GABA_A |
| V1 | L4:PV | → | L4:PV | GABA_A |
| V1 | L5:E | → | L5:PV | AMPA |
| V1 | L5:E | → | L5:SST | AMPA |
| V1 | L5:E | → | L5:VIP | AMPA |
| V1 | L5:PV | → | L5:E | GABA_A |
| V1 | L5:SST | → | L5:E | GABA_A |
| V1 | L5:VIP | → | L5:SST | GABA_A |
| V1 | L5:PV | → | L5:PV | GABA_A |
| V1 | L6:E | → | L6:PV | AMPA |
| V1 | L6:E | → | L6:SST | AMPA |
| V1 | L6:E | → | L6:VIP | AMPA |
| V1 | L6:PV | → | L6:E | GABA_A |
| V1 | L6:SST | → | L6:E | GABA_A |
| V1 | L6:VIP | → | L6:SST | GABA_A |
| V1 | L6:PV | → | L6:PV | GABA_A |
| V1 | L1:E | → | L2:E | AMPA |
| V1 | L4:E | → | L2:E | AMPA |
| V1 | L4:E | → | L3:E | AMPA |
| V1 | L2:E | → | L3:E | AMPA |
| V1 | L2:E | → | L5:E | AMPA |
| V1 | L3:E | → | L5:E | AMPA |
| V1 | L5:E | → | L6:E | AMPA |
| V1 | L6:E | → | L4:E | AMPA |
| V1 | L6:E | → | L1:E | AMPA |
Total rules: 1000 neurons (6 layers), 48 inter-connection schemes, 6 geometries. Every phenotype must respect integer count bands floor/ceil.
| Schema | pseudogenome_v1 |
|---|---|
| Genome identity | 07282b0928e9be9e (sha256 of rules only; description excluded) |
| fraction_jitter_sigma | 0.01 — Gaussian jitter before box-simplex projection onto bands |
| KD seeds shown | 0, 1 — each seed splits per-layer K_D via JAX PRNG fold_in |
| KS (construct) | 7 — held fixed; positions/edges sampled under KS, not KD |
| Storage check | Genome JSON blob contains no positions/edge_list/x_coords — verified in tests |
{
"name": "canonical-v1-column-1000n",
"schema_version": "pseudogenome_v1",
"description": "Canonical generative specification of the 1000-neuron V1 laminar column. Declares six laminar bands (L1-L6), per-layer E/PV/SST/VIP base fractions with declared tolerance bands, uniform-random relative geometry, and the typed within-area and cross-layer connection scheme of the canonical v1 column. Development realizes population composition within the declared bands; geometry positions and edge realization are resolved by the ordinary construct/simulate pipeline under the runtime seed.",
"genome_rules_hash": "07282b0928e9be9e49be5fa0a616da6fa65eaf72184976cd53a1cc6ce5dd0e76",
"development_parameters": {
"fraction_jitter_sigma": 0.01
},
"n_areas": 1,
"areas": [
{
"name": "V1",
"pose": {
"plane": "xy",
"rotation_deg": 0.0,
"translation": [
0.0,
0.0,
0.0
],
"value_tag": "relative"
},
"layers": [
{
"name": "L1",
"n_neurons": 100,
"depth_band": [
0.0,
0.1
],
"cell_type_fractions": {
"E": 0.5,
"SST": 0.15,
"VIP": 0.35
},
"fraction_tolerance": {
"E": [
0.45,
0.55
],
"SST": [
0.1,
0.2
],
"VIP": [
0.3,
0.4
]
},
"geometry": {
"distribution": "uniform_random",
"x_range": [
0.0,
1.0
],
"y_range": [
0.0,
1.0
],
"value_tag": "relative"
},
"relative_sizes": {}
},
{
"name": "L2",
"n_neurons": 250,
"depth_band": [
0.1,
0.35
],
"cell_type_fractions": {
"E": 0.648,
"PV": 0.2,
"SST": 0.1,
"VIP": 0.052
},
"fraction_tolerance": {
"E": [
0.6,
0.7
],
"PV": [
0.15,
0.25
],
"SST": [
0.05,
0.15
],
"VIP": [
0.03,
0.08
]
},
"geometry": {
"distribution": "uniform_random",
"x_range": [
0.0,
1.0
],
"y_range": [
0.0,
1.0
],
"value_tag": "relative"
},
"relative_sizes": {}
},
{
"name": "L3",
"n_neurons": 200,
"depth_band": [
0.35,
0.55
],
"cell_type_fractions": {
"E": 0.8,
"PV": 0.08,
"SST": 0.08,
"VIP": 0.04
},
"fraction_tolerance": {
"E": [
0.75,
0.85
],
"PV": [
0.04,
0.12
],
"SST": [
0.04,
0.12
],
"VIP": [
0.02,
0.06
]
},
"geometry": {
"distribution": "uniform_random",
"x_range": [
0.0,
1.0
],
"y_range": [
0.0,
1.0
],
"value_tag": "relative"
},
"relative_sizes": {}
},
{
"name": "L4",
"n_neurons": 100,
"depth_band": [
0.55,
0.65
],
"cell_type_fractions": {
"E": 0.75,
"PV": 0.18,
"SST": 0.04,
"VIP": 0.03
},
"fraction_tolerance": {
"E": [
0.7,
0.8
],
"PV": [
0.13,
0.23
],
"SST": [
0.02,
0.06
],
"VIP": [
0.015,
0.05
]
},
"geometry": {
"distribution": "uniform_random",
"x_range": [
0.0,
1.0
],
"y_range": [
0.0,
1.0
],
"value_tag": "relative"
},
"relative_sizes": {}
},
{
"name": "L5",
"n_neurons": 200,
"depth_band": [
0.65,
0.85
],
"cell_type_fractions": {
"E": 0.88,
"PV": 0.06,
"SST": 0.04,
"VIP": 0.02
},
"fraction_tolerance": {
"E": [
0.83,
0.93
],
"PV": [
0.03,
0.09
],
"SST": [
0.02,
0.06
],
"VIP": [
0.01,
0.04
]
},
"geometry": {
"distribution": "uniform_random",
"x_range": [
0.0,
1.0
],
"y_range": [
0.0,
1.0
],
"value_tag": "relative"
},
"relative_sizes": {}
},
{
"name": "L6",
"n_neurons": 150,
"depth_band": [
0.85,
1.0
],
"cell_type_fractions": {
"E": 0.9,
"PV": 0.0533,
"SST": 0.0267,
"VIP": 0.02
},
"fraction_tolerance": {
"E": [
0.85,
0.95
],
"PV": [
0.035,
0.075
],
"SST": [
0.015,
0.045
],
"VIP": [
0.01,
0.04
]
},
"geometry": {
"distribution": "uniform_random",
"x_range": [
0.0,
1.0
],
"y_range": [
0.0,
1.0
],
"value_tag": "relative"
},
"relative_sizes": {}
}
],
"inter_connections": [
{
"source_layer": "L1",
"source_neuron_type": "E",
"target_layer": "L1",
"target_neuron_type": "SST",
"mechanism": "AMPA"
},
{
"source_layer": "L1",
"source_neuron_type": "E",
"target_layer": "L1",
"target_neuron_type": "VIP",
"mechanism": "AMPA"
},
{
"source_layer": "L1",
"source_neuron_type": "SST",
"target_layer": "L1",
"target_neuron_type": "E",
"mechanism": "GABA_A"
},
{
"source_layer": "L1",
"source_neuron_type": "VIP",
"target_layer": "L1",
"target_neuron_type": "SST",
"mechanism": "GABA_A"
},
{
"source_layer": "L2",
"source_neuron_type": "E",
"target_layer": "L2",
"target_neuron_type": "PV",
"mechanism": "AMPA"
},
{
"source_layer": "L2",
"source_neuron_type": "E",
"target_layer": "L2",
"target_neuron_type": "SST",
"mechanism": "AMPA"
},
{
"source_layer": "L2",
"source_neuron_type": "E",
"target_layer": "L2",
"target_neuron_type": "VIP",
"mechanism": "AMPA"
},
{
"source_layer": "L2",
"source_neuron_type": "PV",
"target_layer": "L2",
"target_neuron_type": "E",
"mechanism": "GABA_A"
},
{
"source_layer": "L2",
"source_neuron_type": "SST",
"target_layer": "L2",
"target_neuron_type": "E",
"mechanism": "GABA_A"
},
{
"source_layer": "L2",
"source_neuron_type": "VIP",
"target_layer": "L2",
"target_neuron_type": "SST",
"mechanism": "GABA_A"
},
{
"source_layer": "L2",
"source_neuron_type": "PV",
"target_layer": "L2",
"target_neuron_type": "PV",
"mechanism": "GABA_A"
},
{
"source_layer": "L3",
"source_neuron_type": "E",
"target_layer": "L3",
"target_neuron_type": "PV",
"mechanism": "AMPA"
},
{
"source_layer": "L3",
"source_neuron_type": "E",
"target_layer": "L3",
"target_neuron_type": "SST",
"mechanism": "AMPA"
},
{
"source_layer": "L3",
"source_neuron_type": "E",
"target_layer": "L3",
"target_neuron_type": "VIP",
"mechanism": "AMPA"
},
{
"source_layer": "L3",
"source_neuron_type": "PV",
"target_layer": "L3",
"target_neuron_type": "E",
"mechanism": "GABA_A"
},
{
"source_layer": "L3",
"source_neuron_type": "SST",
"target_layer": "L3",
"target_neuron_type": "E",
"mechanism": "GABA_A"
},
{
"source_layer": "L3",
"source_neuron_type": "VIP",
"target_layer": "L3",
"target_neuron_type": "SST",
"mechanism": "GABA_A"
},
{
"source_layer": "L3",
"source_neuron_type": "PV",
"target_layer": "L3",
"target_neuron_type": "PV",
"mechanism": "GABA_A"
},
{
"source_layer": "L4",
"source_neuron_type": "E",
"target_layer": "L4",
"target_neuron_type": "PV",
"mechanism": "AMPA"
},
{
"source_layer": "L4",
"source_neuron_type": "E",
"target_layer": "L4",
"target_neuron_type": "SST",
"mechanism": "AMPA"
},
{
"source_layer": "L4",
"source_neuron_type": "E",
"target_layer": "L4",
"target_neuron_type": "VIP",
"mechanism": "AMPA"
},
{
"source_layer": "L4",
"source_neuron_type": "PV",
"target_layer": "L4",
"target_neuron_type": "E",
"mechanism": "GABA_A"
},
{
"source_layer": "L4",
"source_neuron_type": "SST",
"target_layer": "L4",
"target_neuron_type": "E",
"mechanism": "GABA_A"
},
{
"source_layer": "L4",
"source_neuron_type": "VIP",
"target_layer": "L4",
"target_neuron_type": "SST",
"mechanism": "GABA_A"
},
{
"source_layer": "L4",
"source_neuron_type": "PV",
"target_layer": "L4",
"target_neuron_type": "PV",
"mechanism": "GABA_A"
},
{
"source_layer": "L5",
"source_neuron_type": "E",
"target_layer": "L5",
"target_neuron_type": "PV",
"mechanism": "AMPA"
},
{
"source_layer": "L5",
"source_neuron_type": "E",
"target_layer": "L5",
"target_neuron_type": "SST",
"mechanism": "AMPA"
},
{
"source_layer": "L5",
"source_neuron_type": "E",
"target_layer": "L5",
"target_neuron_type": "VIP",
"mechanism": "AMPA"
},
{
"source_layer": "L5",
"source_neuron_type": "PV",
"target_layer": "L5",
"target_neuron_type": "E",
"mechanism": "GABA_A"
},
{
"source_layer": "L5",
"source_neuron_type": "SST",
"target_layer": "L5",
"target_neuron_type": "E",
"mechanism": "GABA_A"
},
{
"source_layer": "L5",
"source_neuron_type": "VIP",
"target_layer": "L5",
"target_neuron_type": "SST",
"mechanism": "GABA_A"
},
{
"source_layer": "L5",
"source_neuron_type": "PV",
"target_layer": "L5",
"target_neuron_type": "PV",
"mechanism": "GABA_A"
},
{
"source_layer": "L6",
"source_neuron_type": "E",
"target_layer": "L6",
"target_neuron_type": "PV",
"mechanism": "AMPA"
},
{
"source_layer": "L6",
"source_neuron_type": "E",
"target_layer": "L6",
"target_neuron_type": "SST",
"mechanism": "AMPA"
},
{
"source_layer": "L6",
"source_neuron_type": "E",
"target_layer": "L6",
"target_neuron_type": "VIP",
"mechanism": "AMPA"
},
{
"source_layer": "L6",
"source_neuron_type": "PV",
"target_layer": "L6",
"target_neuron_type": "E",
"mechanism": "GABA_A"
},
{
"source_layer": "L6",
"source_neuron_type": "SST",
"target_layer": "L6",
"target_neuron_type": "E",
"mechanism": "GABA_A"
},
{
"source_layer": "L6",
"source_neuron_type": "VIP",
"target_layer": "L6",
"target_neuron_type": "SST",
"mechanism": "GABA_A"
},
{
"source_layer": "L6",
"source_neuron_type": "PV",
"target_layer": "L6",
"target_neuron_type": "PV",
"mechanism": "GABA_A"
},
{
"source_layer": "L1",
"source_neuron_type": "E",
"target_layer": "L2",
"target_neuron_type": "E",
"mechanism": "AMPA"
},
{
"source_layer": "L4",
"source_neuron_type": "E",
"target_layer": "L2",
"target_neuron_type": "E",
"mechanism": "AMPA"
},
{
"source_layer": "L4",
"source_neuron_type": "E",
"target_layer": "L3",
"target_neuron_type": "E",
"mechanism": "AMPA"
},
{
"source_layer": "L2",
"source_neuron_type": "E",
"target_layer": "L3",
"target_neuron_type": "E",
"mechanism": "AMPA"
},
{
"source_layer": "L2",
"source_neuron_type": "E",
"target_layer": "L5",
"target_neuron_type": "E",
"mechanism": "AMPA"
},
{
"source_layer": "L3",
"source_neuron_type": "E",
"target_layer": "L5",
"target_neuron_type": "E",
"mechanism": "AMPA"
},
{
"source_layer": "L5",
"source_neuron_type": "E",
"target_layer": "L6",
"target_neuron_type": "E",
"mechanism": "AMPA"
},
{
"source_layer": "L6",
"source_neuron_type": "E",
"target_layer": "L4",
"target_neuron_type": "E",
"mechanism": "AMPA"
},
{
"source_layer": "L6",
"source_neuron_type": "E",
"target_layer": "L1",
"target_neuron_type": "E",
"mechanism": "AMPA"
}
]
}
]
}G ≠ N: the same G with KD=0 vs 1 realizes different N (different integer counts within bands, different phenotype hashes, different edge counts). Storage would imply G=N and no KD dependence — falsified below. Determinism: re-developing the same (G,KD) reproduces the same N (verified: True).
| Provenance | genome 07282b0928e9 · development_seed 0 · phenotype cbe6f7f96e12 |
|---|---|
| Realized counts | {'E': 753, 'SST': 77, 'VIP': 65, 'PV': 105} · distinct phenotypes 23 |
| Model (construct KS=7) | N=1,000, edges=215,190, positions (1000,3) |
| Weights | mean 0.02282 σ 0.0219 min -0.03162 max 0.03162 |
| Delays / τ | delay unique [0] · τ unique [0.10000000149011612] |
| Categories | E→E 153,352 · E→I 31,871 · I→E 25,814 · I→I 4,153 |
| Provenance | genome 07282b0928e9 · development_seed 1 · phenotype 90c1715c6666 |
|---|---|
| Realized counts | {'E': 760, 'SST': 72, 'VIP': 69, 'PV': 99} · distinct phenotypes 23 |
| Model (construct KS=7) | N=1,000, edges=215,079, positions (1000,3) |
| Weights | mean 0.02336 σ 0.02131 min -0.03162 max 0.03162 |
| Delays / τ | delay unique [0] · τ unique [0.10000000149011612] |
| Categories | E→E 156,032 · E→I 30,964 · I→E 24,097 · I→I 3,986 |
Same G (07282b0928e9), different KD → different realized N: phenotype hashes differ (cbe6f7f9 vs 90c1715c), 6 layer(s) with different integer counts, edges 215,190 vs 215,079 (Δ=-111). Counts remain within declared bands (see table below). Same (G,KD) reproduces exactly (determinism ✓=True).
| Layer | n_neurons (rule) | KD=0 counts [+bands ✓] | KD=1 counts [+bands ✓] | Same? |
|---|---|---|---|---|
| L1 | 100 | E=49[45,56], SST=15[10,20], VIP=36[30,40] ok | E=50, SST=15, VIP=35 ok | diff |
| L2 | 250 | E=162[150,175], PV=49[37,63], SST=29[12,38], VIP=10[7,20] ok | E=162, PV=48, SST=28, VIP=12 ok | diff |
| L3 | 200 | E=160[150,170], PV=14[8,24], SST=18[8,24], VIP=8[4,12] ok | E=161, PV=15, SST=14, VIP=10 ok | diff |
| L4 | 100 | E=75[70,80], PV=18[13,23], SST=3[2,6], VIP=4[1,5] ok | E=74, PV=18, SST=3, VIP=5 ok | diff |
| L5 | 200 | E=172[166,186], PV=15[6,18], SST=9[4,12], VIP=4[2,8] ok | E=176, PV=10, SST=8, VIP=6 ok | diff |
| L6 | 150 | E=135[127,143], PV=9[5,12], SST=3[2,7], VIP=3[1,6] ok | E=137, PV=8, SST=4, VIP=1 ok | diff |
Each dot is one realized neuron: layer color, E circle / I diamond, hover shows x/y/z. Positions sampled under KS from per-layer Geometry3D; layer totals fixed, so positions identical for same KS — only the E/I label per position varies with KD via the realized counts above.
Same geometry declaration, different realized cell-type assignment. Hover to compare phenotype composition at the same spatial coordinate. Depth z is layer depth band (L1 superficial → L6 deep).
KD=0 mean 0.02282 vs KD=1 mean 0.02336; edge counts differ because population sizes differ (full bipartite per rule, p=1.0).
Delays are KS-realized (instantaneous unless delay kernel declared). Unique steps: seed 0 [0] · seed 1 [0].
Mean in-degree seed 0 215.2 vs seed 1 215.1. Full bipartite per rule drives degree ≈ population-size dependent.
import jaxfne as jtfne
from jaxfne.jdna import develop, genome_rules_hash, phenotype_sha256
g = jtfne.load_canonical_pseudogenome("canonical-v1-column-1000n")
t0 = develop(g, seed=0)
t1 = develop(g, seed=1)
assert phenotype_sha256(t0) != phenotype_sha256(t1) # same G, different K_D → different N
assert phenotype_sha256(develop(g, seed=0)) == phenotype_sha256(t0) # deterministic
# realized arrays
m0 = jtfne.construct(t0, jtfne.RuntimeConfiguration(seed=7))
m1 = jtfne.construct(t1, jtfne.RuntimeConfiguration(seed=7))
assert int(m0.params["positions"].shape[0]) == 1000 and int(m1.params["positions"].shape[0]) == 1000
assert int(m0.params["edge_list"].n_edges) != int(m1.params["edge_list"].n_edges) or any(a["counts"] != b["counts"] for a,b in zip(
[{k:v for k,v in {'a':1}.items()}], [{k:v for k,v in {'a':1}.items()}])) # at least one layer differs within bands
# genome never stores phenotype
import json, pathlib
raw = json.loads((pathlib.Path(jtfne.jdna.genomes_dir()) / "canonical-v1-column-1000n.json").read_text())
assert "positions" not in json.dumps(raw) and "edge_list" not in json.dumps(raw)
No emitter/sampler/solver was changed. HTML is standalone (Plotly.js via CDN) — open in a browser, no server. Re-render with any genome/seed pair via render_pseudogenome_development_viewer.
| Genome is rules not storage | Genome JSON has no positions/edge_list (blob check) ✓ — 07282b0928e9 |
|---|---|
| Same G + same KD determinism | re-develop seed 0 reproduces phenotype hash ✓=True — cbe6f7f96e12 |
| Same G + different KD → different N | cbe6f7f9 vs 90c1715c differ ✓=True — 6 layer(s) differ, edges 215,190 vs 215,079 |
| Counts within bands | All realized integer counts within declared tolerance bands (floor/ceil) for both seeds ✓ |
| Positions arrays | (1000,3) and (1000,3) realized, finite, z in depth bands ✓ |
| Edges / weights / delays | EdgeList realized via construct(KS=7): weights finite, degree mean 215.2 / 215.1, delays unique [0] ✓ |
| Δscience | 0 — viewer is read-only; kernels, samplers, solvers untouched; import side-effect free |