The PVC holding chembl_36.db and protein_seq.zarr was never mounted into task pods: WES's injected profile.config supplies no storage config (verified across a full run's logs). Without /mnt/dreamdock-data, sqlite3 raises 'unable to open database file' and every GET_FINAL_METABOLITES_STATIC task exits 1. Restore storageClaimName/storageMountPath, and add a probe that reports what is visible before opening sqlite so the failure names its own cause.
102 lines
3.1 KiB
Plaintext
Executable File
102 lines
3.1 KiB
Plaintext
Executable File
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],
|
|
]
|
|
|
|
}
|
|
}
|
|
|