surfclust questions

hi all
i am very happy to find SurfClust which can perform the multiple correction on surface based analysis. It is difficult for me to write the code for this, although I read the help of the SurfClust. OK. Here are output for my script:

  • Error SUMA_SurfClust_ParseInput (SUMA_SurfClust.c:437):

Option -i not understood.
Try -help for usage
Here’s hoping these excerpts from ‘SurfClust -help’ enlighten:
‘-i insurf: With insurf being the full name of the surface.’
‘<-input inData.dset dcol_index>’
‘-input inData.dset dcol_index: The input dataset’

This is my script. I try performing the clustering after surfaced based analysis using Then i get the beta for each mesh/node from the stats file, and naming the surface beta as HDR.niml.dset. this one is left hemisphere. My questions are: 1,how to fix my errors? 2, how to add more subjects’ data such as a group data?

SurfClust -spec /Users/caroline/CON_IA27/SUMA/std.60.CON_IA27_lh.spec
-i /Users/caroline/CON_IA27/
-input HDR.niml.dset
-rmm -2
-athresh 1
-prefix OUTPREF


Can Taylor or Saad help me?

Hi, Rujing-

Re. Q1:
The following is a working example produced by the suma GUI when hitting the “clst” button to clusterize. I basically just loaded a dset (./std.60.lh.thickness.niml.dset, which is the dset that is thresholded (here at 3.58) + clusterized (here with NN=1, from ‘-rmm -1’)), which is overlaid on the “underlay” data set (std.60.lh.smoothwm.gii):

SurfClust \
 -i      ./std.60.lh.smoothwm.gii \
 -input  ./std.60.lh.thickness.niml.dset 0 \
 -rmm    -1.000000 \
 -thresh_col 0 \
 -athresh 3.580000 \
 -amm2 50.000000 \
 -sort_area \

The rest of the options are explained in the help file.

In your program call, you did not put two arguments after “-input …”; see the helpfile here for that entry:

-input inData.dset dcol_index: The input dataset
                                  and the index of the
                                  datacolumn to use
                                  (index 0 for 1st column).
                                  Values of 0 indicate 
                                  inactive nodes.

I think that is the specific error you are getting, and why it is pointing to the “-input …” opt for help.

I also don’t think you can have both a “-spec …” and “-i …” surface file input; the helpfile seems to say one or the other:

Surface Input can be done with:
     -spec SpecFile: The surface spec file.
     -surf_A insurf: The input surface name.
    or with:
     -i insurf: With insurf being the full name of the surface.

Re. Q2: <<how to add more subjects’ data such as a group data? >>
What kind of group statistic do you want? You can run that group-stat program and get a stats *.niml.dset, and then use that as your “-input …” file, and threshold+clusterize that. For example, if you ran 3dtest++ on your data sets, then you could use the output from that.


Hi Paul
Thanks for your reply. I am a learner in Guangzhou, China, and asked you how to correct multiple comparisons during that program. And you said only ROI-based bayesian from Gang Chen can be used to perform the correction. Do you remember?
After the trainning program, I searched on the AFNI command and found that SurfClust could “Usage: A program to perform clustering analysis surfaces”. I was excited as I thought the SurfClust could be used to correct multiple comparisons. However, it seems that the SurfClust is just generating a cluster for a single subject, not for group analysis multiple comparisions correction. Is that right?

Hi, Rujing-

I do remember, indeed-- nice to be able to have met the AFNI user behind the MB posts!

Rick mentioned that there was a script that he had written for running 3dClustSim on surfaces for the multiple comparisons correction, called “” in large part because it is… kinda slow.

Note that at present this program does not run 3dClustSim with the new “ACF mixed model” smoothing estimates; it runs it just with a Gaussian approximation. If you have followed some of the clustering news in the past couple years, in volumetric data it was shown that Gaussian estimates of smoothness were not very good. However, the blurring/smoothing performed on the surface is done differently than that of the volume-- instead of just blurring with a Gaussian over the data, the surface smoothing blurs to a given Gaussian smoothness.

This is an example of surface smoothing from the surface-proc script example created by the AFNI_data6/FT_analysis/s03* command in the AFNI Bootcamp data:

SurfSmooth -spec $surface_dir/std.60.FT_${hemi}.spec         \
                       -surf_A smoothwm                                  \
                       -input pb03.$subj.$hemi.r$      \
                       -met HEAT_07                                      \
                       -target_fwhm 6.0                                  \
                       -blurmaster pb03.$subj.$hemi.r$ \
                       -detrend_master                                   \
                       -output pb04.$subj.$hemi.r$run.blur.niml.dset     \
                       | tee surf.smooth.params.1D

Note the use of “-target_fwhm …” Also note that this processing+estimation is done hemisphere-by-hemisphere.

Also note that we haven’t looked at this for a cluster-control FPR test like the Eklund et al. folks set up (where they called resting state data “null” data and assumed every cluster found would be a false one). This is a fairly different scenario to the volumetric one in a couple subtle (and not-so-subtle) ways, so it might be pretty different.