forked from dama-lab/multi-atlas-segmentation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mas_demo.sh
108 lines (84 loc) · 4.32 KB
/
mas_demo.sh
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
#!/bin/bash
#########################################
# Demonstrate the comman usage of the
# Multi-Atlas Segmentation (MAS) pipeline
#########################################
# Add niftk installation location to system paths: `PATH` and `LD_LIBRARY_PATH`.
# This will only work if user followed the installation instruction, and installed packages in the recommended location.
# If you installed the packages in other locations, please change the variable `$HOME` to your own installed locations.
# Option 1: if user installed the default niftk package
export PATH=${PATH}:"$HOME/niftk-18.5.4/bin"
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}"$HOME/niftk-18.5.4/bin"
# option 2: if use choose to compile the niftyreg/niftyseg from the source code.
export PATH=${PATH}:"$HOME/nifty_reg/bin"
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}/"$HOME/nifty_reg/lib"
export PATH=${PATH}:"$HOME/nifty_seg/bin"
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:"$HOME/nifty_seg/lib"
####################################
######## prepare demo data #########
####################################
# (Optional) create demo directory within the current folder (preferrably an empty folder)
mkdir -p ./demo
cd ./demo
# Download the "in_vivo" atlas from: https://github.com/dancebean/mouse-brain-atlas
mkdir -p Atlas
cd Atlas
svn export https://github.com/dancebean/mouse-brain-atlas/trunk/FVB_NCrl/in_vivo FVB_NCrl_in_vivo
# only use three atlas for fast processing and demonstration purpose
cat FVB_NCrl_in_vivo/template_list.cfg | head -n 3 > FVB_NCrl_in_vivo/template_list_demo.cfg
cd ..
# create input directory, file, and target list
mkdir -p ./input
cd ./input
target_id="A0"
svn export https://github.com/dancebean/mouse-brain-atlas/trunk/NeAt/in_vivo/template/$target_id.nii.gz
echo $target_id > targetlist.txt
cd ..
# create targetlist (only 1 file)
ls ./input | head -n 1 | cut -d. -f1 > targetlist.txt
# create output directory
mkdir -p ./output
####################################
######## start demo script #########
####################################
# Download the main script if not yet done
svn export --force https://github.com/dancebean/multi-atlas-segmentation/trunk/MASHelperFunctions.sh
# (Optional) Download the sample parameter configuration file
svn export --force https://github.com/dancebean/multi-atlas-segmentation/trunk/parameters_samples/parameter_sample.sh
# You can edit the advanced parameters to fine-tune the algorithm
# source the main script (or use the location of your own copy)
source ./MASHelperFunctions.sh
# Alternatively, if you want to mute the listing of all the available functions, use:
# source ./MASHelperFunctions.sh > /dev/null 2>&1
# define parameters
atlas_name="FVB_NCrl_in_vivo"
atlas_dir="Atlas/$atlas_name"
target_dir="input"
result_dir="output"
target_id="A0"
target_list="input/targetlist.txt"
atlas_list=$atlas_dir/template_list_demo.cfg
exe_mode=local
parameter_cfg=./parameter_sample.sh
dil_voxel=1
raw_mask_dir=$result_dir/mask
dilate_mask_dir=$result_dir/mask_dilate_$dil_voxel
mask_suffix=".mask.$atlas_name"
####################################
#### Demo script ####
####################################
# 1. ~~~~~ brain extracting/masking ~~~~~~
mas_masking_batch -T $target_dir -t $target_list -A $atlas_dir -a $atlas_list -r $result_dir -e $exe_mode # -p $parameter_cfg
# 2. ~~~~~ brain mask dilation (not always necessary, check the quickcheck images to decide) ~~~~~
mas_mask_dilate_batch $target_list $raw_mask_dir $dilate_mask_dir $mask_suffix $dil_voxel $exe_mode # -p $parameter_cfg
# generate quickcheck for dilated mask
mas_quickcheck $target_dir/$target_id $dilate_mask_dir/$target_id$mask_suffix $result_dir/quickcheck/ \
$target_id$mask_suffix.d_$dil_voxel # -p $parameter_cfg
# 3. ~~~~~ bias field correction ~~~~~
# [Skipped] This is an important step before the parcellation. It is skipped in the demo as the images are already "bias-corrected" using the N4 algorithm
# 4. ~~~~~ parcellation ~~~~~
mas_parcellation_batch -T $target_dir -t $target_list -A $atlas_dir -a $atlas_list -r $result_dir \
-M $dilate_mask_dir -m $mask_suffix -e $exe_mode # -p $parameter_cfg
# # alternatively, if using non-dilated mask:
# mas_parcellation_batch -T $target_dir -t $target_list -A $atlas_dir -a $atlas_list -r $result_dir \
# -M raw_mask_dir -m $mask_suffix -e local # -p $parameter_cfg