GALAXY LAB PAGES

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.

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 your content_root to a <server_name>.yml file. This inherits all properties from base.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.

  1. Generate a new content folder using our Lab Generator.
  2. 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.
  3. 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
  4. 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:

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:

  1. base.yml or [server].yml:

    myvar: foo
    
  2. intro.md:

    # Analysis methods
    This is a great place for doing analysis such as {{ myvar }}.
    
  3. 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:

![My image description](./static/images/myimage.png)

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):

![My image description](https://example.com/myimage.png)

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.

Standard upload of data to Galaxy, from your computer or from the web.

Before using your sequencing data, it's important to ensure that the data quality is sufficient for your analysis.

Input data:

fasta
fastq
bam
sam
Sequencing data for analysis

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.

Report statistics from sequencing reads.

Tools:

  • nanoplot
  • fastqc
  • multiqc

Estimates genome size and heterozygosity based on counts of kmers.

Tools:

  • meryl
  • genomescope

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

A haplotype-resolved assembler for PacBio HiFi reads.

Input data:

fasta
fastq
PacBio reads

Another subsection

de novo assembly of single-molecule sequencing reads, designed for a wide range of datasets, from small bacterial projects to large mammalian-scale assemblies.

Input data:

fasta
fastq
Single-molecule sequencing reads

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.

Convert a BAM file to FASTQ format to perform QC analysis (required if your data is in BAM format).

Input data:

bam PacBiosubreads.bam

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

Assemble Nanopore long reads. This workflow can be run alone or as part of a combined workflow for large genome assembly.

Input data:

fastqsanger Long reads (may be raw, filtered and/or corrected)

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.

Contributors

Github avatar for neoformit