|
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