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