

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Einzelheiten der Nextflow-Workflow-Definition
<a name="workflow-definition-nextflow"></a>

HealthOmics unterstützt DSL1 Nextflow und. DSL2 Details hierzu finden Sie unter [Unterstützung für die Nextflow-Version](workflows-lang-versions.md#workflows-lang-versions-nextflow).

Nextflow DSL2 basiert auf der Programmiersprache Groovy, sodass Parameter dynamisch sind und Typenzwang nach den gleichen Regeln wie Groovy möglich ist. Parameter und Werte, die von der JSON-Eingabe bereitgestellt werden, sind in der Parameters () -Map des Workflows verfügbar. `params`

**Topics**
+ [Verwenden Sie die Plug-ins NF-Schema und NF-Validation](#schema-and-validation-plugins-nextflow)
+ [Speicher angeben URIs](#storage-uris-nextflow)
+ [Nextflow-Direktiven](#workflow-nexflow-directives)
+ [Aufgabeninhalt exportieren](#exporting-task-content-nextflow)

## Verwenden Sie die Plug-ins NF-Schema und NF-Validation
<a name="schema-and-validation-plugins-nextflow"></a>

**Anmerkung**  
Zusammenfassung der Unterstützung für Plugins HealthOmics :  
v22.04 — keine Unterstützung für Plugins
v23.10 — unterstützt und `nf-schema` `nf-validation`
v24.10 — unterstützt `nf-schema`

HealthOmics bietet die folgende Unterstützung für Nextflow-Plugins:
+ Für Nextflow v23.10 ist das Plugin nf-validation @1 HealthOmics .1.1 vorinstalliert. 
+ Für Nextflow v23.10 und höher wird das Plugin nf-schema @2 .3.0 vorinstalliert. HealthOmics 
+ Sie können während einer Workflow-Ausführung keine zusätzlichen Plugins abrufen. HealthOmics ignoriert alle anderen Plugin-Versionen, die Sie in der `nextflow.config` Datei angeben.
+ Für Nextflow v24 und höher `nf-schema` ist dies die neue Version des veralteten Plugins. `nf-validation` Weitere Informationen finden Sie unter [nf-schema im Nextflow-Repository](https://github.com/nextflow-io/nf-schema). GitHub

## Speicher angeben URIs
<a name="storage-uris-nextflow"></a>

Wenn ein Amazon S3 oder HealthOmics URI verwendet wird, um eine Nextflow-Datei oder ein Nextflow-Pfadobjekt zu erstellen, stellt es das entsprechende Objekt für den Workflow zur Verfügung, sofern Lesezugriff gewährt wird. Die Verwendung von Präfixen oder Verzeichnissen ist für Amazon S3 URIs zulässig. Beispiele finden Sie unter [Amazon S3 S3-Eingabeparameterformate](workflows-run-inputs.md#s3-run-input-formats). 

HealthOmics unterstützt teilweise die Verwendung von Glob Patterns in Amazon S3 URIs oder HealthOmics Storage URIs. Verwenden Sie Glob-Muster in der Workflow-Definition für die Erstellung von Or-Kanälen`path`. `file` Informationen zum erwarteten Verhalten und zu den genauen Fällen finden Sie unter[Nextflow-Behandlung von Glob-Mustern in Amazon S3 S3-Eingaben](workflows-run-inputs.md#wd-nextflow-s3-formats).

## Nextflow-Direktiven
<a name="workflow-nexflow-directives"></a>

Sie konfigurieren Nextflow-Direktiven in der Nextflow-Konfigurationsdatei oder Workflow-Definition. Die folgende Liste zeigt die Rangfolge, in der die HealthOmics Konfigurationseinstellungen angewendet werden, von der niedrigsten zur höchsten Priorität:

1. Globale Konfiguration in der Konfigurationsdatei.

1. Aufgabenbereich der Workflow-Definition.

1. Aufgabenspezifische Selektoren in der Konfigurationsdatei.

**Topics**
+ [Strategie zur Wiederholung von Aufgaben unter Verwendung von `errorStrategy`](#workflow-nextflow-errorStrategy)
+ [Versuche, Aufgaben erneut zu versuchen, verwenden `maxRetries`](#workflow-nexflow-task-retry)
+ [Deaktivieren Sie die Wiederholung von Aufgaben mit `omicsRetryOn5xx`](#workflow-nextflow-retry-5xx)
+ [Dauer der Aufgabe unter Verwendung der Direktive `time`](#time-directive-nextflow)

### Strategie zur Wiederholung von Aufgaben unter Verwendung von `errorStrategy`
<a name="workflow-nextflow-errorStrategy"></a>

Verwenden Sie die `errorStrategy` Direktive, um die Strategie für Aufgabenfehler zu definieren. Wenn eine Aufgabe mit einer Fehleranzeige (einem Exit-Status ungleich Null) zurückkehrt, wird die Aufgabe standardmäßig angehalten und die gesamte HealthOmics Ausführung beendet. Wenn Sie `errorStrategy` auf festlegen, wird HealthOmics versucht`retry`, die fehlgeschlagene Aufgabe erneut zu versuchen. Informationen zur Erhöhung der Anzahl der Wiederholungen finden Sie unter. [Versuche, Aufgaben erneut zu versuchen, verwenden `maxRetries`](#workflow-nexflow-task-retry)

```
process {
    label 'my_label'
    errorStrategy 'retry'

    script:
    """
    your-command-here
    """
}
```

Informationen darüber, wie mit Wiederholungsversuchen HealthOmics von Aufgaben während einer Ausführung umgegangen wird, finden Sie unter. [Die Aufgabe wird erneut versucht](monitoring-runs.md#run-status-task-retries)

### Versuche, Aufgaben erneut zu versuchen, verwenden `maxRetries`
<a name="workflow-nexflow-task-retry"></a>

Führt standardmäßig HealthOmics keine Wiederholungsversuche für eine fehlgeschlagene Aufgabe durch, oder versucht einen erneuten Versuch, wenn Sie dies konfigurieren. `errorStrategy` Um die maximale Anzahl von Wiederholungen zu erhöhen, legen `errorStrategy` Sie die maximale Anzahl von Wiederholungen fest `retry` und konfigurieren Sie sie mithilfe der Direktive. `maxRetries`

Im folgenden Beispiel wird die maximale Anzahl von Wiederholungen in der globalen Konfiguration auf 3 festgelegt.

```
process {
    errorStrategy = 'retry'
    maxRetries = 3
}
```

Das folgende Beispiel zeigt, wie `maxRetries` im Aufgabenbereich der Workflow-Definition festgelegt wird.

```
process myTask {
    label 'my_label'
    errorStrategy 'retry'
    maxRetries 3
    
    script:
    """
    your-command-here
    """
}
```

Das folgende Beispiel zeigt, wie eine aufgabenspezifische Konfiguration in der Nextflow-Konfigurationsdatei auf der Grundlage der Namens- oder Labelselektoren angegeben wird.

```
process {
    withLabel: 'my_label' {
        errorStrategy = 'retry'
        maxRetries = 3
    }

    withName: 'myTask' {
        errorStrategy = 'retry'
        maxRetries = 3
    }
}
```

### Deaktivieren Sie die Wiederholung von Aufgaben mit `omicsRetryOn5xx`
<a name="workflow-nextflow-retry-5xx"></a>

 HealthOmics Unterstützt für Nextflow v23 und v24 Aufgabenwiederholungen, wenn die Aufgabe aufgrund von Dienstfehlern fehlgeschlagen ist (5XX-HTTP-Statuscodes). Standardmäßig werden bis zu zwei Wiederholungen einer fehlgeschlagenen Aufgabe HealthOmics versucht. 

Sie können so konfigurieren`omicsRetryOn5xx`, dass die Wiederholung von Aufgaben bei Dienstfehlern deaktiviert wird. Weitere Informationen zur Wiederholung von Aufgaben finden Sie unter HealthOmics. [Die Aufgabe wird erneut versucht](monitoring-runs.md#run-status-task-retries)

Im folgenden Beispiel wird die globale Konfiguration so konfiguriert`omicsRetryOn5xx`, dass die Aufgabenwiederholung deaktiviert wird.

```
process {
    omicsRetryOn5xx = false
}
```

Das folgende Beispiel zeigt, wie die Konfiguration `omicsRetryOn5xx` im Aufgabenbereich der Workflow-Definition erfolgt.

```
process myTask {
    label 'my_label'
    omicsRetryOn5xx = false
    
    script:
    """
    your-command-here
    """
}
```

Das folgende Beispiel zeigt, wie eine aufgabenspezifische Konfiguration in der Nextflow-Konfigurationsdatei auf der Grundlage der Namens- oder Labelauswahl festgelegt `omicsRetryOn5xx` wird.

```
process {
    withLabel: 'my_label' {
        omicsRetryOn5xx = false
    }

    withName: 'myTask' {
        omicsRetryOn5xx = false
    }
}
```

### Dauer der Aufgabe unter Verwendung der Direktive `time`
<a name="time-directive-nextflow"></a>

HealthOmics stellt ein einstellbares Kontingent bereit (siehe[HealthOmics Servicekontingenten](service-quotas.md)), um die maximale Dauer eines Laufs anzugeben. Für Nextflow v23- und v24-Workflows können Sie mithilfe der Nextflow-Direktive auch die maximale Aufgabendauer angeben. `time`

Bei der Entwicklung neuer Workflows hilft Ihnen die Festlegung der maximalen Aufgabendauer dabei, außer catch geratene Aufgaben und lang andauernde Aufgaben zu erkennen. 

Weitere Informationen zur Nextflow-Zeitdirektive finden Sie unter [Zeitdirektive](https://www.nextflow.io/docs/latest/reference/process.html#process-time) in der Nextflow-Referenz.

HealthOmics bietet die folgende Unterstützung für die Nextflow-Zeitdirektive:

1. HealthOmics unterstützt eine Granularität von 1 Minute für die Zeitdirektive. Sie können einen Wert zwischen 60 Sekunden und dem Wert für die maximale Laufzeit angeben.

1. Wenn Sie einen Wert unter 60 eingeben, wird HealthOmics dieser auf 60 Sekunden aufgerundet. Bei Werten über 60 wird auf die nächste Minute HealthOmics abgerundet.

1. Wenn der Workflow Wiederholungsversuche für eine Aufgabe unterstützt, versucht er die Aufgabe HealthOmics erneut, wenn das Timeout überschritten wird.

1. Wenn bei einer Aufgabe das Timeout überschritten wird (oder bei der letzten Wiederholung), wird die Aufgabe HealthOmics abgebrochen. Dieser Vorgang kann eine Dauer von ein bis zwei Minuten haben.

1. Bei Zeitüberschreitung der Aufgabe werden die Ausführung und der Aufgabenstatus auf Fehlgeschlagen gesetzt und die anderen Aufgaben in der Ausführung abgebrochen (für Aufgaben mit dem Status „Gestartet“, „Ausstehend“ oder „Wird ausgeführt“). HealthOmics HealthOmics exportiert die Ausgaben von Aufgaben, die vor dem Timeout abgeschlossen wurden, an den von Ihnen angegebenen S3-Ausgabespeicherort. 

1. Die Zeit, die eine Aufgabe im Status „Ausstehend“ verbringt, wird nicht auf die Dauer der Aufgabe angerechnet.

1. Wenn die Ausführung Teil einer Ausführungsgruppe ist und das Timeout der Ausführungsgruppe vor Ablauf des Task-Timers abläuft, gehen Ausführung und Task in den Status Fehlgeschlagen über.

Geben Sie die Timeoutdauer mit einer oder mehreren der folgenden Einheiten an:`ms`,`s`, `m``h`, oder`d`.

Das folgende Beispiel zeigt, wie die globale Konfiguration in der Nextflow-Konfigurationsdatei angegeben wird. Es legt ein globales Timeout von 1 Stunde und 30 Minuten fest.

```
process {
    time = '1h30m'
}
```

Das folgende Beispiel zeigt, wie eine Zeitanweisung im Aufgabenbereich der Workflow-Definition angegeben wird. In diesem Beispiel wird ein Timeout von 3 Tagen, 5 Stunden und 4 Minuten festgelegt. Dieser Wert hat Vorrang vor dem globalen Wert in der Konfigurationsdatei, hat jedoch keinen Vorrang vor einer aufgabenspezifischen Zeitanweisung für `my_label` in der Konfigurationsdatei.

```
process myTask {
    label 'my_label'
    time '3d5h4m'
        
    script:
    """
    your-command-here
    """
}
```

Das folgende Beispiel zeigt, wie aufgabenspezifische Zeitdirektiven in der Nextflow-Konfigurationsdatei auf der Grundlage der Namens- oder Labelselektoren angegeben werden. In diesem Beispiel wird ein globaler Task-Timeout-Wert von 30 Minuten festgelegt. Es legt einen Wert von 2 Stunden für eine Aufgabe `myTask` und einen Wert von 3 Stunden für Aufgaben mit Bezeichnung `my_label` fest. Bei Aufgaben, die dem Selektor entsprechen, haben diese Werte Vorrang vor dem globalen Wert und dem Wert in der Workflow-Definition.

```
process {
    time = '30m'
    
    withLabel: 'my_label' {
        time = '3h'  
    }

    withName: 'myTask' {
        time = '2h'  
    }
}
```

## Aufgabeninhalt exportieren
<a name="exporting-task-content-nextflow"></a>

Definieren Sie für in Nextflow geschriebene Workflows eine **PublishDir-Direktive**, um Aufgabeninhalte in Ihren Amazon S3 S3-Ausgabe-Bucket zu exportieren. Wie im folgenden Beispiel gezeigt, setzen Sie den Wert **publishDir** auf. `/mnt/workflow/pubdir` Um Dateien nach Amazon S3 zu exportieren, müssen sich die Dateien in diesem Verzeichnis befinden.

```
 nextflow.enable.dsl=2
              
  workflow {
    CramToBamTask(params.ref_fasta, params.ref_fasta_index, params.ref_dict, params.input_cram, params.sample_name)
    ValidateSamFile(CramToBamTask.out.outputBam)
  }
  
  process CramToBamTask {
    container "<account>.dkr.ecr.us-west-2.amazonaws.com/genomes-in-the-cloud"
  
    publishDir "/mnt/workflow/pubdir"
  
    input:
        path ref_fasta
        path ref_fasta_index
        path ref_dict
        path input_cram
        val sample_name
  
    output:
        path "${sample_name}.bam", emit: outputBam
        path "${sample_name}.bai", emit: outputBai
  
    script:
    """
        set -eo pipefail
  
        samtools view -h -T $ref_fasta $input_cram |
        samtools view -b -o ${sample_name}.bam -
        samtools index -b ${sample_name}.bam
        mv ${sample_name}.bam.bai ${sample_name}.bai
    """
  }
  
  process ValidateSamFile {
    container "<account>.dkr.ecr.us-west-2.amazonaws.com/genomes-in-the-cloud"
  
    publishDir "/mnt/workflow/pubdir"
  
    input:
        file input_bam
  
    output:
        path "validation_report"
  
    script:
    """
        java -Xmx3G -jar /usr/gitc/picard.jar \
        ValidateSamFile \
        INPUT=${input_bam} \
        OUTPUT=validation_report \
        MODE=SUMMARY \
        IS_BISULFITE_SEQUENCED=false
    """
  }
```