Merge branch 'tidy-params' into 'dev'

Tidy params

See merge request epi2melabs/workflows/wf-transcriptomes!283
This commit is contained in:
Sarah Griffiths 2026-05-27 15:40:53 +00:00
commit 0129592acc
11 changed files with 112 additions and 157 deletions

View File

@ -10,10 +10,12 @@ This workflow analyses Oxford Nanopore long-read RNA sequencing data. It uses
[`bambu`](https://bioconductor.org/packages/bambu/) to build and quantify [`bambu`](https://bioconductor.org/packages/bambu/) to build and quantify
transcript models, can optionally run transcript models, can optionally run
[`SQANTI3`](https://github.com/ConesaLab/SQANTI3) for transcript classification [`SQANTI3`](https://github.com/ConesaLab/SQANTI3) for transcript classification
and QC, and can optionally run and QC, can optionally run
[`DESeq2`](https://bioconductor.org/packages/DESeq2/) and [`DESeq2`](https://bioconductor.org/packages/DESeq2/) and
[`DEXSeq`](https://bioconductor.org/packages/DEXSeq/) for differential [`DEXSeq`](https://bioconductor.org/packages/DEXSeq/) for differential
analysis. analysis, and will run
[`modkit`](https://github.com/nanoporetech/modkit) for base modification
pileups on aligned reads if relevant tags are present.
The workflow supports: The workflow supports:
@ -23,6 +25,7 @@ The workflow supports:
+ optional transcript classification and QC with `SQANTI3` + optional transcript classification and QC with `SQANTI3`
+ differential gene expression with `DESeq2` + differential gene expression with `DESeq2`
+ differential transcript usage with `DEXSeq` + differential transcript usage with `DEXSeq`
+ base modification pileups with `modkit`
The main transcriptome result is a shared `bambu` model built from all samples The main transcriptome result is a shared `bambu` model built from all samples
together. The workflow also produces separate per-sample transcriptomes, so together. The workflow also produces separate per-sample transcriptomes, so
@ -48,13 +51,13 @@ sections call out the main differences from the previous workflow version.
Recommended requirements: Recommended requirements:
+ CPUs = 16 + CPUs = 32
+ Memory = 64GB + Memory = 96GB
Minimum requirements: Minimum requirements:
+ CPUs = 8 + CPUs = 12
+ Memory = 32GB + Memory = 64GB
Approximate run time: Varies with read depth and sample count; expect a small single-sample run to finish in under 30 minutes with the recommended resources. Approximate run time: Varies with read depth and sample count; expect a small single-sample run to finish in under 30 minutes with the recommended resources.
@ -117,7 +120,6 @@ nextflow run epi2me-labs/wf-transcriptomes \
--de_analysis \ --de_analysis \
--direct_rna \ --direct_rna \
--fastq 'wf-transcriptomes-demo/differential_expression_fastq' \ --fastq 'wf-transcriptomes-demo/differential_expression_fastq' \
--minimap2_index_opts '-k 15' \
--ref_annotation 'wf-transcriptomes-demo/gencode.v22.annotation.chr20.gtf' \ --ref_annotation 'wf-transcriptomes-demo/gencode.v22.annotation.chr20.gtf' \
--ref_genome 'wf-transcriptomes-demo/hg38_chr20.fa' \ --ref_genome 'wf-transcriptomes-demo/hg38_chr20.fa' \
--sample_sheet 'wf-transcriptomes-demo/sample_sheet.csv' \ --sample_sheet 'wf-transcriptomes-demo/sample_sheet.csv' \
@ -187,14 +189,15 @@ main source of sample names for multiplexed runs and is required for
+ Every row must contain `barcode` and `alias`. + Every row must contain `barcode` and `alias`.
+ `barcode` must use the usual ONT-style naming such as `barcode01`, + `barcode` must use the usual ONT-style naming such as `barcode01`,
`barcode02`, and the values must be unique. `barcode02`, and the values must be unique.
+ `alias` is the user-facing sample name, must be unique, and must not begin + `alias` is the user-facing sample name, must be unique, must not begin
with the word `barcode`. with the word `barcode` and may contain only letters, numbers, `.`, `_` or `-`.
+ If a `type` column is present, it must use one of: + If a `type` column is present, it must use one of:
`test_sample`, `positive_control`, `negative_control`, or `test_sample`, `positive_control`, `negative_control`, or
`no_template_control`. `no_template_control`.
+ If an `analysis_group` column is present, every row must have a value. + If an `analysis_group` column is present, every row must have a value.
+ For `--de_analysis`, the sheet must also contain the primary condition + For `--de_analysis`, the sheet must also contain the primary condition
column, `condition` by default, plus any columns named in `--covariates`. column (`condition` by default, overridable with `--condition_column`),
plus any columns named in `--covariates`.
When multiplexed input folders are named by barcode, the workflow matches those When multiplexed input folders are named by barcode, the workflow matches those
folder names against the `barcode` column. If the folders are named by alias, folder names against the `barcode` column. If the folders are named by alias,
@ -256,7 +259,7 @@ for DE/DTU.
### 7. Transcript sequence generation and QC ### 7. Transcript sequence generation and QC
Transcript FASTA files are derived from GTF plus genome using `gffread`. Transcript FASTA files are derived from GTF plus genome using `gffread`.
When `--skip_sqanti` is not set, `SQANTI3` classifies the cohort and per-sample `SQANTI3` classifies the cohort and per-sample
transcriptomes and produces structural QC summaries. The cohort `SQANTI3` transcriptomes and produces structural QC summaries. The cohort `SQANTI3`
results live under `cohort/sqanti/`, while per-sample `SQANTI3` results live under `cohort/sqanti/`, while per-sample `SQANTI3`
directories are published under `samples/<alias>/sqanti/`. directories are published under `samples/<alias>/sqanti/`.
@ -302,27 +305,26 @@ directories:
## Input parameters ## Input parameters
### Input Options ### Main Options
| Nextflow parameter name | Type | Description | Help | Default | | Nextflow parameter name | Type | Description | Help | Default |
|--------------------------|------|-------------|------|---------| |--------------------------|------|-------------|------|---------|
| fastq | string | FASTQ reads to analyse. | You can provide a single FASTQ, a folder of FASTQs, or a multiplexed folder containing one sub-folder per sample or barcode. | | | fastq | string | FASTQ reads to analyse. | You can provide a single FASTQ, a folder of FASTQs, or a multiplexed folder containing one sub-folder per sample or barcode. | |
| bam | string | BAM or uBAM reads to analyse. | You can provide a single BAM or uBAM, a folder of BAMs, or a multiplexed folder containing one sub-folder per sample or barcode. | | | bam | string | BAM or uBAM reads to analyse. | You can provide a single BAM or uBAM, a folder of BAMs, or a multiplexed folder containing one sub-folder per sample or barcode. | |
| analyse_unclassified | boolean | Include unclassified reads from multiplexed input directories. | | False |
| analyse_fail | boolean | Include fail reads from multiplexed input directories. | | False |
| fastq_chunk | integer | Maximum number of reads per ingress chunk. | Useful mainly for testing or for splitting very large inputs into smaller pieces. | |
### Reference Options
| Nextflow parameter name | Type | Description | Help | Default |
|--------------------------|------|-------------|------|---------|
| ref_genome | string | Reference genome FASTA. | Required in both discover and fixed_annotation modes. | | | ref_genome | string | Reference genome FASTA. | Required in both discover and fixed_annotation modes. | |
| ref_annotation | string | Reference transcript annotation in GTF or GFF format. | Required in both discover and fixed_annotation modes. | | | ref_annotation | string | Reference transcript annotation in GTF or GFF format. | Required in both discover and fixed_annotation modes. | |
| transcriptome_mode | string | How bambu should prepare the transcriptome model. | Use discover for reference-guided transcript discovery and quantification, or fixed_annotation for quantification only against the supplied annotation. | discover | | transcriptome_mode | string | How bambu should prepare the transcriptome model. | Use discover for reference-guided transcript discovery and quantification, or fixed_annotation for quantification only against the supplied annotation. | discover |
| direct_rna | boolean | Set this for direct RNA sequencing libraries. | | False | | direct_rna | boolean | Set this for direct RNA sequencing libraries. | | False |
### Read Filtering Options
| Nextflow parameter name | Type | Description | Help | Default |
|--------------------------|------|-------------|------|---------|
| analyse_unclassified | boolean | Include unclassified reads from multiplexed input directories. | | False |
| analyse_fail | boolean | Include fail reads from bam_fail and fastq_fail folders found in sample folders on the input path. | | False |
### Sample Options ### Sample Options
| Nextflow parameter name | Type | Description | Help | Default | | Nextflow parameter name | Type | Description | Help | Default |
@ -331,7 +333,7 @@ directories:
| sample | string | Single sample name for singleplexed input or to restrict multiplexed analysis to one sample. | | | | sample | string | Single sample name for singleplexed input or to restrict multiplexed analysis to one sample. | | |
### Analysis Options ### Differential Expression Analysis Options
| Nextflow parameter name | Type | Description | Help | Default | | Nextflow parameter name | Type | Description | Help | Default |
|--------------------------|------|-------------|------|---------| |--------------------------|------|-------------|------|---------|
@ -355,12 +357,9 @@ directories:
|--------------------------|------|-------------|------|---------| |--------------------------|------|-------------|------|---------|
| threads | integer | Thread count to use for the core workflow processes. | | 4 | | threads | integer | Thread count to use for the core workflow processes. | | 4 |
| mod_codes | string | Comma-separated modified base codes to pass to modkit pileup. | Provide values accepted by `modkit pileup --modified-bases`, for example `A:a,C:m`. If omitted, the workflow infers `primary_base:mod_code` pairs from the BAM with `modkit modbam check-tags`. | | | mod_codes | string | Comma-separated modified base codes to pass to modkit pileup. | Provide values accepted by `modkit pileup --modified-bases`, for example `A:a,C:m`. If omitted, the workflow infers `primary_base:mod_code` pairs from the BAM with `modkit modbam check-tags`. | |
| minimap2_opts | string | Extra command-line options to pass to minimap2. | | |
| force_alignment | boolean | Force re-alignment of input BAM files. | Read alignment is skipped if the existing sequence names in the aligned BAM match the provided reference. Enable this if the existing alignments used incorrect minimap2 presets (e.g. missing --splice or direct RNA settings). | False | | force_alignment | boolean | Force re-alignment of input BAM files. | Read alignment is skipped if the existing sequence names in the aligned BAM match the provided reference. Enable this if the existing alignments used incorrect minimap2 presets (e.g. missing --splice or direct RNA settings). | False |
| ndr | number | Optional bambu novel discovery rate override. | | | | ndr | number | Optional bambu novel discovery rate override. | | |
| skip_sqanti | boolean | Skip SQANTI3 transcript classification and QC. | | False |
| sqanti_skip_orf | boolean | Skip ORF prediction during SQANTI3 QC. | | True | | sqanti_skip_orf | boolean | Skip ORF prediction during SQANTI3 QC. | | True |
| sqanti_extra_args | string | Extra command-line options to pass to SQANTI3. | | |
@ -407,8 +406,8 @@ Output files may be aggregated including information for all samples or provided
| DTU failure diagnostic | de_analysis/{{ contrast }}/DTU_ANALYSIS_FAILED.txt | Diagnostic details when DEXSeq fails for a contrast. | aggregated | | DTU failure diagnostic | de_analysis/{{ contrast }}/DTU_ANALYSIS_FAILED.txt | Diagnostic details when DEXSeq fails for a contrast. | aggregated |
| Multiple-testing warning | de_analysis/MULTIPLE_TESTING_WARNING.txt | Family-wise error-rate note generated when multiple contrasts are tested. | aggregated | | Multiple-testing warning | de_analysis/MULTIPLE_TESTING_WARNING.txt | Family-wise error-rate note generated when multiple contrasts are tested. | aggregated |
| IGV configuration | igv.json | JSON configuration for viewing the aligned BAMs in IGV. | aggregated | | IGV configuration | igv.json | JSON configuration for viewing the aligned BAMs in IGV. | aggregated |
| Reference FASTA index | igv_reference/{{ ref_genome_file }}.fai | FAI index for the reference genome published for IGV. | aggregated | | Reference FASTA index | reference/{{ ref_genome_file }}.fai | FAI index for the reference genome published for IGV. | aggregated |
| Reference GZI index | igv_reference/{{ ref_genome_file }}.gzi | GZI index for a compressed reference genome published for IGV. | aggregated | | Reference GZI index | reference/{{ ref_genome_file }}.gzi | GZI index for a compressed reference genome published for IGV. | aggregated |

View File

@ -2,10 +2,12 @@ This workflow analyses Oxford Nanopore long-read RNA sequencing data. It uses
[`bambu`](https://bioconductor.org/packages/bambu/) to build and quantify [`bambu`](https://bioconductor.org/packages/bambu/) to build and quantify
transcript models, can optionally run transcript models, can optionally run
[`SQANTI3`](https://github.com/ConesaLab/SQANTI3) for transcript classification [`SQANTI3`](https://github.com/ConesaLab/SQANTI3) for transcript classification
and QC, and can optionally run and QC, can optionally run
[`DESeq2`](https://bioconductor.org/packages/DESeq2/) and [`DESeq2`](https://bioconductor.org/packages/DESeq2/) and
[`DEXSeq`](https://bioconductor.org/packages/DEXSeq/) for differential [`DEXSeq`](https://bioconductor.org/packages/DEXSeq/) for differential
analysis. analysis, and will run
[`modkit`](https://github.com/nanoporetech/modkit) for base modification
pileups on aligned reads if relevant tags are present.
The workflow supports: The workflow supports:
@ -15,6 +17,7 @@ The workflow supports:
+ optional transcript classification and QC with `SQANTI3` + optional transcript classification and QC with `SQANTI3`
+ differential gene expression with `DESeq2` + differential gene expression with `DESeq2`
+ differential transcript usage with `DEXSeq` + differential transcript usage with `DEXSeq`
+ base modification pileups with `modkit`
The main transcriptome result is a shared `bambu` model built from all samples The main transcriptome result is a shared `bambu` model built from all samples
together. The workflow also produces separate per-sample transcriptomes, so together. The workflow also produces separate per-sample transcriptomes, so

View File

@ -1,12 +1,12 @@
Recommended requirements: Recommended requirements:
+ CPUs = 16 + CPUs = 32
+ Memory = 64GB + Memory = 96GB
Minimum requirements: Minimum requirements:
+ CPUs = 8 + CPUs = 12
+ Memory = 32GB + Memory = 64GB
Approximate run time: Varies with read depth and sample count; expect a small single-sample run to finish in under 30 minutes with the recommended resources. Approximate run time: Varies with read depth and sample count; expect a small single-sample run to finish in under 30 minutes with the recommended resources.

View File

@ -50,7 +50,6 @@ nextflow run epi2me-labs/wf-transcriptomes \
--de_analysis \ --de_analysis \
--direct_rna \ --direct_rna \
--fastq 'wf-transcriptomes-demo/differential_expression_fastq' \ --fastq 'wf-transcriptomes-demo/differential_expression_fastq' \
--minimap2_index_opts '-k 15' \
--ref_annotation 'wf-transcriptomes-demo/gencode.v22.annotation.chr20.gtf' \ --ref_annotation 'wf-transcriptomes-demo/gencode.v22.annotation.chr20.gtf' \
--ref_genome 'wf-transcriptomes-demo/hg38_chr20.fa' \ --ref_genome 'wf-transcriptomes-demo/hg38_chr20.fa' \
--sample_sheet 'wf-transcriptomes-demo/sample_sheet.csv' \ --sample_sheet 'wf-transcriptomes-demo/sample_sheet.csv' \

View File

@ -32,14 +32,15 @@ main source of sample names for multiplexed runs and is required for
+ Every row must contain `barcode` and `alias`. + Every row must contain `barcode` and `alias`.
+ `barcode` must use the usual ONT-style naming such as `barcode01`, + `barcode` must use the usual ONT-style naming such as `barcode01`,
`barcode02`, and the values must be unique. `barcode02`, and the values must be unique.
+ `alias` is the user-facing sample name, must be unique, and must not begin + `alias` is the user-facing sample name, must be unique, must not begin
with the word `barcode`. with the word `barcode` and may contain only letters, numbers, `.`, `_` or `-`.
+ If a `type` column is present, it must use one of: + If a `type` column is present, it must use one of:
`test_sample`, `positive_control`, `negative_control`, or `test_sample`, `positive_control`, `negative_control`, or
`no_template_control`. `no_template_control`.
+ If an `analysis_group` column is present, every row must have a value. + If an `analysis_group` column is present, every row must have a value.
+ For `--de_analysis`, the sheet must also contain the primary condition + For `--de_analysis`, the sheet must also contain the primary condition
column, `condition` by default, plus any columns named in `--covariates`. column (`condition` by default, overridable with `--condition_column`),
plus any columns named in `--covariates`.
When multiplexed input folders are named by barcode, the workflow matches those When multiplexed input folders are named by barcode, the workflow matches those
folder names against the `barcode` column. If the folders are named by alias, folder names against the `barcode` column. If the folders are named by alias,
@ -101,7 +102,7 @@ for DE/DTU.
### 7. Transcript sequence generation and QC ### 7. Transcript sequence generation and QC
Transcript FASTA files are derived from GTF plus genome using `gffread`. Transcript FASTA files are derived from GTF plus genome using `gffread`.
When `--skip_sqanti` is not set, `SQANTI3` classifies the cohort and per-sample `SQANTI3` classifies the cohort and per-sample
transcriptomes and produces structural QC summaries. The cohort `SQANTI3` transcriptomes and produces structural QC summaries. The cohort `SQANTI3`
results live under `cohort/sqanti/`, while per-sample `SQANTI3` results live under `cohort/sqanti/`, while per-sample `SQANTI3`
directories are published under `samples/<alias>/sqanti/`. directories are published under `samples/<alias>/sqanti/`.

View File

@ -1,24 +1,23 @@
### Input Options ### Main Options
| Nextflow parameter name | Type | Description | Help | Default | | Nextflow parameter name | Type | Description | Help | Default |
|--------------------------|------|-------------|------|---------| |--------------------------|------|-------------|------|---------|
| fastq | string | FASTQ reads to analyse. | You can provide a single FASTQ, a folder of FASTQs, or a multiplexed folder containing one sub-folder per sample or barcode. | | | fastq | string | FASTQ reads to analyse. | You can provide a single FASTQ, a folder of FASTQs, or a multiplexed folder containing one sub-folder per sample or barcode. | |
| bam | string | BAM or uBAM reads to analyse. | You can provide a single BAM or uBAM, a folder of BAMs, or a multiplexed folder containing one sub-folder per sample or barcode. | | | bam | string | BAM or uBAM reads to analyse. | You can provide a single BAM or uBAM, a folder of BAMs, or a multiplexed folder containing one sub-folder per sample or barcode. | |
| analyse_unclassified | boolean | Include unclassified reads from multiplexed input directories. | | False |
| analyse_fail | boolean | Include fail reads from multiplexed input directories. | | False |
| fastq_chunk | integer | Maximum number of reads per ingress chunk. | Useful mainly for testing or for splitting very large inputs into smaller pieces. | |
### Reference Options
| Nextflow parameter name | Type | Description | Help | Default |
|--------------------------|------|-------------|------|---------|
| ref_genome | string | Reference genome FASTA. | Required in both discover and fixed_annotation modes. | | | ref_genome | string | Reference genome FASTA. | Required in both discover and fixed_annotation modes. | |
| ref_annotation | string | Reference transcript annotation in GTF or GFF format. | Required in both discover and fixed_annotation modes. | | | ref_annotation | string | Reference transcript annotation in GTF or GFF format. | Required in both discover and fixed_annotation modes. | |
| transcriptome_mode | string | How bambu should prepare the transcriptome model. | Use discover for reference-guided transcript discovery and quantification, or fixed_annotation for quantification only against the supplied annotation. | discover | | transcriptome_mode | string | How bambu should prepare the transcriptome model. | Use discover for reference-guided transcript discovery and quantification, or fixed_annotation for quantification only against the supplied annotation. | discover |
| direct_rna | boolean | Set this for direct RNA sequencing libraries. | | False | | direct_rna | boolean | Set this for direct RNA sequencing libraries. | | False |
### Read Filtering Options
| Nextflow parameter name | Type | Description | Help | Default |
|--------------------------|------|-------------|------|---------|
| analyse_unclassified | boolean | Include unclassified reads from multiplexed input directories. | | False |
| analyse_fail | boolean | Include fail reads from bam_fail and fastq_fail folders found in sample folders on the input path. | | False |
### Sample Options ### Sample Options
| Nextflow parameter name | Type | Description | Help | Default | | Nextflow parameter name | Type | Description | Help | Default |
@ -27,7 +26,7 @@
| sample | string | Single sample name for singleplexed input or to restrict multiplexed analysis to one sample. | | | | sample | string | Single sample name for singleplexed input or to restrict multiplexed analysis to one sample. | | |
### Analysis Options ### Differential Expression Analysis Options
| Nextflow parameter name | Type | Description | Help | Default | | Nextflow parameter name | Type | Description | Help | Default |
|--------------------------|------|-------------|------|---------| |--------------------------|------|-------------|------|---------|
@ -51,11 +50,8 @@
|--------------------------|------|-------------|------|---------| |--------------------------|------|-------------|------|---------|
| threads | integer | Thread count to use for the core workflow processes. | | 4 | | threads | integer | Thread count to use for the core workflow processes. | | 4 |
| mod_codes | string | Comma-separated modified base codes to pass to modkit pileup. | Provide values accepted by `modkit pileup --modified-bases`, for example `A:a,C:m`. If omitted, the workflow infers `primary_base:mod_code` pairs from the BAM with `modkit modbam check-tags`. | | | mod_codes | string | Comma-separated modified base codes to pass to modkit pileup. | Provide values accepted by `modkit pileup --modified-bases`, for example `A:a,C:m`. If omitted, the workflow infers `primary_base:mod_code` pairs from the BAM with `modkit modbam check-tags`. | |
| minimap2_opts | string | Extra command-line options to pass to minimap2. | | |
| force_alignment | boolean | Force re-alignment of input BAM files. | Read alignment is skipped if the existing sequence names in the aligned BAM match the provided reference. Enable this if the existing alignments used incorrect minimap2 presets (e.g. missing --splice or direct RNA settings). | False | | force_alignment | boolean | Force re-alignment of input BAM files. | Read alignment is skipped if the existing sequence names in the aligned BAM match the provided reference. Enable this if the existing alignments used incorrect minimap2 presets (e.g. missing --splice or direct RNA settings). | False |
| ndr | number | Optional bambu novel discovery rate override. | | | | ndr | number | Optional bambu novel discovery rate override. | | |
| skip_sqanti | boolean | Skip SQANTI3 transcript classification and QC. | | False |
| sqanti_skip_orf | boolean | Skip ORF prediction during SQANTI3 QC. | | True | | sqanti_skip_orf | boolean | Skip ORF prediction during SQANTI3 QC. | | True |
| sqanti_extra_args | string | Extra command-line options to pass to SQANTI3. | | |

View File

@ -36,5 +36,5 @@ Output files may be aggregated including information for all samples or provided
| DTU failure diagnostic | de_analysis/{{ contrast }}/DTU_ANALYSIS_FAILED.txt | Diagnostic details when DEXSeq fails for a contrast. | aggregated | | DTU failure diagnostic | de_analysis/{{ contrast }}/DTU_ANALYSIS_FAILED.txt | Diagnostic details when DEXSeq fails for a contrast. | aggregated |
| Multiple-testing warning | de_analysis/MULTIPLE_TESTING_WARNING.txt | Family-wise error-rate note generated when multiple contrasts are tested. | aggregated | | Multiple-testing warning | de_analysis/MULTIPLE_TESTING_WARNING.txt | Family-wise error-rate note generated when multiple contrasts are tested. | aggregated |
| IGV configuration | igv.json | JSON configuration for viewing the aligned BAMs in IGV. | aggregated | | IGV configuration | igv.json | JSON configuration for viewing the aligned BAMs in IGV. | aggregated |
| Reference FASTA index | igv_reference/{{ ref_genome_file }}.fai | FAI index for the reference genome published for IGV. | aggregated | | Reference FASTA index | reference/{{ ref_genome_file }}.fai | FAI index for the reference genome published for IGV. | aggregated |
| Reference GZI index | igv_reference/{{ ref_genome_file }}.gzi | GZI index for a compressed reference genome published for IGV. | aggregated | | Reference GZI index | reference/{{ ref_genome_file }}.gzi | GZI index for a compressed reference genome published for IGV. | aggregated |

View File

@ -21,17 +21,12 @@ params {
analyse_unclassified = false analyse_unclassified = false
analyse_fail = false analyse_fail = false
fastq_chunk = null
threads = 4 threads = 4
mod_codes = null mod_codes = null
minimap2_index_opts = ""
minimap2_opts = ""
force_alignment = false force_alignment = false
ndr = null ndr = null
skip_sqanti = false
sqanti_skip_orf = true sqanti_skip_orf = true
sqanti_extra_args = ""
aws_image_prefix = null aws_image_prefix = null
aws_queue = null aws_queue = null
@ -52,7 +47,6 @@ params {
"--de_analysis", "--de_analysis",
"--direct_rna", "--direct_rna",
"--fastq 'wf-transcriptomes-demo/differential_expression_fastq'", "--fastq 'wf-transcriptomes-demo/differential_expression_fastq'",
"--minimap2_index_opts '-k 15'",
"--ref_annotation 'wf-transcriptomes-demo/gencode.v22.annotation.chr20.gtf'", "--ref_annotation 'wf-transcriptomes-demo/gencode.v22.annotation.chr20.gtf'",
"--ref_genome 'wf-transcriptomes-demo/hg38_chr20.fa'", "--ref_genome 'wf-transcriptomes-demo/hg38_chr20.fa'",
"--sample_sheet 'wf-transcriptomes-demo/sample_sheet.csv'", "--sample_sheet 'wf-transcriptomes-demo/sample_sheet.csv'",

View File

@ -9,16 +9,15 @@
"url": "https://github.com/epi2me-labs/wf-transcriptomes", "url": "https://github.com/epi2me-labs/wf-transcriptomes",
"type": "object", "type": "object",
"definitions": { "definitions": {
"input_options": { "main_options": {
"title": "Input Options", "title": "Main Options",
"type": "object", "type": "object",
"description": "Parameters for ingesting read data.", "description": "Parameters for read ingestion, and setting reference and transcriptome construction mode.",
"properties": { "properties": {
"fastq": { "fastq": {
"type": "string", "type": "string",
"format": "path", "format": "path",
"title": "FASTQ", "title": "FASTQ",
"demo_data": "${projectDir}/test_data/smoke/reads.fastq",
"description": "FASTQ reads to analyse.", "description": "FASTQ reads to analyse.",
"help_text": "You can provide a single FASTQ, a folder of FASTQs, or a multiplexed folder containing one sub-folder per sample or barcode." "help_text": "You can provide a single FASTQ, a folder of FASTQs, or a multiplexed folder containing one sub-folder per sample or barcode."
}, },
@ -28,49 +27,10 @@
"description": "BAM or uBAM reads to analyse.", "description": "BAM or uBAM reads to analyse.",
"help_text": "You can provide a single BAM or uBAM, a folder of BAMs, or a multiplexed folder containing one sub-folder per sample or barcode." "help_text": "You can provide a single BAM or uBAM, a folder of BAMs, or a multiplexed folder containing one sub-folder per sample or barcode."
}, },
"analyse_unclassified": {
"type": "boolean",
"default": false,
"description": "Include unclassified reads from multiplexed input directories."
},
"analyse_fail": {
"type": "boolean",
"default": false,
"description": "Include fail reads from multiplexed input directories."
},
"fastq_chunk": {
"type": "integer",
"description": "Maximum number of reads per ingress chunk.",
"help_text": "Useful mainly for testing or for splitting very large inputs into smaller pieces."
}
},
"allOf": [
{
"oneOf": [
{
"required": [
"fastq"
]
},
{
"required": [
"bam"
]
}
]
}
]
},
"reference_options": {
"title": "Reference Options",
"type": "object",
"description": "Reference files and transcriptome construction mode.",
"properties": {
"ref_genome": { "ref_genome": {
"type": "string", "type": "string",
"format": "file-path", "format": "file-path",
"title": "Reference genome", "title": "Reference genome",
"demo_data": "${projectDir}/test_data/smoke/reference.fa",
"description": "Reference genome FASTA.", "description": "Reference genome FASTA.",
"help_text": "Required in both discover and fixed_annotation modes." "help_text": "Required in both discover and fixed_annotation modes."
}, },
@ -78,7 +38,6 @@
"type": "string", "type": "string",
"format": "file-path", "format": "file-path",
"title": "Reference annotation", "title": "Reference annotation",
"demo_data": "${projectDir}/test_data/smoke/annotation.gtf",
"description": "Reference transcript annotation in GTF or GFF format.", "description": "Reference transcript annotation in GTF or GFF format.",
"help_text": "Required in both discover and fixed_annotation modes." "help_text": "Required in both discover and fixed_annotation modes."
}, },
@ -102,8 +61,41 @@
"ref_genome", "ref_genome",
"ref_annotation", "ref_annotation",
"transcriptome_mode" "transcriptome_mode"
],
"allOf": [
{
"oneOf": [
{
"required": [
"fastq"
]
},
{
"required": [
"bam"
]
}
]
}
] ]
}, },
"filter_options": {
"title": "Read Filtering Options",
"type": "object",
"description": "Options for filtering input reads.",
"properties": {
"analyse_unclassified": {
"type": "boolean",
"default": false,
"description": "Include unclassified reads from multiplexed input directories."
},
"analyse_fail": {
"type": "boolean",
"default": false,
"description": "Include fail reads from bam_fail and fastq_fail folders found in sample folders on the input path."
}
}
},
"sample_options": { "sample_options": {
"title": "Sample Options", "title": "Sample Options",
"type": "object", "type": "object",
@ -113,7 +105,6 @@
"type": "string", "type": "string",
"format": "file-path", "format": "file-path",
"title": "Sample sheet", "title": "Sample sheet",
"demo_data": "${projectDir}/test_data/smoke/sample_sheet.csv",
"description": "CSV file describing barcodes, aliases, and optional experimental design columns.", "description": "CSV file describing barcodes, aliases, and optional experimental design columns.",
"help_text": "For multiplexed runs, the sample sheet should contain both barcode and alias. For differential analysis it must also contain alias, the condition column, and any extra columns named in `--covariates`." "help_text": "For multiplexed runs, the sample sheet should contain both barcode and alias. For differential analysis it must also contain alias, the condition column, and any extra columns named in `--covariates`."
}, },
@ -123,8 +114,8 @@
} }
} }
}, },
"analysis_options": { "de_analysis_options": {
"title": "Analysis Options", "title": "Differential Expression Analysis Options",
"type": "object", "type": "object",
"description": "Parameters controlling DGE and DTU analyses.", "description": "Parameters controlling DGE and DTU analyses.",
"properties": { "properties": {
@ -188,17 +179,6 @@
"description": "Comma-separated modified base codes to pass to modkit pileup.", "description": "Comma-separated modified base codes to pass to modkit pileup.",
"help_text": "Provide values accepted by `modkit pileup --modified-bases`, for example `A:a,C:m`. If omitted, the workflow infers `primary_base:mod_code` pairs from the BAM with `modkit modbam check-tags`." "help_text": "Provide values accepted by `modkit pileup --modified-bases`, for example `A:a,C:m`. If omitted, the workflow infers `primary_base:mod_code` pairs from the BAM with `modkit modbam check-tags`."
}, },
"minimap2_index_opts": {
"type": "string",
"default": "",
"hidden": true,
"description": "Legacy compatibility parameter forwarded to minimap2 index generation."
},
"minimap2_opts": {
"type": "string",
"default": "",
"description": "Extra command-line options to pass to minimap2."
},
"force_alignment" : { "force_alignment" : {
"type": "boolean", "type": "boolean",
"default": false, "default": false,
@ -209,20 +189,10 @@
"type": "number", "type": "number",
"description": "Optional bambu novel discovery rate override." "description": "Optional bambu novel discovery rate override."
}, },
"skip_sqanti": {
"type": "boolean",
"default": false,
"description": "Skip SQANTI3 transcript classification and QC."
},
"sqanti_skip_orf": { "sqanti_skip_orf": {
"type": "boolean", "type": "boolean",
"default": true, "default": true,
"description": "Skip ORF prediction during SQANTI3 QC." "description": "Skip ORF prediction during SQANTI3 QC."
},
"sqanti_extra_args": {
"type": "string",
"default": "",
"description": "Extra command-line options to pass to SQANTI3."
} }
} }
}, },
@ -261,16 +231,16 @@
}, },
"allOf": [ "allOf": [
{ {
"$ref": "#/definitions/input_options" "$ref": "#/definitions/main_options"
}, },
{ {
"$ref": "#/definitions/reference_options" "$ref": "#/definitions/filter_options"
}, },
{ {
"$ref": "#/definitions/sample_options" "$ref": "#/definitions/sample_options"
}, },
{ {
"$ref": "#/definitions/analysis_options" "$ref": "#/definitions/de_analysis_options"
}, },
{ {
"$ref": "#/definitions/output_options" "$ref": "#/definitions/output_options"
@ -304,12 +274,12 @@
}, },
"resources": { "resources": {
"recommended": { "recommended": {
"cpus": 16, "cpus": 32,
"memory": "64GB" "memory": "96GB"
}, },
"minimum": { "minimum": {
"cpus": 8, "cpus": 12,
"memory": "32GB" "memory": "64GB"
}, },
"run_time": "Varies with read depth and sample count; expect a small single-sample run to finish in under 30 minutes with the recommended resources.", "run_time": "Varies with read depth and sample count; expect a small single-sample run to finish in under 30 minutes with the recommended resources.",
"arm_support": false "arm_support": false

View File

@ -268,12 +268,12 @@
"filepath": "igv.json", "filepath": "igv.json",
"title": "IGV configuration", "title": "IGV configuration",
"description": "JSON configuration for viewing the aligned BAMs in IGV.", "description": "JSON configuration for viewing the aligned BAMs in IGV.",
"mime-type": "text/json", "mime-type": "application/json",
"optional": true, "optional": true,
"type": "aggregated" "type": "aggregated"
}, },
"reference-index": { "reference-index": {
"filepath": "igv_reference/{{ ref_genome_file }}.fai", "filepath": "reference/{{ ref_genome_file }}.fai",
"title": "Reference FASTA index", "title": "Reference FASTA index",
"description": "FAI index for the reference genome published for IGV.", "description": "FAI index for the reference genome published for IGV.",
"mime-type": "text/tab-separated-values", "mime-type": "text/tab-separated-values",
@ -281,7 +281,7 @@
"type": "aggregated" "type": "aggregated"
}, },
"reference-gzi-index": { "reference-gzi-index": {
"filepath": "igv_reference/{{ ref_genome_file }}.gzi", "filepath": "reference/{{ ref_genome_file }}.gzi",
"title": "Reference GZI index", "title": "Reference GZI index",
"description": "GZI index for a compressed reference genome published for IGV.", "description": "GZI index for a compressed reference genome published for IGV.",
"mime-type": "application/octet-stream", "mime-type": "application/octet-stream",

View File

@ -151,7 +151,6 @@ process runJointSqanti {
path "cohort", emit: dir path "cohort", emit: dir
path "cohort/classification_summary.tsv", emit: summary path "cohort/classification_summary.tsv", emit: summary
script: script:
String extra = params.sqanti_extra_args ?: ""
String skip_orf = params.sqanti_skip_orf ? "--skipORF" : "" String skip_orf = params.sqanti_skip_orf ? "--skipORF" : ""
""" """
mkdir cohort mkdir cohort
@ -164,8 +163,7 @@ process runJointSqanti {
--report skip \ --report skip \
-t ${task.cpus} \ -t ${task.cpus} \
-d cohort \ -d cohort \
-o cohort \ -o cohort
${extra}
workflow-glue summarise_sqanti --sqanti_dir cohort \ workflow-glue summarise_sqanti --sqanti_dir cohort \
--output cohort/classification_summary.tsv --output cohort/classification_summary.tsv
""" """
@ -187,7 +185,6 @@ process runPerSampleSqanti {
tuple val(meta), path("${meta.alias}"), emit: dir tuple val(meta), path("${meta.alias}"), emit: dir
tuple val(meta), path("${meta.alias}/classification_summary.tsv"), emit: summary tuple val(meta), path("${meta.alias}/classification_summary.tsv"), emit: summary
script: script:
String extra = params.sqanti_extra_args ?: ""
String skip_orf = params.sqanti_skip_orf ? "--skipORF" : "" String skip_orf = params.sqanti_skip_orf ? "--skipORF" : ""
""" """
mkdir "${meta.alias}" mkdir "${meta.alias}"
@ -200,8 +197,7 @@ process runPerSampleSqanti {
--report skip \ --report skip \
-t ${task.cpus} \ -t ${task.cpus} \
-d "${meta.alias}" \ -d "${meta.alias}" \
-o "${meta.alias}" \ -o "${meta.alias}"
${extra}
workflow-glue summarise_sqanti --sqanti_dir "${meta.alias}" \ workflow-glue summarise_sqanti --sqanti_dir "${meta.alias}" \
--output "${meta.alias}/classification_summary.tsv" --output "${meta.alias}/classification_summary.tsv"
""" """
@ -321,19 +317,16 @@ workflow transcriptome {
) )
sample_fastas = buildSampleTranscriptomeFasta(sample_bambu_real.gtf, ref_genome) sample_fastas = buildSampleTranscriptomeFasta(sample_bambu_real.gtf, ref_genome)
if (params.skip_sqanti) {
joint_sqanti_dir = Channel.empty() joint_sqanti = runJointSqanti(
sample_sqanti_dirs = Channel.empty() joint_bambu_real.gtf.map { meta, gtf -> gtf },
} else { analysis_annotation,
joint_sqanti = runJointSqanti( ref_genome
joint_bambu_real.gtf.map { meta, gtf -> gtf }, )
analysis_annotation, sample_sqanti = runPerSampleSqanti(sample_bambu_real.gtf, analysis_annotation, ref_genome)
ref_genome joint_sqanti_dir = joint_sqanti.dir
) sample_sqanti_dirs = sample_sqanti.dir
sample_sqanti = runPerSampleSqanti(sample_bambu_real.gtf, analysis_annotation, ref_genome)
joint_sqanti_dir = joint_sqanti.dir
sample_sqanti_dirs = sample_sqanti.dir
}
emit: emit:
annotation = analysis_annotation annotation = analysis_annotation