|
a |
|
b/scripts/multi-scan-script |
|
|
1 |
#!/bin/bash |
|
|
2 |
|
|
|
3 |
# multi-scan-script |
|
|
4 |
# |
|
|
5 |
# @brief: Run qDESS, Cubequant, and Cones analysis on super folder (absolute path) specified as an argument |
|
|
6 |
# |
|
|
7 |
# @folder structure: |
|
|
8 |
# |subject_scans |
|
|
9 |
# |patient01 |
|
|
10 |
# |qdess |
|
|
11 |
# |cubequant |
|
|
12 |
# |cones |
|
|
13 |
# |patient02 |
|
|
14 |
# |qdess |
|
|
15 |
# |cubequant |
|
|
16 |
# |cones |
|
|
17 |
# |patient03 |
|
|
18 |
# |qdess |
|
|
19 |
# |cubequant |
|
|
20 |
# |cones |
|
|
21 |
# ... |
|
|
22 |
# |
|
|
23 |
# @usage (from terminal/command line): |
|
|
24 |
# ./multi-scan-script PATH_TO_SUPER_FOLDER |
|
|
25 |
# eg: "./multi-scan-script Users/john/Documents/subject_scans/" |
|
|
26 |
# |
|
|
27 |
# @initialization protocol: |
|
|
28 |
# 1. run "chmod +x multi-scan-script" from the command line |
|
|
29 |
# 2. Update `WEIGHTS_DIRECTORY` field below |
|
|
30 |
# |
|
|
31 |
# @notes: |
|
|
32 |
# - If data already exists for subject, then script does not recalculate - delete `data` folder and rerun script to redo analysis |
|
|
33 |
# |
|
|
34 |
# @author: Arjun Desai, Stanford University |
|
|
35 |
# (c) Stanford University, 2018 |
|
|
36 |
|
|
|
37 |
echo "This file is currently deprecated - if needed, please make an issue on the corresponding Github repository" |
|
|
38 |
exit 125 |
|
|
39 |
|
|
|
40 |
WEIGHTS_DIRECTORY="/Users/arjundesai/Documents/stanford/research/msk_pipeline_raw/weights" |
|
|
41 |
if [ -z "$WEIGHTS_DIRECTORY" ]; then |
|
|
42 |
echo "Please define WEIGHTS_DIRECTORY in script. Use the absolute path" |
|
|
43 |
exit 125 |
|
|
44 |
fi |
|
|
45 |
|
|
|
46 |
if [ $# -eq 1 ] |
|
|
47 |
then |
|
|
48 |
SERIES="qdess" |
|
|
49 |
else |
|
|
50 |
SERIES=$2 |
|
|
51 |
fi |
|
|
52 |
|
|
|
53 |
# find relevant dicom files |
|
|
54 |
|
|
|
55 |
FILES=$(find $1 -type d -name $SERIES) |
|
|
56 |
|
|
|
57 |
cd .. |
|
|
58 |
|
|
|
59 |
for i in $FILES; do |
|
|
60 |
DIRNAME=$(dirname $i) |
|
|
61 |
SAVE_DIRNAME="$DIRNAME/data" |
|
|
62 |
CUBEQUANT_DIRNAME="$DIRNAME/cubequant" |
|
|
63 |
CONES_DIRNAME="$DIRNAME/cones" |
|
|
64 |
TARGET_SCAN="$SAVE_DIRNAME/qdess_data/echo1.nii.gz" |
|
|
65 |
MASK="$SAVE_DIRNAME/fc/fc.nii.gz" |
|
|
66 |
|
|
|
67 |
CUBEQUANT_INTERREGISTERED_DATA="$SAVE_DIRNAME/cubequant_data/interregistered" |
|
|
68 |
CUEQUANT_T1RHO="$SAVE_DIRNAME/cubequant_data/t1_rho.nii.gz" |
|
|
69 |
|
|
|
70 |
|
|
|
71 |
CONES_INTERREGISTERED_DATA="$SAVE_DIRNAME/cones_data/interregistered" |
|
|
72 |
CONES_T2STAR="$SAVE_DIRNAME/cones_data/t2_star.nii.gz" |
|
|
73 |
|
|
|
74 |
echo "" |
|
|
75 |
echo "----------Analyzing $DIRNAME---------" |
|
|
76 |
|
|
|
77 |
# use qDESS to get femoral cartilage segmentation + 3D t2 maps |
|
|
78 |
if [ ! -e $TARGET_SCAN ]; then |
|
|
79 |
dosma --d $i --s $SAVE_DIRNAME qdess --fc segment --rms --weights_dir $WEIGHTS_DIRECTORY |
|
|
80 |
dosma --l $SAVE_DIRNAME qdess --fc t2 |
|
|
81 |
fi |
|
|
82 |
|
|
|
83 |
# interregister cubequant with qdess |
|
|
84 |
if [ ! -e $CUBEQUANT_INTERREGISTERED_DATA ]; then |
|
|
85 |
echo $CUBEQUANT_INTERREGISTERED_DATA |
|
|
86 |
dosma --d $CUBEQUANT_DIRNAME --s $SAVE_DIRNAME cubequant interregister --ts $TARGET_SCAN --tm $MASK |
|
|
87 |
fi |
|
|
88 |
|
|
|
89 |
# cubequant 3D t1rho map |
|
|
90 |
if [ ! -e $CUEQUANT_T1RHO ]; then |
|
|
91 |
dosma --l $SAVE_DIRNAME cubequant t1_rho |
|
|
92 |
fi |
|
|
93 |
|
|
|
94 |
# interregister cones with qdess |
|
|
95 |
if [ ! -e $CONES_INTERREGISTERED_DATA ]; then |
|
|
96 |
dosma --d $CONES_DIRNAME --s $SAVE_DIRNAME cones interregister --ts $TARGET_SCAN --tm $MASK |
|
|
97 |
fi |
|
|
98 |
|
|
|
99 |
# cones 3D t2_star map |
|
|
100 |
if [ ! -e $CONES_T2STAR ]; then |
|
|
101 |
dosma --l $SAVE_DIRNAME cones t2_star |
|
|
102 |
fi |
|
|
103 |
|
|
|
104 |
# analyze femoral cartilage |
|
|
105 |
python -m pipeline --l $SAVE_DIRNAME knee --fc --t2 --t2_star --t1_rho |
|
|
106 |
done |