Plastimatch on Biowulf

Plastimatch is an application to perform registration of medical images such as X-Rays, CT, PET, and MRI..

References:

Documentation
Important Notes

Interactive job
Interactive jobs should be used for debugging, graphics, or applications that cannot be run as batch jobs.

Allocate an interactive session and run the program. Sample session:

[user@biowulf]$ sinteractive --cpus-per-task=2 --mem=4g
salloc.exe: Pending job allocation 46116226
salloc.exe: job 46116226 queued and waiting for resources
salloc.exe: job 46116226 has been allocated resources
salloc.exe: Granted job allocation 46116226
salloc.exe: Waiting for resource configuration
salloc.exe: Nodes cn4224 are ready for job

[user@cn4224 ~]$ module load plastimatch
[user@cn4244 ~]$ cd /data/${USER}
[user@cn4224 ~]$ cp ${PLASTIMATCH_TEST_DATA}/* .
[user@cn4224 ~]$ tar xvzf registration-tutorial.tar.gz
[user@cn4224 ~]$ cd registration-tutorial
[user@cn4224 ~]$ plastimatch register parms.txt
Loading fixed image [0]: t5.mha
Loading moving image [0]: t0.mha
Launching registration worker thread
Inside registration worker thread
Doing registration stage
[1] xf_in->m_type = 0, xf_out->m_type = 0
RESAMPLE 0 1: (3 3 2), (3 3 2)
RESAMPLE 0 1: (3 3 2), (3 3 2)
volume_calc_grad complete.
plm_warp_native is complete.
[...]
Saving image...
Trying to write image to warped.mha
Load:   0.138638
Run:    1.27459
Save:   0.392006
Total:  1.80523
Finished!

Batch job
Most jobs should be run as batch jobs.

Create a batch input file (e.g. plastimatch.sh) similar to the following.

#! /bin/bash

module load plastimatch
cd /data/${USER}
cp ${PLASTIMATCH_TESTDATA}/* .
tar xzf registration-tutorial.tar.gz
cd registration-tutorial
plastimatch register parms.txt

Submit these jobs using the Slurm sbatch command.

Swarm of Jobs
A swarm of jobs is an easy way to submit a set of independent commands requiring identical resources.

Create a swarmfile for the first step of the pipeline (e.g. plastimatch.swarm). For example:

plastimatch register parms_01.txt
plastimatch register parms_02.txt
plastimatch register parms_03.txt

Submit this job using the swarm command.

swarm -f plastimatch.swarm [-g #] --module plastimatch
where
-g # Number of Gigabytes of memory required for each process (1 line in the swarm command file)
--module plastimatch Loads the plastimatch module for each subjob in the swarm