-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtrac_2_tckgen
More file actions
executable file
·212 lines (165 loc) · 8.03 KB
/
trac_2_tckgen
File metadata and controls
executable file
·212 lines (165 loc) · 8.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
#!/bin/bash
list=$1
threads=128
#threadsX2=$((${threads}*2))
adni=/lus/theta-fs0/projects/AD_Brain_Imaging/anal/adni
CMD_batch=/lus/theta-fs0/projects/AD_Brain_Imaging/anal/adni/adni_on_alcf/job/cmd2.batch.trac.${list}
rm -rf $CMD_batch
#######################################################################################################
cat<<EOC >$CMD_batch
#!/bin/bash
#COBALT -t 360
#COBALT -n 250
#COBALT --attrs mcdram=cache:numa=quad
#COBALT -A AD_Brain_Imaging
echo start............................................
#export n_nodes=$COBALT_JOBSIZE
#export n_mpi_ranks_per_node=202
#export n_mpi_ranks=202
#export n_openmp_threads_per_rank=64
#export n_hyperthreads_per_core=4
EOC
#######################################################################################################
i=1
for s in `cat /lus/theta-fs0/projects/AD_Brain_Imaging/anal/adni/fs/\$list`
do
#s=`echo $SUBJECT | egrep -o '[0-9]{8}'`
CMD=/lus/theta-fs0/projects/AD_Brain_Imaging/anal/adni/adni_on_alcf/job/cmd2.trac.${s}
rm -rf $CMD
SUBJECT=${s}
rm ./job/log.tckgen.${SUBJECT}
#echo ${SUBJECT}
cat<<EOC >$CMD
#!/bin/bash
source ~/.bashrc
workingdir=/lus/theta-fs0/projects/AD_Brain_Imaging/anal/adni/fs/${SUBJECT}/dmri2
echo \$workingdir
mkdir \$workingdir
cd \$workingdir
pwd
ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS=128
echo beginning of the code \`date +"%Y-%m-%d/%H:%M:%S"\`
#############################################################MRTRIX########################
FREESURFER_HOME=/lus/theta-fs0/projects/AD_Brain_Imaging/app/freesurfer
source /lus/theta-fs0/projects/AD_Brain_Imaging/app/freesurfer/FreeSurferEnv.sh
##############################PREPROCESSING####################################
# mrconvert dti.nii.gz -force mr_dwi.mif.gz -fslgrad dti.bvec dti.bval -datatype float32 -stride 0,0,0,1 -nthreads 128
# sleep 0.2
# dwidenoise mr_dwi.mif.gz -force mr_dwi_denoised.mif.gz -nthreads 128
# sleep 0.2
# dwipreproc -rpe_none -pe_dir PA mr_dwi_denoised.mif.gz -force mr_dwi_denoised_preproc.mif.gz -rpe_none -nthreads 128
# sleep 0.2
# dwi2mask mr_dwi_denoised_preproc.mif.gz - -nthreads 128 | maskfilter - erode -npass 7 -force mr_eroded_mask.mif.gz -nthreads 128
# sleep 0.2
# dwibiascorrect mr_dwi_denoised_preproc.mif.gz -force mr_dwi_denoised_preproc_biasCorr.mif.gz -ants -mask mr_eroded_mask.mif.gz -fslgrad dti.bvec dti.bval -nthreads 128
# sleep 0.2
# dwiextract mr_dwi_denoised_preproc_biasCorr.mif.gz - -bzero -nthreads 128 | mrmath - mean -force mr_meanb0.mif.gz -axis 3 -nthreads 128
# sleep 0.2
# mrresize mr_dwi_denoised_preproc_biasCorr.mif.gz -scale 2.0 -force mr_dwi_denoised_preproc_biasCorr_upsample.mif.gz -nthreads 128
# sleep 0.2
# dwi2response dhollander -mask mr_eroded_mask.mif.gz -voxels mr_voxels_eroded.mif.gz mr_dwi_denoised_preproc_biasCorr.mif.gz response_wm.txt response_gm.txt response_csf.txt -force -nthreads 128
# sleep 0.2
#% make sure to use "DILATED MASK" for FOD generation
# dwi2mask mr_dwi_denoised_preproc_biasCorr.mif.gz - -nthreads 128 | maskfilter - dilate -npass 5 -force mr_dilate_mask.mif.gz -nthreads 128
# sleep 0.2
# dwi2fod msmt_csd mr_dwi_denoised_preproc_biasCorr.mif.gz response_wm.txt WM_FODs.mif.gz response_gm.txt gm.mif.gz response_csf.txt csf.mif.gz -mask mr_dilate_mask.mif.gz -force -nthreads 128
# sleep 0.2
# mrconvert WM_FODs.mif.gz - -coord 3 0 -nthreads 128 | mrcat csf.mif.gz gm.mif.gz - tissueRGB.mif.gz -axis 3 -nthreads 128
# sleep 0.2
#################################################################################
echo preprocessing is done \`date +"%Y-%m-%d/%H:%M:%S"\`
SUBJECT=${s}
cd /lus/theta-fs0/projects/AD_Brain_Imaging/anal/adni/fs/\${SUBJECT}/dmri2
mkdir xfm
### flirt
echo *****NOW GENERATING ANAT2DIFF.FLT.MAT *****
mri_convert ../mri/brain.mgz brain_anat_orig.nii.gz
sleep 0.2
orientLAS brain_anat_orig.nii.gz brain_anat.nii.gz
sleep 0.2
mrconvert mr_meanb0.mif.gz mr_meanb0.nii.gz -force
sleep 0.2
bet2 mr_meanb0.nii.gz mr_meanb0_brain.nii.gz
sleep 0.2
flirt -in brain_anat.nii.gz -ref mr_meanb0_brain.nii.gz -out brain_anat2diff -omat anat2diff.flt.mat -v
sleep 0.2
### 5TTGEN#########################################
echo ***** NOW 5TTGEN *****
mri_convert ../mri/T1.mgz T1.nii.gz
sleep 0.2
orientLAS T1.nii.gz T1_flip.nii.gz
sleep 0.2
flirt -in T1_flip.nii.gz -out T1_2diff_flt.nii.gz -ref mr_meanb0.nii.gz -applyxfm -init anat2diff.flt.mat -v
sleep 0.2
#5ttgen fsl brain_anat.nii.gz 5tt_from_brain_anat_test.nii.gz -nocrop
5ttgen freesurfer aparc+aseg_flip.nii.gz 5tt_freesurfer.nii.gz -nocrop -sgm_amyg_hipp -force -nthreads 128
sleep 0.2
flirt -in 5tt_freesurfer.nii.gz -ref mr_meanb0_brain.nii.gz -out 5tt_freesurfer2diff -applyxfm -init anat2diff.flt.mat -v
sleep 0.2
mrconvert 5tt_freesurfer2diff.nii.gz 5tt_freesurfer2diff.mif.gz -force
sleep 0.2
cp 5tt_freesurfer2diff.nii.gz 5tt2.nii.gz
sleep 0.2
cp 5tt_freesurfer2diff.mif.gz 5tt2.mif.gz
sleep 0.2
5tt2gmwmi 5tt2.mif.gz -force 5tt2_gmwmi_mask.mif.gz -force -nthreads 128
sleep 0.2
dwi2fod msmt_csd mr_dwi_denoised_preproc_biasCorr.mif.gz response_wm.txt WM_FODs.mif.gz response_gm.txt gm.mif.gz response_csf.txt csf.mif.gz -mask mr_dilate_mask.mif.gz -force -nthreads 128
sleep 0.2
### APARC+ASEG to diff
for im in aparc+aseg aparc.a2009s+aseg
do
echo ****NOW CONVERTING MGZ TO NII
mri_convert ../mri/\${im}.mgz \${im}.nii.gz
sleep 0.2
echo ****FLIPING FOR FSL
orientLAS \${im}.nii.gz \${im}_flip.nii.gz
sleep 0.2
echo ****NOW FLIRTING
flirt -in \${im}_flip.nii.gz -out \${im}_2_diff_flt.nii.gz -ref mr_meanb0_brain.nii.gz -applyxfm -init anat2diff.flt.mat -interp nearestneighbour
sleep 0.2
done
### labelconvert for aparc+aseg and aparc.a2009+aseg
labelconvert aparc+aseg_2_diff_flt.nii.gz $FREESURFER_HOME/FreeSurferColorLUT.txt /lus/theta-fs0/projects/AD_Brain_Imaging//app/mrtrix3/share/mrtrix3/labelconvert/fs_default.txt nodes_aparc+aseg2.mif.gz -force
sleep 0.2
labelconvert aparc.a2009s+aseg_2_diff_flt.nii.gz $FREESURFER_HOME/FreeSurferColorLUT.txt /lus/theta-fs0/projects/AD_Brain_Imaging//app/mrtrix3/share/mrtrix3/labelconvert/fs_a2009s.txt nodes_aparc.a2009s+aseg2.mif.gz -force
sleep 0.2
echo now ready for tckgen \`date +"%Y-%m-%d/%H:%M:%S"\`
### tckgen
if [ -e mr_track_10M_SIFT2_${s}.tck ]; then
tracknum=\`tckinfo mr_track_10M_SIFT2_${s}.tck | grep max_num_tracks | grep -o 10000000\`
if [ \$tracknum != 10000000 ]; then
tckgen WM_FODs.mif.gz /tmp/mr_track_20M2_${s}.tck -act 5tt2.mif.gz -backtrack -crop_at_gmwmi -seed_dynamic WM_FODs.mif.gz -maxlength 250 -minlength 30 -select 20M -force -nthreads 128
sleep 0.2
tcksift -act 5tt2.mif.gz /tmp/mr_track_20M2_${s}.tck WM_FODs.mif.gz mr_track_10M_SIFT2_${s}.tck -term_number 10M -force -nthreads 128 && echo 'sift done'*******
sleep 0.2
else
echo 'sift done'*******
fi
else
tckgen WM_FODs.mif.gz /tmp/mr_track_20M2_${s}.tck -act 5tt2.mif.gz -backtrack -crop_at_gmwmi -seed_dynamic WM_FODs.mif.gz -maxlength 250 -minlength 30 -select 20M -force -nthreads 128
sleep 0.2
tcksift -act 5tt2.mif.gz /tmp/mr_track_20M2_${s}.tck WM_FODs.mif.gz mr_track_10M_SIFT2_${s}.tck -term_number 10M -force -nthreads 128 && echo 'sift done'*******
sleep 0.2
fi
#### tck2connectome
for im in aparc+aseg aparc.a2009s+aseg
do
tck2connectome -force -zero_diagonal mr_track_10M_SIFT2_${s}.tck nodes_\${im}2.mif.gz mr_sift_10M_connectome_\${im}_count.csv -nthreads 128
tck2connectome -force -zero_diagonal -scale_length -stat_edge mean mr_track_10M_SIFT2_${s}.tck nodes_\${im}2.mif.gz mr_sift_10M_connectome_\${im}_length.csv -nthreads 128
tck2connectome -force -zero_diagonal -scale_invnodevol mr_track_10M_SIFT2_${s}.tck nodes_\${im}2.mif.gz mr_sift_10M_connectome_\${im}_volumeadj.csv -nthreads 128
done
#############################################################MRTRIX########################
EOC
chmod +x $CMD
echo "aprun -n 1 -N 1 -d 128 -j 2 -cc depth -e OMP_NUM_THREADS=128 $CMD > ./job/log.tckgen.${SUBJECT} 2>&1 &">>$CMD_batch
echo "sleep 1">>$CMD_batch
i=$(($i+1))
echo $i
#echo "execute $CMD_sub"
done
echo "wait" >> $CMD_batch
### batch submission
echo $CMD_batch
chmod +x $CMD_batch
echo "qsub $CMD_batch"