Skip to content

Illumina configuration

Use this page for Illumina settings. For a first run, follow batch setup or explicit FASTQ paths. Each library gets its own copy-number analysis and outputs.

Terminal / headless versions: both the automatic and manual examples below include runnable commands; neither opens browser setup.

Browser setup with sample folders

oncotracer setup also accepts a parent directory with FASTQs inside immediate sample subfolders:

01.RawData/
├── SAMPLE_A/
│   ├── SAMPLE_A_flowcell1_L1_1.fq.gz
│   ├── SAMPLE_A_flowcell1_L1_2.fq.gz
│   ├── SAMPLE_A_flowcell2_L4_1.fq.gz
│   └── SAMPLE_A_flowcell2_L4_2.fq.gz
└── SAMPLE_B/
    ├── SAMPLE_B_R1.fastq.gz
    └── SAMPLE_B_R2.fastq.gz

Select 01.RawData and confirm with OK in the system chooser. Setup shows two samples, named after their folders, with all six FASTQs. Keep one library per folder. Each lane must have a matching R1/R2 pair; missing or duplicate mates require correction. Assign Normal/Cancer roles yourself.

Discovery and configuration leave the original files unchanged. The generated samplesheet stores multiple paths as ordered JSON arrays in its fastq_1 and fastq_2 cells. Analysis aligns each lane separately, combines that sample's alignments, and runs its usual QC and downstream analysis once. Single-path samplesheets continue to work.

Arrange the FASTQs

Paired-end example:

project/input/illumina_fastq/
├── Patient_A_R1.fastq.gz
├── Patient_A_R2.fastq.gz
├── Patient_B_R1.fastq.gz
├── Patient_B_R2.fastq.gz
├── Control_A_R1.fastq.gz
├── Control_A_R2.fastq.gz
├── Control_B_R1.fastq.gz
└── Control_B_R2.fastq.gz

Single-end files may be named <sample>.fastq.gz. Do not mix layouts in one run.

Create the sample table

PROJECT_DIR="$PWD/project"
mkdir -p "$PROJECT_DIR/input/illumina_fastq"

cat > "$PROJECT_DIR/input/illumina_samples.csv" <<'CSV'
sample_name,status
Patient_A,TUMOR
Patient_B,TUMOR
Control_A,NORMAL
Control_B,NORMAL
CSV

sample_name must match the name before _R1/_R2 exactly. The example needs all eight files above. Paste the whole cat block through CSV; it replaces the named CSV if it exists.

Generate the YAML and samplesheet

PROJECT_DIR="$PWD/project"

oncotracer auto \
  --mode illumina \
  --reads-folder "$PROJECT_DIR/input/illumina_fastq" \
  --sample-table "$PROJECT_DIR/input/illumina_samples.csv" \
  --config-dir "$PROJECT_DIR/config/illumina" \
  --outdir "$PROJECT_DIR/results/illumina"

Automatic Setup validates every gzip file and writes:

project/config/illumina/
├── auto_params_manifest.tsv
├── illumina.auto.yml
└── illumina.samplesheet.csv

It does not start the analysis. Both auto and setup accept optional --hg38_build PATH or --build_reference; see genome indexes.

Inspect and run

PROJECT_DIR="$PWD/project"

sed -n '1,180p' "$PROJECT_DIR/config/illumina/illumina.auto.yml"
sed -n '1,30p' "$PROJECT_DIR/config/illumina/illumina.samplesheet.csv"
oncotracer check --config "$PROJECT_DIR/config/illumina/illumina.auto.yml"

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

cat "$PROJECT_DIR/results/illumina/06_workflow_summary/workflow_summary.txt"

Normal rows are independent samples

The status column records the submitted role of each library. It does not select samples for a local reference. Automatic Setup preserves every NORMAL row in the generated samplesheet, and native qDNAseq processes it through the same independent per-sample analysis as every TUMOR row.

OncoTracer does not pool normal rows, subtract their signal from tumor rows, or create a sample-derived panel. Audit qdnaseq_sample_status.json and the per-sample files under 01_samurai_illumina/qdnaseq/ to confirm that every expected tumor and normal completed.

Manual samplesheet

This is an alternative to automatic setup. Use it for unusual filenames; retain the exact existing FASTQ paths in the table:

PROJECT_DIR="$PWD/project"
mkdir -p "$PROJECT_DIR/config"

cat > "$PROJECT_DIR/config/illumina.samplesheet.csv" <<CSV
sample,fastq_1,fastq_2,status
Patient_A,"$PROJECT_DIR/input/illumina_fastq/Patient_A_R1.fastq.gz","$PROJECT_DIR/input/illumina_fastq/Patient_A_R2.fastq.gz",tumor
Patient_B,"$PROJECT_DIR/input/illumina_fastq/Patient_B_R1.fastq.gz","$PROJECT_DIR/input/illumina_fastq/Patient_B_R2.fastq.gz",tumor
Control_A,"$PROJECT_DIR/input/illumina_fastq/Control_A_R1.fastq.gz","$PROJECT_DIR/input/illumina_fastq/Control_A_R2.fastq.gz",normal
Control_B,"$PROJECT_DIR/input/illumina_fastq/Control_B_R1.fastq.gz","$PROJECT_DIR/input/illumina_fastq/Control_B_R2.fastq.gz",normal
CSV

For single-end data, retain the four-column header and leave fastq_2 empty for every row.

Manual YAML

After creating the manual samplesheet above, save this configuration. It explicitly selects prebuilt hg38 download at run time, matching the automatic route. To build indexes locally instead, set hg38_auto_download: false; see reference choices.

PROJECT_DIR="$PWD/project"
mkdir -p "$PROJECT_DIR/config"

cat > "$PROJECT_DIR/config/illumina.manual.yml" <<YAML
mode: illumina
lpwgs_root: "$PROJECT_DIR/reference"
hg38_auto_download: true
outdir: "$PROJECT_DIR/results/manual_illumina"
illumina_samplesheet: "$PROJECT_DIR/config/illumina.samplesheet.csv"
illumina_analysis_type: solid_biopsy
illumina_caller: qdnaseq
illumina_binsize_kb: 100
run_cna_classifier: false
force: false
YAML

oncotracer check --config "$PROJECT_DIR/config/illumina.manual.yml"
oncotracer run \
  --backend conda \
  --config "$PROJECT_DIR/config/illumina.manual.yml" \
  --dry-run

oncotracer run \
  --backend conda \
  --config "$PROJECT_DIR/config/illumina.manual.yml"

Main Illumina settings

Setting Typical value Purpose
illumina_samplesheet absolute CSV path Exact list of FASTQ files, sample names, and tumor/normal status
illumina_analysis_type solid_biopsy Compatibility metadata; native Illumina analysis uses qDNAseq
illumina_caller qdnaseq Illumina CNA caller
illumina_binsize_kb 100 Initial qDNAseq bin width
run_cna_classifier false Add native cancer-context reports
force false Preserve reusable stages

Pre-run checks

This block inspects the automatically generated samplesheet. For the manual route, set SHEET="$PROJECT_DIR/config/illumina.samplesheet.csv" instead.

PROJECT_DIR="$PWD/project"
SHEET="$PROJECT_DIR/config/illumina/illumina.samplesheet.csv"

test -s "$SHEET"
sed -n '1,30p' "$SHEET"
gzip -t "$PROJECT_DIR/input/illumina_fastq/Patient_A_R1.fastq.gz"
gzip -t "$PROJECT_DIR/input/illumina_fastq/Patient_A_R2.fastq.gz"

Use a new YAML and outdir when changing bin size, sample membership, or other scientific settings.