Skip to content

Commit

Permalink
Use mask of cord segmentation in native fmap metrics (#149)
Browse files Browse the repository at this point in the history
* Use native segmentation mask instead of the registered UNIT1reg

Fixes #142

* Cleanup

* Fixed removal of seg-UNIT1reg for the DREAM

This contrast does not have a native cord segmentation, so we have to use that from the UNIT1
  • Loading branch information
jcohenadad authored Nov 2, 2024
1 parent c49a254 commit 94d876c
Showing 1 changed file with 14 additions and 20 deletions.
34 changes: 14 additions & 20 deletions data_processing-human.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -277,13 +277,9 @@
" # Warping SC segmentation and vertebral levels to TFL fmaps \n",
" if subject in ['sub-MSSM1', 'sub-MSSM2', 'sub-MSSM3']:\n",
" #https://github.com/spinal-cord-7t/coil-qc-code/issues/43\n",
" !sct_apply_transfo -i ../anat/{subject}_UNIT1_seg_crop.nii.gz -d {subject}_acq-famp_TB1TFL.nii.gz -w warp_{subject}_inv-1_part-mag_MP2RAGE_crop2{subject}_acq-famp_TB1TFL.nii.gz -x linear -o {subject}_acq-famp_TB1TFL_seg-UNIT1reg.nii.gz\n",
" !sct_qc -i {subject}_acq-famp_TB1TFL.nii.gz -s {subject}_acq-famp_TB1TFL_seg-UNIT1reg.nii.gz -p sct_deepseg_sc -qc {path_qc} -qc-subject {subject}\n",
" !sct_apply_transfo -i ../anat/{subject}_UNIT1_seg_labeled_crop.nii.gz -d {subject}_acq-famp_TB1TFL.nii.gz -w warp_{subject}_inv-1_part-mag_MP2RAGE_crop2{subject}_acq-famp_TB1TFL.nii.gz -x nn -o {subject}_acq-famp_TB1TFL_seg_labeled-UNIT1reg.nii.gz\n",
" !sct_qc -i {subject}_acq-famp_TB1TFL.nii.gz -s {subject}_acq-famp_TB1TFL_seg_labeled-UNIT1reg.nii.gz -p sct_label_vertebrae -qc {path_qc} -qc-subject {subject}\n",
" else:\n",
" !sct_apply_transfo -i ../anat/{subject}_UNIT1_seg_crop.nii.gz -d {subject}_acq-famp_TB1TFL.nii.gz -w warp_{subject}_inv-1_part-mag_MP2RAGE_crop2{subject}_acq-anat_TB1TFL.nii.gz -x linear -o {subject}_acq-anat_TB1TFL_seg-UNIT1reg.nii.gz\n",
" !sct_qc -i {subject}_acq-anat_TB1TFL.nii.gz -s {subject}_acq-anat_TB1TFL_seg-UNIT1reg.nii.gz -p sct_deepseg_sc -qc {path_qc} -qc-subject {subject}\n",
" !sct_apply_transfo -i ../anat/{subject}_UNIT1_seg_labeled_crop.nii.gz -d {subject}_acq-famp_TB1TFL.nii.gz -w warp_{subject}_inv-1_part-mag_MP2RAGE_crop2{subject}_acq-anat_TB1TFL.nii.gz -x nn -o {subject}_acq-anat_TB1TFL_seg_labeled-UNIT1reg.nii.gz\n",
" !sct_qc -i {subject}_acq-anat_TB1TFL.nii.gz -s {subject}_acq-anat_TB1TFL_seg_labeled-UNIT1reg.nii.gz -p sct_label_vertebrae -qc {path_qc} -qc-subject {subject}\n",
" \n",
Expand All @@ -294,8 +290,6 @@
" !sct_qc -i {subject}_acq-famp_TB1DREAM.nii.gz -s {subject}_acq-famp_TB1DREAM_seg_labeled-UNIT1reg.nii.gz -p sct_label_vertebrae -qc {path_qc} -qc-subject {subject}\n",
" \n",
" # Warping SC segmentation and vertebral level to SNR maps\n",
" !sct_apply_transfo -i ../anat/{subject}_UNIT1_seg_crop.nii.gz -d {subject}_acq-coilQaSagLarge_SNR_T0000.nii.gz -w warp_{subject}_inv-1_part-mag_MP2RAGE_crop2{subject}_acq-coilQaSagLarge_SNR_T0000.nii.gz -x linear -o {subject}_acq-coilQaSagLarge_SNR_T0000_seg-UNIT1reg.nii.gz\n",
" !sct_qc -i {subject}_acq-coilQaSagLarge_SNR_T0000.nii.gz -s {subject}_acq-coilQaSagLarge_SNR_T0000_seg-UNIT1reg.nii.gz -p sct_deepseg_sc -qc {path_qc} -qc-subject {subject}\n",
" !sct_apply_transfo -i ../anat/{subject}_UNIT1_seg_labeled_crop.nii.gz -d {subject}_acq-coilQaSagLarge_SNR_T0000.nii.gz -w warp_{subject}_inv-1_part-mag_MP2RAGE_crop2{subject}_acq-coilQaSagLarge_SNR_T0000.nii.gz -x nn -o {subject}_acq-coilQaSagLarge_SNR_T0000_seg_labeled-UNIT1reg.nii.gz\n",
" !sct_qc -i {subject}_acq-coilQaSagLarge_SNR_T0000.nii.gz -s {subject}_acq-coilQaSagLarge_SNR_T0000_seg_labeled-UNIT1reg.nii.gz -p sct_label_vertebrae -qc {path_qc} -qc-subject {subject}"
]
Expand Down Expand Up @@ -529,19 +523,19 @@
" #https://github.com/spinal-cord-7t/coil-qc-code/issues/43\n",
" # Extract TFL B1+ along the spinal cord\n",
" fname_result_b1plus = os.path.join(path_results, f\"{subject}_TFLTB1map.csv\")\n",
" !sct_extract_metric -i {subject}_TFLTB1map.nii.gz -f {subject}_acq-famp_TB1TFL_seg-UNIT1reg.nii.gz -method wa -vert 1:9 -vertfile {subject}_acq-famp_TB1TFL_seg_labeled-UNIT1reg.nii.gz -perlevel 1 -o \"{fname_result_b1plus}\"\n",
" !sct_extract_metric -i {subject}_TFLTB1map.nii.gz -f {subject}_acq-famp_TB1TFL_seg.nii.gz -method wa -vert 1:9 -vertfile {subject}_acq-famp_TB1TFL_seg_labeled-UNIT1reg.nii.gz -perlevel 1 -o \"{fname_result_b1plus}\"\n",
" else: \n",
" # Extract TFL B1+ along the spinal cord\n",
" fname_result_b1plus = os.path.join(path_results, f\"{subject}_TFLTB1map.csv\")\n",
" !sct_extract_metric -i {subject}_TFLTB1map.nii.gz -f {subject}_acq-anat_TB1TFL_seg-UNIT1reg.nii.gz -method wa -vert 1:9 -vertfile {subject}_acq-anat_TB1TFL_seg_labeled-UNIT1reg.nii.gz -perlevel 1 -o \"{fname_result_b1plus}\"\n",
" !sct_extract_metric -i {subject}_TFLTB1map.nii.gz -f {subject}_acq-anat_TB1TFL_seg.nii.gz -method wa -vert 1:9 -vertfile {subject}_acq-anat_TB1TFL_seg_labeled-UNIT1reg.nii.gz -perlevel 1 -o \"{fname_result_b1plus}\"\n",
" \n",
" # Extract DREAM B1+ along the spinal cord\n",
" fname_result_b1plus = os.path.join(path_results, f\"{subject}_DREAMTB1avgB1map.csv\")\n",
" !sct_extract_metric -i {subject}_DREAMTB1avgB1map.nii.gz -f {subject}_acq-famp_TB1DREAM_seg-UNIT1reg.nii.gz -method wa -vert 1:9 -vertfile {subject}_acq-famp_TB1DREAM_seg_labeled-UNIT1reg.nii.gz -perlevel 1 -o \"{fname_result_b1plus}\"\n",
" !sct_extract_metric -i {subject}_DREAMTB1avgB1map.nii.gz -f {subject}_acq-famp_TB1DREAM_seg.nii.gz -method wa -vert 1:9 -vertfile {subject}_acq-famp_TB1DREAM_seg_labeled-UNIT1reg.nii.gz -perlevel 1 -o \"{fname_result_b1plus}\"\n",
" \n",
" # Extract SNR along the spinal cord\n",
" fname_result_SNR = os.path.join(path_results, f\"{subject}_SNRmap.csv\")\n",
" !sct_extract_metric -i {subject}_acq-coilQaSagLarge_SNR_T0000.nii.gz -f {subject}_acq-coilQaSagLarge_SNR_T0000_seg-UNIT1reg.nii.gz -method wa -vert 1:9 -vertfile {subject}_acq-coilQaSagLarge_SNR_T0000_seg_labeled-UNIT1reg.nii.gz -perlevel 1 -o \"{fname_result_SNR}\""
" !sct_extract_metric -i {subject}_acq-coilQaSagLarge_SNR_T0000.nii.gz -f {subject}_acq-coilQaSagLarge_SNR_T0000_seg.nii.gz -method wa -vert 1:9 -vertfile {subject}_acq-coilQaSagLarge_SNR_T0000_seg_labeled-UNIT1reg.nii.gz -perlevel 1 -o \"{fname_result_SNR}\""
]
},
{
Expand Down Expand Up @@ -941,26 +935,26 @@
" if site == \"CRMBM\":\n",
" # Flatten the spinal cord in the sagittal plane\n",
" if file_name == \"TFLTB1map\":\n",
" !sct_flatten_sagittal -i sub-{site}{subject_id}_{file_name}.nii.gz -s sub-{site}{subject_id}_acq-anat_TB1TFL_seg-UNIT1reg.nii.gz\n",
" !sct_flatten_sagittal -i sub-{site}{subject_id}_{file_name}.nii.gz -s sub-{site}{subject_id}_acq-anat_TB1TFL_seg.nii.gz\n",
" elif file_name == \"DREAMTB1avgB1map\":\n",
" !sct_flatten_sagittal -i sub-{site}{subject_id}_{file_name}.nii.gz -s sub-{site}{subject_id}_acq-famp_TB1DREAM_seg-UNIT1reg.nii.gz\n",
" !sct_flatten_sagittal -i sub-{site}{subject_id}_{file_name}.nii.gz -s sub-{site}{subject_id}_acq-famp_TB1DREAM_seg.nii.gz\n",
" else:\n",
" !sct_flatten_sagittal -i sub-{site}{subject_id}_{file_name}.nii.gz -s sub-{site}{subject_id}_{file_name}_seg-UNIT1reg.nii.gz\n",
" !sct_flatten_sagittal -i sub-{site}{subject_id}_{file_name}.nii.gz -s sub-{site}{subject_id}_{file_name}_seg.nii.gz\n",
" else:\n",
" # Co-register data to reference subject, then flatten the spinal cord in the sagittal plane\n",
" if file_name == \"TFLTB1map\":\n",
" if site == 'MSSM':\n",
" type = 'famp'\n",
" else:\n",
" type = 'anat'\n",
" !sct_register_multimodal -i sub-{site}{subject_id}_{file_name}.nii.gz -iseg sub-{site}{subject_id}_acq-{type}_TB1TFL_seg-UNIT1reg.nii.gz -d ../../sub-{site_ref}{subject_id}/fmap/sub-{site_ref}{subject_id}_{file_name}.nii.gz -dseg ../../sub-{site_ref}{subject_id}/fmap/sub-{site_ref}{subject_id}_acq-anat_TB1TFL_seg-UNIT1reg.nii.gz -param step=1,type=seg,algo=centermassrot,metric=MeanSquares\n",
" !sct_flatten_sagittal -i sub-{site}{subject_id}_{file_name}_reg.nii.gz -s sub-{site}{subject_id}_acq-{type}_TB1TFL_seg-UNIT1reg.nii.gz\n",
" !sct_register_multimodal -i sub-{site}{subject_id}_{file_name}.nii.gz -iseg sub-{site}{subject_id}_acq-{type}_TB1TFL_seg.nii.gz -d ../../sub-{site_ref}{subject_id}/fmap/sub-{site_ref}{subject_id}_{file_name}.nii.gz -dseg ../../sub-{site_ref}{subject_id}/fmap/sub-{site_ref}{subject_id}_acq-anat_TB1TFL_seg.nii.gz -param step=1,type=seg,algo=centermassrot,metric=MeanSquares\n",
" !sct_flatten_sagittal -i sub-{site}{subject_id}_{file_name}_reg.nii.gz -s sub-{site}{subject_id}_acq-{type}_TB1TFL_seg.nii.gz\n",
" elif file_name == \"DREAMTB1avgB1map\":\n",
" !sct_register_multimodal -i sub-{site}{subject_id}_{file_name}.nii.gz -iseg sub-{site}{subject_id}_acq-famp_TB1DREAM_seg-UNIT1reg.nii.gz -d ../../sub-{site_ref}{subject_id}/fmap/sub-{site_ref}{subject_id}_{file_name}.nii.gz -dseg ../../sub-{site_ref}{subject_id}/fmap/sub-{site_ref}{subject_id}_acq-famp_TB1DREAM_seg-UNIT1reg.nii.gz -param step=1,type=seg,algo=centermassrot,metric=MeanSquares\n",
" !sct_flatten_sagittal -i sub-{site}{subject_id}_{file_name}_reg.nii.gz -s sub-{site}{subject_id}_acq-famp_TB1DREAM_seg-UNIT1reg.nii.gz\n",
" !sct_register_multimodal -i sub-{site}{subject_id}_{file_name}.nii.gz -iseg sub-{site}{subject_id}_acq-famp_TB1DREAM_seg.nii.gz -d ../../sub-{site_ref}{subject_id}/fmap/sub-{site_ref}{subject_id}_{file_name}.nii.gz -dseg ../../sub-{site_ref}{subject_id}/fmap/sub-{site_ref}{subject_id}_acq-famp_TB1DREAM_seg.nii.gz -param step=1,type=seg,algo=centermassrot,metric=MeanSquares\n",
" !sct_flatten_sagittal -i sub-{site}{subject_id}_{file_name}_reg.nii.gz -s sub-{site}{subject_id}_acq-famp_TB1DREAM_seg.nii.gz\n",
" else:\n",
" !sct_register_multimodal -i sub-{site}{subject_id}_{file_name}.nii.gz -iseg sub-{site}{subject_id}_{file_name}_seg-UNIT1reg.nii.gz -d ../../sub-{site_ref}{subject_id}/fmap/sub-{site_ref}{subject_id}_{file_name}.nii.gz -dseg ../../sub-{site_ref}{subject_id}/fmap/sub-{site_ref}{subject_id}_{file_name}_seg-UNIT1reg.nii.gz -param step=1,type=seg,algo=centermassrot,metric=MeanSquares\n",
" !sct_flatten_sagittal -i sub-{site}{subject_id}_{file_name}_reg.nii.gz -s sub-{site}{subject_id}_{file_name}_seg-UNIT1reg.nii.gz\n",
" !sct_register_multimodal -i sub-{site}{subject_id}_{file_name}.nii.gz -iseg sub-{site}{subject_id}_{file_name}_seg.nii.gz -d ../../sub-{site_ref}{subject_id}/fmap/sub-{site_ref}{subject_id}_{file_name}.nii.gz -dseg ../../sub-{site_ref}{subject_id}/fmap/sub-{site_ref}{subject_id}_{file_name}_seg.nii.gz -param step=1,type=seg,algo=centermassrot,metric=MeanSquares\n",
" !sct_flatten_sagittal -i sub-{site}{subject_id}_{file_name}_reg.nii.gz -s sub-{site}{subject_id}_{file_name}_seg.nii.gz\n",
"\n",
" "
]
Expand Down Expand Up @@ -1256,7 +1250,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"display_name": "myenv",
"language": "python",
"name": "python3"
},
Expand Down

0 comments on commit 94d876c

Please sign in to comment.