Brainnetome Atlas on HCP


I am trying to run ACT tractography based on Brainnetome Atlas (BN) on HCP dataset using ISMRM tutorial for such analysis. It is a fine-grained atlas that is highly being used by the fMRI community and can be used for DWI-fMRI combinational studies.

I’ve got a few questions, and please accept my apologies in advance if the subject becomes a bit FreeSurfer-y.

  1. To do analysis based on the tutorial, one has to download preprocessed DWI and preprocessed structural data (for T1w_acpc_dc_restore_brain.nii.gz). However, to convert native-space FreeSurfer default labels to BN requires downloading structural preprocessed extended data. I wonder which file from this package can be used as T1w_acpc_dc_restore_brain, so I don’t need to download both structural packages (such as T1.hires.masked or brain.mgz).

  2. [FreeSurfer-y part] As far as I know, aparc+aseg.mgz does not include the BN labels/codes and I have to somehow relabel the data. To do so, I downloaded BN_FreeSurfer and relabeled rh/lh.cortex.label into rh/lh.BN_atlas.annot and transformed BN_subcortical atlas into native-space using these commands:

mris_ca_label -l $SUBJECTS_DIR/$SubjectID/label/lh.cortex.label $SubjectID lh[/rh] $SUBJECTS_DIR/$Subject/surf/lh[/rh].sphere.reg lh[/rh].BN_Atlas.gcs $SUBJECTS_DIR/$SubjectID/label/lh[/rh].BN_Atlas.annot

mri_ca_label $SUBJECTS_DIR/$SubjectID/mri/brain.mgz $SUBJECTS_DIR/$SubjectID/mri/transforms/talairach.m3z BN_Atlas_subcortex.gca $SUBJECTS_DIR/$SubjectID/mri/BN_Atlas_subcortex.mgz

Now, I have to make an aparc+aseg.mgz using these labels:
mri_aparc2aseg --s $SubjectID --volmask --aseg BN_Atlas_subcortex.mgz --annot BN_Atlas --annot-table BN_Atlas_LUT_246.txt

This generates BN_Atlas+aseg.mgz which visually resembles aparc+aseg.mgz with higher values for subcortical nuclei. However, I am not sure whether my commands are correct or not (I highly suspect that I should use --aseg aseg instead of --aseg BN_Atlas_subcortex.mgz)

  1. Using labelconvert on the generated BN_Atlas+aseg.mgz from the previous step:
    labelconvert BN_Atlas+aseg.mgz BN_Atlas_210_LUT.txt BN_Atlas_210_LUT.txt nodes.mif
    generates a nodes.mif in which one hemisphere’s WM is colored (figure below). My guess is on the difference in the structure of BN_Atlas_210_LUT.txt (downloadable from the link above), but it is very similar to fs_default.txt. Since BN atlas can be used by many users I wonder whether there is a possibility to add a file like fs_default.txt for it or a way to manually change it.


1 Like

Hi Amir,

Firstly, as noted at the top of that page, the ISMRM tutorial is only there for historical reference; it shouldn’t necessarily be used as a basis for building a more complex analysis.

Secondly, I would try to avoid describing this process as:

… to convert native-space FreeSurfer default labels to BN …
… aparc+aseg.mgz does not include the BN labels/codes …

, since this isn’t a matter of “modifying the existing FreeSurfer labels”, but of using a different set of labels defined on the surface template space and projecting them into the individual voxel space in a manner similar to that used by recon-all to generate aparc+aseg.mgz.

Otherwise, I do now have my BIDS App for connectome construction working with the Brainnetome atlas; the set of commands utilised there may provide some instruction, though I seem to recall having not been terribly happy with the resulting images so it’s possible that I’m myself not using the optimal approach.

Using labelconvert on the generated BN_Atlas+aseg.mgz from the previous step:
labelconvert BN_Atlas+aseg.mgz BN_Atlas_210_LUT.txt BN_Atlas_210_LUT.txt nodes.mif

I’m not quite sure what it is that you’re trying to achieve here. The purpose of the labelconvert command is to map the integer indices in an image from one LUT to another; so having the same LUT for both input and output becomes essentially a no-operation (with the exception being that any integer values present in the input image but absent in the LUT would be zeroed).

I would also note that I’m using BN_Atlas_246_LUT.txt, not BN_Atlas_210_LUT.txt, and that I deemed the labelconvert step to not be required in that case. I don’t recall the differences between the two LUT files as I did that work quite a while ago (and it all gets excised from my memory once I have things working), but I would definitely advise checking to see if you are simply using the wrong lookup table.


Hi Amir

I am also trying to use brainnetome atlas in freesurfer and having similar issues. I have few questions -

  1. Is your “mri_aparc2aseg” command structure is right?

  2. Have you got SC from using brainnetome atlas in freesurfer?

I will be very thankful if you reply.



Hi Pratika,

  1. It has been a long time since I used this code to optimize my results, however, after checking my notes on the analysis here are the most probable things I did:
  • Rewrite 246_LUT: first 210 rows were required to either be added 1000 or 2000, based on the hemisphere
  • mri_aparc2aseg --s your_subject_id --volmask --aseg BN_Atlas_Subcortex.mgz --annot BN_Atlas --annot-table BN_Atlas_246_LUT.txt
  • labelconvert BN_Atlas+aseg.mgz BN_Atlas_246_LUT.txt [the file in which the first 210 rows were added 1000/2000] BN_Atlas_246_default.txt [No additions]
  • labelsgmfix nodes.mif T1w_acpc_dc_restore_brain.nii.gz BN_Atlas_246_default.txt nodes_fixsgm.mif -premasked

Again, apologies that this code may also be wrong cause I left this project a long time ago for some reason. Please update me if you reach out any conclusions.

  1. Not actually.