Skip to content
Snippets Groups Projects
main.nf 4.18 KiB
Newer Older
xgrand's avatar
xgrand committed
version = "6.4.6"
container_url = "xgrand/ont-guppy:${version}"

params.config_file = ""
xgrand's avatar
xgrand committed
params.basecalling_out = ""
params.flowcell = "FLO-MIN106"
params.kit = "SQK-PBK004"
params.min_qscore = 7.0
params.gpu_runners_per_device = 1
params.num_callers = 1
params.chunks_per_runner = 1
aliarifki's avatar
aliarifki committed
options = ""
xgrand's avatar
xgrand committed
process basecall_fast5_gpu {
  container = "${container_url}"
xgrand's avatar
xgrand committed
  tag "$fast5_folder"
  if (params.basecalling_out != "") {
    publishDir "results/${params.basecalling_out}", mode: 'copy'
  }

  if (params.flowcell == "") {
      errorFlowcell << "WARNING ! No Flowcell type given..."
      errorFlowcell.view()
  }

  if (params.kit == "") {
      errorKit "WARNING ! No kit type given..."
      errorKit.view()
  }
aliarifki's avatar
aliarifki committed

aliarifki's avatar
aliarifki committed
  if (params.config_file != "") {
    options = "-c /opt/ont/guppy/data/${params.config_file}"
  }
  else {
    options = "--flowcell ${params.flowcell} \
--kit ${params.kit} "
  }
aliarifki's avatar
aliarifki committed

xgrand's avatar
xgrand committed
  input:
    path(fast5_folder)
xgrand's avatar
xgrand committed

  output:
    path "pass", emit: pass
    path "fail", emit: fail
    path "sequencing_summary.txt", emit: sequencing_summary
    path "sequencing_telemetry.js", emit: sequencing_telemetry

  script:
"""
echo "Start basecalling using GPUs."
# guppy_basecaller --print_workflows
path=\$(readlink -f ${fast5_folder})
find \${path} -type f -name "*.fast5" > allfast5files.txt
xgrand's avatar
xgrand committed
guppy_basecaller --compress_fastq \
   -i / \
   --input_file_list allfast5files.txt \
xgrand's avatar
xgrand committed
   -s . \
   -x "cuda:all" \
   --min_qscore ${params.min_qscore} \
   --gpu_runners_per_device ${params.gpu_runners_per_device} \
   --num_callers ${params.num_callers} \
   --chunks_per_runner ${params.chunks_per_runner} \
   --flowcell ${params.flowcell} \
   --kit ${params.kit}
xgrand's avatar
xgrand committed
"""
}

// A modifier quand le process gpu marchera
xgrand's avatar
xgrand committed
process basecall_fast5_cpu {
  container = "${container_url}"
  label "big_mem_multi_cpus"
  tag "$fast5_folder"
  if (params.basecalling_out != "") {
    publishDir "results/${params.basecalling_out}", mode: 'copy'
  }

  if (params.flowcell == "") {
      errorFlowcell << "WARNING ! No Flowcell type given..."
      errorFlowcell.view()
  }

  if (params.kit == "") {
      errorKit "WARNING ! No kit type given..."
      errorKit.view()
  }

aliarifki's avatar
aliarifki committed
  if (params.config_file != "") {
    options = "-c /opt/ont/guppy/data/${params.config_file}"
  }
  else {
    options = "--flowcell ${params.flowcell} \
--kit ${params.kit} "
  }

xgrand's avatar
xgrand committed
  input:
    val(fast5_folder)

  output:
    path "pass", emit: pass
    path "fail", emit: fail
    path "sequencing_summary.txt", emit: sequencing_summary
    path "sequencing_telemetry.js", emit: sequencing_telemetry

  script:
"""
aliarifki's avatar
aliarifki committed
echo "Start basecalling using G=CPUs."
# guppy_basecaller --print_workflows
path=\$(readlink -f ${fast5_folder})
find \${path} -type f -name "*.fast5" > allfast5files.txt
xgrand's avatar
xgrand committed
guppy_basecaller --compress_fastq \
   -i / \
   --input_file_list allfast5files.txt \
xgrand's avatar
xgrand committed
   -s . \
aliarifki's avatar
aliarifki committed
   -x "cuda:all" \
   --min_qscore ${params.min_qscore} \
   --cpu_runners_per_device ${params.cpu_runners_per_device} \
xgrand's avatar
xgrand committed
   --num_callers ${params.num_callers} \
aliarifki's avatar
aliarifki committed
   --chunks_per_runner ${params.chunks_per_runner} \
   ${options}
xgrand's avatar
xgrand committed
"""
params.kit_barcoding = "EXP-PBC001"
process barcoding_gpu {
  container = "${container_url}"
  label "gpus"
aliarifki's avatar
aliarifki committed
  tag "$pass_path"
  if (params.barcoding_out != "") {
    publishDir "results/${params.barcoding_out}", mode: 'copy'
  }

  input:
    path(pass_path)
  
  output:
  
  script:
"""
guppy_barcoder \
  --input_path ${pass_path} \
  --save_path . \
  -t ${params.gpu_threads_per_caller} \
  --config ${params.config_file} \
  #--barcode_kits ${params.kit_barcoding} \
  --progress_stats_frequency 60 \
  --enable_trim_barcodes \
  --trim_adapters \
  --compress_fastq
"""
}

process barcoding_cpu {
aliarifki's avatar
aliarifki committed
  container = "${container_url}"
  label "big_mem_multi_cpus"
aliarifki's avatar
aliarifki committed
  tag "$pass_path"
aliarifki's avatar
aliarifki committed
  if (params.barcoding_out != "") {
    publishDir "results/${params.barcoding_out}", mode: 'copy'
  }

  input:
    path(pass_path)
  
  output:
aliarifki's avatar
aliarifki committed
guppy_barcoder \
  --input_path ${pass_path} \
  --save_path . \
  -t ${task.cpus} \
  --barcode_kits ${params.kit_barcoding} \
aliarifki's avatar
aliarifki committed
  --progress_stats_frequency 60 \
  --enable_trim_barcodes \
  --trim_adapters \
  --compress_fastq
"""
aliarifki's avatar
aliarifki committed
}