Skip to content

Detailed execution reference

A run reads the settings saved by setup or batch setup. Use your actual YAML path below; guided setup calls it config/run.yml, while batch setup uses config/illumina.auto.yml or config/ont.auto.yml.

oncotracer check --config /absolute/path/project/config/illumina.auto.yml
oncotracer run \
  --backend conda \
  --threads 16 \
  --config /absolute/path/project/config/illumina.auto.yml

The standard CNA YAML can be executed through Conda, Docker, Singularity/Apptainer, or Poetry. All backends use the same native stage graph. The caller stage is direct qDNAseq or direct HMMcopy/ichorCNA, followed by the same downstream refinement and reporting steps.

Optional ONT methylation uses separately installed tools and licensed models. Use host, Conda or Poetry for that branch; the published Docker and Singularity images do not include it.

For variants from existing alignments, use oncotracer variants --config FILE with a BAM manifest. That command uses configured local tools and does not accept --backend or repeat CNA. The explicit Docker alternative handles container execution of that standalone route.

Native stage graph

For Illumina:

FASTQ validation
  -> BWA alignment
  -> samtools/Picard processing
  -> direct independent qDNAseq for every selected sample
  -> BAM-supported boundary refinement
  -> CNA event and cytogenomic notation tables
  -> cohort and per-sample plots
  -> workflow summary, manifest, and checksums
  -> optional native classifier/GISTIC2/reports

For ONT:

optional modified-base BAMs (reuse calls) or POD5 (basecall signal)
  -> select barcode read IDs -> align -> Modkit -> Sturgeon or MARLIN
  -> methylation status (independent of CNA)

barcode FASTQ discovery and merge
  -> minimap2 alignment
  -> HMMcopy readCounter
  -> direct HMMcopy/ichorCNA
  -> BAM-supported boundary refinement
  -> CNA event and cytogenomic notation tables
  -> cohort and per-sample plots
  -> workflow summary, manifest, and checksums
  -> optional native classifier/GISTIC2/reports

When run_cna_classifier: true, stage 05_cna_classifier creates prepared matrices, cancer-context classifications, optional GISTIC2 results, knowledge/pathology concordance, HTML/PDF reports, and clinician summaries.

With run_variants: true, aligned BAMs also feed stage 08_variants:

aligned BAM + reference
  -> requested platform-compatible caller(s)
  -> caller-native filters -> normalization
  -> optional FFPERASE / Varlociraptor assessment
  -> optional local ANNOVAR annotation
  -> per-caller VCFs, evidence tables and status

The stage retains each caller's results separately. Fresh/FFPE, ONT profiles and explicit Strelka2 matched-normal assignments come from the saved configuration. See variant setup; variant resources are prepared only on Run when requested, while missing caller programs must be installed beforehand.

Choose a backend

Conda

oncotracer install --conda
oncotracer doctor --backend conda

oncotracer run --backend conda \
  --config "$PWD/project/config/illumina.auto.yml"

Docker

oncotracer install --docker
oncotracer doctor --backend docker

oncotracer run --backend docker \
  --config "$PWD/project/config/illumina.auto.yml"

The default Docker install above selects the stable CNA image. For a YAML with variants enabled, use the dated variant image and matching run command. A core doctor pass does not verify every optional caller/model.

Singularity or Apptainer

oncotracer install --singularity
oncotracer doctor --backend singularity

oncotracer run --backend singularity \
  --config "$PWD/project/config/illumina.auto.yml"

Poetry

./oncotracer install --poetry \
  --prefix /path/to/my/oncotracer-v2-dev-envs
/path/to/my/oncotracer-v2-dev-envs-poetry/poetry-runtime/bin/oncotracer doctor \
  --backend poetry

/path/to/my/oncotracer-v2-dev-envs-poetry/poetry-runtime/bin/oncotracer run \
  --backend poetry \
  --config "$PWD/project/config/illumina.auto.yml"

Automatic backend selection

When --backend is omitted, OncoTracer uses the backend saved by the most recent successful oncotracer install command:

oncotracer run --config "$PWD/project/config/illumina.auto.yml"

For auditable production commands, specify --backend explicitly. Direct run does not automatically adopt the YAML's execution_backend; the browser and setup --project PROJECT --run pass that saved selection when launching. If no backend has been installed/saved, direct run falls back to host tools.

Threads

oncotracer run \
  --backend conda \
  --threads 8 \
  --config "$PWD/project/config/illumina.auto.yml"

The selected thread count is passed to supported native stages. External tool behavior and memory requirements still depend on the specific stage.

For optional methylation, --gpu accelerates Dorado modified-base basecalling and exposes the GPU to MARLIN. Modkit and Sturgeon remain CPU-threaded. Read Optional ONT methylation before enabling it.

Dry-run

oncotracer run \
  --backend conda \
  --config "$PWD/project/config/illumina.auto.yml" \
  --dry-run

The dry-run validates paths and shows planned analysis commands without starting them. It does not download references or variant models, run callers, or test biological data quality.

Resume behavior

Repeat the same command:

oncotracer run --backend conda \
  --config "$PWD/project/config/illumina.auto.yml"

The native ledger records:

  • the exact stage argument array;
  • relevant input paths, sizes, and modification times;
  • expected output paths and sizes;
  • SHA-256 values for small outputs;
  • completion time and stage status.

A stage is reused only when its recorded inputs and settings still match. There is no separate -resume option and no external workflow work directory.

Force

oncotracer run \
  --backend conda \
  --config "$PWD/project/config/illumina.auto.yml" \
  --force

Use --force only when deliberately invalidating reusable stages. For a scientifically different analysis, prefer a new YAML and a new outdir.

Native audit records

Open these first:

<outdir>/.oncotracer-native/trace.tsv
<outdir>/.oncotracer-native/state.json
<outdir>/06_workflow_summary/workflow_summary.txt
<outdir>/06_workflow_summary/workflow_summary.json
<outdir>/06_workflow_summary/native_run_manifest.json
<outdir>/05_cna_classifier/native_classifier_summary.json  # when enabled
<outdir>/07_methylation/methylation_status.json             # when enabled
<outdir>/07_methylation/methylation_provenance.json         # when enabled
<outdir>/08_variants/variant_status.json                   # when enabled
<outdir>/08_variants/variant_provenance.json               # when enabled

The trace is generated from argument arrays rather than shell strings. The engine checks the final trace and fails if a Nextflow invocation appears.

Inspect the run identity:

OUTDIR="$PWD/project/results"

grep -E '^(mode|dataset|engine|nextflow_used)=' \
  "$OUTDIR/06_workflow_summary/workflow_summary.txt"

sed -n '1,40p' "$OUTDIR/.oncotracer-native/trace.tsv"

Expected native identity:

engine=native
nextflow_used=false

Completion and partial failures

Use workflow_status in 06_workflow_summary/workflow_summary.json and the branch-specific status files above to decide what completed.

Status Meaning
complete All requested applicable steps completed. A caller may legitimately return zero records.
partial_failure Some requested work completed and was retained; inspect the incomplete branch and reason.
failed The current run did not produce a successful applicable analysis branch.

For example, FFPERASE can report not_assessed at insufficient depth while caller VCFs, Varlociraptor and annotation remain available. ANNOVAR skipped for missing optional resources is also distinct from calling failure. Both partial and failed runs can exit with code 2; a scheduler exit code alone cannot tell these outcomes apart. Correct the recorded cause and resume as appropriate; --force does not resolve unsuitable depth, models or specimen choices.

Output ownership and container mounts

Docker runs as the invoking numeric user/group. The CLI derives mounts from the standard CNA YAML paths, including lpwgs_root, outdir, samplesheet, FASTQ roots, and pathology table. Use absolute paths and keep related data below a small number of project roots. Optional methylation is rejected for the v2.1.0 container backends.

Stopping and restarting

Interrupting a run does not mark an incomplete stage as valid. Correct the cause and repeat the same command. OncoTracer reuses earlier valid stages and reruns the incomplete stage.

Do not manually edit .oncotracer-native/state.json. Preserve it with the result tree for audit and resume.