Μετάβαση στο περιεχόμενο

Περιγραφή

A domain-specific language (DSL) for parallel and scalable computational pipelines.

Nextflow enables scalable and reproducible scientific workflows using software containers. It allows the adaptation of pipelines written in the most common scripting languages.

Nextflow 24.04.4

A first script

Σαν μία πρώτη δοκιμή, μπορούμε να χρησιμοποιήσουμε το παράδειγμα tutorial.nf που περιγράφεται στο documentation του nextflow. Για να τρέξουμε το παράδειγμα, μπορούμε να χρησιμοποιήσουμε τις παρακάτω εντολές:

$ module load nextflow
$ nextflow run tutorial.nf

Για να υποβάλουμε ως batch εργασία μία από τις διεργασίες του παραδείγματος, μπορούμε να προσθέσουμε ως executor component τον SLURM resource manager όπως φαίνεται παρακάτω:

process convertToUpper {
    executor 'slurm'
    cpus 2
    input:
    path x

    output:
    stdout

    """
    cat $x | tr '[a-z]' '[A-Z]'
    """
}

Επιπλέον, μπορούμε να καθορίσουμε μεταξύ άλλων παραμέτρων:

  • τον αριθμό των CPUs
  • το partition όπου θα τρέξουν οι εργασίες (εδώ αναφέρεται ως queue)
  • το χρονικό διάστημα εκτέλεσης της εργασίας (time)
  • την μνήμη RAM που θα δεσμευθεί για την εργασία (memory)

Αφού τροποποιήσουμε το script (για παράδειγμα turorial-slurm.nf), μπορούμε να τρέξουμε το workflow με το option --resume ώστε να εκτελεστούν εκ νέου μόνο οι διεργασίες που έχουν τροποποιηθεί:

$ nextflow tutorial-slurm.nf --resume
Terminal Output
N E X T F L O W   ~  version 24.04.4

Launching `tutorial-slurm.nf` [stoic_leavitt] DSL2 - revision: 6d8c87a072

executor >  local (1), slurm (2)
[0f/c91f33] process > splitLetters       [100%] 1 of 1 ✔
[e4/0b0937] process > convertToUpper (1) [100%] 2 of 2 ✔
WORLD!
HELLO

Mπορούμε ακόμη να δημιουργήσουμε ένα configuration file όπου μπορούμε να καθορίσουμε συγκεκριμένες παραμέτρους (όπως για παράδειγμα το παρακάτω nextflow.config):

Nextflow configuration file example
process.executor= 'slurm'
executor.$slurm.queue= 'batch'
executor.$slurm.cpus= 2
executor.$slurm.memory = '32 GB'
executor.$local.cpus = 1
executor.$local.memory = '4 GB'

Nextflow training

Στα παρακάτω παραδείγματα περιγράφονται πιο σύνθετα workflows: