Dear Freesurfer experts,
I'm having trouble generating an annotation file for a large number of ROIs (3000) from Python using Nibabel. The function call that I used is:
nib.freesurfer.io.write_annot(filepath, labels, ctab, names)
where
filepath = 'myFile.annot' labels = numpy 1D array of type int64, elements between 0-2999 inclusive
ctab = 3000 x 5 array ctab[:, 0:3] = unique colors for each row ctab[:, 3] = 255 ctab[:, 4] = [1, 2, 3, etc ..] # this is where I think the problem is
names = [ b'patch0', b'patch1', etc ... ]
The annotation file is created without any warnings, but when I load it with freesurfer it only shows me only around 10 ROIs (screenshot here https://ibb.co/dZnkSa) and gives me the following warning:
CTABisEntryValid: index -1 was OOB Resource temporarily unavailable
I think the problem is with the IDs I generate on the last column of ctab. I thought those are some unique IDs, one for each ctab row, but they seem to be used to somehow map colors for each vertex. Does anyone know how they must be generated?
When I did this before for only around 30 ROIs, I hacked around this problem by loading in Python the annotation file from fsaverage lh.aparc.annot, and using the ctab from there, only replacing the labels and names with my desired values. However, I cannot use this hack for more than 36 ROIs (the number of ctab entries in aparc.annot).
Any help will be greatly appreciated!
Many thanks, Razvan
freesurfer@nmr.mgh.harvard.edu