The problem is likely your use of the from_work_dir attribute. 

I can see by the logging code that you're using an old(er) version of Galaxy, and it's likely that this attribute isn't functioning correctly in your instance. We've recently improved the implementation of from_work_dir, and you'll need to update your Galaxy instance to get these improvements.

Let us know if you still have problems after updating.

Finally, please direct tool and installation questions to the galaxy-dev mailing list rather than the galaxy-user mailing list. The galaxy-user mailing list is for tool usage and analysis questions.

Best,
J.

On Sep 13, 2012, at 9:06 PM, <Neil.Burdett@csiro.au> wrote:

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/