 Olá pessoal, sejam bem-vindos a mais uma edição do treinamento do projeto NFCore, certo? Esse vai ser a primeira edição que a gente vai fazendo em alguns idiomas. Então, antes de tudo, sejam bem-vindos e bem-vindas a participada mais uma edição com a gente em um dos cinco idiomas que vamos ter, certo? Então, tem o treinamento em inglês, tem esse treinamento em português, tem esse treinamento em francês, em espanhol, em Hindi e é o mesmo treinamento, o mesmo cronograma, o mesmo conteúdo, mas por estruturas diferentes em idiomas diferentes, certo? Então, o objetivo desse curso é dar um ponto de partida desse treinamento para quem é novo no next to NFCore, às vezes tem um conhecimento, mas está um pouco inseguro, esse treinamento começa bem no início e vai galvando essas várias etapas ao longo do material para a gente preparar para vocês. É necessário algum entendimento básico de linha de comando, de lindos e algumas coisas, mas a gente vai levar um passo bem leito, de modo que mesmo quem não saiba, vai ter condições de compreender. Esse treinamento pré-gravado, então, ele vai estar disponível no YouTube, vai seguir disponível no YouTube, então, fiquem à vontade para pausar em alguns momentos, porque isso não tem nenhum problema. É interessante uma compreensão básica das ferramentas comuns e de informática, porque elas vão ser utilizadas em vários exemplos que a gente tem aqui, certo? Então, se você já conhece, ele vai ter um pouco mais de facilidade, mas mais uma vez, se não conhecer, também não vai ser um imperativo tão grande, certo? Lembrando que os conhecimentos que são mostrados aqui, eles se apliquem a outras disciplinas, além da informática, mas como a maior parte das pessoas que utilizam o next flow, é a sensação da informática, mas mais sentiram esses exemplos aqui, certo? Mas você pode utilizar o next flow em qualquer tipo de data, em qualquer área do conhecimento. As sessões diárias, elas vão ter aproximadamente duas horas, às vezes um pouquinho menos, um pouquinho mais, e isso também vale um pouco até com o instrutor, mas o objetivo é estar em torno de duas horas cada sessão diária, certo? Essa primeira sessão de hoje, ela tem essas boas vidas rápidas, cinco minutinhos, tem uma palestra que dá um panorama bem geral do next flow e do next flow, vai durar cerca de 25 minutos, e aí nós entramos de fato no material de treinamento, no primeiro capítulo dele, que é o introdução do next flow, que vai ter mais ou menos 15 minutos de duração, e um outro capítulo que é construído zero, uma prova de conceito de um pipeline de Arnecique, certo? No segundo dia, a segunda sessão, nós teremos um dia muito mais voltado para o projeto NFCore, para as ferramentas do projeto NFCore, para os pipelines do NFCore, assim comprar os padrões de boa conduta de como desenvolver, certo? Com módulos, com sub-workflow do NFCore, então vai ser um dia bem NFCore, digamos assim. O terceiro dia, vamos falar de genes que é de dependências, de softs, bibliotecas, de scripts, assim como containers, certo? Falar um pouco de conta, vamos ter também um capítulo, toda essa parte seguindo os capítulos do material de treinamento. Estou falando de canais, processos, operadores do next flow, introdução ao groove, que é uma linguagem que o next flow é construída em cima, certo? Então, conhecer um pouco de groove ajuda, mas não é necessário, certo? Não é fundamental. Um pouco de modularização, que ajuda bastante, quando vai desenvolver pipelines maiores. E no último dia, nós só vamos ter um foco grande e é caçado de configuração de um pipeline para ambientes diferentes, como implantar esses ambientes diferentes, em clusters, na númen, diferentes empresas de númen, em serviços de númen, diferentes jobs cadres, o Slurm, PDS, Torque e todos esses. Um pouco sobre a tecnologia de cache do next flow, assim como de retomagem de pipelines interrompidos. Um pouco de solução de problemas que se encontra no dia a dia, certo? E eu introduço ao next flow o tal aqui, uma ferramenta que ajuda bastante, quando você quer colaborar com outros pesquisadores, com os analistas do pipeline, monitorar as execções pipelines e se pôr diante. O material de treinamento, ele pode o tempo inteiro ser acessado por qualquer pessoa desse endereço, no nettraining.nextflow.io, ele é gratuito, qualquer um ele pode ser acessado. Nós vamos utilizar uma plataforma, mais ou menos, GitPower, para fazer esse treinamento, o que significa que você vai com o teu navegador, seu Firefox, o Chrome, o que for, acessar um site e você vai ter acesso a um computador na nube, onde já tem tudo instalado, que você apenas utiliza o que já está configurado e instalado para você. Também pode fazer na tua máquina pessoal, posteriormente é indicado, mas de início é para aumentar o ambiente já prontinho para você praticar e entender o que está acontecendo. Vamos utilizar o GitPower. Para ser autenticado no GitPower, tem que ter uma conta no GitHub, certo? Então quem não tem, crie uma conta no GitHub, precisa ter uma conta no GitHub e ele tem um plano gratuito mais do que o suficiente, certo? Então ninguém precisa gastar nenhum recurso com esse treinamento. Essas gravações, como eu falei, são pré-treinadas, essas sessões, seguirão online, e vocês poderão reassistir em um outro momento, pausar no seu ritmo e tudo mais, não terá problema. Como elas são pre-gravadas, não vai ter essa condição de tirar dúvidas online ao vivo, mas o tempo inteiro, vocês poderão acessar o Slack do NFCore, que é um software de bate-papo, do NFCore, certo? Então tem os canais, você pode conversar. Nós temos aqui esses vários canais, você pode perguntar no canal que você assistia à vontade, com idioma daquele canal. Então o que quiser fazer uma pergunta em inglês, fica à vontade, para ir ao primeiro canal. O que quiser fazer em português, ver esse penúltimo canal aqui, certo? É importante ressaltar que nós vemos mais mil inscrições para esse treinamento. Então certamente seremos muitas perguntas, muitas dúvidas, bastante pacientes de vocês, para a resposta. Porque nós não temos tantos voluntários para responder todo mundo em um tempo álbum, certo? Então eu tenho assim recomendado, que isso é um pouquinho de inglês, tentar perguntar, se perguntar no canal de português demorou, pergunta do canal inglês também é inglês. Porque tem mais pessoas que falam inglês e poderão te ajudar. Mas tem um equipe preparado, eu inclusive, que vamos estar sempre prestando atenção, principalmente nesse período, nessa semana do treinamento, para responder todas as perguntas, certo? Dá algum tipo de feedback. Então é isso, pessoal. Vamos começar, certo? Entrando nesse sitezinho aí, e eu vou compartilhar o tempo inteiro na minha tela, se você puder acompanhar também, certo? Vamos abrir aqui o material de treinamento. Então, assim que vocês entarem, assim que vocês entarem nesse endereço, vocês não vêem isso aqui, ele é um site que está em inglês, certo? Mas aqui em cima, tem esse iconizinho, você pode ver que ele cai em português. E com isso, todo conteúdo está traduzido em português, certo? Então não apenas eu vou estar aqui falando com vocês em português, mas também todo o material vai estar em português aqui. Antes de começar de fato com esse material, nós vamos ver essa apresentaçãozinha aqui, certo? Quando eu vou lá para vocês aquele panorama geral, que eu falei de cerca de 25 minutos sobre o nextflow e sobre o NFCore, certo? Então são instantes. Ok. Então, assim, uma palavra que vem muito em mente quando a gente fala sobre o nextflow, essa pipeline de das em geral, essa é a questão de reprotabilidade. Então, o grande foco desses slides, quando eu vou aparecer para vocês eu vou colocar muito nisso. Então, meu nome é Marcelo, pessoal. O que eu estou apresentando ainda, meu nome é Marcelo. Eu sou developer advocate da Sequeira, que é empresa por trás do nextflow. Estou responsável pela área da América Latina e Caribe. Então, qual é o tipo de oportunidade em relação a eventos, treinamento, dúvidas, parcerias, colaborações. Toda disposição para ajudar vocês, certo? Eu sou engenheiro da computação, tenho um mestrado informático, um doutorado informático, uma especialização em bind data, em informática na saúde. Então, essa é uma área que eu tenho bastante interesse, experiência, computação, dados, entrelinatorial, informática, certo? E é isso. Vamos falar um pouquinho agora sobre essa questão de reprotabilidade nextflow e NFCore. Quando eu falo nesse assunto, a primeira coisa que me vem em mente em relação a essas buzzwords, em termos mais macros, é a questão de open science, certo? Então, é fundamental que você tenha um ecossistema de ciência aberta para poder, de fato, usufri o máximo possível desse ambiente de pipeline, análise de dados, de reprotabilidade, certo? Então, as ferramentas que você utiliza, de preferência, é interessante que ela seja um open source que acelera o código aberto, para que você possa entender a metodologia, o que que ele programa está fazendo com os teus dados, certo? O nextflow iliede, o código aberto, só para dar um exemplo. Open data, então, é fundamental que você compreenda os teus dados, querendo ser de dados abertos, você possa ter noção do que tem ali, certo? Poder fazer algum tipo de análise, até descretir para entender os teus dados melhor, então, é fundamental que esses dados sajam abertos. E uma comunidade também muito aberta e integrada, no gosto de falar. Então, você escreve pipeline, tem seus dados, seus experimentos, você faz seu estudo, mas é fundamental que outras pessoas terem de replicar o que você fez, certo? E tentar reproduzir seus resultados. Então, não adianta só várias pessoas com muito controle, mas de forma isolada. Na minha opinião, é importante ter essa integração, certo? Ou você precisa utilizar o seu pipeline, testando, achar fundamental. Então, vamos para a ideia de workflow genômicos, né? Como eu falei, o foco vai ser muito bem informática, mas se aplica a qualquer área. Eu gosto de falar desse tipo de assunto exemplificando o workflow genômicos porque eles são geralmente bem mais complexos e mais difíceis de lidar. E aí, mostrando que o nextflow linda muito bem com eles, se consegue ele dar alguma coisa, né? Então, esses dados genômicos, ele geralmente tem dois caracteres que são raramente encontrados ao mesmo tempo juntas, né? Que é o quê? São bases de dados muito grandes e são múltiplas bases de dados muito grandes. Então, não é que eu tenho um arquivo muito grande, é que eu tenho muitos arquivos muito grandes e geralmente de fontes diferentes, certo? Então, são dados heterogêneos em grande quantidade e cada um dessas quantidades é bastante grande também, certo? Além disso, é muito comum você ter um conjunto de ferramentas muito heterogêneos. Eu vou ter nessa minha análise, certo? Esse meu pipeline de dados, eu vou ter ferramentas escritas em Python, ferramentas escritas em ER, alguns em Matlab, talvez, alguns programas compilados, alguns escritos personalizados que eu mesmo desenvolvi para aquele meu caso específico. E eu quero que tudo isso trabalha em harmonia do meu pipeline de dados. É muito complicado, certo? É muito comum isso em várias áreas mas em orculogenômicos principalmente, certo? Além disso, a gente encontra, geralmente, pipelines que eles são dinâmicos, o sentido de que durante a execução, eles alteram o seu comportamento. Então, em uma execução, eu posso seguir um caminho e em outra, pode acabar aqui outro, como ele dizia seguido, sério? Certo? Às vezes, tem algumas ferramentas que elas são melhores para uns dados com boa qualidade, com menor qualidade, com tal tamanho, de tal tipo. Então, durante a execução do pipeline, dependendo de como está aquele estado on the fly, durante a execução o pipeline importa uma decisão diferente. Então, isso é comum em workflows de genômica e não é o trivial. Sempre é um pipeline que se adapta em tempo real sem ter necessário a interação do desenvolvedor do pipeline ou do analista, certo? Então, tem vários exemplos pipeline de informação que é apenas um, de um estudo, nesse caso haviam setenta etapas desse pipeline, certo? Cinquenta e seis inscritos personalizados dos autores e quase quarenta ferramentas bibliotecas. Então, tudo isso junto com os dados tem um ambiente de computação de gente ter esse flow que trabalha esse workflow, né? Esse pipeline, na verdade, a gente costumou falar que o workflow é a descrição em si dos participantes, o pipeline é tudo junto, os dados, no ambiente de execução, o pipeline temos o workflow, temos o conjunto total do pipeline. Aqui tem um estudo muito interessante, inclusive de alguns dos autores do next flow, Paulo Vittor Maso, que mostrou ali em 2017 já, o que na época do lento da pauvidade, mas que ainda hoje se vê como novidade nisso, essa dificuldade de reproduzir análises no geral, não só tudo se epica, mas também análises na indústria, certo? Então, o que eles mostraram, basicamente, é que rodando análises, buscando manter o meu versículo de software, configuração, dados e tudo mais, só no denominação operacional, já havia alguns mudanças considerados, certo? Então, aqui, por exemplo, eles mostraram que essa tabela do artigo, que o número de genes da mesma análise, ele variou dependendo de em qual sotape operacional era executado aquela análise, certo? E tem várias informações distoânsia dessa tabela e dos termos operacionais, por mais que tenha sido o mesmo pipeline, os mesmos dados, e assim por diante, certo? Algum tempo depois, em 2019, um outro estudo mostrou que o problema não tinha se resolvido. Eles tinham problemas, não só de conseguir instalar os programas, que às vezes se relatavam na análise, quando se conseguiam instalar, porque eles nem encontravam para ensinar, mas que conseguiam instalar, configurar, adivinhar quais parâmetros tinham sido utilizados, certo? E qual versão do software. Então, mostrou replicar análises. E eu deixei bem claro que essa diferença entre replicar e reproduzir os resultados, o que replicar é apenas a capacidade de repetir os passos. Tendo isso, não garantia que os resultados serão os mesmos, certo? Então, é fundamental saber que replicar é importante, mas, uma vez, replicadas etapas, tem o que também reproduzir os resultados. É interessante eu conseguir encontrar os mesmos resultados que os autores daquela análise, pipeline, eles atingiram, são bastante complicados. Tem alguns termos bastante conhecidos, como a crise de reprotabilidade da ciência. E essa tecnologia tenta ajudar nesse sentido, impedir essa crise, trabalhar contra essa crise, resolver essa crise, facilitar reprotabilidade. Eu gosto muito dessa imagem, porque, principalmente que na área acadêmica é muito comum chegar um colega e receber esse novo método, esse novo modo de fazer isso, agora pegarmos os dados e testar com esse novo método, se funciona. E a gente deixa o novo método. Quando, na verdade, isso é só uma pontinha do esperto, que tem uma infinidade de coisas lá embaixo. Quais foram as versões dos sótios que foram utilizados, quais foram os parâmetros, qual era o samba para nacional, qual era o ambiente de computação, que todos testes de quem criou essa metodologia utilizou, será que essa metodologia tango ao conto disso, para aquele tipo de dado, mas não para o meu, ou até para aqueles dados específicos dos autores. Então, tem uma infinidade de coisas que, se você não tiver acesso e controle, pode ser que um método precioso, não só tem o resultado ruim, mas também o ciúme, certo? Então, tem um universo de coisas que precisam ser levadas em consideração, quando a gente fala em reprotabilidade, por mais que as vezes, por mais que as vezes algumas coisas parem simples. Porém, o ponto de vista principal é bastante complexa, pode depender de muitos parâmetros variáveis que vão te impedir de encontrar o que os autores de certo ter encontrado, certo? Tendo dado por essa introdução, vamos falar agora do next loop, certo? E o que é o next loop? Antes de tudo, o next loop é uma linguagem, certo? É uma linguagem de descrição e pipeline. Então, você vai usar linguagem e next flow para descrever o teu pipeline, passo a passo, certo? Essas descrições de pipeline, elas são divididas em três conceitos principais. O primeiro conceito é o processo. Então, a gente chama no next flow, no linguajado, o next flow, a gente chama de processo cada etapa do teu pipeline. Então, cada passo do teu pipeline é um processo que a gente chama. Esses processos e etapas, eles se comunicam através de um canal de comunicação, certo? Então, imagina esses quadrinhos verdes como as etapas, os processos. Esses processos se comunicam através de canais de comunicação e sempre que eu tenho um número de processos se comunicando através daquilo que eu tenho, um workflow, certo? E lembrando que eu, esse workflow em uma computação contra aquilo ali, eu vou ter um pipeline, certo? Aqui é um exemplo bem simples, bastante simples, certo? De um pipeline com o next flow, ele tem aqui a dvn, uma etapa, aí eu tenho um processo chamado FastQC, então tenho um processo, uma etapa com algumas informações escrevendo que está sendo recebido como a etapa que ela espera, o que ela entrega ao final na saída, no bloco de Auto.net saída, o que ela faz nesse bloco de script, então eu descrevo o que acontece, como acontece. E eu tenho um bloco final chamado de workflow que é onde está a lógica do pipeline. Então aqui eu falo basicamente que eu vou receber uns dados e vou passar para o processo FastQC, e é isso. Como eu tinha falado, um pipeline foi bastante simples, certo? Mas que dá para você ter um gostinho do next flow e descrever o pipeline. Uma coisa muito interessante no next flow é que a gente vai de paralelismo implícito. Então, para você realmente ter um pipeline produzível, escalável, de altíssima qualidade, isso demanda um conhecimento computacional muito grande que a gente nem espera que todo mundo tem, porque não faz sentido. Se você tem que ter um conhecimento geral, claro, de vários assuntos, de especialistas, nos seus assuntos que elas são especialistas, certo? Então imaginar que para poder escrever um pipeline todo mundo tem que ser um gênero da computação, isso faz o menor sentido. Com isso em mente, o next flow traz vários recursos implícitos que sem você se preocupar ou se quer entender isso, ele já vai fazer o melhor possível para você. Um exemplo é esse paralelismo implícito. Então o que isso significa? Quando você tem um etapa que vai ser repetido para vários arquivos diferentes, esses dados vão estar no canal de comunicação, certo? O next flow vai criar instâncias automaticamente para aquele processo. Então um etapa que vai ser repetido 10 vezes, eu posso criar 10 instâncias desse etapa que podem ser executadas no paralelo. Sem você ter que se preocupar o que é paralelismo o que é paralelismo computacional, você não tem que nem saber o que é isso. O próprio next flow vai apenas identificar aquela situação onde o paralelismo pode acontecer e vai paralelizar para você aquela execução. Você pode controlar isso, se você paralelizar mais ou menos, mas o que importa é saber que o next flow ele vai, como mostrou aqui, criar três instâncias que eram três elementos, depois ele novamente tem que filer o canal e dar o resultado. Então tem diversas questões que são fundamentais e que o next flow é feito para você. Mas na frente vocês vão ver como a gente quer gerenciar ambientes, instalar pacotes, implantar aquilo ali num cluster com tal tecnologia ou na nuvem, então você vai falar, next flow é essa tecnologia e ele vai ter uma camada de extração para fazer essa tradução, essa configuração essa instalação, tudo que é necessário fazer você não tem que se preocupar com isso. Então são vários recursos implícitos que você tem controle, mas não precisa se preocupar com a mesma necessidade que geralmente tem e o director vai fazer isso para você. Então obviamente esses pipelines podem ser muito mais complexos, não é apenas um processo com três amostras, eu posso ter literalmente minhares instâncias rodando, para ir em paralelo, entendeu? Então o next flow é essa paralelização para você, ele traz uma tecnologia muito interessante, essa reentrância que você pode retomar execuções que foram interrompidas porque você quis ou porque teve algum problema e aí você corrige um problema e quando o mundo executar, você pode escolher que ele retoma de onde parou, isso é fundamental e alguns pipelines eles podem durar semanas, vezes e um erro no começo, você tem que começar a produzê-lo para o menor sentido, o que você deseja, certo? Então essa é a questão de re-usabilidade, certo? Permite que uma vez que você tenha construído um pipeline, qualquer pessoa passar facilmente repetindo o pipeline, o que implicando só em replicar os passos perfeitamente como você os fez, mas também encontrar seus resultados, porque o modo para ensinar o empreendimento é de conseguir isolar esses etapas de modo que seja facilmente reproduzível em qualquer lugar do mundo, certo? Então beleza, entendemos que o pipeline que ele descreve um pipeline, todo passo a passo como você quer e tudo mais, mas só descrever algo, não significa que ele não vai acontecer, certo? Vai existir. Então ele precisa de mais coisas. Uma outra coisa que ele precisa são os softwares, né? Quando eu falar nesse fato, passa isso. Eu tenho que ter esse programa para esse passo acontecer e eu tenho que ter o que chama de computing environment, eu tenho que ter um ambiente de computação onde esse pipeline vai ser executado, certo? Então a gente tem várias tecnologias que suportam relativamente, que te ajudam a trabalhar com isso. Então tem o Git, que é um sistema de versionamento de código, e você pode utilizar todos esses serviços de Git, um Git Hub, Bucket, Git Lab, usar a nuvem como AWS Code Commit, USR, Rapples, ok? Então tem todas as tecnologias e isso é muito interessante, porque uma vez você tem o pipeline no Git Hub, apenas com um link do Git Hub, a pessoa consegue executar tranquilamente. O que eu quero dizer com isso? Você vai falar do nextflow, executa o pipeline e o nextflow vai baixar, organizar um sistema operacional, executar, configurar ele vai se preocupar de todo o resto do trabalho. Você apenas aponta o repórter do Git Hub e do Git Bucket e o nextflow faz o resto. Então quando eu falo de suporte nativo, sempre vou falar de suporte nativo e entenda que é o nextflow fazendo diversas coisas para você ter a comunidade de focar no que é importante. Fazer sua análise, interpretar os resultados e fazer o suporte natural. Certo? E elas são as soltas. Tem várias tecnologias que o nextflow suporta nativamente, então Docker, Podman, Singularity para a tecnologia de container, isolamento de ambiente, certo? Para garantir essa repartibilidade e tem várias ferramentas de gerenciamento e instalação de pacotes, como Conda, como Spec, que é muito conhecido na relação ao desempenho. Então tem várias ferramentas que o nextflow suporta nativo para lhe ajudar a comunidade. E em termos de ambiente de computação, você tem todos esses ambientes com suporte nativo por parte do nextflow. Então em termos de jobs scheduler, de escalonamento de tarefas em clusters, tem Slurm, SQI, LSF, FBS, Torque, e todas as tecnologias, o nextflow tem suporte nativo e ele vai estourar esse meio de campo para você. Do test que você vai olhar no seu computador, no dia que você fala ah, eu quero agora rodar no srn, você pode adicionar algumas coisas que você quer, tem mais controle, mas fosse só no nextflow e gerar e configurar tudo que é necessário para rodar aquilo ali no srn, certo? Em relação a nuvem, o nextflow suporta os principais serviços de nuvem public e privada. Então Microsoft Azure, Google Cloud Platform, Amazon AWS, OpenStack e inclusive tecnologias como Kubernetes. Então assim, tem muita tecnologia que o nextflow tem suporte no srn, você tem que usar show, não tem que se preocupar com muita coisa, a boa parte do trabalho o nextflow vai fazer. Em termos de reproductibilidade, eu tenho um outro exemplo aqui de uma etapa, um processo de um pipeline chamado index e aqui é muito interessante porque digamos que eu queira instalar o pacote Salmon, certo? Então o pacote é um alinhador, o seu alinhador de informática e eu quero que esse eu não me marcantei instalar e instalar, mas eu quero que esse onde for que eu queira rodar esse pipeline eu quero que essa etapa, ela tem vídeo Salmon instalada com um conda a partir do repositório do bioconda na versão 1.9.0 Só escrevendo essa linha, quando eu rodar no meu computador, você rodar no Amazon AWS, Joãozinho rodar na Microsoft Azure, Mariazinho rodar no cluster da instituição dela com srn. O nextflow que vai se se preocupar e você pode instalar, criar um ambiente, carregar um ambiente para aquela tarefa específica, toda essa preocupação é o nextflow que faz em qualquer ambiente que você escolher executar aquilo ali. Mas digamos que não, você não quer rodar com conda, você quer um container do Docker. Beleza? Bota container, bota name space onde está organizado essa imagem, um nome e onde estiver o nextflow que vai baixar esse container que vai rodar com Docker. Ah, mas eu quero um executor e eu quero também ter várias informações, certo? Eu posso ter aí o executor, o container e várias outras diretivas que a gente chama, que mais um pouco mais detalhes, certo? Você pode ter várias diretivas, várias compurações para aquela etapa e onde quer que isso vai por lá sendo executado, o nextflow vai se preocupar de fazer as escolhas corretas para aquele ambiente de computação. Então aqui entendemos que o nextflow ele é reproduzível em qualquer outro lugar, ele tem essa reproduzibilidade. Ele é portável entre os sistemas um pipeline que foi escrito aqui no macOS, ele vai ser executado no teu Linux, no outro Windows, ele, enfim, em um outro lugar na nuvem ele tem essa portabilidade entre sistemas e ele escalável, o modo como ele é construído permite uma escalabilidade muito boa. Então pipelines criados com testando com poucos dados tem muitas facilidades, como você tem uma comada de dados muito maior tanto em número como em tamanho dos arquivos em si, o nextflow ele consegue escalar muito bem. Então beleza, ficou claro o que é o nextflow? Perdão. O que é o nextflow? Então vamos agora para o NFCore. O que é o NFCore? Então o NFCore ele é um esforço da comunidade, um esforço voluntário para coletar um conjunto curado de pipelines criados usando o nextflow, então tanto é adotar pipelines com o nextflow que outros tenham criado como criar os próprios do projeto NFCore certo? Então hoje o projeto tem mais de 70 pipelines, está até um pouco desatualizado, eu já passava 34 pipelines, certo? E não só criar as pipelines como também criar ferramentas para facilitar a criação de pipelines e a manutenção destas certo? Então tem ferramentas para você mais facilmente executar um pipeline ferramentas para facilitar que você escreva o pipeline, você teste o pipeline, automatize algumas etapas, certo? Além disso, tem esse conceito de módulos, certo? Que são processos de aprontismo para você acoplar o pipeline, assim como conjuntos de módulos como o suborflow, certo? Então imagine por exemplo se você vai criar da pipeline e você pensa que você vai criar, há muito tempo que eu estou tem muita gente que escreve o pipeline de qualidade e controle, tem controle de qualidade por exemplo, esse cara tanto a gente já criou, eu tenho que criar os zeros, e às vezes não é só um módulo eu tenho dez programas que todo mundo usa para fazer uma etapa, mas você fala que você tem que criar os zeros, será que ninguém já criou? Será que alguém conhece muito mais o next load que eu já não criou bem feitinho? Essa é a ideia dos módulos e seu pipeline, acho que passou de 800 já na verdade módulos, que você com comandinho fala eu quero esse módulo esse módulo, ou eu quero esses dois dos workflows e automaticamente, quando você tem criado um archive bolso pipeline com NFCore tools, ele vai implantar aquele pipeline, você que é pronto, então tem pipeline, que boa parte dele você faz só ou não, eu quero isso, isso muito para mim, e eu vou acreditar que essa estava final aqui, que é específico para o meu caso, então isso tem que ser com a comunidade, usar um módulo comum que facilite até o suporte para ajudar, porque todo mundo está mais ou menos seguindo aquela linha de raciocínio e a ideia de colaborar, mas não duplicar esforços, então 80 pipeline é tão pouquinho que o NFCore tem, são muito grandes na verdade, porque nós só incorporamos com o pipeline curado por NFCore pipelines muito diferentes de tudo que a gente tem, de modo que a gente possa trabalhar para manter os pipelines atualizados com as maiores ferramentas duromais, então a gente tem patrocínio da Amazon da Microsoft, para ficar testando automaticamente, é cada um de esses pipelines então tem um recurso de gás, que é muito caro, para ficar esse teste sempre com grans com a base de gás e duromais então se a gente tivesse 2 pipelines muito parecidos seria um desperdício de tempo, de esforço e de recursos, em vez de focar apenas um deles, então esses 80 pipelines são, cada um faz uma coisa muito específica e diferente das demais então pipeline para lidar com das garneis SIG, tem um pipeline single cell arneis SIG, tem um pipeline attack SIG, um pipeline metis SIG, um pipeline, analas imagens, um pipeline e assim por diante na verdade é muito grande comparado com a impressão inicial que a gente tem então hoje a comunidade do NFCore é bastante grande, vocês podem ver tanto em termos de número de pessoas são quase 5 mil usuários no Slack certo, em termos de combits nos repositores do NFCore são quase 50 mil, então é uma comunidade bastante ativa, bastante grande e aqui é um mapinho de acessos do site para o NFCore você vê que tem bastante gente boa parte do mundo está um pouco desatualizado essa imagem, já vei que na América do Sul, a América Latina e Caribe está começando a crescer bastante o uso também embora não seja um número de usuários tão grande quanto em outros lugares do mundo então também tem um paper que foi relatar essa experiência de criar uma comunidade para curar pipelines de bifomata que é o NFCore e é um convite que eu deixo que vocês se juntam a nós então quem quiser fazer pergunta já vai entrar no Slack para perguntar por lá mas fica lá, frequenta meu GitHub, Twitter, YouTube do NFCore tem sempre vídeos, tem uma palestra semanais que são os bite-sized socks que a gente tem, sempre colocando legenda em português também então participem, sejam muito bem-vindos para participar e trabalhar com a gente aproveito para, no finalzinho vou falar do do hackathon, então assim, uma outra coisa se encerrar, esses slides falando um pouco do nextflow tower esse nome tower para mim é bastante sugestivo porque ele entrega já qualquer ideia da tecnologia ele é uma torre de comando e como qualquer torre de comando ela não só permite que você decomando o que fazer como um monitório que você está acontecendo então o nextflow tower ele é um site, é uma plataforma web um software como o serviço que é o tower f.nf e ele oferece uma interface intuitiva para executar os slide lines mas não só isso, para gerenciá-los em termos de colaboração acesso, permissões, quais das utilizarem com as ambinhas computacionais e também monitorar a execução do slide line, certo? permite também que você crie e que você consiga a sua facilidade então é um ator de comando muito poderosa perdão, então o tower vem de três versões, certo? tem uma versão community que é o Pessoas então um pouco desatualizada e as duas principais que é o mini tower cloud e o tower enterprise perdão, então o tower cloud ele tem um plano gratuito certo? porque ele é praticamente o que boa parte das pessoas precisam de paralelo, de histórico limitado mas é mais que muito que precisam, certo? e tem alguns planos pagos que permitem mais fode de suporte, o que do mais e tem também a versão que é o tower enterprise que é um prêmio que a gente fala que ele é instalado e mantido na infraestrutura do cliente, essa é uma versão de puramente comercial um serviço da saqueira oeste, certo? então é isso pessoal agora final de março vai ter o hackathon, um pouquinho depois da semana agora que é o treinamento esse hackathon ele é aberto para todos e todas se você não me visa a participar, certo? não é necessário nenhum conhecimento prévio agora é só lembrar que ele não é um dia de treinamento vai estar para o treinamento o momento de aprender, é esse agora lá você obviamente vai fazer perguntas participar, pedir ajuda mas não vai ter assim uma pessoa disponível o tempo inteiro pra ficar tirando dúvidas é mais realmente uma coisa de mão na massa mas tem vários tipos de contribuição tradução, documentação tem várias atividades de design tem várias atividades que você pode contribuir ainda que você seja um expert em nextflow, certo? todo mundo a gente tem o nextflow summit que é o maior evento do nextflow então o ano passado os sites ESs podem entrar todas as palestras estão gravadas para quem quiser assistir muito interessante de várias empresas informáticas de Nubi como Google Amazon, Microsoft e é importante lembrar que o projeto NFCore assim como nextflow são financiados, eles tem um abrante da Challenge Ricaberg Initiative da CGI Foundation então temos a agradecer nessa colaboração esse financiamento da CGI, assim como da Microsoft e da Amazon para a infraestrutura de testes desses pipelines, certo? então vou me encerrar agora que esses slides e começar o treinamento de fato como eu tinha falado para vocês então como eu falei, entrando aqui no training.nextflow.io você vai ficar nesse símbolo aqui e escolher o idioma que você quer em português ele está completamente traduzido, certo? e você vai clicar aqui nesse treinamento básico de nextflow porque a gente vai utilizar hoje como esse dia de treinamento entrando aqui tem todas as sessões aqui do lado esquerdo entrando nelas você vai receber aqui do lado direito os subcapítulos de cada uma dessas sessões certo? a ideia é que ao final desse treinamento você tem uma capacidade realmente boa de escrever os próprios pipelines com o nextflow tem um domínio razoável dos conceitos bastante importância o nextflow que é a ideia de canal, de processo de operadores, tem uma compreensão de como utilizar containers, tecnologias de containers para se o fluxo de trabalho seja reproduzível, certo? para trabalhar com qualquer um ambiente um pouco mais tranquilo com maior garantia que você entenda que você e por que a intenção de utilizar o nextflow indiferente para dar famos de dia execução sair do computing environment na nuvem, cluster, colocar no teu computador e que você também tem uma noção maior e que fica mais à vontade e participar da comunidade do nextflow e do nevcorp, certo? então aqui tem uma visão general que você pode fazer com mais calma isso aqui certo? tem bastante texto, eu não vou ler o texto todo momento e aqui eu vou tentar pinçar o que é importante e vocês fiquem à vontade para checar esse material como eu falei em train.nextflow então bora aqui para configuração do ambiente então eu cliquei sem querer aqui eu falei já no começo que você tanto pode instalar localmente na tua marca do nextflow então brevemente para você rodar o nextflow você tem que ter o java instalado o git e o docker para esse treinamento que vai fazer aqui mas não sei como é que está o git e o docker por isso que você não tem que se preocupar em fazer essa instalação de configurações do git port está tudo instalado mas isso aqui é o fundamental para esse treinamento que você quiser localmente para instalar o nextflow é um comandinho muito simples e enfim mas vamos direto do git pod é só clicar nesse link aqui na verdade você tem que colocar o git pod.io barra jogo da vela e qualquer repositório do git pod que você quiser e o git pod vai abrir para você é bem legal se você está aqui abrindo o git pod você pode ter vários audientes do git pod você pode ter 10 tentativos do treinamento digamos assim eu dei algumas aqui mas você está começando 0 ele está criando aqui agora eu vou esperar um pouco enquanto isso um água enquanto isso então ele está criando essa máquina virtual na nuvem para eu ter um computador para praticar e seguir o treinamento lembrando que uma vez essa máquina virtual criada você não tem que ficar recriando ela você pode botar em qualquer outro git nesse mesmo link vai falar e sim ele abre mais rápido então é a primeira vez que ela tem mora um pouquinho mais você pode ter várias execuções de um mesmo material de treinamento mas aqui não é o que alguém precisa fazer o git pod, como ele lembra, precisa ver que tem uma interface bem parecida com o viascode que é uma interface de desenvolver integrada quem conhece o viascode vai sim em casa porque o git pod tem um espécie de viascode no navegador que oferece vários recursos parecidos vocês vão ver logo que abrir vai ter um material de treinamento vai ter um terminal para você acessar aquela máquina virtual bom, está abrindo então aqui eu vou ter vários arquivos que a gente tem no repositório desse treinamento como você vira aqui essa barrinha lateral que é bem famosa para quem conhece o viascode eu vou fechar aqui esse demo console tem aqui um terminal para o acessar e aqui está o material de treinamento qualquer momento você pode baixar qualquer um desses arquivos você pode baixar eu vou clicar aqui em explore para fechar isso aqui e ter um pouco mais espaço de tela baixar um pouquinho aqui também então isso aqui é o meu terminal posso disto aqui nextflow.com o nextflow é um programa de linha de comando para ver informações sobre o nextflow, instalação então aqui você vê a versão é a 22.10.6 foi criada nesse momento aqui é um Linux o runtime, a versão do Java e tudo mais é essa aqui e o encode, a codificação de test que está utilizando é o tf para a sua linha agora botar em português, clicando aqui em cima eu vou colocar aqui durante o dia você pode colocar aqui no momento que está além desse material para facilitar ou não a leitura vou colocar aqui branquinho vou até colocar vocês viram essa tela aqui eu vou deixar o treinamento ok mais aqui, vamos lá eu cliquei aqui nesse abro gate pod, naquele momento não precisa clicar de novo uma coisa para mostrar é que você pode em qualquer momento dizer conversão do nextflow que você quer utilizar então aqui ele tem um exemplo finalzinho você pode usar esse export e dizer a versão que você quer e a partir desse momento o nextflow não vai mais estar nessa 22.10.6 ele vai sempre ser utilizado 22.04 com 5 então se eu der o nextflow info aqui de novo ele vai baixar tudo que precisa para que a versão que está nessa máquina agora é essa 22.04.05 então eu posso muito bem agora da outra, ele não rebaixando nada de novo porque já está, rebaixou 22.04.05 eu quero o Marcella falar que ele está fazendo a máquina dele com 10.5 por exemplo eu posso vir aqui e fazer isso eu vou fazer agora porque eu quero que a gente lhes de fato essa versão porque o treinamento ele foi tudo testado para essa versão específica, certo? então eu recomendo que vocês digirem quem está aí com o teu computador abertinho com o gate pod copy, pode clicar aqui nesse íconezinho e automaticamente aqui você vem de todo direito, colar e vai ter esse comando que ele é digitor então mais uma vez ele não vai baixar de novo para o nextload beleza, tendo feito isso a gente pode também digitar um nextload pra subversion, beleza para quem é acostumado a linha de comando os parâmetros da linha de comando do nextload ele é apenas um traço tem algum plano que usa um dois traço apenas um traço e por hora fica apenas com o incemente belezinho, agora para a introdução aqui a introdução temo se ele ser um capítulo do material treinamento então tem vários conceitos que são fundamentais para o nextload já falem vários deles na apresentação são de portabilidade, escalabilidade integração, suporto nativo várias ferramentas mas o que a gente vai falar de conceitos fundamentais tem essa ideia de processos e canais já vimos que processos são etapas do pipeline e canais é um morto como esses processos se comunicam, são canais de comunicação e esses canais para quem tem conhecimento disto de dados eles são filas que significa a fila o primeiro elemento a chegar é o primeiro a sair, a fila do banco a primeira pessoa a chegar na fila vai ser a menos atendida é uma fila unidirecional então o atendimento do banco não vai até você são as pessoas que sempre vão para o atendimento do banco então os elementos da fila sempre vão para os processos e ela é acíncrona significa que pode ao mesmo tempo eu ter em paralelo aquela de sendo executado um processo ele pode receber vários canais de comunicação naquela etapa assim como ela pode emitir vários canais de comunicação pode ser nenhum canal vários canais aqui tem um exemplo de um canal que tem três elementos quando ele chega naquele processo o processo percebe que ele pode criar várias instâncias e ter aquele processo em paralelo para tratar aqueles dados e o que acontece aqui o processo a primeira instância de uma tarefa a tarefa 1 está com data x vai ter uma saída x a 2 tem um dado y e o 3 dá do z uma saída z um outro coisa interessante é essa ideia de abstração de execução então você não tem que se preocupar com isso então você escreve um processo para fazer algo com R, Python um programa compilado que for instalar com condas um contêiner do doc Salvador Vity Rambi roda na nuvem ou no cluster você apenas diz o que é onde é e o nextflow vai fazer esse trabalho tem essa camada de abstração para a execução do pipeline também falei para você que o nextflow é uma linguagem de script descrever o pipeline e vamos começar aqui com esse script com essa atenção como vocês virem aqui nos próximos sessões do material tem um capítulo só para canais um capítulo só para os sessos um só para o operador, um para o groove então eu vou citar algumas coisas se não aprofundar e se você ficar com a pulga da orelha mas como é que é isso mas em mais detalhes não se preocupe que vamos ter sessões e se precise para aprofundar bem isso entender o que é possível de fazer ainda que não consigo refazer porque tem muitas palavras novas muitas coisas diferentes, não se preocupe porque nos próximos vídeos vai se aprofundar em mais detalhes e eles vão conseguir se mais à vontade com isso mas sabendo o que é possível fazer porque hoje a gente tem uma praticada boa então agora vinha com o meu script certo? chamado hello.nl ele é bastante simples sempre que tivesse escolho se não ia ter um treinamento de um maisinho, você pode clicar nesse mais para ver uma descrição isso aqui não é obrigatório mas sempre que tem um linguagem de script nos límicos, a gente tem um que chama de Shibang que é uma primeira linha dizendo posição operacional que programa utilizar para ler esse arquivo aqui é o nextflow mas não é obrigatório ter essa linha e aqui eu tenho já o declaro parâmetro essa linha 4 chamado greeting que ele é inicializado com o valor hello world que é o Lamundo em leis sempre que é uma variável começar com esse parâmetro ponto significa que eu posso acessá-la com dois traços então lembre um traço é parâmetro do nextflow dois traços é do pipeline então poder dar um greeting aqui e escrever outra coisa agora segurar um pouquinho só para dizer porque tem esse parâmetro ponto aqui na frente eu vou usar o que a gente chama de channel factory que é uma função que cria canal uma fábrica de canal com esse parâmetro aqui hello world e vou chamar esse canal de greeting underline ch channel vou dar o seu nome aqui eu vou ter o meu processo chamado script letters separe as letras é assim que você define o processo ou você vai falar o que eu deixava no começo eu tenho um bloco chamado input que é um bloco de entrada ele diz o que vai receber nesse processo eu falo que vou chamar de x não sei se vai melhorar que ele vai receber não sei o que é, vou chamar de x e esse x é um valor o que significa que ele pode ser qualquer coisa um número, uma data uma palavra, um arquivo é um valor uma palavra um número que representa uma coisa já de saída esse bloco de saída eu falo que vai sair um pé e com esse formato aqui ele começa com chunk underline e aí o botão hastilisco pode ser qualquer coisa pode ser chunk underline 1 vencei, não sei mas esse processo ele vai gerar arquivo arquivos e começa com chunk underline e aí eu tenho esse bloco aqui que você separar iniciando e terminando com três aspas duplas que é o bloco de script você pode escrever script aqui e deixar omitido que é de fato o que esse processo vai fazer então aqui não é nenhum nextflow eu vou usar um script bash que ele vai fazer o que vai pegar essa palavra em x eu vou acessar ele com o cifrão assim que eu acesse variáveis em nextflow eu vou acessar esse avaliado e vou dar um pipe passando isso para o programa split que ele está um pouco perdido mas o que é split? não é nextflow, isso é apenas um exemplo que a gente colocou aqui um pouquinho mais complexo para ver como é que o nextflow lida com isso mas é, eu podia ser um código um ER, um Python e esse ponto eu coloquei em bash esse programa do lindex split ele separa uma palavra então aqui o que tiver aqui nessa palavra, que a gente sabe por padrão, se ninguém falar nada, é renom world ele vai separar em pedacinhos de seis caracteres e vai salvar em um arquivo que começa com chunk underline e esse aqui, e sabendo isso a gente já falou aqui o nextflow, presta atenção vão ter arquivos começando com chunk underline depois eu tenho uma segunda etapa não necessariamente depois, apenas aqui a ordem que está descrito porque a ordem de fato, como é que é chamado já já vão ver como funciona o próximo processo que eu escrevi é o convert to upper conventa para a maiúscula ele vai receber um arquivo que a gente sabe que explica que ele cria um arquivo, a saída é um arquivo desse processo anterior ele vai receber um arquivo que eu vou chamar de y e a saída STD Out, que é o standard output a saída é a saída padrão, que geralmente é a tela um arquivo de log então o que vai fazer esse processo de fato vamos para o bloco de script ele vai usar o programa cat do linux que ele pega o conteúdo de um arquivo, eu falei que esse is é um arquivo, então o cifrão pega o conteúdo desse arquivo e eu vou usar esse programa do linux tr para converter letras do alfabeto em maiúscula e aí chegamos do bloco mais importante que é do workflow o bloco de workflow é a key que liga a lógica, a ordem como, como e como cada processo será chamado eu falo que a primeira coisa que vai ser chamado é o split letters, o primeiro processo que a gente viu para se separar as letras e salvar esses pedaços em arquivos ele vai receber esse canal que ele criou lá em cima e eu vou salvar aonde sair desse processo, que eram arquivos não variados, chamados letters underline ch depois, eu vou chamar o processo converto, a pra que a gente viu com a saída, naquele processo anterior que são os arquivos eu vou usar aqui esse flatten que ele é um operador de canais do nextflow certo? ele faz alguma coisa com o canal de comunicação do nextflow então aqui ele deixa ele flatten ele planifica você não vê como é que fica na capaquinha agora guarda o bolso essa ideia ele planifica, vamos lá e vou salvar aqui e vou chamar esse canal de sair do processo anterior e vou usar o operador view que é um operador de canal que ele imprime na tela os elementos, cada emissão daquele canal então vamos fazer isso aqui vamos criar aqui esse arquivo hello.nf, digitando aqui embaixo nesse janela, certo? e já está aqui de fato, ele prontinho como ele tinha visto aqui deixa eu separar aqui a tela não vai ficar sem mudança, porque é melhor beleza, está aqui bonitinho, vamos rodar eu vou executar esse aqui vou dar o nextflow run para executar a spec line hello.nf então a primeira coisa que aparece aqui, ele mostra em toda a execução do nextflow ele mostra a versão do nextflow 0.2.0.4.5 e vai mostrar o nome do escrito que a gente está executando que é o hello.nf ele dá um nome aleatório para essa execução que é baseado em um adjetivo e o nome de um cientista famoso aqui é o Berserk Platon ele diz a versão da linguagem do nextflow que por padrão hoje é a segunda ele gera um código de revisão que tem um cpf desse script e esse não vai mudar mas se você mudar alguma coisa no script ele vai dar um novo número para identificar aquele script ele fala onde é a minha execução aqui é no computador local não fala em nada e ele calcula que deve ter coisa de três tarefas o spritleders é apenas um tarefo por exemplo, se você for executar uma vez ele serve uma frase, divide em arquivos já o converto upper não e vai receber arquivos 12 caracteres e separado em dois arquivos de 6 o converto upper vai receber dois arquivos ele chunk ah chunk a b então por isso que eu tenho um 2 são duas tarefas do processo converto upper então com 3 tarefas um total e a saída é o hello world o hello ficou em um o world foi outro arquivo e teve o uppercase para ficar em naiuns ficou esse aqui um coisa interessante é que ele vai chamando work na tua área de execução onde você executa o script e vai criar e dentro dele você consegue ver todos os arquivos terminares e finais quando está executando aqui você viu, antes de cada etapa cada processo tinha um valorzinho ah é, barra, meia-5 dentro dessa pasta work eu posso ver aqui ah é, dentro meia-5, dois outros mais e está aqui o chunk a e chunk a b que de fato nesse primeiro processo que ele pega a string hello world e separa em dois arquivos está aqui ó, em dois arquivos já nesse outro processo aqui como ele tem duas etapas por padrão o nextflow fica limpando até ele desenhando para você ver no seu cinta mas eu posso muito bem rodar com parâmetro ansi log e false mais uma vez um traço é parâmetro do nextflow, do pipeline false, para eu que eu quero ver cada tarefa em uma linha separada para eu conseguir ver esses hash e as telas para que ele mostrou 8, 9, 8, 7, 1f então eu vi o que o converto a tem duas vezes, que é aquele true world de novo, eu posso ver aqui esse 1f 9, 8, 7, 6 então 1f 9, 8, 7, 6 está aqui a saída desse converto a esse chunk a b vai estar em mais uso uma coisa legal é que eu posso bem executar isso aqui dizendo executa o pipeline mas o que já foi calculado eu não quero que recalcule vai fazendo tudo com o cache possível e aqui como ele executou o pipeline completo não vai ter nada sendo computado ele vai usar tudo o cache que vai aparecer inclusive aqui como vocês podem ver processo cache fica mais bonitinho quando eu não uso o ansi log que ele dá um vezinho para ver o que foi acontecer vamos lá ficou um vezinho aqui o cache um aqui os dois foi no cache se eu estou fazendo uma análise e um teste com 50 mostras deu certo agora eu quero para valer, com 1.000 mostras vai aparecer 1.000 tarefas mais 50 foram cached foi da primeira execução então o quanto que eu posso fazer agora é aproveitar aqui o traço-traço-gritting no parâmetro aqui e ver se relangou ou eu vou lá meu mundo Brasil não vai ter nada cached porque desde o começo tudo vai mudar a primeira string é diferente tanto o split less como os outros eles vão ser diferentes agora em vez de duas tarefas do Poberto A nós temos quatro, porque foram quatro arquivos que nós temos mais de 18 caracteres então aqui ficou olá meu mundo Brasil o que eu me coloquei vocês devem ver aqui mesmo nesse primeiro exemplo como nesse segundo que é a ordem então um pouco maluca então aqui nesse hello world ficou o world hello e aqui ficou do Brasil olá em e um porque isso como vocês vivem naquela imagem o nextflow ele paraleliza e dá para o seu para executar aquelas tarefas indemindentes então pode ser que a segunda parte termina o primeiro então vai inventar essa ordem então tem essa garantia que você colocou os elementos no canal eles vão ser executados em ordem uma fila de contas mas enquanto estão sendo executados em paralelo não tem nenhuma garantia que o primeiro vai terminar, que é de fato depois de uma corrida, se eu sair primeiro mas a pessoa que sai o segundo corre muito mais rápido que eu por mais que ela tenha saído o segundo ela vai chegar primeiro, então não tem essa garantia de ordem no canal que saída existem modos de se trabalhar isso e vão ver um pouco mais na frente em outras sessões mas fiquem conscientes disso, que não é essa garantia dessa ordem eu posso ficar executando se eu resumo né várias vezes aqui e a ordem vai mudar vamos descer de encontro aqui um hello world em ordem o world hello vamos ver de novo aqui também trolando aqui, não vai querer sair hello world ok, hello world saiu como vocês podem ver essa ordem varia de acordo com a execução tem como evitar isso? Tem como fazer isso depois esse flatten interessante vou mostrar aqui o que aconteceria se a gente não colocasse o flatten como eu falei ele é um um operador que ele planifica o canal vamos ver aqui vou dar o hello novo então vou ter uma emissão esperar ele sair que é um canal com esses dois elementos em uma linha só geralmente não é isso que a gente quer eu tenho dois elementos no canal eu quero que ele separe um elemento com dois itens vamos dizer assim né o canal ele tem elementos, esses elementos eles podem ter itens dentro deles então se eu tenho um canal com um elemento que tem dois itens, mas eu quero que esses itens virem elementos não fiquem agrupados, fiquem planificados eu uso o flatten aqui nesse canal e aí agora o hello e o world vou passar o próximo processo e depois o outro beleza isso que eu fico claro todos esses arquivos que a gente tá falando estão na pasta nf2n que é a pasta que você colocado assim que entra nesse gate pod então eu falei tudo isso beleza eu usei o resume para fazer um correto diferente agora agora abri de novo aqui aumentar de minuto mais eu quero fazer outra coisa eu quero inverter então mais uma vez, isso aqui não é uma explôsia são programas no minuto então se eu tiver aqui por exemplo hello world se eu colocar heavy hello world o que ele vai fazer porque tem que ser um arquivo beleza, enfim, eu quero dizer esse heavy é um programa eu posso dar um mei heavy aqui e ele vai dizer o que ele faz então aqui ele fala revert a ordem de linhas enfim então vamos fazer isso aqui, eu vou inverter aquele tr vou colocar mais um minuto eu vou usar o wrap que eu quero inverter então eu posso vir agora a hold down do next flow run, hello container eu vou dar um resume e a primeira etapa que eu explico separar em arquivos, ele vai estar cash porque eu vou colocar hello world para o padrão porque agora ele não é mais o TR que vai ter minuto mais uso ele agora é revertir a ordem dos caracteres então a primeira de fato é o cast já a outra não, não terminaram de cast porque de fato a gente mudou então em vez de ficar hello world mais uso ficou hello world o jeito que estava minuto revertindo mais um exemplo usando o resume aqui certo a gente abriu como um parâmetro de pipeline com greeting com grafas tipo direcionado e como isso funciona eu coloquei aqui no canal passei com o processo eu nem precisar colocar um canal porque na verdade tem várias nomes que automaticamente o next flow com um canal você tem um canal e aplica um operador dele e seu operador vai criar um novo canal com aquela operação que eu quis em cima de cada elemento quando eu passo uma variável normal um string e para um processo automaticamente tento chegar no processo que tem um canal tem essas conversões implícitas digamos assim aqui vai ter uma entrada, a tarefa é essa aqui tem um canal de saída que foi nos dois arquivos antes era só um string eu vi os dois arquivos para converter para o mais uso então é uma imagem bastante carregada depois abre o nível com calma cada pedacinho para entender como no final saiu o hello world agora encerramos a parte de introdução e vamos para o pipeline simples, a prova de conselho de pipeline com NSAC tá no multi-microfone aqui no pipeline de Arnecique quem não é dado de informática não tem problema, vai conseguir acompanhar quem é dado de informática vai ter mais uma sessão a bigger picture, está aconselhando por trás o contexto, mas tranquilamente vai conseguir acompanhar isso Arnecique para trabalhar com dificuldade de transcrição certo e é um pipeline que embora tenha boa parte das etapas necessárias é bastante simples comparado com os pipelines como por exemplo o NFCore Arnecique é o pipeline do projeto NFCore para esses dados aqui é esse pipeline que vai criar hoje ele tem quatro etapas ele cria um arquivo de índice de transcritoma que é um arquivo de dados transcritômicos de transcrição de higiene vai criar um índice para que os programas possam utilizar isso de alinhamento não se preocupe porque é alinhamento apenas tem uma consideração que é uma etapa desse pipeline ele vai realizar um controle de qualidade dessas amostras e vai realizar uma quantificação a quantidade de expressão de calão de higiene das nossas amostras e no final ele cria um relatório como o programa OQC com várias informações sobre esses dados as amostras e assim por diante nós temos um set de arquivos um set onde vamos pouco a pouco construindo o pipeline cada esse que ele controla em pouco em segundo anterior e ao final vai conseguir ter esses quatro passos que a gente está falando aqui o primeiro script ele aqui script1.nf script1.nf ele está no controle de vocês ele pode ele basicamente faz o que a gente já viu que é criar o valor padrão de alguns parâmetros de dinheiro de comando que são reads são as amostras, vamos ver as leituras o arquivo de transcritômica é um arquivo de referência um arquivo que pode utilizar na nada o diretório e ele vai imprimir na tela apenas quais são os arquivos e aqui o que a gente está fazendo é pegar todos os arquivos começando com gut underline tem um ou dois esse aqui é um blob que a gente fala do Linux que ele vai completar com um ou dois o que tiver se a gente rodar esse script1 nós vamos ter basicamente imprimir esses reads certo que é essa expressão que a gente colocou por hora é só isso, é uma expressão como a gente já viu também eu posso muito bem vamos trover aqui, eu posso muito bem modificar essas reads com o traço-traço reads para aprender a substituir de gut para language beleza, eu podia falar qualquer coisa que ele ia imprimir na tela porque é só isso que esse script1.pais que ele é muito simples nessa sessão, mas não somente nela a gente tem várias etapas de exercícios no que ele perde, modifica o script1 que a gente abriu modifica esse script adicionando um quarto parâmetro além desses três que a gente já tem aqui adiciona um quarto chamado outdir que ele vai ser onde os resultados desse pipeline serão salvos não é os resultados relatórios os arquivos e resultados que você pode dar nesse pipeline, eles vão ser salvos não naquela pasta-work com aqueles resses, condições, desolamento e tarefa num diretor bonitinho a organizar o que você quer para fazer isso você tem que dizer onde é e é aqui que entra esse exercício cria um quarto parâmetro para salvar os arquivos seguimos esse exemplo desses três aqui quem quiser pausa o vídeo agora tenta fazer ver se consegue e daqui a pouquinho volta, despausa e vê o resultado para ver se deu certo os resultados você voltou agora, despausou clicando no resultado e a gente vê que é muito simples se eu dar um parâmetro esse ponto o outdir que a gente quer e qualquer nome de pasta eu vou dizer que não, quero uma pasta no diretor atual chamando de results e dentro eu quero desfrutar a minha naje então é muito simples um outro exercício é modificar esse script vai imprimir não só os reads que tem colocado aquele print eu quero imprimir para saber quais são os parâmetros configurados mas eu quero utilizar o log.info ele permite que eu não só imprimir na tela mas também no arquivo de log então tem um exemplo que você pode clicar aqui para ver em outro janela mas está aqui basicamente o que você teria que fazer usar o log.info e aqui no next.log eu utilizo três das fases do blog para ter um string de muito para as linhas então eu coloquei um bonitinho aqui rnc, pipeline espassamento esse strip dente por mais que eu tenha esse empurrão pulado eu não quero que isso apareça na tela do computador então usa essa função de strip dente para ele puxar e encostar na farinha do terminal nessa primeira subcessão você aprendeu basicamente como definir parâmetros esse script pipeline como atribuir parâmetros com linhas de comandos é o traço-traço o uso do cifrão mas também o cifrão como a gente está vendo aqui o cifrão com colchet para você acessar o conteúdo de variáveis por hora, não está muito claro isso mas como você tem esses pontos é onde vai fazer diferença usar o colchet ou sem colchet se utilizar só com o cifrão var ponto risco e ele pode usar em uma nova função então ter situações que você vai precisar utilizar o cifrão com colchet perdão, com chaves com chaves ou sem chaves podemos falar mais um pouquinho disso depois por hora apenas saiba que tem esses dois modos que você pode usar então eu aprendi a atualizar o log.info eu tenho que ir na tela para salvarmos os arquivos de log do pipeline a gente vai ver aqui de novo esse tree é muito legal do linux porque ele mostra todos os diretores de arquivos dentro do meu pasta aqui eu tenho a do work então eu posso vim por exemplo aqui no work, é 9 de 1905 bora entrar nessa pasta e aqui os ocultos também tem muita coisa aí dentro então eu posso ver esse comando ponto log que vai ter o log que é soma do hello world esse é o primeiro exemplo que a gente fez eu posso ver o ponto comando e ponto chave que ele mostra exatamente o comando que foi executado então o ponto você coloca variável nesse arquivo ponto comando para chave as variadas não são substituídas aqui vocês podem ver que não é mais o comando do arquivo ele tem já o nome expandido então quando tem um erro comando do pipeline, o modo de debugado em vez de ligar o que está acontecendo é justamente vindo esse ponto comando ponto chave e ver se o comando final é exatamente o que você quer com todas as variadas substituídas não vale a pena investigar esse arquivo e tem vários outros como o comando ponto áutica de fato que vai ser impresso na saída, você tem o comando ponto run que ele vai ter um programa bastante grande que é aqui que está a mágica de fazer funcionar em qualquer lugar, certo? com o ponto comando que tem conteúdo o nextfoil cria todo esse arquivo de um wrapper que a gente fala, com o ponto comando sh nesse ponto comando ponto run eu posso ter um ponto comando ponto air mas eu eio se teve algum aqui não tem, então não tem nada tem só vários arquivos que lhe ajudam a entender cada tarefa que lembre-lhe, nem cada processo cada tarefa tem um diretório ali, certo? vamos voltar a nossa pasta inicial então esse aqui é a primeira subcessãozinha então vamos lá começar de fato a fazer nosso pipeline então eu quero um primeiro processo que ele vai criar nosso arquivo de índice do transpirto toma então eu vou chamar aqui esse processo de index eu dou o nome que eu quiser ele tem um bloco de input vai receber um arquivo e o qualificador da variável então eu estou falando que essa variável tinha no centro da vinho eu vou chamar ele do transpirto toma dentro desse processo eu vou dizer me referir a ela eu vou chamar ele de transpirto toma e o qualificador é um pet beleza? a saída vai ser de um pet, esse é um arquivo nunca tem uma pasta mas eu vou dizer que o nome dessa pasta é sound underline index beleza? e o bloco de script que é o que essa etapa de fato faz com o parâmetro dele o comando do sound index ele vai passar um número de CPUs aqui sempre que você utilizar o cipral test ele vai pegar variável do nextflow para queira tarefa vai pegar o número de CPUs que o nextflow está solicitando para saber tarefa se você não fala nada, ele vai dizer um que é o padrão, então um núcleo lógico para esse tarefa eu vou substituir esse transpirto que é um variável, no que eu recebi que é onde está o arquivo de proscritão de referência e vou dizer que o cano de salvagem é que uma pasta chamada sound underline index e é assim que eu sei e coloquei aqui que a saída dessa etapa vai de lá nesse processo, vai ser uma pasta chamada sound underline index é assim que o nextflow sabe se algo deu errado você falou que vai sair com esse nome e não saiu, ou falou que até não teve é assim que você instrui o nextflow a saber o que ele espera entrar e sair de cada processo e claro, só de escrever um processo não desnado, eu tenho que dar lógica de pipeline para que seja chamado então vou criar um bloco workflow e vou escrever isso aqui que é o que, chamar o processo index com esse valor que é o parâmetro que a gente já viu onde está o transpirto de referência e vou salvar isso aqui no canal index cano underline ch isso aqui é o script2 então eu posso saber que é script2 já que um misturado aqui é o que a gente fez os parâmetros o long info, agora no 2 adicionamos isso aqui então eu posso rodar aqui nextflow run script2 nf ele vai eu já coloquei aqui deveu por padrão que o arquivo de transcriptomo ele está na pasta que a gente está dentro de data veja ele que eu estou a contrafiar então beleza, ele conseguiu pegar isso rodar o salmo e aí demos erro aqui mas é o comando não encontrado como é not found, por que? a gente não tem um salmo instalado nesse computador então vai pular, ele não tem 2 a executar mas a gente não tem um salmo instalado ele não conseguiu o que ele vai fazer? ter que instalar o salmo para não pôr desse tipo, certo? uma coisa legal é a gente pode muito bem utilizar uma imagem do container do docker que já tem tudo o que a gente precisa instalar e apenas falar, nextflow beleza mas usa essa imagem do docker certo? então eu posso agora vim aqui executar o nextflow run script2 com o docker e vou falar, usa essa imagem do docker que é um docker hub que é um serviço de hospedagem de mais do docker como o docker hub é o padrão eu não preciso colocar nada eu apenas falei que na conta do nextflow tem uma imagem chamada rnsec-f nessa área do git pode ter um docker instalado mas ele vai por debaixo dos fãs baixar a imagem rodar o nextflow e quando for dessa tarefa ele vai criar um container dessa imagem rodar a tarefa dentro e como o docker tem um salmo vai dar certo de fato aqui, o tracinho 100%, um de 1 funcionou invento de ficar sempre executando com esse comando width docker, nextflow, rnsec eu posso fazer uma coisa melhor eu posso criar um arquivo chamado nextflow.config que ele já de fato existe aqui e eu posso falar eu quero que o docker por padrão seja ativado, para não ficar tendo que digitar esse width docker e além disso, eu já coloco aqui o process.container para todos os processos para todas as etapas do pipeline eu quero que você utilize o container que no caso aqui é docker que é o nextflow-rnsec então agora tendo salvo isso aqui no nextflow.config eu vou rodar como antes, sem falar nada no docker e vai funcionar porque no nextflow.config que o arquivo de configuração padrão eu falo que é para o docker e é para o da sempre essa imagem do docker o rnsec vai dar certo e deu certo agora eu vou começar a acrescentar aqui o resume perdão para ele ir aproveitando o cache e ficar demorando muito tempo para a gente aqui vai estar em cache então é isso que esse dois faz beleza o exercício que ele fala aqui que é você, como vocês viram aqui ele termina uma animosonada então o exercício é, já que no final a gente salvo como a gente salvo a saída desse processo index em um canal chamado index.nch que tal a gente usar o operador view para imprimir na tela o conteúdo para quem quiser pausar o vídeo pausa aí e voltando agora a solução é muito simples é só adicionar um view ao final vamos ver como é que é a saída para quem não quis pausar é só acessar uma linha aqui index vou adicionar um ponto view desse operador vou executar esse pipeline o processo não mudou então ele dá o cache mas ele vai imprimir agora o conteúdo da no canal que é f0 bd eu posso muito bem dar um ls e ver o que tem dentro tem vários arquivos aí dentro o conteúdo do meu canal ele é um caminho e dentro desse caminho tem vários arquivos dentro da pasta work um outro exercício a gente viu que ele pega o test que ele pega a deletiva cpu desse processo eu vou colocar o número de cpu digamos que eu quero utilizar duas cpu lógicas e não apenas uma então vou vir aqui no começo do processo e usar a deletiva cpu vou rocar dois vou vir aqui rodar o meu script 2 ele vai rodar não está mais em cache porque eu mudei a deletiva eu mudei o script então ele vai rodar de novo não foi cache mas o legal é que eu posso vir agora aqui o que barra 3b o cpf da etapa bd e comando cfh o comando de fato é rodado o número de cpu como é que ficou dois é assim que você controla esse tipo de coisa beleza esse é o segundo exercício de fato foi feito aqui esse bônus aqui que é usar esse comando clica a gente está usando bastante para ver a distribuição do nosso diretor beleza então resumo a gente aprender como definir um processo do nextflow como essas entradas do processo são declaradas mas sair das são declaradas como imprimir o conteúdo de um canal de um caminho e como acessar o número de cpu disponíveis para aquela tarefa não é um processo porque eu posso ter um processo que vai trabalhar com 10 arquivos alguns arquivos vão ser mais simples trabalhar outros mais complexos então eu posso ter quando o arquivo é muito grande usar 10 cpu, 100 cpu quando é pequeno usa apenas 1 porque é importante falar isso porque se você colocar um número de cpu pequeno isso não é necessário e se você colocar um número de cpu muito grande e colocar 100 cpu para sempre dá certo imagina o poder computacional que você está travando na sua máquina e que outros não podem utilizar para um cluster compartilhado por exemplo se for a nuvem, a quantidade de dinheiro que você está gastando isso é para garantir que sempre vai dar certo é muito para fazer diferente quando é fácil usa isso quando é difícil usa isso então a tarefa é criada artesanalmente para o que de fato ela precisa não deixa para um pouco mais para frente só saiba o que é possível fazer isso quanto para a sucessão agora para a sucessão esse próximo processo ele vai coletar arquivos de leitura os vídeos que a gente fala em informática por pares porque geralmente em alguns casos eu vou ter um arquivo eu vou ter uma amostra por exemplo que tem dois arquivos para cada amostra então tem um pares de arquivos para a amostra o network ele meio que traz isso um furo interessante para isso o script 3 que como já vimos anteriormente é o 1, o 2 e vai se acrescentando aquele não tem recordo do que você focar do que ele faz em diferente mas eles vão sempre agregando um ao outro então o parameters reads a gente já viu o que é isso aqui eu já falei que é um glob então quando o nextflow for interpretar isso aqui ele vai pegar esse arquivo começando com guage underline seja um ou dois para executar agora o nextflow ele vai respondendo e traz o resumo sempre para apolpar a contratação de apolpada e ele vai não vai mostrar esse string aqui com esse colchet ele vai de fato expandir isso aí para os arquivos que existem nesse diretório se ele vinha aqui explorar e vinha aqui em data xgl tem vários arquivos como vocês podem ver aqui certo? então aqui ele salvou nesse canal readpair para ver o que tem dentro então para adicionar isso aqui para adicionar clicando aqui ao final eu quero ver o conteúdo desse canal certo? fazemos isso, vamos ver o que ele já mostrou aqui na verdade ele vai pegar essa fábrica de canal que a gente fala o fromfilepares channel.fromfilepares ele vai pegar o nome ser extension o nome do arquivo que é o guage do nosso elemento, o primeiro item vai ser o nome e o segundo item é uma lista de arquivos, aqui são pares meu caminho completo para o guage 1 e para o guage 2 para quem não é informado que isso pode parecer estranho mas saiba o que é muito comum em se informar certo? você tem esses pares de arquivos para uma mostra aqui eu posso dar um reads diferente a gente aprendeu a trabalhar com argumentos de linha de comando parâmetros e pipeline em vez de ser um guage aqui eu tenho um asterício qualquer nome que tenha seguido por um underlarge um ou dois ponto fq e agora ele vai mostrar vários arquivos que é o que a gente viu aqui né explorador tem gut, lever, lung, certo vamos lá o que será que vai acontecer agora gut os dois arquivos, lever os dois arquivos, lung os dois arquivos três elementos no canal né o primeiro elemento com um item dois itens, o segundo item dois itens, um segundo elemento um item, uma lista com dois itens e assim por diante, certo? no exercício aqui tem jeito que prefere, em vez de ficar usando esse igual aqui canal igual fazer diferente fazer assim algo, quero um canal de par de arquivos, vindo daqui salvo né, eu quero setar o nome desse canal assim funcionando do mesmo jeito, certo? vai ser a questão de prática, eu particularmente prefiro utilizar o set, eu acho que fica eu até gosto até de identar e eu vou ficar expandindo assim vai ficar bem claro que é cada etapa vai ser um canal de par de arquivos que no final chama isso, eu gosto muito de organizar assim, certo? um outro exercício aqui que ele fala é você utilizar a opção check que existe nesse método do file pairs, então sempre que vocês quiserem vocês podem ir no site que é docs.nextflow e aqui vai ter várias opções channel factory então vem aqui flow file pairs que a gente tá brincando aqui, beleza tem várias opções aqui, eu posso nas opções pegar cada uma delas e ficar brincando se existe ou não existe o arquivo e assim por diante, certo? beleza, então quem quer tentar pausar os 9 segundos o vídeo e vamos para a resposta, então aqui basicamente no flow file pairs fica apenas um vírgula colocar o opção que eu quero que eu tinha que ver o que eu quis, isso significa o que? se ele não encontrar nenhum arquivo com aquele formato começando com isso, tem um ou dois tal e vai dar um erro de arquivo encontrado se você não falar isso, ele apenas não diz nada e com o canal vazio ele não avisa nada então às vezes é bom você colocar sua opção para ele encerrar o pipeline e falar não tem nenhum arquivo com essa expressão que você colocou então nessa subcessão a gente aprendeu basicamente como usar o flow file pairs a fábrica de canal, certo? é uma função que pega alguns valores e cria um canal com elementos para você encaminhar para todos os processos a gente aprendeu como utilizar a opção check if exists e a gente sabe agora que todas as fábricas de canais e operadores que são funções que hagem em cima dos canais eles têm opções, vários deles não se pode dar na recomendação enxergar essas opções, certo? e aprendemos como utilizar o operador set que ele basicamente dá um nome ele visualiza os elementos o set dá um nome o pleta ele planifica, tem vários operadores que não quer conhecer, certo? e como eu já falei a maçã não toda é coranda, é muito nome o operador canal calma porque o objetivo dessa sessão de hoje não é esse, é vocês verem a coisa funcionando e sabendo o que pode acontecer nas processões vamos com mais calma entender exatamente o que é o operador quais são os parâmetros como tem uma parte na parte de você com aquela que eu mostrei agora sobre cada uma das opções bem mais calma e mais aprofundado então não se aperre agora que realmente agora não é agora entender propriamente isso ele sabe mais ou menos o que é o operador mais ou menos o que é o canal mais ou menos o que é o processo ver isso juntos funcionando prático, para vocês se empolgarem e depois você vai ver na parte teoria a declaração do canal, como você criou o canal ele geralmente é feito no bloco de workflow mas pode ser feito também com o que é o outro canto agora ele tem que ser feito antes da chamada do processo dentro do bloco de workflow que vai utilizar aquele canal isso é fundamental, tem que ser antes mas se é lá em cima dentro do bloco de workflow isso não tem impedimento essa próxima etapa que é um processo de nosso pipeline é uma quantificação da expressão não beleza, eu tenho um arquivo de referência eu tenho minhas amostras eu vou identificar com essas amostras de acordo com essa referência e sabendo o que elas são quantificar, quantas elas são cada um desses genes transcribes certo? então bora abrir agora o script 4 para o nf agora já é um script bem mais encorpado, então é aquela parte de parâmetro de iniciagem que a gente fez ele imprime na tela várias informações o primeiro processo de index que gera um índice com o salmon beleza, ele tem aqui a parte de quantificação show de bola, certo? e o workflow criando o canal, chamando o índice chamando de quantificação dando aí a entrada que foi a saída do índice olhadinha rápida aqui em quantificação é um pouco mais complicado agora porque? porque primeiro eu estou passando aqui a pasta salmon index que é a saída do meu processo de índice certo? e eu vou receber também agora uma tupla é um elemento com múltiplos itens essa tupla ela tem como primeiro item elemento o nome da amostra, aquele gut, lever, lung que a gente tinha visto e ele tem uma lista de arquivos que são os pares e arquivos que a gente viu gut1, gut1, gut2 lever1, lever2 lung1, lung2 esse foi o idiato, certo? Então uma tupla tem dois elementos que o primeiro é um valor que é o nome, gut, lever, lung e o segundo é um path são arquivos, certo? e a saída vai ser uma pasta e o nome vai ser sempre o id vai tomar como sif-prome aqui e as duas vai se expandir isso aí porque é um sif-prome? porque é sempre o id? porque eu quero que tenha uma pasta chamada gut com os arquivos de gut uma pasta chamada lever com os arquivos de lever e uma pasta chamada lung lung1, certo? São as amostras de tecido e vou rodar o comando Salmon com a valor aqui de quant o morcepo você já virou eu vou dar aqui o Salmon index que estão só substituindo aqui o reads a gente sabe que é uma lista com dois arquivos então reads zero o primeiro aqui que é o gut1 e aqui reads um começando de zero, já ali um gut1, gut2, certo? beleza, eu vou salvar na pasta beleza, esse é um processo de quantificação então bora rodar aqui nextflow, sempre aqui embaixo no terminal run, inscrito de 4 com a TDIF, traço, resume Marcelo, mas o nome do inscrito é sempre mudando lembre-se, tem o cpf que é o que tem no conteúdo dele então aqui rodou, beleza index, quantificação foi de bola um de um, um de um e o problema é por que? porque por padrão aqui, eu falei gut então só apenas gut1 e gut2 se eu colocar aqui traço, traço, reads e eu passar assim copiar aqui e ver de gut, eu coloco aquele asterisco então qualquer coisa, segui de underline 1 ou com 2, monta FQ agora vamos ter 3 tarefas em quantificação, certo? index, tem que se falar de constadação do transporte de referência, algum arquivo, uma tarefa é embaixo, não eu vou ter agora lever e lango o que tá errado que... eu acho que ele tem o código do ponto aqui deixa eu ver o exemplo qual é a diferença que eu tava fazendo aqui ah, foi esse projeto dele aqui, esse barro eu vou retornar essa pasta dentro dela então é data, aqui eu vou colocar o asterisco e ele agora vai ter além do gut que é o padrão, o lever e o lango certo, vamos ver como é falado isso aí o index já foi executado, então vai dar o cache e uma coisa legal aqui 3 de 3, deu tudo certo aqui no quantificação, ele fala que cache 1, por que? porque eu já tinha rodado com gut agora eu falei que eu rode com tudo, com gut, lever e lango, mas ele falou que eu já rodei com gut aqui, cache, ele só computou pra 2 que é o lino e o lango, e já tava computado pra o gut, certo? então aqui a gente aprendeu essa parte em quantificação, então exemplo, mais uma vez tem outra diretiva ainda do cpu, do etc que eu tô aprendendo nos slides no conda, todos esses executores aí esses diretivas eu tô aprendendo de tag, que é muito legal porque ela ajuda a adicionar alguma informação nesse altput aqui então dá um logo de execução mais legível para o resultado, então pra nos acrescentar aqui, essa tag nada de quantificação eu vou ver aqui na minha etapa de quantificação pra ir acima do bloco de input então vai ter agora salmo, on e o simple id, gut, lever, lango então vamos rodar isso de novo vocês vão ver que agora fica um pouco mais legível a minha log aqui salmo, on, lever e o resto, vamos mudar aqui, ans e log falsos, lembra que eu usei no comecinho pra ver as linhas todas, não apenas por processo, mas por tarefa vamos ver agora assim, mas por que isso ajuda? ah, jura por que? porque as vezes eu poderia, antes quando tava aqui sem nenhum tipo de tag, beleza essa pasta aqui, work barra é 9, barra é 9, 3, 9, 1 é de qual das tarefas? é do lango, é do lever é do gut agora, eu sei direitinho, ó a do lever é a 9, 3, 9, 9 a do lango é a sete ddb e a do gut é a bb6 só que imagine que um processo um pipeline, um desenho de processos com milhares de tarefas ia ficar mil coisas surgindo na sua tela por isso que por padrão a gente utiliza uma linha para o processo, mas caso você queira ver tarefa, é só adicionar esse parâmetro aqui, traço, ans e traço log, espaço, falsos, certo? vamos voltar aqui, um outro exercício é adicionar a diretiva, publish vira, essa é uma diretiva muito interessante é ela que salva o arquivo que você quer, não só no diretor do work, mas no diretor que você queira aquele object lá no comecinho que a gente quer, então aqui é muito simples também é só colocar publish, que, espaço parâmetro da output, que é o diretor que a gente queria, certo? aqui em quantificação, pode ser em cima ou abaixo do tag, a diretiva apenas tem que ser a suma de input, né? e o modo de cópia, eu quero que o arquivo tenha aquele work, que você tenha copiado com a pasta output, que é que é uma de results, né, aqui em cima isso aqui, results, não apenas um atalho para você ter copiado, então se eu executar agora, isso aqui de novo eu exploro que a gente vai aparecer uma nova pasta aqui, vou executar isso aqui que vai dar results tudo está bem cast, beleza opa, apareceu aqui uma pasta nova results, que tem aí tudo dela lembra que eu falei um tempo a ideia aqui no quantification uma da pasta, então tem uma pasta gut um dos arquivos de gut, um de livre, os arquivos de livre, langue, com as de langue eu posso ter milhares de arquivos de outros para ver lá, mas no final da minha pasta em resultados, aquela última tapazinha ali, é o que a gente fez aqui, certo? recolher aqui mais uma vez, para a gente ver melhor, para nós retar para a gente aprender o que, como conectar dois processos, né, a saída de um indo para a entrada do outro, beleza com retomar a execução de um arquivo de pulando etapos que estão salvas em cache, com o traço Resume, como usar a diretiva tag, para você colocar um descritivo na linha da tarefa, para você identificar ah, essa é a pasta dessa tarefa, essa é a pasta de outro, né, melhorar um pouco o teu log, e com a utilização da diretiva para armazenar os resultados, o seu interesse em uma pasta específica porque a pasta de work, como vocês viram começa a acumular muito lixo, né, muito aqui no intermediário, e uma hora, se você for até não fazer problema, porque vai ocupar boa parte do disco do teu computador, do teu cluster de inscrição, da nuvem que se paga para esse armazenamento, né, então a pasta de work, certo? A pasta de trabalho que o log padrão é o work e aí o que importa é o que temos da pasta de resultados, porque aí você colocou um pub este dia para salvar lá, certo? Então agora, para uma das outras etapas, aqui de controle de qualidade, tendo feito isso, peguei, alinhei, pontifiquei, salvei o meu resultado beleza, eu quero ver agora um pouco de qualidade bora abrir agora o escrit 5 como sempre, né, acumulando agora tem um novo processo aqui manifesto que o si, ele tem um tag, informação em qual mostra, ele está fazendo a cidade de qualidade ele vai receber que nem anteriormente a gente tinha uma dupla, né, que o primeiro elemento é o item, é um nome, né, gut, liver, lung e o segundo são os arquivos, né, gut 2, liver 1, liver 2 lung 1, lung 2, a saída vai ser uma pasta manifesto que o si e underline, o nome gut liver lung, né, que está como é, ele vai fazer basicamente é, aqui ó, já tem uma coisa legal não é apenas um comando tem duas linhas de comando a primeira é criar uma pasta que é a nossa saída aqui e eu vou rodar o comando no fresco que o si dizia, ó, salve o resultado dentro dessa pasta e aqui no bloco do workflow, eu faço o que? eu já vou te anteriormente filmar o fresco que o si com uma entrada, ele vai pegar esse canal que a gente teve aqui, certo? esse é o fresco que o si como vocês podem ver aqui o fresco que o si ele não depende de nenhum saída do modification, ou seja pode ser pipeline, acaba sendo dirigido mesmo tempo, pode ser fresco que o si antes, depende, como não pensa dependência, o network vai decidir isso na hora, mas eu acho que você tem amor performance, certo? mas eles não dependem então esse gráfico de dependência ele é construído assim modo sempre que um processo de depender ele só pode começar com esse outro de a nossa saída, como o fresco que o si não depende de ele, quando ele puder ele começa a ser executado já, certo? beleza, agora eu vou rodar esse script 5 não, eu sempre vou dar um control L que é pra limpar a tela, certo? acabou que ele vai limpar, depois que executou eu vou ter que rodar de novo, eu acho é como vocês podem ver, já estava no cache o index, quantification o novo aqui agora, deixa eu rodar de novo você tem um control L que você pode limpar a tela vai estar em cache, aquele primeiros do index quantificate, para que como estou rodando de novo eu faça o gg também, mas aquele já mostra como sempre, como está com o acilógio true ele não mostra a linha, pera, é uma linha por processo, e o último foi com o gut beleza só com o gut aqui, se eu der aquele reads, data, ggl tudo, underline ou um, ou dois o ponto é ficar, aí ele vai ser agora bem mais amostras para os números dos processos, vai ser tudo cache mas no último, ele só fez com o gut então vai ter dois que não são cache aqui, o som que eu acabei agora o nome está em cache opa, por que não pegou tudo aqui opa, subtei reazd coloquei o nome errado aqui o index vou indistitação, perdão pessoal então, para o quantification as três estão em cache já, mas não parece que o si não então aqui, três em cache, um em cache aqui só tinha um em cache que era o gut os outros dois ele teve, e está fazendo ainda, não acabou né, 33% pronto, agora terminou então um em cache, duas ele teve que computar e eu posso vir não tem nada que o si porque eu não coloquei a minha direita de publishdia lá só tem publishdia aqui no quantification, não tem publishdia aqui no FastQC eu teria que fazer mais ou menos assim para que ele também salvaça os resultados do FastQC aqui dentro, certo? e de fato vou abrir aqui o results e abrir o gut, por exemplo quando eu rodar este de novo vai aparecer uma nova pasta desse gut, que agora sim eu estou usando publishdia para falar, eu quero saber os resultados desse processo, nesta pasta que apareceu aqui FastQC, gut logs, FastQC, liver logs FastQC, não, eu não fui aqui dentro fui aqui em forma, na verdade gut logs, liver logs, porque aqui o o nome do arquivo não é simple ID como era aqui né, ele é FastQC underline, o gut logs, liver logs, e assim por diante beleza outra coisa legal que dá para fazer ali você ficar esperando aparecendo na tela que deu tudo certo e você fica para ser notificado por e-mail então assim com a tela e terminar ele vai te enviar o e-mail falando ó, foi mais certo para a tela e foi terminado obviamente aqui você tem que configurar um server de smpp, você tem que configurar um smpp de e-mail para com a dedicação, para poder receber esse e-mail, mas dá para fazer e clicando aqui tem a documentação oficial do nextflow e ensinando como faz isso, certo? deixa esse aqui vai ter mais tela beleza uma coisa que a gente não viu eu não comentei, vamos ver aqui de novo é que aqui ah não, é o próximo ah a gente tem a parada aqui, beleza tem o multiQC que ele agrega relatórios de qualidade em um relatório central, certo? então aqui o que vai acontecer é, vamos ter um novo processo certo? que eu acho que é o 6 um novo pipeline, perdão ele vai ter aqui, o multiQC mais um processo esse sim, está com publish tier então o festival qc é no intermediário, digamos assim a gente não quer salvar esses resultados a gente quer o que? o do multiQC que vai ultimizar os fesqc eu quero salvar nos resultados, com arquivo apenas multiQCdline import.html certo? basicamente é um comando multiQC. naquele diretório vai executar tudo e aí tem uma coisa legal, porque eu vou pegar a saída do dado de expressão eu vou usar o operador mix que é um operador do nextflow que ele combina canais, eu tenho um canal um, dois, três, um canal com 406 eu dou um mix entre eles, eu tenho um canal com um, dois, três, quatro, cinco, seis quando eu faço aqui esse mix do quanto você vai com o Flamengo CCH ele vai fazer o quê? agora eu tenho um canal com todos os arquivos e eu vou usar o collect, que é um outro operador do nextflow, que ele pega vários elementos e converte em apenas um elemento com todos os itens então eu vou ter dez arquivos vou ter uma lista de dez arquivos se eu der um view com o operador do nextflow não vai ser um arquivo por linha vai ser todos os arquivos entre colchetes em uma linha, então vou ter que unificar tudo isso para passar para o multiQC o meu considerado collect é que como ele vai pegar tudo e colocar em uma lista ele só pode terminar quando tudo está terminado quanto o processo quantification vai terminar tudo e o féssico que vai terminar tudo vai ser coletado e só com esse coletado o multiQC pode trabalhar então isso é uma dica muito boa para quem quer que o processo vai começar por todos os outros que ele depende que vai ser terminado para usar esse collect e não é sempre assim, mas é um não se eu tenho um processo A vai trabalhar com dez amostras e um processo B que depende dele assim que ele não estiver saído o B já pode começar o B não tem que superar por tudo o que vai terminando já vai pegando para o B rodando e passando para C mas se eu colocar um collect não ele vai esperar terminar tudo coletar e passar para o B é o que a gente quer no multiQC eu só quero que ele faça um relatório de qualidade por todos os análises que estarem terminados então aqui para rodar C script 6 com todos os alunos tudo em cache menos esse novo processo que é o multiQC que ele vai gerar aqui nos resultados, aqui é o multiQC eu vou clicar com o botão direito vou colocar em download e eu vou aqui abrir esse aqui o meu computador e temos aqui agora todos esses análises de qualidade das amostras o multiQC foi muito legal tem vários e vários programas centenas se eu não me engano que o multiQC já tem tudo fácil para importar e você consegue ver você pode ver que são gráficos interativos você pode exportar essa informação é bem legal o multiQC é bem legal então em resumo a Rita aprendeu como coletar várias saídas para uma única entrada com o operador collect como combinar canais com o operador mix como em cada dia dois ou mais operadores juntos resolve o mix para combinar depois coletar outra coisa legal que ele vai brincar um pouco é a ideia de evento de conclusão então eu posso falar como abrir esse script 7 para ver o executor a gente fala de complex o workflow.on.complete quando terminar eu vou escrevendo log se o workflow.success é uma variável no nextvlog no nextvlog terminado abre o relatório e ele dá o endereço completo no multiQC tem que dar algum erro alguma coisa do errado então esses efeitos de conclusão são interessantes porque ele tem medo que você faça alguma coisa queira organizar os arquivos, dar uma alerta, gerar e-mail quando ficou concluído o que faz aqui com essa parte de meio beleza outra coisa legal é que às vezes você quer um script malzinho que você quer executar e você não quer que fique naquele blog um script gigantesco a ideia é que é lógico que o pipeline fica ali, mas o script de fato fica em outro lugar como você pode fazer isso? você pode criar uma pasta BIM na pasta do seu script pipeline eu vou salvar lá os arquivos por exemplo, esse aqui eu vou copiar eu vou salvar no arquivo do feskylc.sh então vamos lá, salve aqui eu vou dar sega-mod mais x para ele poder ser executado no programa eu vou jogá-lo na pasta BIM a pasta BIM não existe bem renomeando ele eu vou criar a pasta BIM vou mover o feskylc para essa pasta BIM beleza agora eu vou aqui no script 7 em vez feskylc eu vou derrubar esses comandos que poderia ser muito maior eu vou apenas eu vou apenas chamar o programa feskylc.sh que eu criei na pasta BIM eu vou passar os argumentos para ele eu posso muito tempo para ele salvar isso aqui e agora executar isso aqui e ele de fato vai rodar eu mudei o globo de script uma galera não sabe mais se é a mesma coisa para você executar ali eu mudei de fato o script eu precedi outras coisas então não tem mais o catch ele tem que usar o péssimo de novo em cada uma das amostras antes eu tinha duas linhas agora se vocês virem aqui vamos parar então eu mudei o que o meu processo faz então se eu não usar o catch ele recomputou mas aqui deu certo do mesmo jeito então a gente aprendeu aqui como escrever ou usar escritos customizados personalizados para uma pasta BIM dentro do meu pipeline outra coisa legal é a geração de métricas e relatórios então bora rodar aqui vários parâmetros com o twist, com o timeline, com o bag então esse comando a gente viu um traço de docker ele inicia cada tarefa dentro de um container do docker são bilhares de containers que podem ser executados cada um isolado não só naquela pasta de um work mas de um ambiente contacional que é isso que é um container tem uma sessão aqui que a gente vai ver que é gerenciando dependências de containers que falam a gente tem mais etástica como eu falei tudo que eu estou falando daqui suficientemente é que você executa em um ambiente em um controlzinho isolado dentro de teu então cada tarefa pode ser de um container certo? esse oitre importe, ele gera um relatório e execução dos grupos de trabalho certo? esse oitreis ele gera um arquivo com a formação de tempo e execução de cada tarefa com várias formas interessantes também esse timeline mostra o tempo de cada processo certo? e oitrega ele gera aquele grafo da tarefa a gente pode rodar esse comando aqui todo eita pois sem o resumo bem aqui interessante o que a gente fez que é o seguinte eu já chamei não foi o script 7 eu falei rode RNA-seq ele já, por padrão, fez deu-lhe um down-down do next floor que é um pipeline nosso entrou no GitHub, baixou o que ele está fazendo aqui, baixando para acabar ele deu um erro aqui enfim, tem um erro aqui, mas o trace por exemplo, a gente já conseguiu ver que é um erro, ele não deu nenhuma tarefa vamos fazer aqui o script 7 que é o melhor script 7 eu acho que ele tem que ser uma revisão específica em começo de 2.1 aqui aquela versão do pipeline do GitHub eu achei que ela está quebrada aquele apareceu já o report que a gente já viu agora tem esse MyDeg aqui que é uma imagem, que é um grafo do nosso pipeline, tem um profissional index tem um canal, então prefere que o C quantification, todos eles são combinados para o mundo que o C então você tem um grafo do pipeline eu posso baixar essa time line aqui para a gente ver que é bem interessante o index, ele tem esse tempo que ele demora de execução de fato que é transferida o cinza é o tempo movendo o arquivo para cá, para lá para ser próximo processo você consegue ver que em direitinho o que demora mais no caso aqui por exemplo, que mexe mais dados eu acho que o C, mas tem também aqui o modo que o C, você consegue ver um ano e um tempo do pipeline demorou 16 segundos e assim por diante esses dados não são muito confiáveis quando é algo muito rápido quando é o mais real aqui vocês já viram, agora tenta rodar o que não estava dando certo isso aqui vamos tentar rodar aqui com a revisão 2.1, agora vai dar certo ele não deu isso, tem alguma coisa aqui que não está dando certo mas é que você pode rodar o próprio guide ram, certo? eu posso rodar aqui um exemplo famoso que é o relou, é um pipeline dizer hola mundo e alguns idiomas como a gente sabe que está no nextflow.io você não falou nada e vai baixar esse pipeline e vai executar aqui, fala hello world hola world, bonjour world enfim, tchau world aqui tem um lance de recurso, certo? documentação do nextflow alguns padrões comuns de dúvidas que a gente tem mais complexo do nextflow o NFCore e é aqui que a gente se encerra a situação de hoje pessoal amanhã vamos falar sobre o NFCore no slide vamos fazer aqui os slides de novo para a gente ver, certo? aqui nós temos hoje foi até o NSec amanhã nós temos introdução do NFCore o NFCore para usuários na sessão de amanhã posteriormente vamos voltar para a dependência os canais e tudo mais então por olho só pessoal mais uma vez fiquem à vontade para entrar no nosso slack do NFCore certo? vocês podem entrar no NFCore NFtrassocio.re vocês verem me entrando aqui vocês conseguem vim aqui em sobre join NFCore e você clica em slack e vai conseguir entrar e lá vai ter aquele canal que a gente falou certo? que tem as dúvidas para vocês perguntarem lá tem um canal real para vocês e vamos respondendo então esse vídeo vai continuar gravado vocês podem retornar ele, pausar fazer perguntas lá e é isso encerramos hoje essa primeira sessão sejam bem-vindos e bem-vindos mais uma vez e até amanhã tchau tchau