This page collects resources that are helpful to development of various aspects of the Galaxy software. It is aimed to provide help to all of the numerous Galaxy's contributors. We salute you!
If your interest lies in the development of tools for Galaxy please see the Adding custom tools tutorial.
Source code
- Source Code - Where is the source code and how to contribute.
Documentation
We use Sphinx to generate documentation on classes and methods (and much more) in the code base. It also includes Python docstrings from the code.
Sphinx uses reStructured Text (RST) with some Sphinx-specific additions for markup.
You can generate your own copy of the documentation. You might want to do this if you have made local modifications/extensions to the code, or if you are adding documentation that will be merged back.
Contribution of documentation is very welcome. To generate the documentation simply execute make docs
from Galaxy's root directory. The generated documentation will be in doc/build/html/
and can be viewed in a web browser.
API Resources
- The bioblend documentation is the most updated and best documented source of information on consuming the Galaxy API. bioblend is a Python library for interacting with Galaxy and CloudMan.
- API source code documentation - Documentation auto-generated for the API source code. The API source code itself can be found here and is by its nature the most up-to-date and complete source of information.
- Galaxy API - Galaxy offers programming interface that can be used to automate usage of Galaxy. (Warning: information is incomplete and somewhat dated.)
- API description - Galaxy offers API that can be used to automate admin usage of Galaxy. (Warning: information is incomplete and somewhat dated.)
- JavaDocs for blend4j - a Java library for consuming the Galaxy API.
-
Example open source projects leveraging the Galaxy API.
- Refinery (builds and runs workflows using bioblend)
- The Galaxy IPython Docker Runtime (leverages bioblend to interface with Galaxy's history).
- Mologenesis (supports exporting to Galaxy via blend4j)
- trait_workflow_runner (used to run Galaxy workflows from transMART via blend4j).
- clj-blend (a Clojure library built on blend4j).
-
Papers
- BioBlend: automating pipeline analyses within Galaxy and CloudMan. Sloggett, et. al.
- BioBlend.objects: metacomputing with Galaxy. Leo, et. al.
Issue #758 workaround
Code Practices
- Contributing - Describes how to contribute to the core galaxy project.
- CSS Practices - How we generate and manage stylesheets.
Graphics
- Graphics Documentation - What graphical elements we use and their meaning.
- Visualization tutorial - How to write a custom visualization for Galaxy.
Tool Development Resources
- A somewhat complete description of tags used for in tool XML files.
- A place to share your tools with the community: the Galaxy Tool Shed - more information on publishing tools to the ToolShed.
- Planemo| a CLI tool to assist tool developer - easily lint, test, and preview your tools. (Quick Start, Planemo on Github)
-
Tool Development Training Materials - from Hsiao lab, BC Public Health Microbiology & Reference Laboratory, BC Centre for Disease Control.
- [A tutorial](/Admin/Tools/Writing Tests) on writing of functional tests
- [What to do](/Future/Job Failure When stderr) if Galaxy incorrectly reports that your tool failed to execute
- Best Practices for Tool Development
- Discussions on consuming and producing collections of datasets in tools.
- A discussion on outputing multiple individual datasets
- Tips on writing secure tools.
- Managing tools from a Galaxy administrator perspective.
-
Tool conversion and generation efforts:
- A tool interface generator is maintained at http://cli-mate.lumc.nl.
- gxargparse - a drop in replacement of Python's argparse to generate Galaxy tools by Helena Rasche.
- A discussion on converting common workflow language tool descriptions into Galaxy tools - with prototype by Peter Amstutz.
- If you need to run an arbitrary working script (Python, Perl, R or Bash currently supported), and optionally turn it into a proper Galaxy tool, the Tool Factory can be installed in a local Galaxy from the Main Tool Shed to instantly wrap arbitrary scripts. It will turn these into Tool Shed archives ready to upload to a new repository from where they can be automagically installed into any Galaxy. Only runs for administrative users - exposes insecure unrestricted scripting, so only install in private development clones please. Generated tools are as secure as any other Galaxy tools.
-
Popular tool repositories on github to contribute to and serve as best practice examples:
- tools-iuc - A collection of tools developed and maintained by the the Intergalactic Utilities Commission (the IUC). (Contributing to tools-iuc)
- tools-devteam - A collection of tools developed and maintained by the 'devteam'. (Contributing to tools-devteam)
- Bjoern's Galaxy Tools - A collection of tools developed and maintained by /BjoernGruening. (Contributing to galaxytools)
- galaxy_blast - A best practice set of tools wrapping NCBI BLAST+ and related applications maintained by Peter Cock. (Contributing to the BLAST+ tools)
- GalaxyP Tools - A collection of tools for proteomics maintained by the GalaxyP team.
Issue #758 workaround
Architecture
- Architecture - How is the app built.
- JavaScript Architecture - What we use and how we implement client-side code.
- Data Model - Underlying data model.
- Application Logging - What and where does Galaxy log.
Other resources
- Data Sources - How to work with data sources.
- Galaxy Ops - Galaxy Operations Help Information.