Registering non-healthy Spinal Cord to PAM50

Hi Julien,

I was able to successfully use multimodal registration to register some of our pediatric DTI data to PAM50 template and extract the WM tracts from there. However, that’s not the case when trying to register the spinal cord injured DTI data (specially with motor complete impairment cases).

I have tried different routes and options (i.e. corrected the cord mask manually to account for cord atrophy/lesion and then used the manual corrected segmentation as an input for the registration). I have also tried different algorithms in the param section.
The outcome of registration is the distorted cord at the site of injury.

I was wondering if you have any recommendation on how to treat the non-healthy cords at the time of registration?

I appreciate your help in advance,
~Shiva

Hi Shiva,

the most efficient way for me to help would be for you to send:

  • a representative data
  • the segmentation
  • the label
  • the syntax that gave best results (so i have a baseline to compare)

i’ll take it from there and optimize

cheers
julien

Hi Julien,

Thank you for your quick response.
I shared with you the data you requested.

This specific subject had injury at C8 level with AIS score of “A”. Since I am running two step registration (t2 to PAM 50 and then temp2anat to dwi data), I can see that the cord is a bit distorted on template2anat image.

The syntax to run the first step registration was:
“sct_register_to_template -i t2.nii -s t2_seg.nii -l labels.nii -c t2”

I am ultimately trying to extract the dti metrics at C3 level after successful registration with dwi data.
To run the second step registration for this specific subject the syntax I used is :

“sct_register_multimodal -i …/temp2anat.nii -d …/dti_moco_dwi_mean.nii -iseg …/temp2anat_seg.nii -dseg …/dti_moco_dwi_mean_seg.nii -param step=1,type=seg,algo=centermass:step=2,type=seg,algo=bsplinesyn,metric=MeanSquares,smooth=1,slicewise=1,iter=3”

However I got the best result using the command from the batch_processing.sh as follows:

"sct_register_multimodal -i $SCT_DIR/data/PAM50/template/PAM50_t1.nii.gz -iseg $SCT_DIR/data/PAM50/template/PAM50_cord.nii.gz -d dmri_moco_dwi_mean.nii.gz -dseg dmri_moco_dwi_mean_seg.nii.gz -param step=1,type=seg,algo=centermass:step=2,type=seg,algo=bsplinesyn,metric=MeanSquares,smooth=1,iter=3 -initwarp …/t2/warp_template2anat.nii.gz -initwarpinv …/t2/warp_anat2template.nii.gz "

I am a bit skeptical about using the PAM50_t1 as the reference image in this case (instead of using our own pediatric structural data in anatomical space).

Any advice is greatly appreciated.
Best,
~Shiva

Hi Shiva,

Because there is excessive motion (and/or image distortion) between the T2 and the DWI scans, the intermediate warping fields (anat->T2) is not properly applied when running sct_register_multimodal between the PAM50 and the DWI scan. You will find more details in this issue.

Because of that, a more reliable strategy is to directly register the template to the DWI scan. In the syntax below, notice that we can use the vertebral labels you created for the T2 scan (it is more convenient, given that the vertebral levels are not visible on the DWI scan):

sct_register_to_template -i dti_moco_dwi_mean.nii -s dti_moco_dwi_mean_seg.nii -l labels.nii.gz -c t1 -ref subject -param step=1,type=seg,algo=centermass:step=2,type=seg,algo=columnwise:step=3,type=im,algo=syn,metric=CC,iter=3 -qc qc

:information_source: ‎ For the registration, we use algo=columnwise because of the very large deformation induced by the compression. We also use -ref subject because of the large slice thickness: we don’t want to introduce interpolation error by doing the straightening.

You can see all my investigations in this QC report: qc.zip (2.9 MB)

The “good” registration corresponds to the time “2021-04-03 10:06:16”.

Cheers,
Julien

Hi Julien,
Thank you for investigating the data.
From what I see on the result of your registration we do need to manually correct the cord segmentation on the dwi data and “remove” the non-healthy part of the cord (including any lesion or atrophy, could be couple of slices) before applying the registration? In other words, we should only register the healthy part of the cord to PAM50.

Thanks,
~Shiva

From what I see on the result of your registration we do need to manually correct the cord segmentation on the dwi data and “remove” the non-healthy part of the cord (including any lesion or atrophy, could be couple of slices) before applying the registration? In other words, we should only register the healthy part of the cord to PAM50.

It depends what you are doing with the registered data. Examples:

  • if you wish to compute compression metrics from the segmentation (e.g using sct_process_segmentation), then you need to keep that part during the registration;
  • if you with to extract DTI metrics using sct_extract_metric, then:
    • if you have solid scientific arguments that these DTI metrics are worth reporting in a region with high compression, then you can go ahead and report them
    • if you think otherwise, then you can indeed only report value above and/or below the compression site, providing these values are reliable (ie: the fact that metrics are on a “healthy” tissue does not imply that the data is reliable). Regardless, you can still include the compressed region in the registration, but simply exclude it during metric extraction.

Thank you so much for the very helpful response Julien.