Skip to content

Commit fe60935

Browse files
committed
Warp UNIT1 segmentation for MSSM subjects
Fixes #153
1 parent 68a5684 commit fe60935

File tree

1 file changed

+21
-20
lines changed

1 file changed

+21
-20
lines changed

data_processing-human.ipynb

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,10 @@
183183
"source": [
184184
"# Segment spinal cord on TFL data (B1+ mapping) ⏳\n",
185185
"\n",
186-
"for subject in subjects:\n",
186+
"# Only do this for subjects without MSSM in their name (https://github.com/spinal-cord-7t/coil-qc-code/issues/153)\n",
187+
"subjects_without_MSSM = [subject for subject in subjects if \"MSSM\" not in subject]\n",
188+
"\n",
189+
"for subject in subjects_without_MSSM:\n",
187190
" os.chdir(os.path.join(path_data, subject, \"fmap\"))\n",
188191
" fname_manual_seg = os.path.join(path_labels, subject, \"fmap\", f\"{subject}_acq-anat_TB1TFL_label-SC_seg.nii.gz\")\n",
189192
" if os.path.exists(fname_manual_seg):\n",
@@ -218,11 +221,13 @@
218221
"source": [
219222
"# Register TFL data (B1+ mapping) to the MP2RAGE scan ⏳\n",
220223
"\n",
221-
"for subject in subjects:\n",
224+
"# for subject in subjects:\n",
225+
"for subject in ['sub-MSSM1', 'sub-MSSM2', 'sub-MSSM3']:\n",
222226
" os.chdir(os.path.join(path_data, subject, \"fmap\"))\n",
223227
" if subject in ['sub-MSSM1', 'sub-MSSM2', 'sub-MSSM3']:\n",
224228
" # https://github.com/spinal-cord-7t/coil-qc-code/issues/43\n",
225-
" !sct_register_multimodal -i {subject}_acq-famp_TB1TFL.nii.gz -iseg {subject}_acq-anat_TB1TFL_seg.nii.gz -d ../anat/{subject}_inv-1_part-mag_MP2RAGE_crop.nii.gz -dseg ../anat/{subject}_UNIT1_seg_crop.nii.gz -param step=1,type=seg,algo=centermass -qc \"{path_qc}\"\n",
229+
" # https://github.com/spinal-cord-7t/coil-qc-code/issues/153\n",
230+
" !sct_register_multimodal -i {subject}_acq-famp_TB1TFL.nii.gz -d ../anat/{subject}_inv-1_part-mag_MP2RAGE_crop.nii.gz -dseg ../anat/{subject}_UNIT1_seg_crop.nii.gz -identity 1 -qc \"{path_qc}\"\n",
226231
" else:\n",
227232
" !sct_register_multimodal -i {subject}_acq-anat_TB1TFL.nii.gz -iseg {subject}_acq-anat_TB1TFL_seg.nii.gz -d ../anat/{subject}_inv-1_part-mag_MP2RAGE_crop.nii.gz -dseg ../anat/{subject}_UNIT1_seg_crop.nii.gz -param step=1,type=seg,algo=centermass -qc \"{path_qc}\""
228233
]
@@ -314,7 +319,7 @@
314319
"id": "d165a15c",
315320
"metadata": {},
316321
"source": [
317-
"### Warp MP2RAGE segmentation and vertebral levels to fmap metrics"
322+
"### Warp MP2RAGE vertebral levels to fmap metrics"
318323
]
319324
},
320325
{
@@ -324,29 +329,32 @@
324329
"metadata": {},
325330
"outputs": [],
326331
"source": [
327-
"# Warping spinal cord segmentation and vertebral level to each flip angle and SNR map\n",
332+
"# Warping vertebral level to each flip angle and SNR map\n",
328333
"\n",
329334
"for subject in subjects:\n",
330335
" os.chdir(os.path.join(path_data, subject, \"fmap\"))\n",
331336
" \n",
332-
" # Warping SC segmentation and vertebral levels to TFL fmaps \n",
337+
" # For MSSM subjects, we also need to warp the SC segmentation\n",
333338
" if subject in ['sub-MSSM1', 'sub-MSSM2', 'sub-MSSM3']:\n",
334-
" #https://github.com/spinal-cord-7t/coil-qc-code/issues/43\n",
339+
" # Warping spinal cord segmentation to TFL data\n",
340+
" !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-anat_TB1TFL_seg.nii.gz\n",
341+
" # Setting type to 'famp' for command below (https://github.com/spinal-cord-7t/coil-qc-code/issues/43)\n",
335342
" type = 'famp'\n",
336343
" else:\n",
337344
" type = 'anat'\n",
345+
" # Warping vertebral levels to TFL data\n",
338346
" !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-{type}_TB1TFL.nii.gz -x nn -o {subject}_acq-anat_TB1TFL_seg_labeled-UNIT1reg.nii.gz\n",
339-
" !sct_qc -i {subject}_acq-{type}_TB1TFL.nii.gz -s {subject}_acq-anat_TB1TFL_seg_labeled-UNIT1reg.nii.gz -p sct_label_vertebrae -qc {path_qc} -qc-subject {subject}\n",
347+
" # !sct_qc -i {subject}_acq-{type}_TB1TFL.nii.gz -s {subject}_acq-anat_TB1TFL_seg_labeled-UNIT1reg.nii.gz -p sct_label_vertebrae -qc {path_qc} -qc-subject {subject}\n",
340348
" \n",
341349
" # Warping SC segmentation and vertebral levels to DREAM fmaps \n",
342350
" !sct_apply_transfo -i ../anat/{subject}_UNIT1_seg_crop.nii.gz -d {subject}_acq-famp_TB1DREAM.nii.gz -w warp_{subject}_UNIT1_crop2{subject}_acq-famp_TB1DREAM.nii.gz -x linear -o {subject}_acq-famp_TB1DREAM_seg.nii.gz\n",
343-
" !sct_qc -i {subject}_acq-famp_TB1DREAM.nii.gz -s {subject}_acq-famp_TB1DREAM_seg.nii.gz -p sct_deepseg_sc -qc {path_qc} -qc-subject {subject}\n",
351+
" # !sct_qc -i {subject}_acq-famp_TB1DREAM.nii.gz -s {subject}_acq-famp_TB1DREAM_seg.nii.gz -p sct_deepseg_sc -qc {path_qc} -qc-subject {subject}\n",
344352
" !sct_apply_transfo -i ../anat/{subject}_UNIT1_seg_labeled_crop.nii.gz -d {subject}_acq-famp_TB1DREAM.nii.gz -w warp_{subject}_UNIT1_crop2{subject}_acq-famp_TB1DREAM.nii.gz -x nn -o {subject}_acq-famp_TB1DREAM_seg_labeled-UNIT1reg.nii.gz\n",
345-
" !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",
353+
" # !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",
346354
" \n",
347355
" # Warping SC segmentation and vertebral level to SNR maps\n",
348356
" !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",
349-
" !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}"
357+
" # !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}"
350358
]
351359
},
352360
{
@@ -814,7 +822,7 @@
814822
"# figure types\n",
815823
"fig_types = [\"TFL B1+ [nT/V]\", \"DREAM B1+ [nT/V]\", \"SNR_90\"]\n",
816824
" \n",
817-
"for data_type, data_stats_type, fig_type in zip(data,data_stats,fig_types):\n",
825+
"for data_type, data_stats_type, fig_type in zip(data, data_stats, fig_types):\n",
818826
" \n",
819827
" avg_data = {'CRMBM': 0, 'UCL': 0, 'MNI': 0, 'MGH': 0, 'MPI': 0, 'NTNU': 0, 'MSSM': 0}\n",
820828
" \n",
@@ -823,21 +831,15 @@
823831
" axs = gs.subplots(sharex=True, sharey=True)\n",
824832
" fig.set_size_inches(16, 6)\n",
825833
"\n",
826-
" \n",
827834
" j = 0\n",
828-
" i = 0\n",
829-
" \n",
835+
" i = 0 \n",
830836
" for k, site in enumerate(sites): \n",
831837
" l = 0\n",
832838
" while i < (j+3):\n",
833-
"\n",
834839
" axs[k].plot(data_type[site][subjects[i]],color=sub_colors[l], linestyle=sub_linestyles[l])\n",
835-
"\n",
836840
" avg_data[site] += data_type[site][subjects[i]]\n",
837-
" \n",
838841
" l += 1\n",
839842
" i += 1\n",
840-
" \n",
841843
" j += 3\n",
842844
" \n",
843845
" avg_data[site] = avg_data[site]/3\n",
@@ -861,7 +863,6 @@
861863
" for ax in axs.flat:\n",
862864
" ax.label_outer()\n",
863865
"\n",
864-
"\n",
865866
" plt.show()\n",
866867
"\n",
867868
" \n"

0 commit comments

Comments
 (0)