CSA measure based on distance from pontomedullary junction (PMJ)
👉 Please cite this work if you use it or if you are inspired by it:
Bédard S, Cohen-Adad J. Automatic measure and normalization of spinal cord cross-sectional area using the pontomedullary junction. Frontiers in Neuroimaging [Internet]. 2022;1. Available from: https://www.frontiersin.org/articles/10.3389/fnimg.2022.1031253
Bédard, S., Bouthillier, M. & Cohen-Adad, J. (2023) Pontomedullary junction as a reference for spinal cord cross-sectional area: validation across neck positions. Sci Rep 13, 13527. https://doi.org/10.1038/s41598-023-40731-3
- Data collection and organization
- Manual labeling of spinal cord rootlets with FSLeyes
- Analysis pipeline
The data is on OpenNeuro: https://openneuro.org/datasets/ds004507/versions/1.0.1
If used, please cite as:
S. Bédard and J. Cohen-Adad (2023). Spinal Cord Head Positions. OpenNeuro. [Dataset] doi: doi:10.18112/openneuro.ds004507.v1.0.1
Download this repository:
git clone https://github.com/sct-pipeline/pmj-based-csa.git
- In the terminal, go into this repository
cd pmj-based-csa
- Run the correction script specifying
path-data
andpath-output
sct_run_batch -jobs 3 -path-data <PATH-DATA> -path-output ~/pmj_csa_nerve_roots_results -script identify_nerve.sh
Wait until the 3 images of the same subject (headDown, headUp, headNormal) open in FSLeyes, follow the steps:
- Click on: Tools → Edit mode
- Click on: Edit (ortho view) → Create mask
- Change parameter
Fill value
according to the spinal level : - Locate the C2 spinal root using the sagittal and axial views (usually around C1 vertebral level)
- Identify the slices that cover the C2 spinal root using the coronal and axial views (see schematic below)
- Place the label 2 at the center of the spinal cord on the median axial slice that cover the spinal root
- Erase the 3 voxels we don’t want (verify that the label is only one voxel)
- Repeat steps 3 to 5 for each spinal root by modifying the parameter
Fill value
:- C3 → 3, C4 → 4, C5 → 5, … , C8 → 8, T1 → 9, …, T4 → 12, …
- Stop when the contrast is not strong enough to accurately label the spinal roots
- Save the mask under the same folder than the image with the suffix
_spinalroots.nii.gz
- Repeat step 4 to 12 for every image (the FSLeyes window will automatically open)
- SCT v5.4
- Python 3.7
Download this repository:
git clone https://github.com/sct-pipeline/pmj-based-csa
cd pmj-based-csa
conda env create -n venv-pmj -f requirements.txt
The data processing includes:
- Spinal cord segmentation
- Vertebral labeling
- Pontomedullary junction (PMJ) labeling
- CSA computation (dics, nerves and PMJ)
- Distance between nerve rootlets and PMJ
- Distance between nerve rootlets and discs
To launch processing, run:
cd pmj-based-csa
sct_run_batch -jobs -1 -path-data <PATH_DATA> -path-out ~/pmj-based-csa_results -script process_data.sh
To compute the statistics about the distances and CSA, run the following command:
To run analysis
python analyse_csa_results.py -path-results ~/pmj-based-csa_results/results/