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_settingsflag, 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_STARis shown as a dropdown with optionsyesandno. - The settings for the
map_starandmap_summaryprocesses are hidden by default. - When
run_STARis 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 formap_starandmap_summary.
When run_STAR = "yes":

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

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

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>.

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
@arrayor@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:

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

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

@dropdown
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:

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"),paramshows:rRNA,miRNA,snRNA - In the ChIP-seq pipeline (
_nucleicAcidType="dna"),paramshows: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,snRNAare visible. - If
_nucleicAcidType="dna", the options becomeercc,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
sequenceis one ofrRNA,miRNA,snRNA, thenalignershows:bowtie,bowtie2 - If
sequence = "genome", thenalignershows: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,var3share a row.var5,var6share a row.var4appears alone on its own row (not listed in@multicolumn).

@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:
var1andvar2form a repeatable group.- Clicking Add creates additional rows of
var1+var2. - Clicking Remove deletes added rows.
@multicolumnensuresvar1andvar2appear on the same row.

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}

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"→ showvar2
- When
var1 = "no"→ hidevar2, showvar3andvar4
var5is 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
@conditionto show/hide fields based onvar1. - Uses
@arrayto allow adding/removing grouped rows. - Uses
@multicolumnsovar1,var2,var3,var4appear on the same row.
When var1 = "yes":

When var1 = "no":
