I am reviving this thread because 3dROIstats is behaving weirdly using my surface parcellation. I think I've found a solution, but also maybe a bug?
(In narrator voice) Previously on this thread:
I converted a Freesurfer annotation to .niml.dset using FS_read_annot, then I resample it to -ld 60 and ranked the node values so that 3dROIstats could handle the parcel labels.
I am now extracting mean time series from each parcel using time series projected to the surface and the results from 3dRank as the mask.
I have examined the .rankmap.1D file and the mapping from rank to annotation values seems to be in order and I have the correct number of labels. However, when extract the time series using the ranked parcellation as a mask, I'm getting weird results.
What I expect: I have 201 labels, 200 parcels of interest + the medial wall for each hemisphere. I was expecting 201 columns of timeseries from 3dROIstats with labels of Mean_0 to Mean_200, which should correspond to the rank values in .rankmap.1D
What I'm getting: 200 columns with the following values:
Mean_1 Mean_2 Mean_3 Mean_4 Mean_5 Mean_6 Mean_7 Mean_8 Mean_9 Mean_10 Mean_11 Mean_12 Mean_13 Mean_14 Mean_15 Mean_16 Mean_17 Mean_18 Mean_19 Mean_20 Mean_21 Mean_22 Mean_23 Mean_24 Mean_25 Mean_26 Mean_27 Mean_28 Mean_29 Mean_30 Mean_31 Mean_32 Mean_33 Mean_34 Mean_35 Mean_36 Mean_37 Mean_38 Mean_39 Mean_40 Mean_41 Mean_42 Mean_43 Mean_44 Mean_45 Mean_46 Mean_47 Mean_48 Mean_49 Mean_50 Mean_51 Mean_52 Mean_53 Mean_54 Mean_55 Mean_56 Mean_57 Mean_58 Mean_59 Mean_60 Mean_61 Mean_62 Mean_63 Mean_64 Mean_65 Mean_66 Mean_67 Mean_68 Mean_69 Mean_70 Mean_71 Mean_72 Mean_73 Mean_74 Mean_75 Mean_76 Mean_77 Mean_78 Mean_79 Mean_80 Mean_81 Mean_82 Mean_83 Mean_84 Mean_85 Mean_86 Mean_87 Mean_88 Mean_89 Mean_90 Mean_91 Mean_92 Mean_93 Mean_94 Mean_95 Mean_96 Mean_97 Mean_98 Mean_99 Mean_100 Mean_101 Mean_102 Mean_103 Mean_104 Mean_105 Mean_106 Mean_107 Mean_108 Mean_109 Mean_110 Mean_111 Mean_112 Mean_113 Mean_114 Mean_115 Mean_116 Mean_117 Mean_118 Mean_119 Mean_120 Mean_121 Mean_122 Mean_123 Mean_124 Mean_125 Mean_126 Mean_127 Mean_molecular_layer_HP Mean_129 Mean_130 Mean_131 Mean_132 Mean_133 Mean_134 Mean_135 Mean_136 Mean_137 Mean_138 Mean_139 Mean_140 Mean_141 Mean_142 Mean_143 Mean_144 Mean_145 Mean_146 Mean_147 Mean_148 Mean_149 Mean_150 Mean_151 Mean_152 Mean_153 Mean_154 Mean_155 Mean_156 Mean_157 Mean_158 Mean_159 Mean_160 Mean_161 Mean_162 Mean_163 Mean_164 Mean_165 Mean_166 Mean_167 Mean_168 Mean_169 Mean_170 Mean_171 Mean_172 Mean_173 Mean_174 Mean_175 Mean_176 Mean_177 Mean_178 Mean_179 Mean_180 Mean_181 Mean_182 Mean_183 Mean_184 Mean_185 Mean_186 Mean_187 Mean_188 Mean_189 Mean_190 Mean_191 Mean_192 Mean_193 Mean_194 Mean_195 Mean_196 Mean_197 Mean_198 Mean_199 Mean_200
Note that there is no Mean_0, which I guess makes sense. Oddly though, look at what should be Mean_128. It says Mean_molecular_layer_HP. I have no idea where that came from because the node values are stored as float:
Number of values stored at each pixel = 1
-- At sub-brick #0 'rank' datum type is float
As a solution, I am using 3dcalc to just add 1 to all nodes. This gives me the expected result of Mean_1 to Mean_201 and I can just subtract 1 to map it back to the annotation value. I just wanted to bring this up because I can't imagine that this is the intended behavior of 3dROIstats. I understand that it skips over nodes with a 0 value, but why Mean_molecular_layer_HP?