manifest { name = 'Digital Trial' author = 'omic' recurseSubmodules = true homePage = 'https://gitlab.com/omic/next/registry/tools/digital-trial.git' description = 'Digital drug protein interactions' mainScript = 'main.nf' nextflowVersion = '!>=21.04.3' defaultBranch = 'master' } docker { enabled = true temp = 'auto' remove = true } process { withLabel: 'gpu_process' { containerOptions = '--gpus all --rm' pod = [ [nodeSelector: [gpu: 'yes', 'gpu-type': 'geforce-rtx-3090']] ] } withLabel: 'cpu_process' { containerOptions = '--rm' } } profiles { // Minimal k8s profile for WES. WES injects its own profile.config via -C, which // supplies the executor, namespace, service account and workDir — so those are // deliberately left out here to avoid conflicting with it. // // The storage block is NOT optional. WES's injected profile does not mount any // PVC (verified: a full experiment run produced 468 KB of logs with zero // references to dreamdock/storageClaimName/volumeClaim). Without it, // /mnt/dreamdock-data does not exist inside task pods and every process that // reads params.chembl_db or params.protein_zarr fails immediately — // GET_FINAL_METABOLITES_STATIC dies with // sqlite3.OperationalError: unable to open database file // and exit status 1, on every task, regardless of input. k8s { process.executor = 'k8s' k8s { storageClaimName = 'dreamdock-data' storageMountPath = '/mnt/dreamdock-data' } } // Full standalone k8s profile for running this pipeline directly (not via WES), // e.g. `nextflow run main.nf -profile k8s_standalone` from a pod on the cluster. k8s_standalone { process.executor = 'k8s' process.namespace = 'bioinformatics' process.debug = true workDir = "/mnt/dreamdock-data/digital_trials/workdir" executor { queueSize = 0 // Increase to desired concurrency // submitRateLimit = '1 sec' // Recommended to prevent K8s API timeouts } k8s { serviceAccount = 'nextflow-sa' namespace = 'bioinformatics' storageClaimName = 'dreamdock-data' storageMountPath = '/mnt/dreamdock-data' pullPolicy = 'IfNotPresent' cleanup = true // delete pods after Ctrl+C or finished? imagePullSecrets = 'omic-registry-secret' // RUN AS DIFFERENT USERS // securityContext = [fsGroup: 1000] // securityContext = [ // runAsUser: 1000, // fsGroup: 1000, // runAsNonRoot: true // ] } // Pod-level customization process.pod = [ [env: 'NXF_DEBUG', value: '0'], [label: 'omic-app', value: 'dreamdock'], [imagePullSecret: 'gitlab-registry-secret'], // [nodeSelector: [gpu: 'yes', 'gpu-type': 'rtx-3090']], [hostPath: '/mnt/ZINC-22/', mountPath: '/mnt/ZINC-22/'] // [volumeClaim: 'conplex-index-builder-data', mountPath: '/mnt/conplex-index/'] // [privileged: true], ] } }