Glossary#
Key terms and concepts used in oxo-flow documentation.
Core Concepts#
DAG (Directed Acyclic Graph)#
A mathematical representation of a workflow where each node is a rule (task) and edges represent dependencies. "Acyclic" means there are no circular dependencies — a rule cannot depend on itself through a chain of other rules. oxo-flow automatically builds a DAG from input/output file relationships.
Example: If rule A produces aligned.bam and rule B needs aligned.bam as input, there's an edge A → B in the DAG.
Rule#
A single processing step in a workflow. Each rule defines:
- Input: Files needed to run the step
- Output: Files produced by the step
- Shell/Script: The command to execute
- Environment: The software environment to use
Example: A bwa_align rule takes FASTQ files as input and produces a BAM file as output.
Workflow#
The complete pipeline definition in a .oxoflow TOML file. A workflow contains:
- Metadata (name, version, author)
- Configuration variables
- Default settings
- One or more rules
Wildcard#
A placeholder pattern like {sample} that expands to concrete values based on input files or explicit configuration. Wildcards enable writing one rule template that processes many samples.
Example: input = ["raw/{sample}.fastq.gz"] expands to raw/S001.fastq.gz, raw/S002.fastq.gz, etc.
Execution#
Topological Sort#
An ordering of DAG nodes where every node appears before any nodes that depend on it. This determines the execution order — dependencies must run before the rules that need them.
Example: If A → B → C, execution order is A, B, C.
Parallel Groups#
Sets of rules that can run simultaneously because they have no dependencies on each other. oxo-flow's -j flag controls how many rules from a parallel group can run at once.
Example: fastqc and fastp_trim can run in parallel if neither depends on the other.
Checkpoint#
A persistent record of which rules have completed. Checkpoints enable resuming workflows after failures without re-running successful rules.
Besides rule status, a checkpoint stores config snapshots, rule fingerprints, and input file manifests — the engine compares them on every run to invalidate rules whose config, definition, or input file set changed. It also records tombstones: rules marked temporary = true whose outputs were deleted after a successful run, so later runs skip them unless a dependent needs the outputs again.
File location: .oxo-flow/checkpoint.json
Environments#
Environment Backend#
A system for managing software dependencies. oxo-flow supports:
| Backend | Use Case |
|---|---|
| conda | Bioinformatics tools with complex dependencies |
| mamba | Faster, C++ reimplementation of conda with parallel dependency solving |
| pixi | Fast, modern alternative to conda |
| docker | Full container isolation |
| singularity | HPC-friendly containers |
| venv | Python-only tools |
| system | Default system shell — no isolation (used when no backend is declared) |
| modules | HPC environment modules (Lmod/Environment Modules) |
Environment Spec#
A declaration in a rule that specifies which environment to use.
Example: environment = { conda = "envs/bwa.yaml" }
Environment YAML#
A conda environment definition file listing packages and versions.
Example:
Workflow Format#
TOML (Tom's Obvious Minimal Language)#
A configuration file format used for .oxoflow files. Key features:
- Tables:
[name]defines a section - Arrays of Tables:
[[name]]defines multiple items (used for rules) - Key-Value:
key = "value"
See TOML Specification for full syntax.
.oxoflow#
The file extension for oxo-flow workflow definitions. These files are TOML format and define the complete pipeline.
[defaults]#
A section that sets default values (threads, memory, environment) for all rules unless overridden.
[[pairs]]#
A section defining experiment-control sample pairs for comparative analyses like tumor-normal variant calling.
Fields:
- pair_id: Unique identifier for the pair
- experiment: Sample name (e.g., tumor)
- control: Matched control sample (e.g., normal)
[[sample_groups]]#
A section organizing samples into named groups for cohort studies.
Fields:
- name: Group name (e.g., "treatment", "control")
- samples: Array of sample identifiers
transform#
An operator that unifies scatter (split) → map (process) → gather (combine) patterns in a single rule declaration.
Example: Split by chromosome, call variants per chromosome, then combine VCFs.
Placeholders#
{input}#
Expands to all input files, space-separated.
Example: {input} → sample_R1.fastq.gz sample_R2.fastq.gz
{input[N]}#
The Nth input file (0-indexed).
Example: {input[0]} → sample_R1.fastq.gz
{input.name}#
Named input file from named_input section.
Example: {input.reads} → the file named "reads" in named_input
{output}#
Expands to all output files, space-separated.
{threads}#
The thread count for the current rule.
{config.key}#
A configuration variable from the [config] section.
Example: {config.reference} → /data/ref/hg38.fa
Output#
Report#
A structured output document (HTML, JSON, PDF) summarizing workflow execution, QC metrics, and results. Clinical reports include variant classifications and audit trails.
Provenance#
A record of how each output was produced: which inputs, which tool, which version, which parameters. Essential for reproducibility.
Benchmark#
Timing and resource usage data for each rule (wall time, memory, CPU).
Cluster/HPC#
Backend#
A cluster scheduler system. oxo-flow supports:
| Backend | Scheduler |
|---|---|
slurm |
SLURM (SLURM Workload Manager) |
pbs |
PBS/Torque |
sge |
Sun Grid Engine / Oracle Grid Engine |
lsf |
IBM Spectrum LSF |
Partition/Queue#
A group of cluster nodes with specific characteristics. Jobs are submitted to a partition/queue.
Example: -q compute submits to the "compute" partition.
Wall-time#
The maximum time a job can run before being terminated by the scheduler.
Example: time_limit = "24h" → 24-hour wall-time limit.
Executor backend#
A pluggable execution adapter (ExecutorBackend)
that maps the engine's static plan onto a scheduler API — submit, poll,
cancel, logs. The first implementation targets SLURM/PBS/SGE/LSF; the plan
itself stays executor-agnostic, so the dry-run preview is valid for every
backend.
Static plan#
The fully determined execution plan computed before any execution: topological order, parallel groups, per-rule resource declarations, and the invalidation set. Executors consume the plan without re-deriving it.
Checkpoint re-entry#
A bounded dynamic-DAG mechanism (Workflow Format):
a checkpoint = true rule writes a manifest at runtime declaring new samples;
the engine merges them, re-expands the rule templates, and executes the new
instances in the same run. Every round is still a static plan; the checkpoint
records the rounds so resumes replay (and revoke) them deterministically.
Remote manifest entry#
The content identity of an s3:// / gs:// input recorded in a rule's
input manifest: (scheme, key, size, etag) — S3 ETag or GCS md5Hash.
Same-size remote rewrites invalidate the rule exactly as local content
changes do (Cloud Storage).
See Also#
- Workflow Format Reference — complete TOML specification
- DAG Engine — how dependencies are resolved
- Wildcards Reference — pattern expansion details