nf-core / tools

Python package with helper tools for the nf-core community.
https://nf-co.re
MIT License
232 stars 187 forks source link

lint fails missing variables that are present #3075

Closed mandysulli closed 2 months ago

mandysulli commented 2 months ago

Description of the bug

Hello, when I lint my pipeline, I only get 3 fails that say I don't have process.memory, process.cpu or process.time in my nextflow_config, but I do have them defined in my nextflow.config file. This is how they are set up in my config file: // Resources - expected to be overwritten process.memory = '5.GB' process.cpus = 1 process.time = '72.h'

Command used and terminal output

$ nf-core lint
─
╭─ [✗] 3 Pipeline Tests Failed ──────────────────────────────────────────────────────────────────────────────────────────────
│
│ nextflow_config: Config variable not found: process.cpus
│ nextflow_config: Config variable not found: process.memory
│ nextflow_config: Config variable not found: process.time
│
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

System information

Nextflow version: nextflow/23.10/0 Hardware: HPC - interacftive session OS: biolinux Version of nf-core:2.14.1

mirpedrol commented 2 months ago

Hi @mandysulli , could you run nextflow config . and check if you see cpus, memory and time in the process scope?

mandysulli commented 2 months ago

Yes! Here is the output:

$ nextflow config
params {
   input = null
   e = null
   p = null
   process_q = null
   multiqc_config = null
   multiqc_title = null
   multiqc_logo = null
   max_multiqc_email_size = '25.MB'
   multiqc_methods_description = null
   outdir = null
   publish_dir_mode = 'copy'
   email = null
   email_on_fail = null
   monochrome_logs = false
   hook_url = null
   help = false
   version = null
   config_profile_name = null
   config_profile_description = null
   custom_config_version = 'master'
   custom_config_base = 'https://raw.githubusercontent.com/nf-core/configs/master'
   config_profile_contact = null
   config_profile_url = null
   process {
      memory = '5.GB'
      cpus = 1
      time = '72.h'
   }
   max_memory = '128.GB'
   max_cpus = 16
   max_time = '240.h'
   validationFailUnrecognisedParams = false
   validationLenientMode = false
   validationSchemaIgnoreParams = false
   validationShowHiddenParams = false
   validate_params = true
}

plugins = ['nf-validation@1.1.3', 'nf-schema@2.0.0']

env {
   PYTHONNOUSERSITE = 1
   R_PROFILE_USER = '/.Rprofile'
   R_ENVIRON_USER = '/.Renviron'
   NFX_OPTS = '-Xms=512m -Xmx=8g'
}

process {
   shell = ['/bin/bash', '-euo', 'pipefail']
   publishDir = [path:{ "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" }, mode:'copy', saveAs:{ filename -> filename.equals('versions.yml') ? null : filename }]
   withName:SAMPLESHEET_CHECK {
      publishDir = [path:{ "${params.outdir}/pipeline_info" }, mode:'copy', saveAs:{ filename -> filename.equals('versions.yml') ? null : filename }]
   }
   withName:FASTQC {
      ext {
         args = '--quiet'
      }
   }
   withName:MULTIQC {
      ext {
         args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' }
      }
      publishDir = [path:{ "${params.outdir}/multiqc" }, mode:'copy', saveAs:{ filename -> filename.equals('versions.yml') ? null : filename }]
   }
}

nextflow {
   enable {
      configProcessNamesValidation = false
   }
}

timeline {
   enabled = true
   file = 'null/execution_timeline_2024-07-18_08-26-33.html'
}

report {
   enabled = true
   file = 'null/execution_report_2024-07-18_08-26-33.html'
}

trace {
   enabled = true
   file = 'null/execution_trace_2024-07-18_08-26-33.txt'
}

dag {
   enabled = true
   file = 'null/pipeline_dag_2024-07-18_08-26-33.html'
}

manifest {
   name = 'mira/cli'
   author = 'Ben Rambo-Martin, Kristine Lacek, Reina Chau, Amanda Sullivan'
   homePage = 'https://github.com/mira/cli'
   description = 'Pipeline for Influenza, SARS-CoV-2, and RSV genome assembly, annotation, and curation'
   mainScript = 'main.nf'
   nextflowVersion = '!>=23.04.0'
   version = '1.0dev'
   doi = ''
}
mirpedrol commented 2 months ago

This looks good, you shouldn't see any errors. How does your .nf-core.yml file look like?

mandysulli commented 2 months ago

I noticed that I had two process {} chunks with different things in them, so I moved them together in the code and now it works. See below for the new set up.

$ nextflow config params { input = null e = null p = null process_q = null multiqc_config = null multiqc_title = null multiqc_logo = null max_multiqc_email_size = '25.MB' multiqc_methods_description = null outdir = null publish_dir_mode = 'copy' email = null email_on_fail = null monochrome_logs = false hook_url = null help = false version = null config_profile_name = null config_profile_description = null custom_config_version = 'master' custom_config_base = 'https://raw.githubusercontent.com/nf-core/configs/master' config_profile_contact = null config_profile_url = null max_memory = '128.GB' max_cpus = 16 max_time = '240.h' validationFailUnrecognisedParams = false validationLenientMode = false validationSchemaIgnoreParams = false validationShowHiddenParams = false validate_params = true }

plugins = ['nf-validation@1.1.3', 'nf-schema@2.0.0']

env { PYTHONNOUSERSITE = 1 R_PROFILE_USER = '/.Rprofile' R_ENVIRON_USER = '/.Renviron' NFX_OPTS = '-Xms=512m -Xmx=8g' }

process { shell = ['/bin/bash', '-euo', 'pipefail'] memory = '5.GB' cpus = 1 time = '72.h' publishDir = [path:{ "${params.outdir}/${task.process.tokenize(':')[-1].tokenize('_')[0].toLowerCase()}" }, mode:'copy', saveAs:{ filename -> filename.equals('versions.yml') ? null : filename }] withName:SAMPLESHEET_CHECK { publishDir = [path:{ "${params.outdir}/pipeline_info" }, mode:'copy', saveAs:{ filename -> filename.equals('versions.yml') ? null : filename }] } withName:FASTQC { ext { args = '--quiet' } } withName:MULTIQC { ext { args = { params.multiqc_title ? "--title \"$params.multiqc_title\"" : '' } } publishDir = [path:{ "${params.outdir}/multiqc" }, mode:'copy', saveAs:{ filename -> filename.equals('versions.yml') ? null : filename }] } }

nextflow { enable { configProcessNamesValidation = false } }

timeline { enabled = true file = 'null/execution_timeline_2024-07-18_08-56-52.html' }

report { enabled = true file = 'null/execution_report_2024-07-18_08-56-52.html' }

trace { enabled = true file = 'null/execution_trace_2024-07-18_08-56-52.txt' }

dag { enabled = true file = 'null/pipeline_dag_2024-07-18_08-56-52.html' }

manifest { name = 'mira/cli' author = 'Ben Rambo-Martin, Kristine Lacek, Reina Chau, Amanda Sullivan' homePage = 'https://github.com/mira/cli' description = 'Pipeline for Influenza, SARS-CoV-2, and RSV genome assembly, annotation, and curation' mainScript = 'main.nf' nextflowVersion = '!>=23.04.0' version = '1.0dev' doi = '' }

mirpedrol commented 2 months ago

Ah ok! I'm glad it is working now :)

mandysulli commented 2 months ago

Thanks for the help!