|
|
#!/bin/sh |
|
|
|
|
|
|
|
|
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 |
|
|
;; |
|
|
*) |
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
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" |
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|