Hello,
I would like to know how to compute CSA per spinal level instead of vertebral level?
Thank you!
MM
Dear @mmelmendili,
Thank you kindly for your question! The general process for computing CSA per spinal level is roughly the same as computing CSA per vertebral level:
- Generate a spinal cord segmentation mask.
- Generate a label file (where each axial slice of the SC mask is assigned a level)
- Compute and aggregate metrics using the
sct_process_segmentationscript.
The main difference will be the step 2 - “label file generation”. SCT currently does not have any one “standard” (recommended) workflow for generating spinal level labeling. This is an ongoing research question within the lab, with discussion of the challenges here. We have been exploring different methods for generating the labels, and I would be happy to cover what we have tried in further detail if needed.
So, as a follow-up question: Do you already have spinal level labels for your data? And, if not, what sort of data are you working with? (Contrast, resolution, acquisition plane, etc.)
Kind regards,
Joshua
Hi Joshua,
Thanks for your response.
I do have spinal levels labels that were generated using sct_deepseg rootlets function.
I am working with T2w data with 0.8–0.9 mm isotropic resolution and sagittal orientation.
“I would be happy to cover what we have tried in further detail if needed.”
I would be interested to know more about what you have tried so far.
Best,
MM
Thank you for the background information! Just to clarify the terminology and make sure we are on the same page, I am using these terms:
- “rootlets segmentation” → Mask of the anatomical rootlets structure
- “spinal level labels” → A spinal cord mask with each voxel in the mask being assigned a spinal level.
When you say that you have the spinal levels, do you have just the rootlets, or have you created the spinal level file too?
Our lab has tried projecting the rootlets labels directly onto the spinal cord to label the levels directly within the cord, however we found this to be not very straightforward and heavily dependent on the quality of the rootlets segmentation.
An alternative that is a bit more robust to variations in segmentation quality would be to:
- Segment the spinal cord itself using
sct_deepseg spinalcord - Perform rootlets-based registration to the PAM50 template.
- Use
sct_warp_templateto warp the PAM50 template into the subject space. - Compute CSA metrics on the spinal level file present within the PAM50 template.
Step 2 is covered in this tutorial: Registering images to the PAM50 template based on spinal nerve rootlets - Spinal Cord Toolbox documentation
After you complete the last page of that tutorial (and you are happy with the alignment of the PAM50 template to your data), you can finish by doing the following:
# warp the PAM50 template to the subject space
sct_warp_template -d t2.nii.gz -w warp_template2anat.nii.gz -a 0 -qc ~/qc_singleSubj
# compute CSA on the warped template file
sct_process_segmentation -i t2_seg.nii.gz -anat t2.nii.gz -vertfile ./template/PAM50_spinal_levels.nii.gz -perlevel 1 -o csa_perlevel.csv
Let me know if you have any further questions or concerns and I will be happy to help.
Kind regards,
Joshua
I only have rootlets.
I will try bringing the PAM50 spinal levels back into the subject space and then perform spinal level labeling.
Thank you!
MM
