diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 5e32dfd8..a0b73d5c 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -27,6 +27,9 @@ If you're not used to this workflow with git, you can start with some [docs from ## Tests +You can optionally test your changes by running the pipeline locally. Then it is recommended to use the `debug` profile to +receive warnings about process selectors and other debug info. Example: `nextflow run . -profile debug,test,docker --outdir `. + When you create a pull request with changes, [GitHub Actions](https://github.com/features/actions) will run automatic tests. Typically, pull-requests are only fully reviewed when these tests are passing, though of course we can help out before then. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 5cc076f3..ed1d027b 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -19,6 +19,7 @@ Learn more about contributing: [CONTRIBUTING.md](https://github.com/nf-core/rnaf - [ ] If necessary, also make a PR on the nf-core/rnafusion _branch_ on the [nf-core/test-datasets](https://github.com/nf-core/test-datasets) repository. - [ ] Make sure your code lints (`nf-core lint`). - [ ] Ensure the test suite passes (`nextflow run . -profile test,docker --outdir `). +- [ ] Check for unexpected warnings in debug mode (`nextflow run . -profile debug,test,docker --outdir `). - [ ] Usage Documentation in `docs/usage.md` is updated. - [ ] Output Documentation in `docs/output.md` is updated. - [ ] `CHANGELOG.md` is updated. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6f960cad..33533fe1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,7 @@ jobs: - "--fastp_trim true" steps: - name: Check out pipeline code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install Nextflow uses: nf-core/setup-nextflow@v1 diff --git a/.github/workflows/fix-linting.yml b/.github/workflows/fix-linting.yml index 14c6c08a..4b02fe04 100644 --- a/.github/workflows/fix-linting.yml +++ b/.github/workflows/fix-linting.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: # Use the @nf-core-bot token to check out so we can push later - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: token: ${{ secrets.nf_core_bot_auth_token }} @@ -24,7 +24,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.nf_core_bot_auth_token }} - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 - name: Install Prettier run: npm install -g prettier @prettier/plugin-php diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index b8bdd214..905c58e4 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -14,9 +14,9 @@ jobs: EditorConfig: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 - name: Install editorconfig-checker run: npm install -g editorconfig-checker @@ -27,9 +27,9 @@ jobs: Prettier: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 - name: Install Prettier run: npm install -g prettier @@ -40,7 +40,7 @@ jobs: PythonBlack: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Check code lints with Black uses: psf/black@stable @@ -71,7 +71,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out pipeline code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install Nextflow uses: nf-core/setup-nextflow@v1 diff --git a/.github/workflows/release-announcments.yml b/.github/workflows/release-announcements.yml similarity index 100% rename from .github/workflows/release-announcments.yml rename to .github/workflows/release-announcements.yml diff --git a/.gitpod.yml b/.gitpod.yml index 25488dcc..acf72695 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -4,7 +4,9 @@ tasks: command: | pre-commit install --install-hooks nextflow self-update - + - name: unset JAVA_TOOL_OPTIONS + command: | + unset JAVA_TOOL_OPTIONS vscode: extensions: # based on nf-core.nf-core-extensionpack - codezombiech.gitignore # Language support for .gitignore files diff --git a/CHANGELOG.md b/CHANGELOG.md index 5808266d..ef0b02d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## v3.0.2dev - [date] + +### Added + +### Changed + +### Fixed + +- fix VCF_COLLECT handling when a tool is absent from FUSIONREPORT report + +### Removed + ## v3.0.1 - [2023-11-29] ### Added diff --git a/README.md b/README.md index 463d1e3f..5a6fd24e 100644 --- a/README.md +++ b/README.md @@ -61,11 +61,8 @@ In rnafusion the full-sized test includes reference building and fusion detectio ## Usage -:::note -If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how -to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) -with `-profile test` before running the workflow on actual data. -::: +> [!NOTE] +> If you are new to Nextflow and nf-core, please refer to [this page](https://nf-co.re/docs/usage/installation) on how to set-up Nextflow. Make sure to [test your setup](https://nf-co.re/docs/usage/introduction#how-to-run-a-pipeline) with `-profile test` before running the workflow on actual data. As the reference building is computationally heavy (> 24h on HPC), it is recommended to test the pipeline with the `-stub` parameter (creation of empty files): @@ -90,11 +87,9 @@ nextflow run nf-core/rnafusion \ -stub ``` -:::warning -Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those -provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; -see [docs](https://nf-co.re/usage/configuration#custom-configuration-files). -::: +> [!WARNING] +> Please provide pipeline parameters via the CLI or Nextflow `-params-file` option. Custom config files including those provided by the `-c` Nextflow option can be used to provide any configuration _**except for parameters**_; +> see [docs](https://nf-co.re/usage/configuration#custom-configuration-files). > **Notes:** > diff --git a/assets/multiqc_config.yml b/assets/multiqc_config.yml index dd83ce70..a50a5992 100644 --- a/assets/multiqc_config.yml +++ b/assets/multiqc_config.yml @@ -1,7 +1,7 @@ report_comment: > - This report has been generated by the nf-core/rnafusion + This report has been generated by the nf-core/rnafusion analysis pipeline. For information about how to interpret these results, please see the - documentation. + documentation. report_section_order: nf-core-rnafusion-methods-description: diff --git a/assets/slackreport.json b/assets/slackreport.json index 1b3cba01..66b6e474 100644 --- a/assets/slackreport.json +++ b/assets/slackreport.json @@ -3,7 +3,7 @@ { "fallback": "Plain-text summary of the attachment.", "color": "<% if (success) { %>good<% } else { %>danger<%} %>", - "author_name": "nf-core/rnafusion v${version} - ${runName}", + "author_name": "nf-core/rnafusion ${version} - ${runName}", "author_icon": "https://www.nextflow.io/docs/latest/_static/favicon.ico", "text": "<% if (success) { %>Pipeline completed successfully!<% } else { %>Pipeline completed with errors<% } %>", "fields": [ diff --git a/conf/modules.config b/conf/modules.config index e4ae2bb8..4523830a 100644 --- a/conf/modules.config +++ b/conf/modules.config @@ -18,7 +18,7 @@ process { saveAs: { filename -> filename.equals('versions.yml') ? null : filename } ] - withName: ARRIBA { + withName: 'ARRIBA' { publishDir = [ path: { "${params.outdir}/arriba" }, mode: params.publish_dir_mode, @@ -27,7 +27,7 @@ process { ext.prefix = { "${meta.id}.arriba" } } - withName: ARRIBA_DOWNLOAD { + withName: 'ARRIBA_DOWNLOAD' { publishDir = [ path: { "${params.genomes_base}/arriba" }, mode: params.publish_dir_mode, @@ -35,7 +35,7 @@ process { ] } - withName: ARRIBA_VISUALISATION { + withName: 'ARRIBA_VISUALISATION' { ext.when = { !params.fusioninspector_only && (params.starfusion || params.all) } ext.prefix = { "${meta.id}_combined_fusions_arriba_visualisation" } publishDir = [ @@ -45,7 +45,7 @@ process { ] } - withName: CUSTOM_DUMPSOFTWAREVERSIONS { + withName: 'CUSTOM_DUMPSOFTWAREVERSIONS' { publishDir = [ path: { "${params.outdir}/pipeline_info" }, mode: params.publish_dir_mode, @@ -53,7 +53,7 @@ process { ] } - withName: ENSEMBL_DOWNLOAD { + withName: 'ENSEMBL_DOWNLOAD' { publishDir = [ path: { "${params.genomes_base}/ensembl" }, mode: params.publish_dir_mode, @@ -61,11 +61,11 @@ process { ] } - withName: FASTP { + withName: 'FASTP' { ext.args = params.trim_tail ? "--trim_tail1 ${params.trim_tail} --trim_tail2 ${params.trim_tail} " : '' } - withName: FASTQC { + withName: 'FASTQC' { ext.args = '--quiet' ext.when = { !params.skip_qc } publishDir = [ @@ -75,7 +75,7 @@ process { ] } - withName: FASTQC_FOR_FASTP { + withName: 'FASTQC_FOR_FASTP' { ext.args = '--quiet' ext.prefix = { "${meta.id}_trimmed" } publishDir = [ @@ -85,11 +85,11 @@ process { ] } - withName: FUSIONCATCHER { + withName: 'FUSIONCATCHER' { ext.args = "--limitSjdbInsertNsj ${params.fusioncatcher_limitSjdbInsertNsj}" } - withName: FUSIONCATCHER_DOWNLOAD { + withName: 'FUSIONCATCHER_DOWNLOAD' { publishDir = [ path: { "${params.genomes_base}/fusioncatcher" }, mode: params.publish_dir_mode, @@ -97,13 +97,13 @@ process { ] } - withName: FUSIONINSPECTOR { + withName: 'FUSIONINSPECTOR' { ext.when = { !params.skip_vis } ext.args = { params.fusioninspector_limitSjdbInsertNsj != 1000000 ? "--STAR_xtra_params \"--limitSjdbInsertNsj ${params.fusioninspector_limitSjdbInsertNsj}\"" : '' } ext.args2 = '--annotate --examine_coding_effect' } - withName: FUSIONREPORT { + withName: 'FUSIONREPORT' { ext.when = { !params.skip_vis } ext.args = "--export csv" publishDir = [ @@ -113,7 +113,7 @@ process { ] } - withName: FUSIONREPORT_DOWNLOAD { + withName: 'FUSIONREPORT_DOWNLOAD' { ext.args = { params.qiagen ? "--qiagen" : "" } publishDir = [ path: { "${params.genomes_base}/fusion_report_db" }, @@ -122,7 +122,7 @@ process { ] } - withName: GATK4_BEDTOINTERVALLIST { + withName: 'GATK4_BEDTOINTERVALLIST' { publishDir = [ path: { "${params.genomes_base}/ensembl" }, mode: params.publish_dir_mode, @@ -130,7 +130,7 @@ process { ] } - withName: GTF_TO_REFFLAT { + withName: 'GTF_TO_REFFLAT' { publishDir = [ path: { "${params.genomes_base}/ensembl" }, mode: params.publish_dir_mode, @@ -138,7 +138,7 @@ process { ] } - withName: HGNC_DOWNLOAD { + withName: 'HGNC_DOWNLOAD' { publishDir = [ path: { "${params.genomes_base}/hgnc" }, mode: params.publish_dir_mode, @@ -146,7 +146,7 @@ process { ] } - withName: MULTIQC { + withName: 'MULTIQC' { ext.when = { !params.skip_qc } ext.args = params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' publishDir = [ @@ -156,12 +156,12 @@ process { ] } - withName: PICARD_COLLECTRNASEQMETRICS { + withName: 'PICARD_COLLECTRNASEQMETRICS' { ext.when = { !params.skip_qc && !params.fusioninspector_only && (params.starfusion || params.all) } } - withName: GATK4_MARKDUPLICATES { + withName: 'GATK4_MARKDUPLICATES' { ext.when = { !params.skip_qc && !params.fusioninspector_only && (params.starfusion || params.all) } publishDir = [ path: { "${params.outdir}/picard" }, @@ -170,7 +170,7 @@ process { ] } - withName: PICARD_COLLECTINSERTSIZEMETRICS { + withName: 'PICARD_COLLECTINSERTSIZEMETRICS' { ext.when = { !params.skip_qc && !params.fusioninspector_only && (params.starfusion || params.all) } ext.prefix = { "${meta.id}_collectinsertsize"} publishDir = [ @@ -180,7 +180,7 @@ process { ] } - withName: SAMPLESHEET_CHECK { + withName: 'SAMPLESHEET_CHECK' { publishDir = [ path: { "${params.outdir}/pipeline_info" }, mode: params.publish_dir_mode, @@ -188,7 +188,7 @@ process { ] } - withName: SAMTOOLS_FAIDX { + withName: 'SAMTOOLS_FAIDX' { publishDir = [ path: { "${params.genomes_base}/ensembl" }, mode: params.publish_dir_mode, @@ -196,7 +196,7 @@ process { ] } - withName: SAMTOOLS_INDEX_FOR_ARRIBA { + withName: 'SAMTOOLS_INDEX_FOR_ARRIBA' { ext.prefix = { "${meta.id}_star_for_arriba_sorted" } publishDir = [ path: { "${params.outdir}/cram_arriba" }, @@ -205,7 +205,7 @@ process { ] } - withName: SAMTOOLS_SORT_FOR_ARRIBA { + withName: 'SAMTOOLS_SORT_FOR_ARRIBA' { ext.prefix = { "${meta.id}_star_for_arriba_sorted" } publishDir = [ path: { "${params.outdir}/cram_arriba" }, @@ -214,7 +214,7 @@ process { ] } - withName: SAMTOOLS_VIEW_FOR_ARRIBA { + withName: 'SAMTOOLS_VIEW_FOR_ARRIBA' { ext.args = { "--output-fmt cram" } ext.prefix = { "${meta.id}_star_for_arriba_sorted" } publishDir = [ @@ -224,7 +224,7 @@ process { ] } - withName: SAMTOOLS_INDEX_FOR_STARFUSION { + withName: 'SAMTOOLS_INDEX_FOR_STARFUSION' { publishDir = [ path: { "${params.outdir}/star_for_starfusion" }, mode: params.publish_dir_mode, @@ -232,7 +232,7 @@ process { ] } - withName: SAMTOOLS_INDEX_FOR_STARFUSION_CRAM { + withName: 'SAMTOOLS_INDEX_FOR_STARFUSION_CRAM' { ext.prefix = { "${meta.id}.star_for_starfusion.Aligned.sortedByCoord.out" } publishDir = [ path: { "${params.outdir}/cram_starfusion" }, @@ -241,7 +241,7 @@ process { ] } - withName: SAMTOOLS_VIEW_FOR_STARFUSION { + withName: 'SAMTOOLS_VIEW_FOR_STARFUSION' { ext.args = { "--output-fmt cram" } ext.prefix = { "${meta.id}.star_for_starfusion.Aligned.sortedByCoord.out" } publishDir = [ @@ -251,7 +251,7 @@ process { ] } - withName: STAR_FOR_ARRIBA { + withName: 'STAR_FOR_ARRIBA' { publishDir = [ path: { "${params.outdir}/star_for_arriba" }, mode: params.publish_dir_mode, @@ -275,7 +275,7 @@ process { --chimMultimapNmax 50' } - withName: STAR_FOR_STARFUSION { + withName: 'STAR_FOR_STARFUSION' { publishDir = [ path: { "${params.outdir}/star_for_starfusion" }, mode: params.publish_dir_mode, @@ -307,7 +307,7 @@ process { --quantMode GeneCounts' } - withName: STAR_GENOMEGENERATE { + withName: 'STAR_GENOMEGENERATE' { ext.args = "--sjdbOverhang ${params.read_length - 1}" cpus = { check_max( 24 * task.attempt, 'cpus' ) } memory = { check_max( 100.GB * task.attempt, 'memory' ) } @@ -319,7 +319,7 @@ process { ] } - withName: STARFUSION_BUILD { + withName: 'STARFUSION_BUILD' { cpus = { check_max( 24 * task.attempt, 'cpus' ) } memory = { check_max( 100.GB * task.attempt, 'memory' ) } time = { check_max( 2.d * task.attempt, 'time' ) } @@ -330,7 +330,7 @@ process { ] } - withName: STARFUSION_DOWNLOAD { + withName: 'STARFUSION_DOWNLOAD' { cpus = { check_max( 2 * task.attempt, 'cpus' ) } memory = { check_max( 24.GB * task.attempt, 'memory' ) } time = { check_max( 6.h * task.attempt, 'time' ) } @@ -341,7 +341,7 @@ process { ] } - withName: STRINGTIE_MERGE { + withName: 'STRINGTIE_MERGE' { publishDir = [ path: { "${params.outdir}/stringtie/${meta.id}" }, mode: params.publish_dir_mode, @@ -349,7 +349,7 @@ process { ] } - withName: VCF_COLLECT { + withName: 'VCF_COLLECT' { ext.when = {!params.fusioninspector_only} } } diff --git a/docs/usage.md b/docs/usage.md index b3625332..f7066228 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -105,7 +105,7 @@ The references are only built based on ensembl version 102. It is not possible c You will need to create a samplesheet with information about the samples you would like to analyse before running the pipeline. The pipeline will detect whether a sample is single- or paired-end from the samplesheet - the `fastq_2` column is empty for single-end. The samplesheet has to be a comma-separated file (.csv) but can have as many columns as you desire. There is a strict requirement for the first 4 columns to match those defined in the table below with the header row included. A final samplesheet file consisting of both single- and paired-end data may look something like the one below. This is for 6 samples, where `TREATMENT_REP3` has been sequenced twice. -```console +```csv title="samplesheet.csv" sample,fastq_1,fastq_2,strandedness CONTROL_REP1,AEG588A1_S1_L002_R1_001.fastq.gz,AEG588A1_S1_L002_R2_001.fastq.gz,forward CONTROL_REP2,AEG588A2_S2_L002_R1_001.fastq.gz,AEG588A2_S2_L002_R2_001.fastq.gz,forward diff --git a/lib/NfcoreTemplate.groovy b/lib/NfcoreTemplate.groovy index 01b8653d..e248e4c3 100755 --- a/lib/NfcoreTemplate.groovy +++ b/lib/NfcoreTemplate.groovy @@ -4,6 +4,7 @@ import org.yaml.snakeyaml.Yaml import groovy.json.JsonOutput +import nextflow.extension.FilesEx class NfcoreTemplate { @@ -141,12 +142,14 @@ class NfcoreTemplate { try { if (params.plaintext_email) { throw GroovyException('Send plaintext e-mail, not HTML') } // Try to send HTML e-mail using sendmail + def sendmail_tf = new File(workflow.launchDir.toString(), ".sendmail_tmp.html") + sendmail_tf.withWriter { w -> w << sendmail_html } [ 'sendmail', '-t' ].execute() << sendmail_html log.info "-${colors.purple}[$workflow.manifest.name]${colors.green} Sent summary e-mail to $email_address (sendmail)-" } catch (all) { // Catch failures and try with plaintext def mail_cmd = [ 'mail', '-s', subject, '--content-type=text/html', email_address ] - if ( mqc_report.size() <= max_multiqc_email_size.toBytes() ) { + if ( mqc_report != null && mqc_report.size() <= max_multiqc_email_size.toBytes() ) { mail_cmd += [ '-A', mqc_report ] } mail_cmd.execute() << email_html @@ -155,14 +158,16 @@ class NfcoreTemplate { } // Write summary e-mail HTML to a file - def output_d = new File("${params.outdir}/pipeline_info/") - if (!output_d.exists()) { - output_d.mkdirs() - } - def output_hf = new File(output_d, "pipeline_report.html") + def output_hf = new File(workflow.launchDir.toString(), ".pipeline_report.html") output_hf.withWriter { w -> w << email_html } - def output_tf = new File(output_d, "pipeline_report.txt") + FilesEx.copyTo(output_hf.toPath(), "${params.outdir}/pipeline_info/pipeline_report.html"); + output_hf.delete() + + // Write summary e-mail TXT to a file + def output_tf = new File(workflow.launchDir.toString(), ".pipeline_report.txt") output_tf.withWriter { w -> w << email_txt } + FilesEx.copyTo(output_tf.toPath(), "${params.outdir}/pipeline_info/pipeline_report.txt"); + output_tf.delete() } // @@ -227,15 +232,14 @@ class NfcoreTemplate { // Dump pipeline parameters in a json file // public static void dump_parameters(workflow, params) { - def output_d = new File("${params.outdir}/pipeline_info/") - if (!output_d.exists()) { - output_d.mkdirs() - } - def timestamp = new java.util.Date().format( 'yyyy-MM-dd_HH-mm-ss') - def output_pf = new File(output_d, "params_${timestamp}.json") + def filename = "params_${timestamp}.json" + def temp_pf = new File(workflow.launchDir.toString(), ".${filename}") def jsonStr = JsonOutput.toJson(params) - output_pf.text = JsonOutput.prettyPrint(jsonStr) + temp_pf.text = JsonOutput.prettyPrint(jsonStr) + + FilesEx.copyTo(temp_pf.toPath(), "${params.outdir}/pipeline_info/params_${timestamp}.json") + temp_pf.delete() } // diff --git a/modules.json b/modules.json index 345e65b8..f6b848a7 100644 --- a/modules.json +++ b/modules.json @@ -37,7 +37,7 @@ }, "fastqc": { "branch": "master", - "git_sha": "3f5420aa22e00bd030a2556dfdffc9e164ec0ec5", + "git_sha": "65ad3e0b9a4099592e1102e92e10455dc661cf53", "installed_by": ["modules"] }, "gatk4/bedtointervallist": { @@ -57,7 +57,7 @@ }, "multiqc": { "branch": "master", - "git_sha": "1537442a7be4a78efa3d1ff700a923c627bbda5d", + "git_sha": "4ab13872435962dadc239979554d13709e20bf29", "installed_by": ["modules"] }, "picard/collectinsertsizemetrics": { diff --git a/modules/nf-core/fastqc/main.nf b/modules/nf-core/fastqc/main.nf index 50e59f2b..9e19a74c 100644 --- a/modules/nf-core/fastqc/main.nf +++ b/modules/nf-core/fastqc/main.nf @@ -37,7 +37,7 @@ process FASTQC { cat <<-END_VERSIONS > versions.yml "${task.process}": - fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" ) + fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) END_VERSIONS """ @@ -49,7 +49,7 @@ process FASTQC { cat <<-END_VERSIONS > versions.yml "${task.process}": - fastqc: \$( fastqc --version | sed -e "s/FastQC v//g" ) + fastqc: \$( fastqc --version | sed '/FastQC v/!d; s/.*v//' ) END_VERSIONS """ } diff --git a/modules/nf-core/fastqc/tests/main.nf.test b/modules/nf-core/fastqc/tests/main.nf.test index 6437a144..b9e8f926 100644 --- a/modules/nf-core/fastqc/tests/main.nf.test +++ b/modules/nf-core/fastqc/tests/main.nf.test @@ -38,4 +38,72 @@ nextflow_process { ) } } +// TODO +// // +// // Test with paired-end data +// // +// workflow test_fastqc_paired_end { +// input = [ +// [id: 'test', single_end: false], // meta map +// [ +// file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), +// file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true) +// ] +// ] + +// FASTQC ( input ) +// } + +// // +// // Test with interleaved data +// // +// workflow test_fastqc_interleaved { +// input = [ +// [id: 'test', single_end: false], // meta map +// file(params.test_data['sarscov2']['illumina']['test_interleaved_fastq_gz'], checkIfExists: true) +// ] + +// FASTQC ( input ) +// } + +// // +// // Test with bam data +// // +// workflow test_fastqc_bam { +// input = [ +// [id: 'test', single_end: false], // meta map +// file(params.test_data['sarscov2']['illumina']['test_paired_end_sorted_bam'], checkIfExists: true) +// ] + +// FASTQC ( input ) +// } + +// // +// // Test with multiple samples +// // +// workflow test_fastqc_multiple { +// input = [ +// [id: 'test', single_end: false], // meta map +// [ +// file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true), +// file(params.test_data['sarscov2']['illumina']['test_2_fastq_gz'], checkIfExists: true), +// file(params.test_data['sarscov2']['illumina']['test2_1_fastq_gz'], checkIfExists: true), +// file(params.test_data['sarscov2']['illumina']['test2_2_fastq_gz'], checkIfExists: true) +// ] +// ] + +// FASTQC ( input ) +// } + +// // +// // Test with custom prefix +// // +// workflow test_fastqc_custom_prefix { +// input = [ +// [ id:'mysample', single_end:true ], // meta map +// file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz'], checkIfExists: true) +// ] + +// FASTQC ( input ) +// } } diff --git a/modules/nf-core/multiqc/tests/main.nf.test b/modules/nf-core/multiqc/tests/main.nf.test index 68fffa90..81b590fd 100644 --- a/modules/nf-core/multiqc/tests/main.nf.test +++ b/modules/nf-core/multiqc/tests/main.nf.test @@ -8,7 +8,6 @@ nextflow_process { tag "multiqc" test("MULTIQC: FASTQC") { - setup { run("FASTQC") { script "../../fastqc/main.nf" @@ -29,7 +28,7 @@ nextflow_process { } process { """ - input[0] = FASTQC.out.zip.collect { it[1] } + input[0] = Channel.of([file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz_fastqc_zip'], checkIfExists: true)]) input[1] = [] input[2] = [] input[3] = [] @@ -49,7 +48,7 @@ nextflow_process { } test("MULTIQC: FASTQC and a config file") { - + setup { run("FASTQC") { script "../../fastqc/main.nf" @@ -70,7 +69,7 @@ nextflow_process { } process { """ - input[0] = FASTQC.out.zip.collect { it[1] } + input[0] = Channel.of([file(params.test_data['sarscov2']['illumina']['test_1_fastq_gz_fastqc_zip'], checkIfExists: true)]) input[1] = Channel.of(file("https://github.com/nf-core/tools/raw/dev/nf_core/pipeline-template/assets/multiqc_config.yml", checkIfExists: true)) input[2] = [] input[3] = [] diff --git a/nextflow.config b/nextflow.config index 3a54be0c..9b754ac0 100644 --- a/nextflow.config +++ b/nextflow.config @@ -144,6 +144,7 @@ profiles { dumpHashes = true process.beforeScript = 'echo $HOSTNAME' cleanup = false + nextflow.enable.configProcessNamesValidation = true } conda { conda.enabled = true @@ -166,16 +167,16 @@ profiles { } docker { docker.enabled = true - docker.userEmulation = true conda.enabled = false singularity.enabled = false podman.enabled = false shifter.enabled = false charliecloud.enabled = false apptainer.enabled = false + docker.runOptions = '-u $(id -u):$(id -g)' } arm { - docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64' + docker.runOptions = '-u $(id -u):$(id -g) --platform=linux/amd64' } singularity { singularity.enabled = true @@ -248,7 +249,7 @@ singularity.registry = 'quay.io' // Nextflow plugins plugins { - id 'nf-validation' // Validation of pipeline parameters and creation of an input channel from a sample sheet + id 'nf-validation@1.1.3' // Validation of pipeline parameters and creation of an input channel from a sample sheet } // Export these variables to prevent local Python/R libraries from conflicting with those in the container @@ -265,6 +266,9 @@ env { // Capture exit codes from upstream processes when piping process.shell = ['/bin/bash', '-euo', 'pipefail'] +// Disable process selector warnings by default. Use debug profile to enable warnings. +nextflow.enable.configProcessNamesValidation = false + def trace_timestamp = new java.util.Date().format( 'yyyy-MM-dd_HH-mm-ss') timeline { enabled = true @@ -290,7 +294,7 @@ manifest { description = """Nextflow rnafusion analysis pipeline, part of the nf-core community.""" mainScript = 'main.nf' nextflowVersion = '!>=23.04.0' - version = '3.0.1' + version = '3.0.2dev' doi = '' }