nextflowVersion = '>=20'

manifest {
    homePage = 'https://gitbio.ens-lyon.fr/LBMC/nextflow'
    description = 'pipeline to '
    mainScript = 'main.nf'
    version = '0.0.0'
}

report {
  enabled = true
  file = "$baseDir/../results/report.html"
}

profiles {
  docker {
    docker.temp = "auto"
    docker.enabled = true
    process {
      errorStrategy = 'finish'
      memory = '16GB'
      withLabel: big_mem_mono_cpus {
        cpus = 1
      }
      withLabel: big_mem_multi_cpus {
        cpus = 4
      }
      withLabel: small_mem_mono_cpus {
        cpus = 1
        memory = '2GB'
      }
      withLabel: small_mem_multi_cpus {
        cpus = 4
        memory = '2GB'
      }
            withLabel: mid_mem_mono_cpus {
        cpus = 1
        memory = '8GB'
      }
      withLabel: mid_mem_multi_cpus {
        cpus = 4
        memory = '8GB'
      }
    }
  }
  podman {
    podman.enabled = true
    process {
      errorStrategy = 'finish'
      memory = '12GB'
      withLabel: big_mem_mono_cpus {
        cpus = 1
      }
      withLabel: big_mem_multi_cpus {
        cpus = 4
      }
      withLabel: small_mem_mono_cpus {
        cpus = 1
        memory = '2GB'
      }
      withLabel: small_mem_multi_cpus {
        cpus = 4
        memory = '2GB'
      }
            withLabel: mid_mem_mono_cpus {
        cpus = 1
        memory = '8GB'
      }
      withLabel: mid_mem_multi_cpus {
        cpus = 4
        memory = '8GB'
      }
    }
  }
  singularity {
    singularity.enabled = true
    singularity.cacheDir = "./bin/"
    singularity.runOptions = "-B /home/*"
    process {
      errorStrategy = 'finish'
      memory = '12GB'
      withLabel: big_mem_mono_cpus {
        cpus = 1
      }
      withLabel: big_mem_multi_cpus {
        cpus = 8
      }
      withLabel: small_mem_mono_cpus {
        cpus = 1
        memory = '2GB'
      }
      withLabel: small_mem_multi_cpus {
        cpus = 8
        memory = '2GB'
      }
      withLabel: mid_mem_mono_cpus {
        cpus = 1
        memory = '8GB'
      }
      withLabel: mid_mem_multi_cpus {
        cpus = 8
        memory = '8GB'
      }
    }
  }
  pollux {
    singularity.enabled = true
    singularity.cacheDir = "./bin/"
    singularity.runOptions = "--bind /data,/scratch,/scratch2"
    process {
      executor = "slurm"
      errorStrategy = 'finish'
      memory = '32GB'
      withLabel: big_mem_mono_cpus {
        cpus = 1
      }
      withLabel: big_mem_multi_cpus {
        cpus = 16
      }
      withLabel: small_mem_mono_cpus {
        cpus = 1
        memory = '2GB'
      }
      withLabel: small_mem_multi_cpus {
        cpus = 8
        memory = '2GB'
      }
      withLabel: mid_mem_mono_cpus {
        cpus = 1
        memory = '8GB'
      }
      withLabel: mid_mem_multi_cpus {
        cpus = 8
        memory = '8GB'
      }
      withLabel: gpus {
        maxForks = 1
        containerOptions = '--nv'
      }
    }
  }
  psmn {
    charliecloud.enabled = true
    charliecloud.cacheDir = "/Xnfs/abc/charliecloud"
    charliecloud.runOptions = "--bind /scratch:/scratch --bind /Xnfs:/Xnfs"
    charliecloud.readOnlyInputs = true
    process{
      errorStrategy = { sleep(Math.pow(2, task.attempt) * 200 as long); return 'retry' }
      maxRetries = 3
      withLabel: big_mem_mono_cpus {
        executor = "slurm"
        cpus = 1
        memory = "128GB"
        time = "24h"
        clusterOptions = "--partition=Lake,E5,Cascade"
      }
      withLabel: big_mem_multi_cpus {
        executor = "slurm"
        cpus = 32
        memory = "192GB"
        time = "24h"
        clusterOptions = "--partition=Lake,E5,Cascade"
      }
      withLabel: small_mem_mono_cpus {
        executor = "slurm"
        cpus = 1
        memory = "16GB"
        time = "24h"
        clusterOptions = "--partition=Lake,E5,Cascade"
      }
      withLabel: small_mem_multi_cpus {
        executor = "slurm"
        cpus = 32
        memory = "16GB"
        time = "24h"
        clusterOptions = "--partition=Lake,E5,Cascade"
      }
    }
  }
  ccin2p3 {
    singularity.enabled = true
    singularity.cacheDir = "$baseDir/../bin/"
    singularity.runOptions = "--bind /pbs,/sps,/scratch,/tmp"
    process{
      maxRetries = 3
      withLabel: big_mem_mono_cpus {
        scratch = true
        stageInMode = "copy"
        stageOutMode = "rsync"
        executor = "slurm"
        clusterOptions = "--licenses=sps"
        cpus = 1
        memory = "8GB"
        queue = "htc"
      }
      withLabel: big_mem_multi_cpus {
        scratch = true
        stageInMode = "copy"
        stageOutMode = "rsync"
        executor = "slurm"
        clusterOptions = "--licenses=sps"
        cpus = 1
        memory = "8GB"
        queue = "htc"
      }
      withLabel: small_mem_mono_cpus {
        scratch = true
        stageInMode = "copy"
        stageOutMode = "rsync"
        executor = "slurm"
        clusterOptions = "--licenses=sps"
        cpus = 1
        memory = "8GB"
        queue = "htc"
      }
      withLabel: small_mem_multi_cpus {
        scratch = true
        stageInMode = "copy"
        stageOutMode = "rsync"
        executor = "slurm"
        clusterOptions = "--licenses=sps"
        cpus = 1
        memory = "8GB"
        queue = "htc"
      }
    }
  }
}