pyment-public / scripts /preprocess.sh
estenhl's picture
Working on preprocess and predict container
4f9da36
#!/bin/sh
# Displays usage information
usage() {
echo "Usage: $0 --license LICENSE --python PYTHON INPUT OUTPUT"
echo "Arguments:"
echo " -l, --license LICENSE Path to FreeSurfer license (required)"
echo " -p, --python PYTHON Path to Python-executable to use (required)"
echo " INPUT Input file (required)"
echo " OUTPUT Output file (required)"
}
LICENSE=""
PYTHON=""
INPUT=""
OUTPUT=""
while [ $# -gt 0 ]; do
case $1 in
-l|--license)
LICENSE="$2"
shift 2
;;
-p|--python)
PYTHON="$2"
shift 2
;;
-*|--*)
echo "Unknown option $1"
exit 1
;;
*)
# Handle positional arguments
if [ -z "$INPUT" ]; then
INPUT="$1"
elif [ -z "$OUTPUT" ]; then
OUTPUT="$1"
else
echo "Error: Too many positional arguments"
usage
exit 1
fi
shift
;;
esac
done
# Validate that exactly two positional arguments are provided
if [ -z "$INPUT" ] || [ -z "$OUTPUT" ]; then
echo "Error: This script requires exactly two arguments: INPUT and OUTPUT"
usage
exit 1
fi
if [ -z "$LICENSE" ]; then
echo "Error: License is required"
usage
exit 1
fi
if [ -z "$PYTHON" ]; then
echo "Error: Python is required"
usage
exit 1
fi
if [ ! -d "$INPUT" ]; then
echo "Error: Input directory '$INPUT' does not exist"
exit 1
fi
NIFTI_FILES=$(find "$INPUT" -name "*.nii.gz" -type f)
echo "Found $(echo "$NIFTI_FILES" | wc -l) .nii.gz files"
# Extract unique filenames and check for duplicates
UNIQUE_FILENAMES=$(echo "$NIFTI_FILES" | xargs -n1 basename | sort | uniq)
FILENAME_COUNT=$(echo "$UNIQUE_FILENAMES" | wc -l)
TOTAL_COUNT=$(echo "$NIFTI_FILES" | wc -l)
if [ "$FILENAME_COUNT" -ne "$TOTAL_COUNT" ]; then
echo "Error: Duplicate filenames detected!"
echo "Duplicate filenames:"
echo "$NIFTI_FILES" | xargs -n1 basename | sort | uniq -d
exit 1
fi
# Loop through each NIFTI file path
echo "$NIFTI_FILES" | while IFS= read -r filepath; do
IMAGE=$(basename "$filepath" .nii.gz)
if [ ! -f "$OUTPUT/$IMAGE/mri/mask.mgz" ]; then
$FASTSURFER_HOME/run_fastsurfer.sh \
--sd $OUTPUT \
--sid $IMAGE \
--t1 $filepath \
--fs_license $LICENSE \
--py $PYTHON \
--seg_only
else
echo "$IMAGE already processed"
fi
done