ThomasYeoLab / CBIG

MIT License
570 stars 380 forks source link

Schaefer2018 parcellation: difference between gordon prior and gordon_water prior? #35

Closed snapfinger closed 2 years ago

snapfinger commented 2 years ago

Hi there, In the example of Schaefer parcellation, the gradient priors (containing fields border and border_matrix) are provided without the need to compute ourselves. However, I'm trying to compute the gradient priors (border and border_matrix) from my own data.

I see in the code it says the paper used option 'gordon', but it's not clear to me how this 'gordon' gradient is computed. In the CBIG repo, there's an implementation of computing gradient, but because it uses watershed, it seems more likely to be 'gordon_water' option in Schaefer parcellation code? However, in Gordon et al, 2016 paper's implementation, there is also a watershed step, so I'm confused about the two. What's the difference between 'gordon' and 'gordon_water'?

rubykong commented 2 years ago

Gordon2016 used watershed algorithm in two different steps. If you check my implementation: https://github.com/ThomasYeoLab/CBIG/tree/master/utilities/matlab/speedup_gradients

The readme figure illustrates how the gradient map was generated. The final output can be used as the gradient priors in Schaefer algorithm. However, if you apply the watershed algorithm again on this gradient map, you will get a binarized map. This is the so-called Gordon2016 parcellation.

To be more specific, the output of my implementation will generate figure 2 in Gordon2016, we call it gradient map. If you apply watershed again on the gradient map, you will get Figure3 in Gordon2016, it's like a binarized version, we call it Gordon2016 parcellation. For Schaefer1018, we use Figure2 in Gordon2016, provided by Gordon2016.

snapfinger commented 2 years ago

thanks!