Welcome to the Galaxy Labs Engine! This endpoint is used to generate "exported" Galaxy Lab landing pages from remote content hosted on GitHub. You can use this endpoint to rapidly create your own Galaxy Lab pages by pointing to your own remote content.
- Start a new Lab page in 30 seconds here.
- See the content used to generate this documentation page here.
- See a full working example of a Galaxy Lab page here.
- See a minimal working example of a lab page here.
-
View the full
section.yml
schema documentation here.
This custom introductory text was pulled down from GitHub and rendered in real time. Updates to this text on the remote will be reflected on this page. Note that GitHub raw content is cached for 300 seconds, so some updates may take a few minutes to appear on this page.
- The root of your site's content should be a YAML file - see base.yml for the content root of this page.
-
Request your page by pointing to your remote content with the
content_root
GET parameter. For example, we can explicitly request this documentation page with:
http://labs.usegalaxy.org.au/?content_root=https://raw.githubusercontent.com/usegalaxy-au/galaxy-labs-engine/refs/heads/main/app/labs/static/labs/content/docs/base.yml - The web server will fetch your content from GitHub (or anywhere on the internet) and render it into this page.
-
Note that
base.yml
points to other files (YAML, HTML, CSS and images), which are located in the same remote directory (e.g. on GitHub). You can template the entire page with these files! -
You can override
base.yml
by changing yourcontent_root
to a<server_name>.yml
file. This inherits all properties frombase.yml
and allows you to override them, to create a server-specific lab page with custom lab name, server name, and anything else that should be different on each server. Check out the SPOC Lab for an example of server-specific Lab pages. -
The most useful part of this machinery is the
sections
content, which populates the tool/workflow sections below. See section_1.yml and section_2.yml for examples of how to structure this content in YAML format, or check out the full sections schema definition to see exactly how this YAML should be structured.
- Generate a new content folder using our Lab Generator.
- Build on your Galaxy Lab content by editing the downloaded YAML and MD/HTML files. Custom CSS and JavaScript are possible too. Try to keep the content as concise and modular as possible, and think about what essential resources your users should know about. Critical Tools, Workflows and tutorials are a great place to start.
-
Request the site with the
content_root
GET parameter pointing to your remote content:
http://labs.usegalaxy.org.au/?content_root=https://github.com/myusername/myrepo/blob/branch/content/base.yml
- To speed up development, you can also render your page locally . This allows you to see changes immediately, without having to push to GitHub every time.
Try to make all Markdown/HTML content as modular as possible by using
variables defined in the base.yml
and
server.yml
files. This means that content will be rendered
differently on each Galaxy server, depending on what's in that
server's server.yml
file!
The webpage includes Bootstrap 5.1, Material icons, and FontAwesome 5.15 and JQuery 3.6 so you can use any styling/functionality defined there. This means you can have webforms, interactive elements, and more. Check out Galaxy Australia's Genome Lab conclusion for an example of more complex usage including modals and webforms. Modals (popups) are a great way to hide additional information until the user requests it. Try one now!
Creating your content
Some common questions about creating content for a Galaxy Lab page.
A note on caching
When making changes to your Lab content, you may notice that updates are not immediate. This is because of caching, which is used to speed up page loading time. There are two levels of caching to keep in mind:
-
The Labs Engine caches Lab content forever, unless a request is made with the
cache=false
parameter. When you are developing your Lab page, use this parameter to see your changes immediately, for example: http://labs.usegalaxy.org.au/?content_root=https://github.com/myusername/myrepo/blob/branch/content/base.yml&cache=false -
Using the
cache=false
parameter will refresh the cache. - When making changes to your Lab content, you may notice that updates are not immediate, because GitHub raw content is cached for 5 minutes.
- Caching is automatically disabled if you choose to render locally!
Yes, rendering your lab page locally makes for much faster debugging
and polishing! To render your page locally, you will need to install
the Galaxy Labs Engine CLI (requires python>=3.10
):
# create a virtual environment # (alternatively, you may also wish to use conda for a global environment) py -m venv venv venv\Scripts\activate # install the Labs Engine pip install git+https://github.com/usegalaxy-au/galaxy-labs-engine.git # Navigate to your content directory cd %MY_CONTENT_DIR% # serve base.yml in the current directory labs-engine serve # serve a specific page from the current directory labs-engine serve usegalaxy.org.yml # upgrade to the latest version (in future) pip install --force-reinstall git+https://github.com/usegalaxy-au/galaxy-labs-engine.git
# create a virtual environment python -m venv venv source venv/bin/activate # install the Labs Engine pip install git+https://github.com/usegalaxy-au/galaxy-labs-engine.git # Navigate to your content directory cd $MY_CONTENT_DIR # serve base.yml in the current directory labs-engine serve # serve a specific page from the current directory labs-engine serve usegalaxy.org.yml # upgrade to the latest version (in future) pip install --force-reinstall git+https://github.com/usegalaxy-au/galaxy-labs-engine.git
This should start a local development server on http://127.0.0.1:8000
.
Click the link that appears and your lab page should open in the browser.
Yes - any file/field that accepts markdown can also accept HTML, for example:
intro.md
heading_md
(in section.yml)
However, be careful about nesting HTML within markdown. Anything inside an HTML element must also be HTML. The following would be invalid:
<p> This is a paragraph with a [broken link](https://example.com). </p>
Yes! Using variables is a great way to make a Lab page reuable across
Galaxy servers.
Variables defined in the base.yml
/[server].yml
file can be used anywhere
that markdown or HTML content is provided. This includes templates like
intro.md
and also section.yml
& *_md
values. Any arbitrary variable
that you set in the base.yml
/[server].yml
file can be used in the content:
base.yml
or[server].yml
:myvar: foo
intro.md
:# Analysis methods This is a great place for doing analysis such as {{ myvar }}.
section_1.yml
:... – title_md: Can I use variables in my YAML and Markdown/HTML content? description_md: | Yes, you can use variables like {{ myvar }}.
Yes, you can exclude any component in the section schema from specific
hosts by listing server names under the
exclude_from directive. The server name is just the
base name of the [server].yml
file.
This can be used to exclude items describing server-specific features,
such as:
- title_md: How can I increase my storage quota? description_md: > Please submit a quota request if your Galaxy account reaches its data storage limit. Requests are usually provisioned quickly if you provide a reasonable use case for your request. exclude_from: - usegalaxy.org # matches the usegalaxy.org.yml content root
Yes, you can use standard Markdown or HTML syntax to include images.
When adding the src
atrribute to an image tag, you can use relative
URLs to specify an image located in your content directory, or an
absolute URL to an image hosted elsewhere on the web:
Using Markdown:

Using HTML (allows custom styling):
<img src="./static/images/myimage.png" alt="My image description" width="200" height="200">
Or with a full URL (any image available online):

You can list contributors to your Galaxy Lab by adding a CONTRIBUTORS
file to your content directory. This file should be a plain-text
list of GitHub usernames - one per line. The Labs engine will fetch
the user's profile information and display it at the bottom of your
Lab Page. If a contributor does not have a GitHub account, you can
just add their name.
Some more content to demonstrate multiple tabs in a section.
If you want to have a tab with just Markdown/HTML content and no
expandable items, you can just use the heading_md
field and set
content: []
like we have done here.
Example section
This is a section. A section is composed of a title ("Example section") and one or more tabs. Each tab is composed of a title ("Tools"), heading text (this) and a collection of collapsable items. Sections are rendered from data specified in a YAML file. The structure of the YAML file is important, and must follow the defined schema. The two sections below give examples of how content can be nested in sections.
A workflow is a series of Galaxy tools that have been linked together to perform a specific analysis. You can use and customize the example workflows below. Learn more.
You can upload your data to Galaxy using the Upload tool from anywhere in Galaxy. Just look for the "Upload data" button at the top of the tool panel.
We recommend subsampling large data sets to test tools and workflows.
A useful tool is seqtk_seq
, setting the parameter at "Sample fraction of sequences".
Example section with subsections
The tools in this section have been divided into subsections to make it
easier for users to find the tools they need. This must replace the
entire value of the content
key i.e. you can't mix
subsections with standalone items.
This is my first subsection
Another subsection
A workflow is a series of Galaxy tools that have been linked together to perform a specific analysis. You can use and customize the example workflows below. Learn more .
Assembly with PacBio HiFi data
This How-to-Guide will describe the steps required to assemble your genome on the Galaxy Australia platform, using multiple workflows.
Assembly with Nanopore data and polishing with Illumina data
This tutorial describes the steps required to assemble a genome on Galaxy with Nanopore and Illumina data
Yes. Galaxy Australia has assembly tools for small prokaryote genomes as well as larger eukaryote genomes. We are continually adding new tools and optimising them for large genome assemblies - this means adding enough computer processing power to run data-intensive tools, as well as configuring aspects such as parallelisation
Please contact us if:
- you need to increase your data storage limit
- there is a tool you wish to request
- a tool appears to be broken or running slowly
- See the tutorials in this Help section. They cover different approaches to genome assembly
- Read the methods in scientific papers about genome assembly, particularly those about genomes with similar characteristics to those in your project
- See the Workflows section for examples of different approaches to genome assembly - these cover different sequencing data types, and a variety of tools.