process_spinal_levelsv2 vs. README.md
12 removals
49 lines
28 additions
64 lines
#!/bin/bash
#!/bin/bash
#
#
# Process data.
# Process Phillips Lab PAM50 spinal levels to match existing PAM50 conventions.
#
#
# Usage:
# Usage:
# ./process_spinal_levels.sh
# ./process_spinal_levels.sh
# Run inside /pam50/Spinal Cord Levels NIfTI/
# 1. Clone https://github.com/spinalcordtoolbox/PAM50
# Authors: Sandrine Bédard
# 2. Checkout commit e854bbad9ab550fd93acabeaf43c97cf66b3a4e5
# 3. Run inside /PAM50/spinal_levels_PhillipsLab/
# Authors: Sandrine Bédard, Joshua Newton
set -x
set -x
# Immediately exit if error
# Immediately exit if error
set -e -o pipefail
set -e -o pipefail
# Exit if user presses CTRL+C (Linux) or CMD+C (OSX)
# Exit if user presses CTRL+C (Linux) or CMD+C (OSX)
trap "echo Caught Keyboard Interrupt within script. Exiting now.; exit" INT
trap "echo Caught Keyboard Interrupt within script. Exiting now.; exit" INT
start=`date +%s`
# Add missing info to the `info_label.txt` file to account for newly-added levels
file_info_label=$(realpath "../spinal_levels/info_label.txt")
extra_spinal_levels="20, Spinal level L1, spinal_level_21.nii.gz
21, Spinal level L2, spinal_level_22.nii.gz
22, Spinal level L3, spinal_level_23.nii.gz
23, Spinal level L4, spinal_level_24.nii.gz
24, Spinal level L5, spinal_level_25.nii.gz"
if [[ $(tail -c 23 "$file_info_label") == "spinal_level_20.nii.gz" ]]
then
echo "$extra_spinal_levels" >> "$file_info_label"
fi
# Retrieve input params
# Retrieve input params
PATH_IN=$1
PATH_IN=$PWD
PATH_OUT=$2
PATH_OUT="$PATH_IN/spinal_levels_processed"
PATH_SCRIPT=$PWD
for FILE in *.nii.gz; do
echo $PATH_IN
file=${FILE/%".nii.gz"}
ext=".nii.gz"
cd "$PATH_IN"
for FILE in *; do
file=${FILE/%"$ext"}
echo $file
echo $file
mkdir -p $PATH_OUT/${file}_processed
mkdir -p $PATH_OUT/${file}_processed
rsync -avzh $FILE $PATH_OUT/${file}_processed
rsync -avzh $FILE $PATH_OUT/${file}_processed
cd $PATH_OUT/${file}_processed
cd $PATH_OUT/${file}_processed
# Change file type
# Change file type
sct_image -i ${file}.nii.gz -type float32 -o ${file}_float32.nii.gz
sct_image -i ${file}.nii.gz -type float32 -o ${file}_float32.nii.gz
file="${file}_float32"
file="${file}_float32"
# Copy header of SCT PAM50 template
# Copy header of SCT PAM50 template
sct_image -i $SCT_DIR/data/PAM50/spinal_levels/spinal_level_02.nii.gz -copy-header $file.nii.gz -o ${file}_header.nii.gz
sct_image -i $SCT_DIR/data/PAM50/spinal_levels/spinal_level_02.nii.gz -copy-header $file.nii.gz -o ${file}_header.nii.gz
file="${file}_header"
file="${file}_header"
python $PATH_SCRIPT/process_spinal_levels.py -filename ${file}.nii.gz
# Rename the file to the filename corresponding to the level (specified by `info_label.txt`)
level=$(echo "$file" | cut -d '_' -f 3)
file_out=$(grep -F "$level," $file_info_label | cut -d "," -f 3)
cp $file.nii.gz $file_out
cd "$PATH_IN"
cd "$PATH_IN"
echo $PATH_IN
echo $PATH_IN
done
done
# Display useful info for the log
# Display useful info for the log
end=`date +%s`
end=`date +%s`
runtime=$((end-start))
runtime=$((end-start))
echo
echo
echo "~~~"
echo "~~~"
echo "SCT version: `sct_version`"
echo "SCT version: `sct_version`"
echo "Ran on: `uname -nsr`"
echo "Ran on: `uname -nsr`"
echo "Duration: $(($runtime / 3600))hrs $((($runtime / 60) % 60))min $(($runtime % 60))sec"
echo "Duration: $(($runtime / 3600))hrs $((($runtime / 60) % 60))min $(($runtime % 60))sec"
echo "~~~"
echo "~~~"