From c54184ec4c4d3bae11fd51b49fb209a7a1610f2a Mon Sep 17 00:00:00 2001 From: Phil Ewels Date: Wed, 4 Jun 2025 11:32:25 +0200 Subject: [PATCH 1/5] Blindly auto-fix all headings --- docs/hello_nextflow/01_hello_world.pt.md | 18 +++++++++--------- docs/hello_nextflow/03_hello_workflow.it.md | 12 ++++++------ docs/hello_nextflow/03_hello_workflow.md | 10 +++++----- docs/hello_nextflow/04_hello_modules.it.md | 8 ++++---- docs/hello_nextflow/04_hello_modules.md | 8 ++++---- docs/hello_nextflow/05_hello_containers.it.md | 10 +++++----- docs/hello_nextflow/next_steps.md | 6 +++--- 7 files changed, 36 insertions(+), 36 deletions(-) diff --git a/docs/hello_nextflow/01_hello_world.pt.md b/docs/hello_nextflow/01_hello_world.pt.md index 8cadb9ebc..ec3d81bf4 100644 --- a/docs/hello_nextflow/01_hello_world.pt.md +++ b/docs/hello_nextflow/01_hello_world.pt.md @@ -103,7 +103,7 @@ Como você pode ver, um script Nextflow envolve dois tipos de componentes princi Cada **processo** descreve a(s) operação(ões) que a etapa correspondente no pipeline deve realizar, enquanto o **fluxo de trabalho** descreve a lógica do fluxo de dados que conecta as várias etapas. Vamos dar uma olhada mais de perto no bloco **process** primeiro e, depois, no bloco **workflow**. -#### 1.1.1 A definição `process` +#### 1.1.1. A definição `process` O primeiro bloco de código descreve um **processo**. A definição do processo começa com a palavra-chave `process`, seguida do nome do processo e, finalmente, do corpo do processo delimitado por chaves. O corpo do processo deve conter um bloco de script que especifica o comando a ser executado, que pode ser qualquer coisa que você executaria em um terminal de linha de comando. @@ -132,7 +132,7 @@ A definição de saída não _determina_ qual saída será criada. Ela simplesmente _declara_ qual é a saída esperada, de modo que o Nextflow possa procurá-la quando a execução estiver concluída. Isso é necessário para verificar se o comando foi executado com êxito e para passar a saída para processos posteriores, se necessário. -#### 1.1.2 A definição `workflow` +#### 1.1.2. A definição `workflow` O segundo bloco de código descreve o **fluxo de trabalho** em si. A definição do fluxo de trabalho começa com a palavra-chave `workflow`, seguida de um nome opcional e, em seguida, o corpo do fluxo de trabalho delimitado por chaves. @@ -240,7 +240,7 @@ Saiba como fazer com que o script produza um arquivo nomeado. --- -## 3. Enviando a saída para um arquivo +## 2. Enviando a saída para um arquivo Em vez de imprimir "Hello World!" na saída padrão, seria melhor salvar essa saída em um arquivo específico, exatamente como fizemos ao executar no terminal anteriormente. É assim que a maioria das ferramentas que você executará como parte dos pipelines do mundo real normalmente se comporta; veremos exemplos disso mais tarde. @@ -390,7 +390,7 @@ Saiba como fazer com que o Nextflow retome a execução de um pipeline usando re --- -## 4. Usando o recurso `resume` do Nextflow +## 3. Usando o recurso `resume` do Nextflow O Nextflow tem uma opção chamada `resume`, que permite que você execute novamente um pipeline que já tenha sido iniciado anteriormente. Quando iniciado com `-resume`, qualquer processo que já tenha sido executado exatamente com o mesmo código, configurações e entradas será ignorado. @@ -433,7 +433,7 @@ Saiba como adicionar entradas variáveis. --- -## 5. Adicionando entradas variáveis usando um canal +## 4. Adicionando entradas variáveis usando um canal Até agora, estamos emitindo uma saudação codificada no comando `process`. Agora, vamos adicionar alguma flexibilidade usando uma variável de entrada, para que possamos alterar facilmente a saudação. @@ -575,7 +575,7 @@ Saiba como passar entradas da linha de comando. --- -## 6. Usando parâmetros da CLI para entradas +## 5. Usando parâmetros da CLI para entradas Queremos poder especificar a entrada da linha de comando, pois essa é a parte que quase sempre será diferente nas execuções subsequentes do fluxo de trabalho. @@ -692,7 +692,7 @@ Saiba como adicionar um segundo processo e encadeá-los. --- -## 7. Adicionando uma segunda etapa ao fluxo de trabalho +## 6. Adicionando uma segunda etapa ao fluxo de trabalho A maioria dos fluxos de trabalho do mundo real envolve mais de uma etapa. Aqui apresentamos um segundo processo que converte o texto em maiúsculas (all-caps), usando o clássico UNIX one-liner: @@ -827,7 +827,7 @@ Saiba como fazer com que o fluxo de trabalho seja executado em um lote de valore --- -## 8. Modificando o fluxo de trabalho para ser executado em um lote de valores de entrada +## 7. Modificando o fluxo de trabalho para ser executado em um lote de valores de entrada Os fluxos de trabalho normalmente são executados em lotes de entradas que devem ser processados em massa, portanto, queremos atualizar o fluxo de trabalho para aceitar vários valores de entrada. @@ -1012,7 +1012,7 @@ Saiba como fazer com que o fluxo de trabalho use um arquivo como sua fonte de va --- -## 9. Modificando o fluxo de trabalho para usar um arquivo como fonte de valores de entrada +## 8. Modificando o fluxo de trabalho para usar um arquivo como fonte de valores de entrada Muitas vezes, quando queremos executar um lote de vários elementos de entrada, os valores de entrada podem estar contidos em um arquivo. diff --git a/docs/hello_nextflow/03_hello_workflow.it.md b/docs/hello_nextflow/03_hello_workflow.it.md index 40bd1d118..10e190eca 100644 --- a/docs/hello_nextflow/03_hello_workflow.it.md +++ b/docs/hello_nextflow/03_hello_workflow.it.md @@ -74,7 +74,7 @@ A tal fine, dobbiamo fare tre cose: - Scrivere un nuovo processo che racchiuda il comando per la conversione in maiuscolo. - Chiamare il nuovo processo nel blocco del workflow e configurarlo per prendere l'output del processo `sayHello()` come input. -## 1.1 Definire il comando per la conversione in maiuscolo e testarlo nel terminale +### 1.1. Definire il comando per la conversione in maiuscolo e testarlo nel terminale Per eseguire la conversione dei saluti in maiuscolo, useremo uno strumento UNIX classico chiamato `tr` per 'text replacement' (sostituzione del testo), con la seguente sintassi: @@ -98,7 +98,7 @@ HELLO WORLD Questo è ciò che proveremo a fare con il nostro workflow. -### 1.1 Scrivere il passaggio di conversione in maiuscolo come un processo Nextflow +### 1.2. Scrivere il passaggio di conversione in maiuscolo come un processo Nextflow Possiamo modellare il nostro nuovo processo sul primo, poiché vogliamo usare gli stessi componenti. @@ -131,7 +131,7 @@ Qui, componiamo il secondo nome del file di output in base al nome del file di i Nextflow determinerà l'ordine delle operazioni in base alla concatenazione degli input e degli output, quindi l'ordine delle definizioni dei processi nello script del flusso di lavoro non è importante. Tuttavia, ti consigliamo di essere gentile con i tuoi collaboratori e con il futuro te stesso, e cercare di scriverle in un ordine logico per motivi di leggibilità." -### 1.2 Aggiungi una chiamata al nuovo processo nel blocco del workflow +### 1.3. Aggiungi una chiamata al nuovo processo nel blocco del workflow Ora dobbiamo dire a Nextflow di chiamare effettivamente il processo che abbiamo appena definito. @@ -158,7 +158,7 @@ Nel blocco del workflow, apporta la seguente modifica al codice: Questo non è ancora funzionante perché non abbiamo specificato cosa deve essere l'input per il processo `convertToUpper()`. -### 1.3 Passare l'output del primo processo al secondo processo +### 1.4. Passare l'output del primo processo al secondo processo Ora dobbiamo fare in modo che l'output del processo `sayHello()` fluisca nel processo `convertToUpper()`. @@ -185,7 +185,7 @@ Nel blocco del workflow, apporta la seguente modifica al codice: Per un caso semplice come questo (un output a un input), è tutto ciò che dobbiamo fare per connettere due processi! -### 1.4 Esegui di nuovo il flusso di lavoro con `-resume` +### 1.5. Esegui di nuovo il flusso di lavoro con `-resume` Eseguiamo di nuovo il flusso di lavoro utilizzando il flag `-resume`, poiché abbiamo già eseguito con successo il primo passaggio del workflow. @@ -772,7 +772,7 @@ Nel blocco del processo `collectGreetings`, apporta la seguente modifica al codi La variabile `count_greetings` verrà calcolata durante l'esecuzione. -### 4.1.2. Emissione del conteggio come output con nome +#### 4.1.2. Emissione del conteggio come output con nome In linea di principio, tutto ciò che dobbiamo fare è aggiungere la variabile `count_greetings` al blocco `output:`. diff --git a/docs/hello_nextflow/03_hello_workflow.md b/docs/hello_nextflow/03_hello_workflow.md index e3dfc94f3..e455b295d 100644 --- a/docs/hello_nextflow/03_hello_workflow.md +++ b/docs/hello_nextflow/03_hello_workflow.md @@ -98,7 +98,7 @@ HELLO WORLD That's basically what we're going to try to do with our workflow. -### 1.1. Write the uppercasing step as a Nextflow process +### 1.2. Write the uppercasing step as a Nextflow process We can model our new process on the first one, since we want to use all the same components. @@ -132,7 +132,7 @@ Here, we compose the second output filename based on the input filename, similar Nextflow will determine the order of operations based on the chaining of inputs and outputs, so the order of the process definitions in the workflow script does not matter. However, we do recommend you be kind to your collaborators and to your future self, and try to write them in a logical order for the sake of readability. -### 1.2. Add a call to the new process in the workflow block +### 1.3. Add a call to the new process in the workflow block Now we need to tell Nextflow to actually call the process that we just defined. @@ -159,7 +159,7 @@ In the workflow block, make the following code change: This is not yet functional because we have not specified what should be input to the `convertToUpper()` process. -### 1.3. Pass the output of the first process to the second process +### 1.4. Pass the output of the first process to the second process Now we need to make the output of the `sayHello()` process flow into the `convertToUpper()` process. @@ -186,7 +186,7 @@ In the workflow block, make the following code change: For a simple case like this (one output to one input), that's all we need to do to connect two processes! -### 1.4. Run the workflow again with `-resume` +### 1.5. Run the workflow again with `-resume` Let's run this using the `-resume` flag, since we've already run the first step of the workflow successfully. @@ -773,7 +773,7 @@ In the `collectGreetings` process block, make the following code change: The `count_greetings` variable will be computed at runtime. -### 4.1.2. Emit the count as a named output +#### 4.1.2. Emit the count as a named output In principle all we need to do is to add the `count_greetings` variable to the `output:` block. diff --git a/docs/hello_nextflow/04_hello_modules.it.md b/docs/hello_nextflow/04_hello_modules.it.md index 8bb2c384f..8029eda5b 100644 --- a/docs/hello_nextflow/04_hello_modules.it.md +++ b/docs/hello_nextflow/04_hello_modules.it.md @@ -93,7 +93,7 @@ Creeremo un file stub per il modulo, copieremo il codice pertinente e lo cancell A questo punto, basterà aggiungere una dichiarazione di importazione, in modo che Nextflow sappia che deve inserire il codice in questione in fase di esecuzione. -### 2.1.1. Creare un file stub per il nuovo modulo +#### 2.1.1. Creare un file stub per il nuovo modulo Creiamo un file vuoto per il modulo, chiamato `sayHello.nf`. @@ -103,7 +103,7 @@ touch modules/sayHello.nf Questo ci dà un posto dove mettere il codice del processo. -### 2.2. Spostare il codice del processo `sayHello' nel file del modulo +### 2.1. Spostare il codice del processo `sayHello' nel file del modulo Copiare l'intera definizione del processo dal file del workflow al file del modulo, assicurandosi di copiare anche lo shebang `#!/usr/bin/env nextflow`. @@ -132,7 +132,7 @@ process sayHello { Una volta fatto ciò, eliminate la definizione del processo dal file del workflow, ma assicuratevi di lasciare lo shebang al suo posto. -### 2.3. Aggiungere una dichiarazione di importazione prima del blocco del workflow +### 2.2. Aggiungere una dichiarazione di importazione prima del blocco del workflow La sintassi per importare un modulo locale è abbastanza semplice: @@ -157,7 +157,7 @@ Inseriamo questo blocco sopra il blocco del workflow e compiliamolo in modo appr workflow { ``` -### 2.4. Eseguite il workflow per verificare che faccia la stessa cosa di prima +### 2.3. Eseguite il workflow per verificare che faccia la stessa cosa di prima Stiamo eseguendo il workflow essenzialmente con lo stesso codice e gli stessi input di prima, quindi eseguiamolo con il flag `resume` e vediamo cosa succede. diff --git a/docs/hello_nextflow/04_hello_modules.md b/docs/hello_nextflow/04_hello_modules.md index dfced5838..33be4465f 100644 --- a/docs/hello_nextflow/04_hello_modules.md +++ b/docs/hello_nextflow/04_hello_modules.md @@ -93,7 +93,7 @@ We're going to create a file stub for the module, copy the relevant code over th Then all we'll need to do is add an import statement so that Nextflow will know to pull in the relevant code at runtime. -### 2.1.1. Create a file stub for the new module +#### 2.1.1. Create a file stub for the new module Let's create an empty file for the module called `sayHello.nf`. @@ -103,7 +103,7 @@ touch modules/sayHello.nf This gives us a place to put the process code. -### 2.2. Move the `sayHello` process code to the module file +### 2.1. Move the `sayHello` process code to the module file Copy the whole process definition over from the workflow file to the module file, making sure to copy over the `#!/usr/bin/env nextflow` shebang too. @@ -132,7 +132,7 @@ process sayHello { Once that is done, delete the process definition from the workflow file, but make sure to leave the shebang in place. -### 2.3. Add an import declaration before the workflow block +### 2.2. Add an import declaration before the workflow block The syntax for importing a local module is fairly straightforward: @@ -157,7 +157,7 @@ Let's insert that above the workflow block and fill it out appropriately. workflow { ``` -### 2.4. Run the workflow to verify that it does the same thing as before +### 2.3. Run the workflow to verify that it does the same thing as before We're running the workflow with essentially the same code and inputs as before, so let's run with the `-resume` flag and see what happens. diff --git a/docs/hello_nextflow/05_hello_containers.it.md b/docs/hello_nextflow/05_hello_containers.it.md index 3637fd109..1bdcc7a82 100644 --- a/docs/hello_nextflow/05_hello_containers.it.md +++ b/docs/hello_nextflow/05_hello_containers.it.md @@ -396,7 +396,7 @@ process cowpy { L'output sarà un nuovo file di testo contenente l'ASCII art generata dallo strumento `cowpy`. -### 2.2. Aggiungi cowpy al flusso di lavoro +### 2.1. Aggiungi cowpy al flusso di lavoro Ora dobbiamo importare il modulo e chiamare il processo. @@ -537,7 +537,7 @@ Naturalmente, dato che stiamo chiamando lo strumento `cowpy` ma non abbiamo anco Dobbiamo specificare un container e dire a Nextflow di usarlo per il processo `cowpy()`. -#### 2.3.1. Specificare un container per il processo `cowpy` da utilizzare +#### 2.3.5. Specificare un container per il processo `cowpy` da utilizzare Modificare il modulo `cowpy.nf` per aggiungere la direttiva `container` alla definizione del processo come segue: @@ -560,7 +560,7 @@ Modificare il modulo `cowpy.nf` per aggiungere la direttiva `container` alla def indica a Nextflow che, se l'uso di Docker è abilitato, deve usare l'immagine del container specificata qui per eseguire il processo. -#### 2.3.2. Abilitare l'uso di Docker tramite il file `nextflow.config +#### 2.3.6. Abilitare l'uso di Docker tramite il file `nextflow.config Qui anticipiamo leggermente l'argomento della prossima e ultima parte di questo corso (Parte 6), che riguarda la configurazione. @@ -587,7 +587,7 @@ Ora, passiamo a `true` per abilitare Docker: However, that only allows us to specify one container for the entire workflow, whereas the approach we just showed you allows us to specify a different container per process. This is better for modularity, code maintenance and reproducibility. -#### 2.3.3. Eseguire il workflow con Docker abilitato +#### 2.3.7. Eseguire il workflow con Docker abilitato Eseguire il workflow con il flag `resume`: @@ -645,7 +645,7 @@ Si vede che il personaggio sta pronunciando tutti i saluti, proprio come ha fatt -#### 2.3.4. Controllare come Nextflow ha lanciato il task containerizzato +#### 2.3.8. Controllare come Nextflow ha lanciato il task containerizzato Diamo un'occhiata alla sottodirectory di lavoro di una delle chiamate al processo cowpy per capire meglio come Nextflow lavora con i container. diff --git a/docs/hello_nextflow/next_steps.md b/docs/hello_nextflow/next_steps.md index 28d344df1..bbb047070 100644 --- a/docs/hello_nextflow/next_steps.md +++ b/docs/hello_nextflow/next_steps.md @@ -12,13 +12,13 @@ Congrats again on completing the Hello Nextflow training course and thank you fo **Here are our top 3 recommendations for what you can do next to take your Nextflow skills to the next level.** -### 1. See how what you just learned applies to a scientific analysis use case +## 1. See how what you just learned applies to a scientific analysis use case **Check out the [Nextflow for Science](../nf4_science/index.md) page** for a list of short standalone courses that demonstrate how to apply the basic concepts and mechanisms presented in Hello Nextflow to common scientific analysis use cases. If you don't see your domain represented by a relatable use case, let us know in the [Community forum](https://community.seqera.io/) so we can add it to our development list. -### 2. Delve into the details +## 2. Delve into the details In the Hello Nextflow course, we keep the level of technical complexity low on purpose to avoid overloading you with information you don't need in order to get started with Nextflow. As you move forward with your work, you're going to want to learn how to use the full feature set and power of Nextflow. @@ -27,7 +27,7 @@ To that end, we are currently working on a collection of Side Quests, which are In the meantime, feel free to **browse the [Fundamentals Training](../basic_training/index.md) and [Advanced Training](../advanced/index.md)** to find training exercises about the topics that interest you. -### 3. Learn how to use nf-core resources and the Seqera Platform +## 3. Learn how to use nf-core resources and the Seqera Platform **The [nf-core project](https://nf-co.re/) is a worldwide collaborative effort to develop standardized open-source pipelines for a wide range of scientific research applications.** It includes [over 100 pipelines](https://nf-co.re/pipelines/) that are available for use out of the box and [well over 1400 process modules](https://nf-co.re/modules/) that can be integrated into your own projects, as well as a rich set of developer tools. From b1575d78158878618741d9f77e9f9fae51b84ca1 Mon Sep 17 00:00:00 2001 From: Geraldine Van der Auwera Date: Wed, 4 Jun 2025 08:49:23 -0400 Subject: [PATCH 2/5] Fix headings --- docs/hello_nextflow/04_hello_modules.it.md | 8 ++++---- docs/hello_nextflow/04_hello_modules.md | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/hello_nextflow/04_hello_modules.it.md b/docs/hello_nextflow/04_hello_modules.it.md index 8029eda5b..e3633c196 100644 --- a/docs/hello_nextflow/04_hello_modules.it.md +++ b/docs/hello_nextflow/04_hello_modules.it.md @@ -93,7 +93,7 @@ Creeremo un file stub per il modulo, copieremo il codice pertinente e lo cancell A questo punto, basterà aggiungere una dichiarazione di importazione, in modo che Nextflow sappia che deve inserire il codice in questione in fase di esecuzione. -#### 2.1.1. Creare un file stub per il nuovo modulo +#### 2.1. Creare un file stub per il nuovo modulo Creiamo un file vuoto per il modulo, chiamato `sayHello.nf`. @@ -103,7 +103,7 @@ touch modules/sayHello.nf Questo ci dà un posto dove mettere il codice del processo. -### 2.1. Spostare il codice del processo `sayHello' nel file del modulo +### 2.2. Spostare il codice del processo `sayHello' nel file del modulo Copiare l'intera definizione del processo dal file del workflow al file del modulo, assicurandosi di copiare anche lo shebang `#!/usr/bin/env nextflow`. @@ -132,7 +132,7 @@ process sayHello { Una volta fatto ciò, eliminate la definizione del processo dal file del workflow, ma assicuratevi di lasciare lo shebang al suo posto. -### 2.2. Aggiungere una dichiarazione di importazione prima del blocco del workflow +### 2.3. Aggiungere una dichiarazione di importazione prima del blocco del workflow La sintassi per importare un modulo locale è abbastanza semplice: @@ -157,7 +157,7 @@ Inseriamo questo blocco sopra il blocco del workflow e compiliamolo in modo appr workflow { ``` -### 2.3. Eseguite il workflow per verificare che faccia la stessa cosa di prima +### 2.4. Eseguite il workflow per verificare che faccia la stessa cosa di prima Stiamo eseguendo il workflow essenzialmente con lo stesso codice e gli stessi input di prima, quindi eseguiamolo con il flag `resume` e vediamo cosa succede. diff --git a/docs/hello_nextflow/04_hello_modules.md b/docs/hello_nextflow/04_hello_modules.md index 33be4465f..5a17a22f9 100644 --- a/docs/hello_nextflow/04_hello_modules.md +++ b/docs/hello_nextflow/04_hello_modules.md @@ -93,7 +93,7 @@ We're going to create a file stub for the module, copy the relevant code over th Then all we'll need to do is add an import statement so that Nextflow will know to pull in the relevant code at runtime. -#### 2.1.1. Create a file stub for the new module +#### 2.1. Create a file stub for the new module Let's create an empty file for the module called `sayHello.nf`. @@ -103,7 +103,7 @@ touch modules/sayHello.nf This gives us a place to put the process code. -### 2.1. Move the `sayHello` process code to the module file +### 2.2. Move the `sayHello` process code to the module file Copy the whole process definition over from the workflow file to the module file, making sure to copy over the `#!/usr/bin/env nextflow` shebang too. @@ -132,7 +132,7 @@ process sayHello { Once that is done, delete the process definition from the workflow file, but make sure to leave the shebang in place. -### 2.2. Add an import declaration before the workflow block +### 2.3. Add an import declaration before the workflow block The syntax for importing a local module is fairly straightforward: @@ -157,7 +157,7 @@ Let's insert that above the workflow block and fill it out appropriately. workflow { ``` -### 2.3. Run the workflow to verify that it does the same thing as before +### 2.4. Run the workflow to verify that it does the same thing as before We're running the workflow with essentially the same code and inputs as before, so let's run with the `-resume` flag and see what happens. From 2d25002d8e5ab08d7841385ce1523cc2147ad7f7 Mon Sep 17 00:00:00 2001 From: Geraldine Van der Auwera Date: Wed, 4 Jun 2025 08:49:59 -0400 Subject: [PATCH 3/5] Fix the fix --- docs/hello_nextflow/04_hello_modules.it.md | 2 +- docs/hello_nextflow/04_hello_modules.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/hello_nextflow/04_hello_modules.it.md b/docs/hello_nextflow/04_hello_modules.it.md index e3633c196..d11391f53 100644 --- a/docs/hello_nextflow/04_hello_modules.it.md +++ b/docs/hello_nextflow/04_hello_modules.it.md @@ -93,7 +93,7 @@ Creeremo un file stub per il modulo, copieremo il codice pertinente e lo cancell A questo punto, basterà aggiungere una dichiarazione di importazione, in modo che Nextflow sappia che deve inserire il codice in questione in fase di esecuzione. -#### 2.1. Creare un file stub per il nuovo modulo +### 2.1. Creare un file stub per il nuovo modulo Creiamo un file vuoto per il modulo, chiamato `sayHello.nf`. diff --git a/docs/hello_nextflow/04_hello_modules.md b/docs/hello_nextflow/04_hello_modules.md index 5a17a22f9..ab18757f9 100644 --- a/docs/hello_nextflow/04_hello_modules.md +++ b/docs/hello_nextflow/04_hello_modules.md @@ -93,7 +93,7 @@ We're going to create a file stub for the module, copy the relevant code over th Then all we'll need to do is add an import statement so that Nextflow will know to pull in the relevant code at runtime. -#### 2.1. Create a file stub for the new module +### 2.1. Create a file stub for the new module Let's create an empty file for the module called `sayHello.nf`. From e77c4b627fe0e3043840cfe48b7aa4119db661ec Mon Sep 17 00:00:00 2001 From: Geraldine Van der Auwera Date: Wed, 4 Jun 2025 08:57:57 -0400 Subject: [PATCH 4/5] Fix the auto-fix --- docs/hello_nextflow/05_hello_containers.it.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/hello_nextflow/05_hello_containers.it.md b/docs/hello_nextflow/05_hello_containers.it.md index 1bdcc7a82..b35bf7720 100644 --- a/docs/hello_nextflow/05_hello_containers.it.md +++ b/docs/hello_nextflow/05_hello_containers.it.md @@ -127,7 +127,7 @@ community.wave.seqera.io/library/cowpy:1.1.5--3db457ae1977a273 Una volta completato il download, si ha una copia locale dell'immagine del container. -### 1.2. utilizzare il container per eseguire cowpy come comando singolo. +### 1.2. Utilizzare il container per eseguire cowpy come comando singolo Un modo molto comune di utilizzare i container è quello di eseguirli direttamente, cioè in modo non interattivo. Questo è ottimo per eseguire comandi una tantum. @@ -165,7 +165,7 @@ Esegui per produrre il seguente output: Il sistema avvia il container, esegue il comando cowpy con i suoi parametri, invia l'output alla console e infine chiude l'istanza del container. -### 1.3.Ustilizzare il conatienr per eseguire cowpu in modo interattivo +### 1.3. Ustilizzare il container per eseguire cowpy in modo interattivo E anche possibile eseguire un conatiner in modo interattivo, in modo da avere un prompt di shell all'interno del container e poter giocare con i comandi. @@ -355,7 +355,7 @@ Ciò significa che puoi utilizzare qualsiasi immagine di container desideri per Per dimostrarlo, aggiungeremo un passaggio `cowpy` alla pipeline che stiamo sviluppando, dopo il passaggio `collectGreetings`. -### 2.1.Scrivi un modulo `cowpy` +### 2.1. Scrivi un modulo `cowpy` #### 2.1.1. Crea uno stub di file per il nuovo modulo @@ -396,7 +396,7 @@ process cowpy { L'output sarà un nuovo file di testo contenente l'ASCII art generata dallo strumento `cowpy`. -### 2.1. Aggiungi cowpy al flusso di lavoro +### 2.2. Aggiungi cowpy al flusso di lavoro Ora dobbiamo importare il modulo e chiamare il processo. @@ -533,11 +533,11 @@ Command error: Questo codice di errore, `error exit status (127)`, significa che l'eseguibile richiesto non è stato trovato. Naturalmente, dato che stiamo chiamando lo strumento `cowpy` ma non abbiamo ancora specificato un container. -### 2.3.Utilizzare un container per l'esecuzione +### 2.3. Utilizzare un container per l'esecuzione Dobbiamo specificare un container e dire a Nextflow di usarlo per il processo `cowpy()`. -#### 2.3.5. Specificare un container per il processo `cowpy` da utilizzare +#### 2.3.1. Specificare un container per il processo `cowpy` da utilizzare Modificare il modulo `cowpy.nf` per aggiungere la direttiva `container` alla definizione del processo come segue: @@ -560,7 +560,7 @@ Modificare il modulo `cowpy.nf` per aggiungere la direttiva `container` alla def indica a Nextflow che, se l'uso di Docker è abilitato, deve usare l'immagine del container specificata qui per eseguire il processo. -#### 2.3.6. Abilitare l'uso di Docker tramite il file `nextflow.config +#### 2.3.2. Abilitare l'uso di Docker tramite il file `nextflow.config Qui anticipiamo leggermente l'argomento della prossima e ultima parte di questo corso (Parte 6), che riguarda la configurazione. @@ -587,7 +587,7 @@ Ora, passiamo a `true` per abilitare Docker: However, that only allows us to specify one container for the entire workflow, whereas the approach we just showed you allows us to specify a different container per process. This is better for modularity, code maintenance and reproducibility. -#### 2.3.7. Eseguire il workflow con Docker abilitato +#### 2.3.3. Eseguire il workflow con Docker abilitato Eseguire il workflow con il flag `resume`: @@ -645,7 +645,7 @@ Si vede che il personaggio sta pronunciando tutti i saluti, proprio come ha fatt -#### 2.3.8. Controllare come Nextflow ha lanciato il task containerizzato +#### 2.3.4. Controllare come Nextflow ha lanciato il task containerizzato Diamo un'occhiata alla sottodirectory di lavoro di una delle chiamate al processo cowpy per capire meglio come Nextflow lavora con i container. From b65f14de765951b13a7cbcc1c659316785819d49 Mon Sep 17 00:00:00 2001 From: Geraldine Van der Auwera Date: Wed, 4 Jun 2025 09:40:56 -0400 Subject: [PATCH 5/5] More fixes --- docs/hello_nextflow/01_hello_world.pt.md | 60 ++++++++++++------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/docs/hello_nextflow/01_hello_world.pt.md b/docs/hello_nextflow/01_hello_world.pt.md index ec3d81bf4..a63c7c948 100644 --- a/docs/hello_nextflow/01_hello_world.pt.md +++ b/docs/hello_nextflow/01_hello_world.pt.md @@ -246,7 +246,7 @@ Em vez de imprimir "Hello World!" na saída padrão, seria melhor salvar essa sa É assim que a maioria das ferramentas que você executará como parte dos pipelines do mundo real normalmente se comporta; veremos exemplos disso mais tarde. Para obter esse resultado, o script e os blocos de definição de saída precisam ser atualizados. -### 3.1. Alterando o comando `process` para gerar um arquivo nomeado +### 2.1. Alterando o comando `process` para gerar um arquivo nomeado Essa é a mesma alteração que fizemos quando executamos o comando diretamente no terminal anteriormente. @@ -266,7 +266,7 @@ echo 'Hello World!' > output.txt ''' ``` -### 3.2. Alterando a declaração de saída no processo `sayHello` +### 2.2. Alterando a declaração de saída no processo `sayHello` Precisamos informar ao Nextflow que agora ele deve procurar um arquivo específico a ser produzido pela execução do processo. @@ -298,7 +298,7 @@ As entradas e saídas nos blocos de processo normalmente exigem um qualificador No exemplo acima, `stdout` é uma exceção, pois não está associado a um nome. -### 3.3. Executando o fluxo de trabalho novamente +### 2.3. Executando o fluxo de trabalho novamente ```bash nextflow run hello-world.nf @@ -323,7 +323,7 @@ Este exemplo é frágil porque codificamos o nome do arquivo de saída em dois l Se alterarmos um, mas não o outro, o script será interrompido. Mais tarde, você aprenderá a usar variáveis para evitar esse problema. -### 3.4. Adicionando uma diretiva `publishDir` ao processo +### 2.4. Adicionando uma diretiva `publishDir` ao processo Você deve ter notado que a saída está enterrada em um diretório de trabalho com várias camadas de profundidade. O Nextflow está no controle desse diretório e não devemos interagir com ele. @@ -358,7 +358,7 @@ No entanto, o `publishDir` ainda é muito útil durante o desenvolvimento do pip Isso também garantirá que você possa ler e entender o grande número de pipelines que já foram escritos com o `publishDir`. Você aprenderá a usar a sintaxe de saídas em nível de fluxo de trabalho mais adiante nesta série de treinamento. -### 3.5. Executando o fluxo de trabalho novamente +### 2.5. Executando o fluxo de trabalho novamente ```bash nextflow run hello-world.nf @@ -402,7 +402,7 @@ Há duas vantagens principais em fazer isso: - Se estiver executando um pipeline em produção e algo der errado, em muitos casos, você poderá corrigir o problema e reiniciar o pipeline, e ele voltará a ser executado a partir do ponto de falha, o que pode economizar muito tempo e computação. -### 4.1. Executando o fluxo de trabalho novamente com `-resume` +### 3.1. Executando o fluxo de trabalho novamente com `-resume` ```bash nextflow run hello-world.nf -resume @@ -445,7 +445,7 @@ Para isso, precisamos fazer uma série de alterações inter-relacionadas: 3. Criar um **canal** para passar a entrada para o processo (falaremos mais sobre isso em um minuto) 4. Adicionar o canal como entrada à chamada do processo -### 5.1. Adicionando uma definição de `input` ao bloco do processo +### 4.1. Adicionando uma definição de `input` ao bloco do processo Primeiro, precisamos adaptar a definição do processo para aceitar uma entrada. @@ -474,7 +474,7 @@ process sayHello { path "output.txt" ``` -### 5.2. Editando o comando do processo para usar a variável de entrada +### 4.2. Editando o comando do processo para usar a variável de entrada Agora, trocamos o valor original codificado para a variável de entrada. @@ -494,7 +494,7 @@ echo '$greeting' > output.txt """ ``` -### 5.3. Criando um canal de entrada +### 4.3. Criando um canal de entrada Agora que o nosso processo espera uma entrada, precisamos configurar essa entrada no corpo do fluxo de trabalho. @@ -526,7 +526,7 @@ workflow { } ``` -### 5.4. Adicionando o canal como entrada à chamada de processo +### 4.4. Adicionando o canal como entrada à chamada de processo Agora precisamos realmente conectar nosso canal recém-criado à chamada de processo `sayHello()`. @@ -544,7 +544,7 @@ _Depois:_ sayHello(greeting_ch) ``` -### 5.5. Executando o comando do fluxo de trabalho novamente +### 4.5. Executando o comando do fluxo de trabalho novamente Vamos executá-lo! @@ -581,7 +581,7 @@ Queremos poder especificar a entrada da linha de comando, pois essa é a parte q Boas notícias: O Nextflow tem um sistema de parâmetros de fluxo de trabalho integrado chamado `params`, que facilita a declaração e o uso de parâmetros da CLI. -### 6.1. Editando a declaração do canal de entrada para usar um parâmetro +### 5.1. Editando a declaração do canal de entrada para usar um parâmetro Aqui, trocamos a string codificada por `params.greeting` na linha de criação do canal. @@ -601,7 +601,7 @@ greeting_ch = Channel.of(params.greeting) Isso cria automaticamente um parâmetro chamado `greeting` que você pode usar para fornecer um valor na linha de comando. -### 6.2. Executar o fluxo de trabalho novamente com o parâmetro `--greeting` +### 5.2. Executar o fluxo de trabalho novamente com o parâmetro `--greeting` Para fornecer um valor para esse parâmetro, basta adicionar `--greeting ` à sua linha de comando. @@ -626,7 +626,7 @@ Não se esqueça de abrir o arquivo de saída para verificar se agora você tem É útil distinguir os parâmetros em nível de Nextflow dos parâmetros em nível de pipeline. Para parâmetros que se aplicam a um pipeline, usamos um hífen duplo (`--`), enquanto usamos um único hífen (`-`) para parâmetros que modificam uma configuração específica do Nextflow, por exemplo, o recurso `-resume` que usamos anteriormente. -### 6.3. Definindo um valor padrão para um parâmetro de linha de comando +### 5.3. Definindo um valor padrão para um parâmetro de linha de comando Em muitos casos, faz sentido fornecer um valor padrão para um determinado parâmetro para que você não precise especificá-lo em cada execução. Vamos inicializar o parâmetro `greeting` com um valor padrão, adicionando a declaração do parâmetro na parte superior do script (com um bloco de comentários como bônus gratuito). @@ -638,7 +638,7 @@ Vamos inicializar o parâmetro `greeting` com um valor padrão, adicionando a de params.greeting = "Olá mundo!" ``` -### 6.4. Executando o fluxo de trabalho novamente sem especificar o parâmetro +### 5.4. Executando o fluxo de trabalho novamente sem especificar o parâmetro Agora que você tem um valor padrão definido, pode executar o fluxo de trabalho novamente sem precisar especificar um valor na linha de comando. @@ -659,7 +659,7 @@ executor > local (1) Verifique a saída no diretório de resultados e... Tcharam! Funciona! O Nextflow usou o valor padrão para nomear a saída. Mas espere aí, o que acontece agora se fornecermos o parâmetro na linha de comando? -### 6.5. Executando o fluxo de trabalho novamente com o parâmetro `--greeting` na linha de comando usando uma saudação diferente +### 5.5. Executando o fluxo de trabalho novamente com o parâmetro `--greeting` na linha de comando usando uma saudação diferente ```bash nextflow run hello-world.nf --greeting 'Hola Mundo!' @@ -702,7 +702,7 @@ tr '[a-z]' '[A-Z]' Primeiro, vamos executar o comando sozinho no terminal para verificar se ele funciona conforme o esperado, sem que nenhum código de fluxo de trabalho atrapalhe a clareza, assim como fizemos no início com `echo 'Hello World'`. Em seguida, escreveremos um processo que faz a mesma coisa e, finalmente, conectaremos os dois processos para que a saída do primeiro sirva de entrada para o segundo. -### 7.1. Executando o comando no terminal por si só +### 6.1. Executando o comando no terminal por si só ```bash echo 'Hello World' | tr '[a-z]' '[A-Z]' @@ -717,7 +717,7 @@ HELLO WORLD !!! nota Esse é um one-liner de substituição de texto muito ingênuo que não leva em conta as letras acentuadas, portanto, por exemplo, 'olá' se tornará 'OLà'. Isso é esperado. -### 7.2. Fazendo com que o comando receba um arquivo como entrada e grave a saída em um arquivo +### 6.2. Fazendo com que o comando receba um arquivo como entrada e grave a saída em um arquivo Como anteriormente, queremos enviar os resultados para um arquivo dedicado, que nomeamos prefixando o nome do arquivo original com `UPPER-`. @@ -727,7 +727,7 @@ cat output.txt | tr '[a-z]' '[A-Z]' > UPPER-output.txt Agora, a saída do `HELLO WORLD` está no novo arquivo de saída, `UPPER-output.txt`. -### 7.3. Envolvendo o comando em uma nova definição de processo do Nextflow +### 6.3. Envolvendo o comando em uma nova definição de processo do Nextflow Podemos modelar nosso novo processo com base no primeiro, já que queremos usar todos os mesmos componentes. @@ -757,7 +757,7 @@ Como um pequeno bônus, aqui compomos o segundo nome de arquivo de saída com ba !!! dica É muito importante lembrar: é necessário usar aspas duplas ao redor da expressão do nome do arquivo de saída (NÃO aspas simples) ou haverá falha. -### 7.4. Adicionando uma chamada ao novo processo no corpo do fluxo de trabalho +### 6.4. Adicionando uma chamada ao novo processo no corpo do fluxo de trabalho Não se esqueça de que precisamos dizer ao Nextflow para realmente chamar o processo que acabamos de criar! Para fazer isso, nós o adicionamos ao corpo do fluxo de trabalho. @@ -774,7 +774,7 @@ workflow { Parece bom! Mas ainda precisamos conectar a chamada do processo `convertToUpper` para ser executada na saída do `sayHello`. -### 7.5. Passando a saída do primeiro processo para o segundo processo +### 6.5. Passando a saída do primeiro processo para o segundo processo A saída do processo `sayHello` é automaticamente empacotada como um canal chamado `sayHello.out`, portanto, tudo o que precisamos fazer é passá-la como entrada para o processo `convertToUpper`. @@ -785,7 +785,7 @@ convertToUpper(sayHello.out) Para um caso simples como esse, isso é tudo o que precisamos fazer para conectar dois processos! -### 7.6. Executar o mesmo comando de fluxo de trabalho anterior +### 6.6. Executar o mesmo comando de fluxo de trabalho anterior Vamos nos certificar de que isso funcione: @@ -833,7 +833,7 @@ Os fluxos de trabalho normalmente são executados em lotes de entradas que devem Convenientemente, a fábrica `Channel.of()` que estamos usando aceita de bom grado mais de um valor, portanto, não precisamos modificá-la; basta carregar mais valores no canal. -### 8.1. Carregando várias saudações no canal de entrada +### 7.1. Carregando várias saudações no canal de entrada Para manter as coisas simples, voltamos a codificar as saudações na fábrica do canal em vez de usar um parâmetro para a entrada, mas melhoraremos isso em breve. _Antes:_ @@ -852,7 +852,7 @@ greeting_ch = Channel.of('Hello','Bonjour','Holà') A documentação nos diz que isso deve funcionar. Será que realmente pode ser tão simples? -### 8.2. Executando o comando e vendo a saída do registro +### 7.2. Executando o comando e vendo a saída do registro Vamos tentar. @@ -876,7 +876,7 @@ No entanto... Isso parece indicar que foram feitas “3 de 3” chamadas para ca Por padrão, o sistema de registro ANSI grava o registro de várias chamadas para o mesmo processo na mesma linha. Felizmente, podemos desativar esse comportamento. -### 8.3. Execute o comando novamente com a opção `-ansi-log false` +### 7.3. Execute o comando novamente com a opção `-ansi-log false` Para expandir o registro em log para exibir uma linha por chamada de processo, basta adicionar `-ansi-log false` ao comando. @@ -913,7 +913,7 @@ Você deve se lembrar que codificamos o nome do arquivo de saída para o primeir Isso foi bom desde que houvesse apenas uma única chamada feita por processo, mas quando começamos a processar vários valores de entrada e a publicar as saídas no mesmo diretório de resultados, isso se torna um problema. Para um determinado processo, cada chamada produz uma saída com o mesmo nome de arquivo, portanto, o Nextflow simplesmente substitui o arquivo de saída anterior sempre que um novo é produzido. -### 8.4. Certifique-se de que os nomes dos arquivos de saída sejam exclusivos +### 7.4. Certifique-se de que os nomes dos arquivos de saída sejam exclusivos Como publicaremos todos os resultados no mesmo diretório de resultados, precisamos garantir que eles tenham nomes exclusivos. Especificamente, precisamos modificar o primeiro processo para gerar um nome de arquivo dinamicamente, de modo que os nomes dos arquivos finais sejam exclusivos. @@ -962,7 +962,7 @@ process sayHello { Isso deve produzir um nome de arquivo de saída exclusivo para cada chamada de cada processo. -### 8.5. Execute o fluxo de trabalho e veja o diretório de resultados +### 7.5. Execute o fluxo de trabalho e veja o diretório de resultados Vamos executá-lo e verificar se ele funciona. @@ -1024,7 +1024,7 @@ Hello,Bonjour,Holà Portanto, só precisamos modificar nosso fluxo de trabalho para ler os valores de um arquivo como esse. -### 9.1. Configurando um parâmetro da CLI com um valor padrão apontando para um arquivo de entrada +### 8.1. Configurando um parâmetro da CLI com um valor padrão apontando para um arquivo de entrada Primeiro, vamos usar o argumento `params` para configurar um novo parâmetro chamado `input_file`, substituindo o parâmetro `greeting`, agora inútil, com um valor padrão que aponta para o arquivo `greetings.csv`. @@ -1046,7 +1046,7 @@ _Depois:_ params.input_file = "data/greetings.csv" ``` -### 9.2. Atualizando a declaração do canal para lidar com o arquivo de entrada +### 8.2. Atualizando a declaração do canal para lidar com o arquivo de entrada Neste ponto, apresentamos uma nova fábrica de canais, `Channel.fromPath()`, que tem algumas funcionalidades integradas para lidar com caminhos de arquivos. @@ -1085,7 +1085,7 @@ greeting_ch = Channel.fromPath(params.input_file) .flatten() ``` -### 9.3. Executando o fluxo de trabalho (uma última vez!) +### 8.3. Executando o fluxo de trabalho (uma última vez!) ```bash nextflow run hello-world.nf