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