FreeSurfer: Difference between revisions
(→Run example recon_all process: add example img to download) |
(→Create job submission script: modify recon-all submit script) |
||
Line 60: | Line 60: | ||
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
scratch=$UABGRID_SCRATCH | |||
jobs=$scratch/jobs | |||
sub=$scratch/subjects | |||
mkdir $jobs | |||
cp -r $HOME/subjects $scratch/ | |||
function run-recon-all() { | function run-recon-all() { | ||
cd $scratch | |||
for patient in `ls -1` | #create submit script for each patient in the subjects directory | ||
for patient in `ls -1 $sub` | |||
do | do | ||
unset SUBJECTS_DIR | unset SUBJECTS_DIR | ||
SUBJECTS_DIR=$ | SUBJECTS_DIR=$sub | ||
export SUBJECTS_DIR | export SUBJECTS_DIR | ||
cat > | echo "subjects dir is $SUBJECTS_DIR" | ||
echo "patient is $patient" | |||
cat > $jobs/recon-all-$patient.sh <<EOF | |||
#!/bin/bash | #!/bin/bash | ||
#$ -S/bin/bash | #$ -S /bin/bash | ||
#$ -cwd | #$ -cwd | ||
# | # | ||
#$ -N recon-all- | #$ -N recon-all-$patient | ||
# Set the hard and soft run time limits (ex: 1hour/58 min) | # Set the hard and soft run time limits (ex: 1hour/58 min) | ||
#$ -l h_rt=30:00:00,s_rt=29:55:00 | #$ -l h_rt=30:00:00,s_rt=29:55:00 | ||
#$ -j y | #$ -j y | ||
#$ -M ppreddy@uab.edu | |||
#$ -M | |||
#$ -m eas | #$ -m eas | ||
# | # set up FreeSurfer environment variables | ||
mri_convert -oi -os $SUBJECTS_DIR/$patient | source $HOME/setup-freesurfer.sh | ||
mri_convert -oi -os $SUBJECTS_DIR/$patient $SUBJECTS_DIR/$patient.mgz | |||
sleep | sleep 5 | ||
recon-all -sd $SUBJECTS_DIR -s $patient | recon-all -sd $SUBJECTS_DIR -s $patient | ||
EOF | EOF | ||
done | |||
#submit job script for each patient in the jobs directory to the cluster | |||
pushd $jobs | |||
for script in `ls -1` | |||
do | |||
echo "submitting job $script" | |||
qsub $script | |||
done | done | ||
popd | |||
} | } | ||
run-recon-all | run-recon-all | ||
</pre> | </pre> | ||
Revision as of 21:48, 30 July 2010
Overview
FreeSurfer is a freely available software package developed by investigators at the Athinoula A. Martinos Center for Biomedical Imaging used for a number of procedures including:
- Creation of computerized models of the brain from magnetic resonance imaging (MRI) data.
- Processing of functional magnetic resonance imaging (fMRI) data.
- Measuring a number of morphometric properties of the brain including cortical thickness and regional volumes.
- Intersubject averaging of structural and functional data using a procedure that aligns individuals based on their cortical folding patterns for optimal alignment of homologous neural regions.
Working with FreeSurfer on a Cluster
FreeSurfer run its process in a non-parallel environment, so there won't be much benefit from a dual/quad/hex core machine for a single case analysis. However a number of FreeSurfer recon-all processes can be started in the same machine, thereby, theoretically reducing the time to analyze a group of cases.
Here's how to run many recon-all processes on Cheaha.
Set up FreeSurfer Environment
Setting up an environment to run FreeSurfer on Cheaha, consists of defining FreeSurfer related variables and their installation paths. Steps 1 and 2 are a one-time set up, ie., the first time you login to Cheaha. Need not set up and source env variables defined in .bashrc from the next time you login to Cheaha (as at login bashrc is auto-sourced).
1. To set up your environment on Cheaha, open $HOME/.bashrc with your favorite text editor such as vim, nano, emacs etc., and copy-paste the contents below:
export FREESURFER_HOME=/share/apps/freesurfer/4.5 source $FREESURFER_HOME/SetUpFreeSurfer.sh export FSFAST_HOME=$FREESURFER_HOME/fsfast export FSF_OUTPUT_FORMAT=nii export MNI_DIR=$FREESURFER_HOME/mni export FSL_DIR=$HOME/fsl export PATH=$FREESURFER_HOME/bin:$FSFAST_HOME/bin:$MNI_DIR/bin:$FSL_DIR/bin:$PATH
NOTE: In the above bashrc, FSL_DIR is also defined. FSL is not part of FreeSurfer, but needs to be installed separately. Download FSL from here.
2. Source the above environment variables.
source $HOME/.bashrc
Run example recon_all process
1. Prepare by creating a subjects directory to hold image files in .nii format
mkdir $HOME/subjects cd $HOME/subjects
2. Get example image by copying the line below
wget http://repo.uabgrid.uab.edu/files/freesurfer/example.nii.gz gunzip example.nii.gz
Create job submission script
This is a simple SGE script to submit recon-all process. This script first copies your subjects directory from your $HOME containing the MRI data to Cheaha's high performance file system, $UABGRID_SCRATCH, so as to ramp the speed of recon-all process. The recon-all process is then executed on $UABGRID_SCRATCH.
NOTE: Modify the SUBJECTS_DIR location to your local settings
#!/bin/bash scratch=$UABGRID_SCRATCH jobs=$scratch/jobs sub=$scratch/subjects mkdir $jobs cp -r $HOME/subjects $scratch/ function run-recon-all() { cd $scratch #create submit script for each patient in the subjects directory for patient in `ls -1 $sub` do unset SUBJECTS_DIR SUBJECTS_DIR=$sub export SUBJECTS_DIR echo "subjects dir is $SUBJECTS_DIR" echo "patient is $patient" cat > $jobs/recon-all-$patient.sh <<EOF #!/bin/bash #$ -S /bin/bash #$ -cwd # #$ -N recon-all-$patient # Set the hard and soft run time limits (ex: 1hour/58 min) #$ -l h_rt=30:00:00,s_rt=29:55:00 #$ -j y #$ -M ppreddy@uab.edu #$ -m eas # set up FreeSurfer environment variables source $HOME/setup-freesurfer.sh mri_convert -oi -os $SUBJECTS_DIR/$patient $SUBJECTS_DIR/$patient.mgz sleep 5 recon-all -sd $SUBJECTS_DIR -s $patient EOF done #submit job script for each patient in the jobs directory to the cluster pushd $jobs for script in `ls -1` do echo "submitting job $script" qsub $script done popd } run-recon-all
Make the above script executable
chmod +x <name-of-script-above>
Then submit that script with
./name-of-script-above
Check on it with qstat.
qstat -u $USER
After the completion of the recon-all process, copy the results back to your $HOME and delete the contents from scratch
cp -r $UABGRID_SCRATCH/subjects $HOME/subjects-results rm -rf $UABGRID_SCRATCH/subjects