Skip to content

Process Guide

Process Options

Via Foundry supports a clear separation between main process inputs and optional, user-configurable parameters, managed through the Process Options feature.

On the Run page:

  • All process options appear under the Inputs section.
  • If process settings are connected to an input using the @show_settings flag, those settings will appear inside a wrench modal instead of as separate fields.

Controlling Process Settings with @show_settings

You can use the @show_settings tag on a parameter to control when certain process settings are visible.

Example pattern:

params.run_STAR = "yes" //* @dropdown @options:"yes","no" @show_settings:"map_star, map_summary"

In this example:

  • The parameter run_STAR is shown as a dropdown with options yes and no.
  • The settings for the map_star and map_summary processes are hidden by default.
  • When run_STAR is set to "yes", a wrench icon appears next to this input on the Run page. Clicking this wrench opens a modal where users can adjust the settings for map_star and map_summary.

When run_STAR = "yes":

Process options when run_STAR is yes

When run_STAR = "no" (no wrench/settings shown for these processes):

Process options when run_STAR is no

Users can edit these options to customize how each process runs.

Process options expanded

Defining Process Options

To create process option forms, define variables in the Script or Process Header section of the Add New Process or Edit/Delete Process page using the following pattern:

variableName = defaultValue //* @<formType> @description:"..." @tooltip:"..." @options:"..."

For example, you might use @input, @dropdown, @checkbox, or @textbox as the @<formType>.

Process options syntax

Notes:

  • For defaultValue, you can use:

  • Single or double quotes for strings (e.g., "value" or 'value')

  • No quotes for numbers (e.g., 10)
  • To define an array of default values (used with styles like @array or @spreadsheet), you can write:

  • variableName = ["defaultValue1", "defaultValue2"]

This allows you to pre-populate multiple rows/entries for a given parameter.


@<formType> Specifiers

In the Process Options section, you can choose how each parameter is rendered on the Run page using one of the following form types:

  • @input
  • @textbox
  • @checkbox
  • @dropdown

@input

Creates a single-line text field.

Example:

RSEM_parameters = "" //* @input @description:"RSEM parameters. To set the CPU value, please use the Advanced tab."

Run page view:

Input example


@textbox

Creates a multi-line text field for longer text or lists.

Example:

Adapter_Sequence = "AGATCGGAAGAGC" //* @textbox @description:"Removes 3' adapter sequences. You can enter a single sequence or multiple sequences on separate lines."

Run page view:

Textbox example


@checkbox

Creates a checkbox with true / false values.

Example:

remove_mitochondrial_genes = true //* @checkbox @description:"Check to filter mitochondrial genes." @label:"Remove mitochondrial genes"

Run page view:

Checkbox example


Creates a dropdown menu, with options defined by @options.

Example:

output_genome_bam = "" //* @dropdown @description:"Output genome BAM files" @options:"true","false"

Run page view:

Dropdown example


Non-Form Type Specifiers

These specifiers control descriptions, tooltips, grouping, and options, and are used together with the form types above.

@description

Provides a short, user-facing description for the parameter.

@tooltip

Provides a more detailed explanation, displayed as a tooltip on the Run page.

Example:

min_read_len = "30" //* @input @tooltip:"Discard reads shorter than 30 bp after trimming." @description:"Minimum read length"

@title

Creates a header above related parameters, making complex forms easier to read.

Example:

include_deseq2 = "true" //* @checkbox @label:"Run DESeq2" @title:"DESeq2 options"
input_mode = "All" //* @dropdown @label:"Input mode" @options:"All","Comparison-only"

In this example, include_deseq2 (and other related parameters) will appear under a “DESeq2 options” section header.


@options

Used with @dropdown to define the selectable values.

Example:

genomeType = "" //* @dropdown @options:"hg19","mm10","custom"

Here, genomeType appears as a dropdown with options hg19, mm10, and custom. The selected option is used as the parameter value.


Conditional Options – Version 1 (Advanced)

You can control which dropdown options are visible based on the pipeline using variables defined in the pipeline header (typically starting with an underscore).

Example pipeline header variables:

_nucleicAcidType = "rna" // In RNA-seq pipeline header
_nucleicAcidType = "dna" // In ChIP-seq pipeline header

Then, in your process:

param = "" //* @dropdown @options:{_nucleicAcidType="rna","rRNA","miRNA","snRNA"},{_nucleicAcidType="dna","ercc","rmsk"}

Behavior:

  • In the RNA-seq pipeline (_nucleicAcidType="rna"), param shows: rRNA, miRNA, snRNA
  • In the ChIP-seq pipeline (_nucleicAcidType="dna"), param shows: ercc, rmsk

You can also define default options (shown unless a condition overrides them):

param = "" //* @dropdown @options:{"rRNA","miRNA","snRNA"},{_nucleicAcidType="dna","ercc","rmsk"}

Here:

  • By default, rRNA, miRNA, snRNA are visible.
  • If _nucleicAcidType="dna", the options become ercc, rmsk.

Conditional Options – Version 2 (Advanced)

You can also control options in one dropdown based on the selected value of another dropdown.

Example:

aligner = "" //* @dropdown @options:{sequence=("rRNA","miRNA","snRNA"),"bowtie","bowtie2"},{sequence="genome","star"}

Behavior:

  • If sequence is one of rRNA, miRNA, snRNA, then aligner shows: bowtie, bowtie2
  • If sequence = "genome", then aligner shows: star

This allows you to build dependent dropdowns where available options change based on previous selections.


Styles for Process Options

Via Foundry also supports layout and behavior tags that control how multiple parameters are displayed together:

  • @multicolumn
  • @array
  • @spreadsheet
  • @condition

These are used in a //* @style ... line.


@multicolumn

Groups variables so they appear on the same row, improving visual organization.

Example:

var1 = "" //* @input @description:"Description of var1"
var2 = "" //* @input @description:"Description of var2"
var3 = "" //* @input @description:"Description of var3"
var4 = "" //* @input @description:"Description of var4"
var5 = "" //* @input @description:"Description of var5"
var6 = "" //* @input @description:"Description of var6"
//* @style @multicolumn:{var1, var2, var3}, {var5, var6}

Behavior:

  • var1, var2, var3 share a row.
  • var5, var6 share a row.
  • var4 appears alone on its own row (not listed in @multicolumn).

Multicolumn example


@array

Groups variables into a repeatable block with Add/Remove buttons.

Example:

var1 = "" //* @input @description:"Description of var1" @title:"Step 1"
var2 = "" //* @input @description:"Description of var2"
var3 = "" //* @input @description:"Description of var3" @title:"Step 2"
//* @style @array:{var1, var2} @multicolumn:{var1, var2}

Behavior:

  • var1 and var2 form a repeatable group.
  • Clicking Add creates additional rows of var1 + var2.
  • Clicking Remove deletes added rows.
  • @multicolumn ensures var1 and var2 appear on the same row.

Array example

When users fill and save the form, values are stored as arrays:

  • Example completed form:
  var1 = ["var1 value1", "var1 value2"]
  var2 = ["var2 value1", "var2 value2"]
  • If no values are entered:
  var1 = []
  var2 = []

You can pre-populate rows by using array defaults:

var1 = ["defVal1", "defVal2"] //* @input @description:"Description of var1"

This will create two rows for var1 with default values defVal1 and defVal2.


@spreadsheet

Similar to @array, but renders the grouped variables in a spreadsheet-style table.

Example:

var1 = "" //* @input @description:"Description of var1" @title:"Step 1"
var2 = "" //* @input @description:"Description of var2"
var3 = "" //* @input @description:"Description of var3" @title:"Step 2"
//* @style @spreadsheet:{var1, var2}

Spreadsheet example

Values are also stored as arrays:

  • After user input:
  var1 = ["var1 value1", "var1 value2"]
  var2 = ["var2 value1", "var2 value2"]
  • If left empty:
  var1 = []
  var2 = []

@condition

The @condition tag controls the visibility of parameters based on the value of another parameter.

Example:

var1 = "yes" //* @dropdown @description:"Description of var1" @options:"yes","no" @title:"Step 1"
var2 = "" //* @input @description:"Description of var2"
var3 = "" //* @input @description:"Description of var3"
var4 = "" //* @input @description:"Description of var4"
var5 = "" //* @input @description:"Description of var5" @title:"Step 2"
//* @style @condition:{var1="yes", var2}, {var1="no", var3, var4}

Behavior:

  • When var1 = "yes"show var2 Condition yes
  • When var1 = "no"hide var2, show var3 and var4 Condition no
  • var5 is not included in @condition, so it is always visible.

Combining Styles

You can combine multiple style tags (@condition, @array, @multicolumn) on the same group.

Example:

var1 = "yes" //* @dropdown @description:"Description of var1" @options:"yes","no" @title:"Step 1"
var2 = "" //* @input @description:"Description of var2"
var3 = "" //* @input @description:"Description of var3"
var4 = "" //* @input @description:"Description of var4"
//* @style @condition:{var1="yes", var2}, {var1="no", var3, var4} @array:{var1, var2, var3, var4} @multicolumn:{var1, var2, var3, var4}

This configuration:

  • Uses @condition to show/hide fields based on var1.
  • Uses @array to allow adding/removing grouped rows.
  • Uses @multicolumn so var1, var2, var3, var4 appear on the same row.

When var1 = "yes":

Multi-condition yes

When var1 = "no":

Multi-condition no