-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathfreesurfer-nidm_babs_script.sh
More file actions
executable file
·125 lines (106 loc) · 4.7 KB
/
freesurfer-nidm_babs_script.sh
File metadata and controls
executable file
·125 lines (106 loc) · 4.7 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
#!/bin/bash
# FreeSurfer-NIDM BABS Script
# Usage: ./freesurfer-nidm_babs_script.sh <site_name> <dataset_name> [processing_level]
#
# Arguments:
# site_name - Site identifier (e.g., Caltech, Brown)
# dataset_name - Dataset identifier (e.g., study-ABIDE, study-ADHD200)
# processing_level - Optional: "subject" or "session" (default: subject)
#
# Examples:
# Single-session dataset: ./freesurfer-nidm_babs_script.sh Caltech study-ABIDE
# Multi-session dataset: ./freesurfer-nidm_babs_script.sh Brown study-ADHD200 session
#
# Optional environment variable:
# RUN_DATE=YYMMDD - Use specific date instead of auto-generated
# Get the directory where this script is located
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Source the common functions library
source "${SCRIPT_DIR}/babs_common.sh"
# ============================================================================
# FreeSurfer-NIDM-specific configuration
# ============================================================================
APP_NAME="freesurfer-nidm"
SCRATCH_DIR="$SCRATCH_DIR_FS"
CONTAINER_DS_NAME="freesurfer-nidm_bidsapp-container"
CONTAINER_NAME="freesurfer-nidm-bidsapp-0-1-0"
SIF_FILENAME="freesurfer-nidm_bidsapp.sif"
SIF_ALT_PATHS=(
"/orcd/home/002/yibei/simple2_bidsapp_babs"
"/home/yibei/simple2_bidsapp_babs"
"/orcd/home/002/yibei/freesurfer_bidsapp"
"/home/yibei/freesurfer_bidsapp"
)
# ============================================================================
# Parse arguments
# ============================================================================
SITE_NAME="$1"
DATASET_NAME="$2"
PROCESSING_LEVEL="${3:-subject}" # Default to "subject" if not provided
# Initialize run date (auto-generate or use env var)
babs_init_run_date
# Validate arguments (includes processing level validation)
babs_validate_args "$SITE_NAME" "$DATASET_NAME" "$PROCESSING_LEVEL"
# ============================================================================
# Set up logging
# ============================================================================
babs_setup_logging "$SCRATCH_DIR" "$APP_NAME"
echo "Environment: SCRATCH_DIR=$SCRATCH_DIR, BASE_DIR=$BASE_DIR"
echo "Processing site: $SITE_NAME for dataset: $DATASET_NAME"
echo "Processing level: $PROCESSING_LEVEL"
# ============================================================================
# Set up environment
# ============================================================================
babs_setup_env
# ============================================================================
# Create directories
# ============================================================================
RUN_DIR="${SCRATCH_DIR}/${DATASET_NAME}_${RUN_DATE}"
COMPUTE_DIR="${SCRATCH_DIR_COMPUTE}/freesurfer-nidm_compute_${RUN_DATE}"
mkdir -p "$RUN_DIR"
mkdir -p "$COMPUTE_DIR"
cd "$RUN_DIR"
echo "Current directory: $PWD"
# ============================================================================
# Set up container
# ============================================================================
babs_setup_container \
"$APP_NAME" \
"$CONTAINER_DS_NAME" \
"$CONTAINER_NAME" \
"$SIF_FILENAME" \
"${SIF_ALT_PATHS[@]}"
# ============================================================================
# Prepare YAML config
# ============================================================================
# Define paths for YAML substitution
BIDS_ORIGIN="${DATALAD_SET_DIR}/${DATASET_NAME}/site-${SITE_NAME}/sourcedata/raw"
NIDM_ORIGIN="${DATALAD_SET_DIR}/${DATASET_NAME}/site-${SITE_NAME}/derivatives/nidm"
CONFIG_PATH="${RUN_DIR}/config_freesurfer-nidm.yaml"
babs_prepare_yaml_config \
"${SCRIPT_DIR}/config_freesurfer-nidm.yaml" \
"$CONFIG_PATH" \
"BIDS_ORIGIN=${BIDS_ORIGIN}" \
"NIDM_ORIGIN=${NIDM_ORIGIN}" \
"COMPUTE_SPACE=${COMPUTE_DIR}" \
"RUN_DATE=${RUN_DATE}"
echo "BIDS origin URL: $BIDS_ORIGIN"
echo "NIDM origin URL: $NIDM_ORIGIN"
# ============================================================================
# Check NIDM directory
# ============================================================================
babs_check_nidm "$DATASET_NAME" "$SITE_NAME"
# ============================================================================
# Initialize BABS and submit
# ============================================================================
OUTPUT_DIR="${RUN_DIR}/freesurfer-nidm_bidsapp_${SITE_NAME}_${RUN_DATE}"
babs_init_and_submit \
"${PWD}/${CONTAINER_DS_NAME}" \
"$CONTAINER_NAME" \
"$CONFIG_PATH" \
"$OUTPUT_DIR" \
"$PROCESSING_LEVEL"
# ============================================================================
# Print completion message
# ============================================================================
babs_print_completion "$OUTPUT_DIR"