a b/tests/pipeline_test.sh
1
#!/usr/bin/env bash
2
3
# ================================
4
SCRIPT=$(readlink -m $(type -p $0))
5
SCRIPTDIR=$(dirname $SCRIPT)
6
testDataDir=$SCRIPTDIR/data
7
prismaDir=$SCRIPTDIR/data/Prisma
8
testDir=$SCRIPTDIR/
9
zipFile=dtitest_Siemens_SC.zip
10
11
# ================================
12
echo Downloading Prisma data
13
14
if [ ! -f $testDataDir/$zipFile ]
15
then
16
    wget http://people.cas.sc.edu/rorden/SW/dcm2niix/$zipFile -P $testDataDir
17
else
18
    echo $testDataDir/$zipFile exists, unzipping $zipFile
19
fi
20
21
rm -rf $prismaDir
22
unzip -o -d $testDataDir $testDataDir/$zipFile
23
24
25
pushd .
26
cd $prismaDir
27
dcm2niix -o . -f %z -z y .
28
29
IMAGELIST=$testDataDir/imagelist.txt
30
MASKLIST=$testDataDir/masklist.txt
31
B0LIST=$testDataDir/b0list.txt
32
WarpedB0LIST=$testDataDir/warped_b0list.txt
33
WarpedMASKLIST=$testDataDir/warped_masklist.txt
34
CASELIST=$testDataDir/caselist.txt
35
36
if [ -f $IMAGELIST ]
37
then
38
    rm $IMAGELIST $MASKLIST $B0LIST $WarpedB0LIST $WarpedMASKLIST $CASELIST
39
fi
40
41
42
echo 'Generating b0 image and corresponding brain mask for test data ...'
43
for i in `ls *.nii.gz`
44
do
45
    IFS=., read -r prefix _ _ <<< $i
46
    if [ -f $prefix.bval ] && [ -f $prefix.bvec ]
47
    then
48
        echo $i
49
        
50
        b0=${prefix}_b0.nii.gz
51
        mask=${prefix}
52
        
53
        fslroi $i $b0 0 1
54
        bet $b0 $mask -m -n       
55
        
56
        echo `pwd`/$i >> $IMAGELIST
57
        echo `pwd`/${prefix}_mask.nii.gz >> $MASKLIST
58
        echo `pwd`/${prefix}_b0.nii.gz >> $B0LIST
59
        echo `pwd`/${prefix}_b0-Warped.nii.gz >> $WarpedB0LIST
60
        echo `pwd`/${prefix}_b0-Warped-mask.nii.gz >> $WarpedMASKLIST
61
        echo $prefix >> $CASELIST
62
    fi
63
done
64
popd
65
66
67
# ================================
68
69
70
# prediction based on provided model
71
../pipeline/dwi_masking.py -i $IMAGELIST -nproc 5 -f ../model_folder/
72
../pipeline/dwi_masking.py -i $IMAGELIST -nproc 5 -f ../model_folder/ -filter scipy
73
../pipeline/dwi_masking.py -i $B0LIST -nproc 5 -f ../model_folder/
74
75
# ================================
76
77
78
# training
79
../src/registration.py -b0 $B0LIST -mask $MASKLIST -ref ../model_folder/IITmean_b0_256.nii.gz
80
../src/preprocess_b0.py -i $WarpedB0LIST
81
../src/preprocess_mask.py -i $WarpedMASKLIST
82
83
84
echo -e "
85
[COMMON]
86
save_model_dir = \"$testDataDir/model_folder_test\"
87
log_dir = \"$testDataDir/log_dir\"
88
89
[DATA]
90
data_dir = \"$prismaDir\"
91
train_data_file = \"sagittal-traindata-dwi.npy\"
92
train_label_file = \"sagittal-traindata-mask.npy\"
93
94
[TRAINING]
95
principal_axis = \"sagittal\"
96
learning_rate = 1e-3
97
train_batch_size = 4
98
validation_split = 0.2
99
num_epochs = 1
100
shuffle_data = \"True\"
101
" > $testDataDir/settings.ini
102
103
104
export COMPNET_CONFIG=$testDataDir/settings.ini
105
../src/train.py
106
107
sed -i "s/sagittal/coronal/g" $testDataDir/settings.ini
108
../src/train.py
109
110
sed -i "s/coronal/axial/g" $testDataDir/settings.ini
111
../src/train.py
112
113
114
# ================================
115
116
117
# prediction based on trained model
118
cp ../model_folder/IITmean_b0_256.nii.gz $testDataDir/model_folder_test/
119
../pipeline/dwi_masking.py -i $IMAGELIST -nproc 5 -f $testDataDir/model_folder_test/
120
121