|
30 | 30 | from ..filebasedimages import FileBasedHeader, SerializableImage
|
31 | 31 | from ..nifti1 import Nifti1Extensions
|
32 | 32 | from ..nifti2 import Nifti2Header, Nifti2Image
|
33 |
| -from ..volumeutils import make_dt_codes |
| 33 | +from ..volumeutils import Recoder, make_dt_codes |
34 | 34 |
|
35 | 35 |
|
36 | 36 | def _float_01(val):
|
@@ -80,39 +80,64 @@ class Cifti2HeaderError(Exception):
|
80 | 80 | 'RADIAN',
|
81 | 81 | )
|
82 | 82 |
|
83 |
| -CIFTI_BRAIN_STRUCTURES = ( |
84 |
| - 'CIFTI_STRUCTURE_ACCUMBENS_LEFT', |
85 |
| - 'CIFTI_STRUCTURE_ACCUMBENS_RIGHT', |
86 |
| - 'CIFTI_STRUCTURE_ALL_WHITE_MATTER', |
87 |
| - 'CIFTI_STRUCTURE_ALL_GREY_MATTER', |
88 |
| - 'CIFTI_STRUCTURE_AMYGDALA_LEFT', |
89 |
| - 'CIFTI_STRUCTURE_AMYGDALA_RIGHT', |
90 |
| - 'CIFTI_STRUCTURE_BRAIN_STEM', |
91 |
| - 'CIFTI_STRUCTURE_CAUDATE_LEFT', |
92 |
| - 'CIFTI_STRUCTURE_CAUDATE_RIGHT', |
93 |
| - 'CIFTI_STRUCTURE_CEREBELLAR_WHITE_MATTER_LEFT', |
94 |
| - 'CIFTI_STRUCTURE_CEREBELLAR_WHITE_MATTER_RIGHT', |
95 |
| - 'CIFTI_STRUCTURE_CEREBELLUM', |
96 |
| - 'CIFTI_STRUCTURE_CEREBELLUM_LEFT', |
97 |
| - 'CIFTI_STRUCTURE_CEREBELLUM_RIGHT', |
98 |
| - 'CIFTI_STRUCTURE_CEREBRAL_WHITE_MATTER_LEFT', |
99 |
| - 'CIFTI_STRUCTURE_CEREBRAL_WHITE_MATTER_RIGHT', |
100 |
| - 'CIFTI_STRUCTURE_CORTEX', |
101 |
| - 'CIFTI_STRUCTURE_CORTEX_LEFT', |
102 |
| - 'CIFTI_STRUCTURE_CORTEX_RIGHT', |
103 |
| - 'CIFTI_STRUCTURE_DIENCEPHALON_VENTRAL_LEFT', |
104 |
| - 'CIFTI_STRUCTURE_DIENCEPHALON_VENTRAL_RIGHT', |
105 |
| - 'CIFTI_STRUCTURE_HIPPOCAMPUS_LEFT', |
106 |
| - 'CIFTI_STRUCTURE_HIPPOCAMPUS_RIGHT', |
107 |
| - 'CIFTI_STRUCTURE_OTHER', |
108 |
| - 'CIFTI_STRUCTURE_OTHER_GREY_MATTER', |
109 |
| - 'CIFTI_STRUCTURE_OTHER_WHITE_MATTER', |
110 |
| - 'CIFTI_STRUCTURE_PALLIDUM_LEFT', |
111 |
| - 'CIFTI_STRUCTURE_PALLIDUM_RIGHT', |
112 |
| - 'CIFTI_STRUCTURE_PUTAMEN_LEFT', |
113 |
| - 'CIFTI_STRUCTURE_PUTAMEN_RIGHT', |
114 |
| - 'CIFTI_STRUCTURE_THALAMUS_LEFT', |
115 |
| - 'CIFTI_STRUCTURE_THALAMUS_RIGHT', |
| 83 | + |
| 84 | +def _full_structure(struct: str): |
| 85 | + """Expands STRUCT_NAME into: |
| 86 | +
|
| 87 | + STRUCT_NAME, CIFTI_STRUCTURE_STRUCT_NAME, StructName |
| 88 | + """ |
| 89 | + return ( |
| 90 | + struct, |
| 91 | + f'CIFTI_STRUCTURE_{struct}', |
| 92 | + ''.join(word.capitalize() for word in struct.split('_')), |
| 93 | + ) |
| 94 | + |
| 95 | + |
| 96 | +CIFTI_BRAIN_STRUCTURES = Recoder( |
| 97 | + ( |
| 98 | + # For simplicity of comparison, use the ordering from: |
| 99 | + # https://github.com/Washington-University/workbench/blob/b985f5d/src/Common/StructureEnum.cxx |
| 100 | + # (name, ciftiname, guiname) |
| 101 | + # ('CORTEX_LEFT', 'CIFTI_STRUCTURE_CORTEX_LEFT', 'CortexLeft') |
| 102 | + _full_structure('CORTEX_LEFT'), |
| 103 | + _full_structure('CORTEX_RIGHT'), |
| 104 | + _full_structure('CEREBELLUM'), |
| 105 | + _full_structure('ACCUMBENS_LEFT'), |
| 106 | + _full_structure('ACCUMBENS_RIGHT'), |
| 107 | + _full_structure('ALL'), |
| 108 | + _full_structure('ALL_GREY_MATTER'), |
| 109 | + _full_structure('ALL_WHITE_MATTER'), |
| 110 | + _full_structure('AMYGDALA_LEFT'), |
| 111 | + _full_structure('AMYGDALA_RIGHT'), |
| 112 | + _full_structure('BRAIN_STEM'), |
| 113 | + _full_structure('CAUDATE_LEFT'), |
| 114 | + _full_structure('CAUDATE_RIGHT'), |
| 115 | + _full_structure('CEREBELLAR_WHITE_MATTER_LEFT'), |
| 116 | + _full_structure('CEREBELLAR_WHITE_MATTER_RIGHT'), |
| 117 | + _full_structure('CEREBELLUM_LEFT'), |
| 118 | + _full_structure('CEREBELLUM_RIGHT'), |
| 119 | + _full_structure('CEREBRAL_WHITE_MATTER_LEFT'), |
| 120 | + _full_structure('CEREBRAL_WHITE_MATTER_RIGHT'), |
| 121 | + _full_structure('CORTEX'), |
| 122 | + _full_structure('DIENCEPHALON_VENTRAL_LEFT'), |
| 123 | + _full_structure('DIENCEPHALON_VENTRAL_RIGHT'), |
| 124 | + _full_structure('HIPPOCAMPUS_LEFT'), |
| 125 | + _full_structure('HIPPOCAMPUS_RIGHT'), |
| 126 | + _full_structure('INVALID'), |
| 127 | + _full_structure('OTHER'), |
| 128 | + _full_structure('OTHER_GREY_MATTER'), |
| 129 | + _full_structure('OTHER_WHITE_MATTER'), |
| 130 | + _full_structure('PALLIDUM_LEFT'), |
| 131 | + _full_structure('PALLIDUM_RIGHT'), |
| 132 | + _full_structure('PUTAMEN_LEFT'), |
| 133 | + _full_structure('PUTAMEN_RIGHT'), |
| 134 | + ## Also commented out in connectome_wb; unclear if deprecated, planned, or what |
| 135 | + # _full_structure("SUBCORTICAL_WHITE_MATTER_LEFT") |
| 136 | + # _full_structure("SUBCORTICAL_WHITE_MATTER_RIGHT") |
| 137 | + _full_structure('THALAMUS_LEFT'), |
| 138 | + _full_structure('THALAMUS_RIGHT'), |
| 139 | + ), |
| 140 | + fields=('name', 'ciftiname', 'guiname'), |
116 | 141 | )
|
117 | 142 |
|
118 | 143 |
|
|
0 commit comments