Skip to main content

feagi_structures/genomic/cortical_area/
descriptors.rs

1use crate::FeagiDataError;
2use crate::{define_index, define_nonzero_count, define_xyz_coordinates, define_xyz_dimensions};
3
4//region Cortical Indexing
5
6define_index!(
7    CorticalUnitIndex,
8    u8,
9    "Index for grouping cortical units of the same type within a genome.
10
11This index distinguishes between multiple instances of the same cortical type.
12For example, multiple vision sensors would have different CorticalUnitIndex
13values (0, 1, 2, etc.) while sharing the same base cortical type.
14
15# Range
16Values are limited to 0-255 (u8) and are encoded in hexadecimal within cortical IDs.
17This provides support for up to 256 instances of each cortical unit type.
18
19# Usage in Cortical IDs
20The index appears as the last two characters of a cortical ID:
21- \"ivis00\" = Vision sensor, grouping index 0
22- \"ivis01\" = Vision sensor, grouping index 1
23- \"omot0A\" = Motor output, grouping index 10 (hexadecimal A)"
24);
25
26define_index!(
27    CorticalSubUnitIndex,
28    u8,
29    "Index for cortical areas within a cortical unit. This allows easy identification of various
30     cortical areas (which can be called CorticalSubUnits in this case) within a cortical unit"
31);
32
33define_index!(
34    CorticalChannelIndex,
35    u32,
36    "Index for addressing specific channels within an I/O cortical area.
37
38Cortical areas can contain multiple channels for processing different
39aspects of data. This index addresses individual channels within a
40specific cortical area for fine-grained data routing."
41);
42
43//endregion
44
45//region Channels
46
47define_nonzero_count!(
48    CorticalChannelCount,
49    u32,
50    "The number of Cortical Channels cannot be zero."
51);
52
53define_nonzero_count!(NeuronDepth, u32, "The number of Neurons cannot be zero.");
54
55define_xyz_dimensions!(
56    CorticalChannelDimensions,
57    u32,
58    "CorticalChannelDimensions",
59    0,
60    "Dimensions of a channel within a cortical area.
61
62Defines the 3D size of an individual channel, which represents
63a subdivision of processing capability within a cortical area.
64Channels allow for parallel processing of different data aspects.
65
66# Usage
67Used to define the spatial extent of individual channels for
68data routing, processing allocation, and memory management."
69);
70
71//endregion
72
73//region Spatial
74
75define_xyz_coordinates!(
76    NeuronVoxelCoordinate,
77    u32,
78    "NeuronVoxelCoordinate",
79    "Coordinate local to a parent cortical area.
80
81Represents a position within the bounds of a specific cortical area,
82using unsigned integers since cortical coordinates are always positive
83relative to the cortical area's origin.
84
85# Usage
86Used for addressing specific locations within individual cortical areas
87for neuron placement, connectivity mapping, and spatial organization."
88);
89
90define_xyz_dimensions!(
91    CorticalAreaDimensions,
92    u32,
93    "CorticalDimensions",
94    0,
95    "Dimensions of an entire cortical area.
96
97Defines the complete 3D spatial extent of a cortical area,
98including all channels and processing units within that area.
99Represents the total neural space occupied by the cortical region.
100
101# Usage
102Used for cortical area placement within the genome, memory allocation,
103and spatial relationship calculations between brain regions."
104);
105
106//endregion