GalaxyAddTool

From Cheaha
Jump to navigation Jump to search


Attention: Research Computing Documentation has Moved
https://docs.rc.uab.edu/


Please use the new documentation url https://docs.rc.uab.edu/ for all Research Computing documentation needs.


As a result of this move, we have deprecated use of this wiki for documentation. We are providing read-only access to the content to facilitate migration of bookmarks and to serve as an historical record. All content updates should be made at the new documentation site. The original wiki will not receive further updates.

Thank you,

The Research Computing Team

How-to for adding a new tool into UAB's Galaxy instance. This details adding a tool that has it's own executable(s), rather than a pure python script.

pre-requisits

  1. Check Galaxy Toolshed to make sure the wrapper doesn't already exist!
  2. Install the tools on the cluster
    • /share/apps/your_tool (email mhanby@uab.edu to get the directory created)
    • /lustre/project/your_project (email mhanby@uab.edu to get the directory created)
    • /share/apps/galaxy/galaxy-tools (only if this will ONLY be used in Galaxy)
  3. Create a personal galaxy for developement & testing
  4. Add the executable path to the galaxy environment
    • $galaxyroot/modulefiles/galaxy*: edit the module definition file to add your tool location to the path
  5. Load the updated module and make sure the command works from the commandline!
    • module load galaxy
    • test, test, test...

Special Case: REST or SPARQL endpoints

There are already tools for integrating these through a wizard. See the Galaxy Toolshed and navigate to Tools Shed -> Data Source

Creating a command-wrapper by hand

Galaxy's public instructions for adding tools: http://wiki.g2.bx.psu.edu/Admin/Tools

Note: If you only need a simple wrapper for an exiting program, you'll only need to create an XML wrapper to describe it (my_tool.xml). However, if you need to create temporary directories or do any other pre- or post- processing, you'll also want to create some adapter code, and have my_tool.xml call that, rather than calling your tool directly. For example, sam_pileup.xml calls sam_pileup.py, which sets up a temp directory, indexes genomes on the fly, etc., then calls "samtools pileup ..."

  1. (optional) Create a my_tool.py/pl/etc adapter to do pre-/post- processing
  2. Create a my_tool.xml wrapper to
    • define tool ID and display name
    • declare inputs
    • declare outputs
    • list test files
    • user documentation
  3. Edit tool_conf.xml to add a line for the new XML file
  4. Restart galaxy
    • ./run.sh --stop-daemon; ./run.sh --daemon