nf-core / ampliseq

Amplicon sequencing analysis workflow using DADA2 and QIIME2
https://nf-co.re/ampliseq
MIT License
182 stars 115 forks source link

Error executing Ampliseq through pbs/Torque executor #581

Closed pehenrique closed 1 year ago

pehenrique commented 1 year ago

Description of the bug

Hello everybody,

I'm adapting my analyzes to the best practices for executing work on the cluster I use. The cluster uses PBS and I tried to configure Ampliseq by including the parameter process.executor = 'pbs' in the nextflow.config file as suggested in the Nextflow manual, however I am having the following error below. Thank you in advance for your help.

Command used and terminal output

$ nextflow run nf-core/ampliseq -profile singularity --input /home/pdantas/testes/teste-perReadCutting-fastp/results1/ --trunc_qmin 20 --max_memory '32.GB' --skip_cutadapt --outdir /home/pdantas/testes/teste-perReadCutting-fastp/results1/ampliseq

Command error:
  env: 'singularity': No such file or directory

Work dir:
  /home/pdantas/work/6f/0049e3735817362c1eb8f51cd0a43c

Tip: you can replicate the issue by changing to the process work dir and entering the command `bash .command.run`

 -- Check '.nextflow.log' file for details
ERROR ~ Cannot invoke method getAt() on null object

Relevant files

nextflow.config.txt nextflow.log.log

System information

Nextflow version: 23.04.1.5866 Hardware: HPC Executor: pbs Container engine: Singularity OS: linux ubuntu Version of nf-core/ampliseq: v2.5.0-g78b7514

d4straub commented 1 year ago

Hi there!

Please never ever modify pipeline files but rather use additional configs to modify pipeline behavior. If pipeline files are modified, I wont be able to help and not the original pipeline is used. So the best practice to start nf-core pipelines is following nf-core documentation. And here is info about configs. For your application, the optimal solution would be either an existing nf-core config for your cluster or using -c custom.config with your required settings. The file custom.config may contain:

singularity {
  enabled = true
}
process {
  executor = 'pbs'
}

I used this config as an example, but you could use any to get ideas.

pehenrique commented 1 year ago

Hi @d4straub ,

Thanks for the alert. I undo the changes in the ampliseq config file and create a new custom config file as you suggested, however the problem persists. Another thing I noticed but I don't know if it can help is that even defining the singularity in the custom file, ampliseq runs as "standard".

$ cat pipelines/custom.config
singularity {
  enabled = true
}
process {
  executor = 'pbs'
}

bin/nextflow run nf-core/ampliseq -c pipelines/custom.config --input "/home/pdantas/pipelines/sample-sheet-seR1.tsv" --trunc_qmin 20 --single_end --extension '/*_R-trimmed-1.fastq.gz' --skip_cutadapt --outdir "/home/pdantas/testes/ampliseq-se-R1"

Command error:
  env: 'singularity': No such file or directory

Work dir:
  /home/pdantas/work/f2/5aae7314f8e30cf168bdf20b1de37e

Tip: you can replicate the issue by changing to the process work dir and entering the command `bash .command.run`

 -- Check '.nextflow.log' file for details

nextflow.log

d4straub commented 1 year ago

Singularity isnt executable. Some reasons come to mind, such as not instelled, module not loaded, etc Have a look at https://github.com/nf-core/mag/issues/234 and the other issue linked, that should help.

pehenrique commented 1 year ago

Hey @d4straub ,

Thanks for the valuable help. As in the nf-core/mag#234 case, the cluster I work on also has no modules; I just needed to use conda to activate the singularity environment.

$ cat pipelines/custom.config
singularity {
  enabled = true
}
process {
  executor = 'pbs'
  beforeScript = 'source /sw/miniconda.export; conda activate singularity_04_2021'
}
d4straub commented 1 year ago

great, glad it works for now, and many thanks to posting the solution, that might help when another person has a similar problem!