Custom nf-core/nanoseq pipeline for Oxford Nanopore long-read sequencing, adapted for the UPWASZAK lab at EPFL: https://www.epfl.ch/labs/upwaszak
We provide four wrapper scripts for common use cases:
- Runs basecalling locally on a GPU-enabled machine (BMO)
- Transfers data and the pipeline to a remote server (TREX) via
rsync - SSHes into TREX, starts a
tmuxsession, and runs the remaining steps (alignment, variant calling, annotation, etc.)
- Runs the full pipeline locally (basecalling + variant calling)
- Runs only the basecalling step locally
- Skips basecalling and runs all other steps locally (expects existing
.fastq.gzinput)
Each script has a configuration section you can customize. You must provide a valid input file (.pod5 or .fastq.gz), and tune parameters.
Example configuration section:
### === CONFIGURATION (edit these only) ===
REMOTE_HOST="upwaszaksrv1.epfl.ch"
REMOTE_USER="${USER}"
SAMPLE_NAME="sampleName"
REMOTE_DEST_DIR="${SAMPLE_NAME}"
INPUT_PATH="small_NA12878_DNA.pod5" # .pod5 or .fastq.gz
GTF_PATH=""
DORADO_MODEL="hac"
DORADO_MODIFICATION="5mCG_5hmCG"
CALL_VARIANTS=true
VARIANT_CALLER="clair3"
CLAIR_MODEL="dorado_model"
STRUCTURAL_VARIANT_CALLER="longcalld"
PHASE_WHATSHAP=true
ANNOTATE_VCF=true
### =======================================- Most parameters can be modified directly in the wrapper scripts (e.g., model type, input paths, tool settings).
- For more advanced configuration (e.g.,
max.cpus,max.memory,max.time, and default resources), check and edit thenextflow.configfile.
- Main workflow:
workflows/nanoseq.nf - Organized into:
subworkflows/: groups of related stepsmodules/: individual tool processes
To change behavior of a specific tool (e.g. Clair3):
- Locate where it's called in
nanoseq.nf - Follow to
subworkflows/local/short_variant_calling.nf - Modify logic in
modules/local/clair3.nf
Each module in the pipeline runs inside a container that includes all the necessary tools for that specific process (e.g., Clair3, LongCalld, etc.).
If you need a custom setup (e.g., additional tools, modified versions), you can assign a custom container directly inside the module by specifying:
container 'docker.io/ff1997/methylasso:latest'To create your own container and push on Docker Hub:
- Write a
Dockerfilewith the required tools. - Build and push it to Docker Hub:
docker buildx build --platform linux/amd64 -t ff1997/methylasso:latest --load .
docker push ff1997/methylasso:latestAll Dockerfiles used in this pipeline are stored under the /containers/ directory.
Francesco Feher
📧 [email protected]