diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9b63f50..4e6a3e0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -77,7 +77,7 @@ docker-run: --de_analysis \ --ref_genome differential_expression/hg38_chr20.fa --transcriptome-source reference-guided \ --ref_annotation differential_expression/gencode.v22.annotation.chr20.gtf \ - --direct_rna --minimap_index_opts '-k 15' --sample_sheet test_data/sample_sheet.csv" + --direct_rna --minimap2_index_opts '-k 15' --sample_sheet test_data/sample_sheet.csv" NF_IGNORE_PROCESSES: preprocess_reads,merge_transcriptomes,decompress_annotation,decompress_ref - if: $MATRIX_NAME == "only_differential_expression" variables: @@ -87,7 +87,7 @@ docker-run: --de_analysis \ --ref_genome differential_expression/hg38_chr20.fa \ --ref_annotation differential_expression/gencode.v22.annotation.chr20.gff \ - --direct_rna --minimap_index_opts '-k 15' \ + --direct_rna --minimap2_index_opts '-k 15' \ --ref_transcriptome differential_expression/ref_transcriptome.fasta \ --sample_sheet test_data/sample_sheet.csv" NF_IGNORE_PROCESSES: > @@ -101,7 +101,7 @@ docker-run: --de_analysis \ --ref_genome differential_expression/hg38_chr20.fa \ --ref_annotation differential_expression/gencode.v22.annotation.chr20.gff3 \ - --direct_rna --minimap_index_opts '-k 15' \ + --direct_rna --minimap2_index_opts '-k 15' \ --ref_transcriptome differential_expression/ref_transcriptome.fasta \ --sample_sheet test_data/sample_sheet.csv" NF_IGNORE_PROCESSES: > @@ -116,7 +116,7 @@ docker-run: --de_analysis \ --ref_genome differential_expression_ncbi/GRCh38.p14.NCBI_test.fna.gz \ --ref_annotation differential_expression_ncbi/GRCh38.p14_NCBI_test.gtf.gz \ - --direct_rna --minimap_index_opts '-w 25' \ + --direct_rna --minimap2_index_opts '-w 25' \ --sample_sheet test_data/sample_sheet.csv" NF_IGNORE_PROCESSES: > preprocess_reads,merge_transcriptomes,assemble_transcripts, diff --git a/CHANGELOG.md b/CHANGELOG.md index ae25ede..d7fb120 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [updated] ### Changed - Nextflow minimum required version to 23.04.2 +- `--minimap_index_opts` parameter has been changed to `minimap2_index_opts` for consistency. ## [v0.2.1] ### Changed diff --git a/README.md b/README.md index 7190350..3b372d5 100644 --- a/README.md +++ b/README.md @@ -241,7 +241,7 @@ nextflow run epi2me-labs/wf-transcriptomes \ --de_analysis \ --ref_genome differential_expression/hg38_chr20.fa \ --ref_annotation differential_expression/gencode.v22.annotation.chr20.gtf \ - --direct_rna --minimap_index_opts \ + --direct_rna --minimap2_index_opts \ -k15 ``` You can also run the differential expression section of the workflow on its own by providing a reference transcriptome and setting the transcriptome assembly parameter to false. @@ -252,7 +252,7 @@ nextflow run epi2me-labs/wf-transcriptomes \ --de_analysis \ --ref_genome differential_expression/hg38_chr20.fa \ --ref_annotation differential_expression/gencode.v22.annotation.chr20.gtf \ - --direct_rna --minimap_index_opts \ + --direct_rna --minimap2_index_opts \ -k15 \ --ref_transcriptome differential_expression/ref_transcriptome.fasta ``` diff --git a/docs/quickstart.md b/docs/quickstart.md index 0726236..06225b0 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -151,7 +151,7 @@ nextflow run epi2me-labs/wf-transcriptomes \ --de_analysis \ --ref_genome differential_expression/hg38_chr20.fa \ --ref_annotation differential_expression/gencode.v22.annotation.chr20.gtf \ - --direct_rna --minimap_index_opts \ + --direct_rna --minimap2_index_opts \ -k15 ``` You can also run the differential expression section of the workflow on its own by providing a reference transcriptome and setting the transcriptome assembly parameter to false. @@ -162,7 +162,7 @@ nextflow run epi2me-labs/wf-transcriptomes \ --de_analysis \ --ref_genome differential_expression/hg38_chr20.fa \ --ref_annotation differential_expression/gencode.v22.annotation.chr20.gtf \ - --direct_rna --minimap_index_opts \ + --direct_rna --minimap2_index_opts \ -k15 \ --ref_transcriptome differential_expression/ref_transcriptome.fasta ``` diff --git a/main.nf b/main.nf index b04eef1..556e960 100644 --- a/main.nf +++ b/main.nf @@ -137,7 +137,7 @@ process build_minimap_index{ path "genome_index.mmi", emit: index script: """ - minimap2 -t ${params.threads} ${params.minimap_index_opts} -I 1000G -d "genome_index.mmi" ${reference} + minimap2 -t ${params.threads} ${params.minimap2_index_opts} -I 1000G -d "genome_index.mmi" ${reference} """ } @@ -668,6 +668,10 @@ workflow { error = null + if (params.containsKey("minimap_index_opts")) { + error = "`--minimap_index_opts` parameter is deprecated. Use parameter `--minimap2_index_opts` instead." + } + if (!fastq.exists()) { error = "--fastq: File doesn't exist, check path." } diff --git a/nextflow.config b/nextflow.config index a72d262..6999456 100644 --- a/nextflow.config +++ b/nextflow.config @@ -40,7 +40,7 @@ params { pychopper_opts = "-m edlib" // Extra option passed to minimap2 when generating index - minimap_index_opts = "-k14" + minimap2_index_opts = "-k14" // Extra options passed to minimap2 // For SIRV data @@ -98,7 +98,7 @@ params { "--condition_sheet 'wf-transcriptomes-demo/condition_sheet.tsv'", "--direct_rna", "--fastq 'wf-transcriptomes-demo/differential_expression_fastq'", - "--minimap_index_opts '-k15'", + "--minimap2_index_opts '-k15'", "--ref_annotation 'wf-transcriptomes-demo/gencode.v22.annotation.chr20.gtf'", "--ref_genome 'wf-transcriptomes-demo/hg38_chr20.fa'", ] diff --git a/nextflow_schema.json b/nextflow_schema.json index e470723..e278be0 100644 --- a/nextflow_schema.json +++ b/nextflow_schema.json @@ -17,6 +17,7 @@ "fastq": { "type": "string", "format": "path", + "title": "FASTQ", "demo_data": "${projectDir}/test_data/fastq", "description": "FASTQ files to use in the analysis.", "help_text": "This accepts one of three cases: (i) the path to a single FASTQ file; (ii) the path to a top-level directory containing FASTQ files; (iii) the path to a directory containing one level of sub-directories which in turn contain FASTQ files. In the first and second case, a sample name can be supplied with `--sample`. In the last case, the data is assumed to be multiplexed with the names of the sub-directories as barcodes. In this case, a sample sheet can be provided with `--sample_sheet`." @@ -33,6 +34,7 @@ }, "ref_genome": { "type": "string", + "title": "Reference genome", "format": "file-path", "demo_data": "${projectDir}/test_data/SIRV_150601a.fasta", "description": "Path to reference genome sequence [.fa/.fq/.fa.gz/fq.gz]. Required for reference-based workflow.", @@ -40,12 +42,14 @@ }, "ref_transcriptome": { "type": "string", + "title": "Reference transcriptome", "format": "file-path", "description": "Transcriptome reference file. Required for precomputed transcriptome calculation and for differential expression analysis.", "help_text": "A reference transcriptome related to the sample under study. Must be supplied when the 'Transcriptome source' parameter has been set to 'precomputed' or to perform differential expression." }, "ref_annotation": { "type": "string", + "title": "Reference annotation", "format": "file-path", "demo_data": "${projectDir}/test_data/SIRV_isoforms.gtf", "description": "A reference annotation in GFF2 or GFF3 format (extensions .gtf(.gz), .gff(.gz), .gff3(.gz))", @@ -53,11 +57,13 @@ }, "direct_rna": { "type": "boolean", + "title": "direct RNA", "description": "Set to true for direct RNA sequencing.", "help_text": " Omits the pychopper step." }, "analyse_unclassified": { "type": "boolean", + "title": "Analyse unclassified", "description": "Analyse unclassified reads from input directory. By default the workflow will not process reads in the unclassified directory.", "help_text": "If selected and if the input is a multiplex directory the workflow will also process the unclassified directory." } @@ -89,6 +95,7 @@ "properties": { "sample_sheet": { "type": "string", + "title": "Sample sheet", "format": "file-path", "description": "A CSV file used to map barcodes to sample aliases. The sample sheet can be provided when the input data is a directory containing sub-directories with FASTQ files. If you are running the differential expression workflow, there should be an additional column `condition` with any two distinct labels eg. `treated`,`untreated`. There should be at least 3 repeats for each condition.", "help_text": "The sample sheet is a CSV file with, minimally, columns named `barcode` and `alias`. Extra columns are allowed. A `type` column is required for certain workflows and should have the following values; `test_sample`, `positive_control`, `negative_control`, `no_template_control`." @@ -106,23 +113,27 @@ "properties": { "plot_gffcmp_stats": { "type": "boolean", + "title": "Plot gffcompare statistics", "description": "Create a PDF of plots from showing gffcompare results", "help_text": "If set to true, a PDF file containing detailed gffcompare reults will be output" }, "gffcompare_opts": { "type": "string", + "title": "Plot gffcompare options", "description": "Extra command-line options to give to gffcompare -r", "default": " -R ", "help_text": "For a list of possible options see [gffcompare](https://ccb.jhu.edu/software/stringtie/gffcompare.shtml)." }, - "minimap_index_opts": { + "minimap2_index_opts": { "type": "string", + "title": "Minimap2 index options", "description": "Extra command-line options for minimap2 indexing.", "default": "-k14", "help_text": "See [minimap2 index options](https://lh3.github.io/minimap2/minimap2.html#4) for more information. These will only be relevant in the reference based transcriptome assembly." }, "minimap2_opts": { "type": "string", + "title": "Minimap2 options", "description": "Additional command-line options for minimap2 alignment.", "default": "-uf", "help_text": "See [minimap2 options](https://lh3.github.io/minimap2/minimap2.html#5) for further information. These will only be relevant in the reference based transcriptome assembly." @@ -142,6 +153,7 @@ }, "max_poly_run": { "type": "integer", + "title": "Maximum poly run", "description": "Max poly(A) region allowed with poly_context-sized end regions.", "help_text": "See `poly_context` parameter. This parameter defines the maximum allowed polyA tract within a `poly_context` defined genomic region.", "hidden": true, @@ -149,6 +161,7 @@ }, "stringtie_opts": { "type": "string", + "title": "Stringtie options", "description": "Extra command-line options for stringtie transcript assembly.", "default": " --conservative ", "help_text": "For additional String tie options see [here](https://github.com/gpertea/stringtie#stringtie-options)." @@ -163,7 +176,7 @@ "isOnClust2_batch_size": { "type": "integer", "description": "Number of batches to to process the data in.", - "help_text": "If set to -1 number of batches witll be the same as the number of threads avaiable.", + "help_text": "If set to -1 number of batches will be the same as the number of threads avaiable.", "default": -1 }, "isOnClust2_sort_options": { @@ -181,18 +194,21 @@ "properties": { "jaffal_refBase": { "type": "string", + "title": "JAFFAL reference genome directory", "format": "directory-path", "description": "JAFFAl reference genome directory.", "help_text": "JAFFAL human hg38 reference data directory can be downloaded from here: https://figshare.com/ndownloader/files/25410494 or see the README for alternative instructions. If custom gemome files are required, see the instructions here: https://github.com/Oshlack/JAFFA/wiki/FAQandTroubleshooting#how-can-i-generate-the-reference-files-for-a-non-supported-genome." }, "jaffal_genome": { "type": "string", + "title": "JAFFAL genome reference prefix", "description": "Genome reference prefix. e.g. hg38.", "help_text": "JAFFAL reference files are prefixed with the genome reference file name and need to be supplied . If using the human reference data provided by JAFFAL, this can be left at `hg38`.", "default": "hg38" }, "jaffal_annotation": { "type": "string", + "title": "JAFFAL annotation suffix", "description": "Annotation suffix.", "help_text": "JAFFAL reference files are suffixed with the annotation filename and this needs to be supplied. For the human hg38 reference data supplied by JAFFAL, this is `genCode22`.", "default": "genCode22" @@ -214,33 +230,43 @@ "properties": { "de_analysis": { "type": "boolean", + "title": "Differential expression analysis", "description": "Run DE anaylsis", - "help_text": "Running this requires you to provide at least two replicates for a control and treated sample as well as a condition sheet param." + "help_text": "Running this requires you to provide at least two replicates for a control and treated sample as well as a sample sheet param." }, "min_gene_expr": { "type": "integer", + "title": "Minimum gene expression", "default": 10, "description": "Minimum gene counts", "help_text": "The minimum number of total mapped sequence reads for a gene to be considered expressed." }, "min_feature_expr": { "type": "integer", + "title": "Minimum feature expression", "default": 3, "description": "Minimum transcript counts", "help_text": "The minimum number of total mapped sequence reads for a transcript to be considered." }, "min_samps_gene_expr": { "type": "integer", + "title": "Minimum samples with gene expression", "description": "Genes expressed in a minimum of this many samples will be included in the differential expression analysis.", "default": 3, "help_text": "A gene must be mapped to at least this minimum number of samples for the gene be included in the analysis." }, "min_samps_feature_expr": { "type": "integer", + "title": "Minimum samples with feature expression", "default": 1, "description": "Transcripts expressed in minimum this many samples", "help_text": "A transcript must be mapped in at least this this minimum number of samples to be included in the analysis." } + }, + "dependencies": { + "de_analysis": [ + "sample_sheet" + ] } }, "advanced_options": { @@ -256,16 +282,19 @@ }, "pychopper_opts": { "type": "string", + "title": "Pychopper options", "description": "Extra pychopper opts", "default": "-m edlib", "help_text": "See available options (here)[https://github.com/epi2me-labs/pychopper#usage]" }, "bundle_min_reads": { "type": "integer", + "title": "Bundle minimum reads", "description": "Minimum size of bam bundle for parallel processing." }, "isoform_table_nrows": { "type": "integer", + "title": "Isoform table number of rows", "description": "Maximum rows to dispay in the isoform report table", "default": 5000 } diff --git a/subworkflows/differential_expression.nf b/subworkflows/differential_expression.nf index 439ddf0..c96d784 100644 --- a/subworkflows/differential_expression.nf +++ b/subworkflows/differential_expression.nf @@ -126,7 +126,7 @@ process build_minimap_index_transcriptome{ tuple path("genome_index.mmi"), path(reference), emit: index script: """ - minimap2 -t "${task.cpus}" ${params.minimap_index_opts} -I 1000G -d "genome_index.mmi" "${reference}" + minimap2 -t "${task.cpus}" ${params.minimap2_index_opts} -I 1000G -d "genome_index.mmi" "${reference}" """ }