Hi,
I have my own image registration tool that I've created on my own local
instance of galaxy.
The method takes in two images (*.nii.gz) formats and registers them together,
and produces one registered *.nii.gz file and a *.trsf matrix file.
The first issue encountered was the method was expecting *.nii.gz files as
inputs but was receiving *.dat files. I navigated around this problem as shown
by the files below:
- <<tool id="RegisterAliBabaAffine" name="RegisterAffine">
< <description>two images</description>
< <command
interpreter="bash">$__root_dir__/tools/registration/reg-wrapper.sh $moving
$fixed $outputTRSF $outputImage</command>
- < <inputs>
< <param format="binary" name="moving" type="data" label="Moving Image" />
< <param format="binary" name="fixed" type="data" label="Fixed Image" />
< <param type="hidden" name="outputTRSF" value="output.trsf" label="trsf
file" help="Output File must have .trsf extension" />
< <param type="hidden" name="outputImage" value="output.nii.gz"
label="Image output file" help="Output Image File must have .nii.gz extension"
/>
</inputs>
- < <outputs>
< <data format="input" name="output_TRSF" from_work_dir="output.trsf" />
< <data format="input" name="output_Image" from_work_dir="output.nii.gz" />
</outputs>
< <help>This tool uses Affine Registration to register two images.</help>
</tool>
#!/bin/bash
MOVING=`mktemp --suffix .nii.gz`
FIXED=`mktemp --suffix .nii.gz`
cat $1 > $MOVING
cat $2 > $FIXED
/usr/local/MILXView.12.08.1/BashScripts/RegisterAliBabaAffine -m $MOVING -f
$FIXED -t $3 -o $4
RC=$?
if [[ $RC == 0 ]]; then
OUTPUTTRSF=`mktemp --suffix .trsf`
OUTPUTIMG=`mktemp --suffix .nii.gz`
cat $OUTPUTTRSF > $3
cat $OUTPUTIMG > $4
rm $OUTPUTTRSF
rm $OUTPUTIMG
fi
rm $MOVING
rm $FIXED
exit $RC
This allows them to pass the *.nii.gz files that the registration method is
expecting.
Everything works fine and I can see output generated in the job_working_dir and
the history turns green...
galaxy@bmladmin-OptiPlex-745:~$ ls -lrt
~/galaxy-dist/database/job_working_directory/000/27/
total 2940
-rw------- 1 galaxy nogroup 0 Sep 13 10:15 tmpRfHsOP_stderr
-rw-r--r-- 1 galaxy nogroup 241 Sep 13 10:35 output.trsf
-rw------- 1 galaxy nogroup 80 Sep 13 10:35 tmplmK0V2_stdout
-rw-r--r-- 1 galaxy nogroup 2998272 Sep 13 10:38 output.nii.gz
However, the problem occurs when the files are copied from
~/galaxy-dist/database/job_working_directory/000/27/ to
~/galaxy-dist/database/files/000/. When this happens the files become size = 0.
Any ideas?
-rw-r--r-- 1 galaxy nogroup 0 Sep 13 09:36
/home/galaxy/galaxy-dist/database/files/000/dataset_40.dat
-rw-r--r-- 1 galaxy nogroup 0 Sep 13 09:36
/home/galaxy/galaxy-dist/database/files/000/dataset_41.dat
-rw-r--r-- 1 galaxy nogroup 0 Sep 13 10:38
/home/galaxy/galaxy-dist/database/files/000/dataset_43.dat
-rw-r--r-- 1 galaxy nogroup 0 Sep 13 10:38
/home/galaxy/galaxy-dist/database/files/000/dataset_42.dat
The output in galaxy.log indicates it is successful:
/home/galaxy/galaxy-dist/tools/registration/reg-wrapper.sh
/home/galaxy/galaxy-dist/database/files/000/dataset_23.dat
/home/galaxy/galaxy-dist/database/files/000/dataset_20.dat output.trsf
output.nii.gz galaxy.jobs DEBUG 2012-09-13 10:38:10,334 The tool did not define
exit code or stdio handling; checking stderr for success galaxy.jobs DEBUG
2012-09-13 10:38:10,361 finish(): Moved
/home/galaxy/galaxy-dist/database/job_working_directory/000/27/output.trsf to
/home/galaxy/galaxy-dist/database/files/000/dataset_42.dat as directed by
from_work_dir galaxy.jobs DEBUG 2012-09-13 10:38:10,380 finish(): Moved
/home/galaxy/galaxy-dist/database/job_working_directory/000/27/output.nii.gz to
/home/galaxy/galaxy-dist/database/files/000/dataset_43.dat as directed by
from_work_dir galaxy.jobs DEBUG 2012-09-13 10:38:10,609 job 27 ended
Is the issue copying *.nii.gz files and *.trsf file into *.dat files? Anyway
around this?
I've also modified ~/galaxy-dist/lib/galaxy/jobs/__init__.py (line 363) to
change shutil.move
To shutil.copy2 (same results)
Also put in a different output path to copy to. But essentially we have files
with size in ~/galaxy-dist/database/job_working_directory/000/id/, but they
files are size 0 after the move into ~/galaxy-dist/database/files/000
Thanks
Neil
___________________________________________________________
The Galaxy User list should be used for the discussion of
Galaxy analysis and other features on the public server
at usegalaxy.org. Please keep all replies on the list by
using "reply all" in your mail client. For discussion of
local Galaxy instances and the Galaxy source code, please
use the Galaxy Development list:
http://lists.bx.psu.edu/listinfo/galaxy-dev
To manage your subscriptions to this and other Galaxy lists,
please use the interface at:
http://lists.bx.psu.edu/