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