Skip to main content

Pattern Connectivity

Pattern rules select which source neurons participate and where each one connects in the destination area. Each row is one pair:

[src_x, src_y, src_z] -> [dst_x, dst_y, dst_z]

Type tokens in the pattern editor, or use Raw edit for JSON. Click the guide icon in the pattern editor to return here.

Absolute tokens​

These do not depend on the source neuron's position.

SyntaxMeaning
*All coordinates on this axis
5Only coordinate 5
N..MCoordinates N through M inclusive

N..M is the compact form for a contiguous block. Example sit/motor subset:

[["1..98", "*", "*"], ["?", "?", 0]]

Source X 1 through 98, any Y/Z. Destination keeps X and Y, command bin Z=0.

Do not write 1-98 or 1:98. Those are not absolute ranges.

Apply writes every row, not only the cell you edited. An unrecognized or empty token is rejected and the save is aborted. It is never coerced to 0. That coercion is what wiped N..M sit ranges when a destination edit was applied.

Source-relative tokens​

These resolve from the source neuron's coordinate on the same axis. On the source side they do not filter (* / exact / N..M do). On the destination side they expand targets.

SyntaxMeaning
?Same coordinate as the source neuron
!All coordinates except the source's
?+ / ?-Strictly greater / less than source
?+= / ?-=Inclusive greater / less than source
?+N / ?-NSingle offset from source
?-A:?+BDestination span from source-A to source+B

?-A:?+B is not an absolute source filter. Use N..M for that.

Common rows​

IntentRule
Identity["*", "*", "*"] -> ["?", "?", "?"]
All sources to dest origin["*", "*", "*"] -> [0, 0, 0]
One voxel fans out[0, 0, 0] -> ["*", "*", "*"]
Neighbor +X["*", "*", "*"] -> ["?+1", "?", "?"]
Local 3x3 XY["*", "*", "*"] -> ["?-1:?+1", "?-1:?+1", "?"]
Contiguous X to dest Z=0["1..98", "*", "*"] -> ["?", "?", 0]

Multiple rows are unioned. Combine two direction rules for left-and-right.

Boundary behavior​

Relative expansions clamp to [0, dimension). Neurons at an edge produce fewer destinations. An inverted absolute range (98..1) matches nothing.