Importing ROIs

Forums Forums General Questions Importing ROIs

This topic contains 10 replies, has 3 voices, and was last updated by  burgewk 4 years, 5 months ago.

  • Author
    Posts
  • #86

    burgewk
    Participant

    Hi BrainSuite community,

    Is there any way to import a set of regions of interest into BS to extract the cortical thickness values from that specified region? I have the current regions of interest in freesurfer .label files as well as converted to .nii volume based regions.

    Also, if I use the label painter tool, can I create a region on a template brain that can be used for the rest of my subjects?

    Thanks for your help with this,

    Wes

  • #87

    Anand Joshi
    Moderator

    Hi Wes,
    I can help you with this.
    There is matlab script to use a different list of ROIs to compute the statistical measures. (item 6). You can specify the list of ROIs, names of surface and volume label files to this script and the script will output all the cortical and volumetric measures.

    http://neuroimage.usc.edu/neuro/Resources/BST_SVReg_Utilities
    \
    Also you can create their own atlas with you own ROIs (item 7) and then compute statistics on those.

    Please give it a try and let me know if it works.

    Anand

    • #88

      burgewk
      Participant

      Hi Anand,

      Thanks for getting back to me. I have a few more questions:

      What sort of registration should I be doing to get my regions into BS space?

      We are trying to confirm our findings from Freesurfer in a separate analysis stream. So we will have both a Freesurfer based reconstruction and a Brain Suite based reconstruction for each participant. The end goal is to extract the thickness values for each region that we are interested in. All of our regions are hand drawn in Freesurfer as labels which we can convert to volumes (.nii) easily enough. Should I be registering their Freesurfer based anatomy to one of the outputs from the ‘Cortical surface extraction sequence’? If so, which output should I aim for.

      I hope the above was clear. Please let me know if you need additional info.

      Best,

      Wes

    • #89

      cbhushan
      Moderator

      Hi Wes, For correct computation of ROI-wise statistics, the hand-drawn labels should overlay correctly with *.bfc.nii.gz file in BrainSuite GUI.

      In order to achieve that you can co-register the anatomical image (converted to .nii) on which the labels were drawn to the *.bfc.nii.gz file generated by BrainSuite. This registration should be done in rigid fashion, with 6 DOF, and following registration tool can be used for the purpose:

      http://neuroimage.usc.edu/neuro/Resources/BDPAddons#affineReg

      Next, you should apply the same transformation to the hand-drawn label file itself (converted to .nii) using transform_data_affine() function with ‘nearest’ interpolation method. Please see the html file in the registration-tool zip/folder for detailed documentation.

  • #90

    burgewk
    Participant

    Hi Brain Suite community,

    Things are going along well with this. I am now at the stage where I would like to extract the information from my ROIs that have now been registered and put into BS space. This is where I run into an error.

    Anand suggested I use the utilities file: main.generate_stats_xls_manual.m which has this at line 28:

    l=readdfs([subbasename,’.left.mid.cortex.’,surf_ext]);

    However, after my cortical extraction I did not have a .mid in my folder. I tried to run the svreg but it also was looking for the .mid files. Is there some other step I should do to generate the .mid files?

    Here is an ls of my output folder:

    mprage.air mprage.left.pial.cortex.dfs
    mprage.bfc.nii.gz mprage.mask.nii.gz
    mprage.brain.dfs mprage.nii.gz
    mprage.bse.nii.gz mprage.outer_skull.dfs
    mprage.cerebrum.mask.nii.gz mprage.pial.cortex.dfs
    mprage.cortex.dewisp.mask.nii.gz mprage.pvc.frac.nii.gz
    mprage.cortex.scrubbed.mask.nii.gz mprage.pvc.label.nii.gz
    mprage.cortex.tca.mask.nii.gz mprage.right.inner.cortex.dfs
    mprage.hemi.label.nii.gz mprage.right.pial.cortex.dfs
    mprage.init.cortex.mask.nii.gz mprage.scalp.dfs
    mprage.inner.cortex.dfs mprage.skull.label.nii.gz
    mprage.inner_skull.dfs mprage.warp

    I appreciate the help!

    Wes

    • #91

      burgewk
      Participant

      Here is the output when trying to run the GUI based svreg

      Executing: /Applications/BrainSuite15b/svreg/bin/svreg_label_surf_hemi.sh /Volumes/Storage_backup/session_1/anat_1/mprage /Applications/BrainSuite15b/svreg/BCI-DNI_brain_atlas/BCI-DNI_brain left -v1
      Executing: /Applications/BrainSuite15b/svreg/bin/svreg_label_surf_hemi.sh /Volumes/Storage_backup/session_1/anat_1/mprage /Applications/BrainSuite15b/svreg/BCI-DNI_brain_atlas/BCI-DNI_brain right -v1
      Finished surface labeling 0:00
      error reading /Volumes/Storage_backup/session_1/anat_1/mprage.left.mid.cortex.svreg.init.dfs
      error reading /Volumes/Storage_backup/session_1/anat_1/mprage.right.mid.cortex.svreg.init.dfs

    • #92

      burgewk
      Participant

      I think I figured it out. I tried to run it from the command line and found it to be a X11 issue. I had to download xquartz and it appears to be running the svreg now. I am using OSX v 10.10.5 for anyone else who might encounter this.

      Wes

  • #93

    Anand Joshi
    Moderator

    Great! Good that things are working. Please let me know if there are any more issues.

    • #94

      burgewk
      Participant

      Ok I got through the svreg pipeline without error. I have also run my test subject through the thicknessPVC.sh pipeline.

      I tried to run through the generate_stats_xls_manual file and it works, but I’m not really sure what I should be feeding it.

      subbasename=’/Storage/session_1/anat_1/mprage’;
      vol_label_file=’/Storage/1_LH_V1.label.nii’; % binary volume file registered to .bfc
      ROI_IDs= [1];
      surf_ext=’svreg.dfs’; %[subbasename,’.left.mid.cortex.’,surf_ext]
      output_ext=’testout’; %[subbasename,’.roiwise.’,output_ext,’.stats.txt’]
      generate_stats_xls_manual(subbasename,vol_label_file,ROI_IDs,surf_ext,output_ext);

      I’m not really sure what I should be putting for ROI_IDS. I’ve tried several different combinations of numbers. I thought 1 would be correct as the mask is binary. For ROI_IDs = 1 I get:

      ROI_ID Mean_Thickness(mm) GM_Volume(mm^3) CSF_Volume(mm^3) WM_Volume(mm^3) Total_Volume(GM+WM)(mm^3) Cortical_Area_mid(mm^2) Cortical_Area_inner(mm^2) Cortical_Area_pial(mm^2)
      1 NaN 219.089869 7.097567 9.160284 228.250153 0.000000 0.000000 0.000000

      So it has a GM volume, but no thickness value?

      Should I be setting my binary mask not equal to 1? I had a look around the xml file with ROI Ids but I don’t really know what I should be setting it to.

      Thanks for the help,

      Wes

      • This reply was modified 4 years, 5 months ago by  burgewk.
  • #97

    burgewk
    Participant

    It worked, thanks!!

  • #96

    Anand Joshi
    Moderator

    Hi Wes,
    1 is a fine value for the script. The problem is that the volume is labeled, but these labels are not transferred to the surfaces, so the thickness values are not computed.

    You can follow these steps

    1. run Brainsuite + SVReg
    2. run thicknessPVC.sh
    3. run the following commands
    subbasename=’/Storage/session_1/anat_1/mprage’;
    vol_label_file=’/Storage/1_LH_V1.label.nii’;
    slt=readdfs([subbasename, ‘.pvc-thickness_0-6mm.left.mid.cortex.dfs’]);
    sl=readdfs([subbasename, ‘.left.mid.cortex.svreg.dfs’]);

    sl.attributes=slt.attributes;

    vl=load_untouch_nii(vol_label_file);
    res=vl.hdr.dim.pixdim(2:4);
    % copy volumetric labels to surfaces;
    sl.labels=interp3(double(vl.img),sl.vertices(:,2)/res(2)+1,sl.vertices(:,1)/res(1)+1,sl.vertices(:,3)/res(3)+1,’nearest’);

    slin=readdfs([subbasename, ‘.left.inner.cortex.svreg.dfs’]);
    slpial=readdfs([subbasename, ‘.left.pial.cortex.svreg.dfs’]);

    slin.labels=sl.labels;
    slin.attributes=sl.attributes;

    slpial.labels=sl.labels;
    slpial.attributes=sl.attributes;

    writedfs([subbasename, ‘.left.inner.cortex.svreg2.dfs’],slin);
    writedfs([subbasename, ‘.left.mid.cortex.svreg2.dfs’],sl);
    writedfs([subbasename, ‘.left.pial.cortex.svreg2.dfs’],slpial);

    %% Do the same for the right hemisphere
    slt=readdfs([subbasename, ‘.pvc-thickness_0-6mm.right.mid.cortex.dfs’]);
    sl=readdfs([subbasename, ‘.right.mid.cortex.svreg.dfs’]);

    sl.attributes=slt.attributes;

    vl=load_untouch_nii(vol_label_file);
    res=vl.hdr.dim.pixdim(2:4);
    % copy volumetric labels to surfaces;
    sl.labels=interp3(double(vl.img),sl.vertices(:,2)/res(2)+1,sl.vertices(:,1)/res(1)+1,sl.vertices(:,3)/res(3)+1,’nearest’);

    slin=readdfs([subbasename, ‘.right.inner.cortex.svreg.dfs’]);
    slpial=readdfs([subbasename, ‘.right.pial.cortex.svreg.dfs’]);

    slin.labels=sl.labels;
    slin.attributes=sl.attributes;

    slpial.labels=sl.labels;
    slpial.attributes=sl.attributes;

    writedfs([subbasename, ‘.right.inner.cortex.svreg2.dfs’],slin);
    writedfs([subbasename, ‘.right.mid.cortex.svreg2.dfs’],sl);
    writedfs([subbasename, ‘.right.pial.cortex.svreg2.dfs’],slpial);

    4. now run

    ROI_IDs= [1];
    surf_ext=’svreg2.dfs’;
    output_ext=’testout’; %[subbasename,’.roiwise.’,output_ext,’.stats.txt’]
    generate_stats_xls_manual(subbasename,vol_label_file,ROI_IDs,surf_ext,output_ext);

    This should work. Please let me know if there is any problem.

    • This reply was modified 4 years, 5 months ago by  Anand Joshi.

You must be logged in to reply to this topic.