|
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