 Olá pessoal, sejam bem-vindos e bem-vindas a mais uma sessão do treinamento do projeto NFCore. Hoje nós vamos começar a nossa quarta e última sessão, certo? Compato-lhe aqui a tela com vocês, a gente da nossa Brick App diário, né? Então, como a gente viu no primeiro dia, né? O que a gente viu até agora? A primeira sessão foi o primeiro dia. A gente teve uma introdução ao projeto NFCore, uma introdução ao projeto NextFlow, falando sobre o que é o NextFlow, tanto como uma linguagem de descrição de Pipeline, assim como um motor de orquestração de Pipeline, certo? Um orquestrador de Pipeline. Aí começamos de fato o material treinamento, que é o training.nextflow.io. Começou o material treinamento, capítulo de configuração de ambiente, introdução ao NextFlow. A gente criou do zero uma parada de conceito de Pipeline de RNA-seq, certo? Capítulo, capítulo, level 1, digamos assim, né? Até que no segundo dia, a gente já não seguiu aquele material treinamento. Aí a gente deu uma aprofundada no que é o NFCore, como o projeto, e mais detalhes em comparação do que tinha sido feito no primeiro dia. A gente conheceu o NFCore 2 e as ferramentas do projeto NFCore para se criar e manter Pipeline com o NextFlow, padrões de desenvolvimento, um prato que viu bastante módulos, sub-workflows, beleza. Como utilizar Pipeline de NFCore, como desenvolver Pipeline seguindo as melhores pratos do NFCore. Esse é o nosso segundo dia. No terceiro dia que foi ontem, a gente retornou para o material treinamento, o training.nextflow.io, citando várias questões que a gente já tinha aqui, ali pensado na primeira e segunda sessão, certo? Então, falamos um pouquinho do Docker. Entrou em detalhes as tecnologias de container, Docker, Singularity. Falamos em sóficos para gerenciar a instalação de pacotes como conda. Mentionei o spec, embora não tenha dado exemplos. Falamos de canais, processos, operadores, que são conceitos importantíssimos para se entender Pipeline com o NextFlow e escrever esses Pipelines. Então, eu vou, inclusive, aproveitar aqui esse momentinho para dar uma revisão muito rápida, porque até uma imagem que eu gosto muito daquele esclarete que veio no primeiro dia, que um Pipeline, eles são etapas, certo? Os quadrados são os processos. Então, cada etapa de um pipeline, ele é um processo. E esses processos, essas etapas, elas se comunicam através de canais de comunicação. Então, sempre que eu tenho etapas encadeadas, processos e canais comunicando, eu vou ter um fluxo de trabalho e vou ter um workflow, certo? E aí a gente fala essa questão, que às vezes nem se atenta muito a questão de nomenclatura, mas o que geralmente a gente quer dizer é que o fluxo de trabalho é essa parte pura aqui, mas na hora que você tem os softwares, o ambiente de computação e tudo mais, ele vai ter um pipeline, ele é o conjunto de tudo, né? E os operadores são funções, de programação, que atuam sobre canais. Então, sempre que eu tenho uma função, que ela trabalha com canais, ele é um operador de canal. A gente tem vários exemplos, né? Eu tenho um canal de saída de um processo, saída de um etapa, posso filtrar, posso alterá-lo, posso criar um outro, posso copiar-lo e assim por diante. A gente viu uma introdução bastante breve sobre Groove, que é a linguagem que o nextflow foi construída em cima. Então, acaba que é útil saber as boas coisas de Groove, a gente pincelou alguns dias, muito simples, de como utilizar, e encerrou a sessão de ontem falando sobre modularização, que a gente tinha pensado um pouquinho no segundo dia, pincelado um pouquinho no segundo dia com o FullyDNF Core, que essa ideia de eu ter um pipeline mais modular, tanto permitindo para que outras pessoas utilizem os meus módulos e para uma simples, certo, como eu utilizar módulos de outros pipelines. Beleza, e aí chegamos hoje, a quarta e última sessão. Como nas reações de ontem, mais uma vez nós vamos começar a retomar alguns conceitos que foram falados ao longo de um treinamento, com essa configuração e deploy na nuvem, cluster, entrança, que é o resumo, tal, eu cheguei a mencionar em algum momento, então hoje vamos entrar em mais detalhes e algumas questões que foram mencionadas já durante o material treinamento. Como sempre, no primeiro, terceiro e quarto dia, vamos utilizar o training.nextflow.io, vamos utilizar algo que a gente pode, que é essa infraestrutura na nuvem, que nos permite praticar o que a gente está aprendendo e ver o material treinamento, sem ter que instalar o configurar nada na nossa máquina, está tudo na nuvem, certo? E as perguntas, elas podem ser perguntadas no Slack e na F-Core, de preferência nesses canais de cada idioma, que estão sendo em português, então preferencialmente perguntem no canal em português. É essa semana de treinamento. Muita gente vai estar prestando atenção, vai estar prestando atenção nesses canais para responder dúvidas. Posteriormente, os canais tracionais de ajuda, os pipelines, de algumas coisas específicas, certo? Então vamos lá, retomar indo direto aqui ao nextflow.train.nextflow.io. Aqui ensinou nesse ícone para escolher em português. Beleza, é para começar o treinamento. E nós temos aqui toda a sessão e os capítulos, já vimos quase todos. Hoje vamos começar com configuração, certo? Na real, como a gente vai fazer o treinamento, embora entrar pelo Git, pode. Então, fechei aqui a janela. Que a ideia é o quê? A ideia é clicando aqui, opening por, ele vai abrir, ele vai perguntar se você quer abrir do zero ou do ambiente. Independente disso, o interessante é que a gente vá aqui, vou clicar em explore, né, para fechar essa janela para ter mais espaço de tela. Basic training, português, eu vou aqui em configuração no ambiente, é apenas para lembrar que a gente todo o treinamento está fazendo com essa versão do nextflow, certo? Eu cheguei a mencionar para vocês que esse comando aqui, essa variável de ambiente nxf-v, ela diz qual a versão do nextflow para utilizar. O senhor deu aqui o nextflow, tracim version, lembrando que um tracinho é uma opção do nextflow, que é uma opção do pipeline, como a primeira vez ele rebaixou aqui, 245, a versão, que é o que a gente quer. Beleza. Se você der de novo o nextflow, conversa, ele abaixou, ele vai rodar direto. Beleza. Vamos agora para a sessão de configuração, certo? Beleza, abaixar um pouquinho aqui. Essa parte de configuração é interessante porque o modo como o nextflow lida com os pipelines em si, é ter muito separado, ter bem separado o que é a loja do pipeline, do fluxo de trabalho e o que é a relação da configuração, certo? Então, embora você possa colocar tudo no arquivo do próprio script do nextflow, o exemplo, la.nf, é interessante você desacoplar isso de modo que até possa aproveitar os seus modos, seu script, sem ficar preso à configuração da tua infraestrutura. E você colocar em configuração o que é específico disso, certo? O nextflow, ele é o nextflow.config que é um arquivo que ele deve ficar no diretório do teu pipeline. Então, se eu tenho uma pasta lá dentro para o meu main.nf, o script.nf, se tiver um nextflow.config nessa pasta, ele vai ser levado em consideração. A questão é que tem uma questão de, a questão foi engraçada essa, o ponto é que tem uma questão de prioridade, certo? Em relação a isso, de gente formar o sinal, dox.nextflow.io e for aqui em configuração ele vai mostrar a questão de prioridade, certo? Isso é um ponto interessante. Tem vários modos que você oferecer no trio nextflow com uma questão de configuração e dependendo de onde você colocar, vai ter uma prioridade, no sentido que se tiver um conflito vai dar preferência ao local de maior prioridade, né? Então, antes de tudo, a sintax de configuração é desse formato então é um nome da palavra chave e o igual valor, né? Aqui temos exemplos, né? Então, propriedade 1 igual 1 do que é um string. Aqui eu tenho um string com aspas duplas lembre-se disso, ela expande variáveis então aqui vai ser chave e vai substituir a propriedade 1 com o mundo, certo? Aqui mais uma vez aspas duplas, esse path ele vai expandir, que é um variável de ambiente do límico, né? É um arquitetório aqui, onde ele pode encontrar alguns arquivos. Então, sempre eu colocar essas aspas duplas, ele vai substituir a variável se eu colocar, as faz simples não, vai ficar do mesmo jeito, certo? Beleza! Os comentários desses arquivos de configuração é muito simples, é igual no próprio quadro dos script nextflow um comentário de uma linha, o que é um comentário para quem não tem muito de programação, né? É apenas uma mensagem que você quer deixar e você não quer que você quer deixar um recado, uma explicação sobre algo com esse comentário de uma única linha você faz ele com barra-barra e quando você quer simplificar para várias linhas você pode ver que fica colocando barra-barra em toda a linha você coloca essa barra acerisco e termina com acerisco contra barra, certo? Uma coisa muito interessante que você pode fazer a gente viu no primeiro dia, pode até abrir aqui o nextflow.config que já tem nessa pasta a gente tem aqui duas diretivas, né? duas escopas aqui de configuração, o process e o docker, e aqui a gente tem o container que é uma diretiva de fato, né? Então, tem dois modos que eu poderia fazer se tanto eu posso fazer assim se, deixa eu aumentar um pouquinho aqui a fonte esse process.container também process, abriu a chave container, igual o nextflow rncgnf porque isso é interessante, que eu poderia muito bem eu vou lá fazendo aqui cpus2 memory 1gb e assim por diante, entendeu? em vez de ficar colocando process.container tal, process.cpu tal e assim por diante, certo? Então, são dois modos equivalentes que você pode utilizar que é com a chave ou com o ponto e o que tá antes do ponto nessa questão de configuração, ela é um escopo, né? Se você for na parte de configuração mais uma vez, vai ter aqui uma subcessão e tem vários escopos, o escopo do docker por exemplo, que a gente abriu convocado a longo desses dias, eu tenho docker.enable que é para ativar o docker o ponto container, que eu... não é aqui que eu vou dar o container mas o run options que eu vou dar algumas configurações de docker a sudo e assim por diante, certo? No mesmo modo, process vai ter todas as diretivas que a gente viu, né? Então aqui que é de escopo de process eu vou ter onde vai ser executado opções focluster, memória, cpu, filas então aqui a lista extensiva, né? a lista completa em todas as diretivas, os escopos em process de configuração e tudo mais vai ser aqui no arquivo de documento oficial do nextflow, aqui vai ter alguns exemplos apenas do material de treinamento mas enfim, entendam que tem escopos, certo? que você pode desses dois modos definir e que é palavra-chave espaço igual espaço palavra-chave igual e o valor algum que você pode ter com atenção Marcel, você abriu aqui o nextflow.config e tem o process.container espaço igual espaço nextflow.arncknf mas em algum momento você abriu, sei lá, o PHP script set em algum momento você tem a visão de treinamento algo assim a diretiva de processo, no corpo do processo, em vez de ter um arquivo de configuração beleza que você viu isso mas o ponto aqui é, cadê o igual? quando você vai definir esse tipo de coisa no corpo do processo, não tem igual é palavra-chave, palavra-chave espaço e o valor, certo? agora quando for no arquivo de configuração aí tem que ser, tem que ter esse igual então isso é um detalhe importante de lembrar, certo? beleza os parâmetros de configuração como você já viu, colocando esse parâmetros ponto na frente, você consegue controlar isso a nível de linha de comando aqui tem exemplo que é interessante, vamos lá eu vou criar aqui um exemplo ponto F eu vou colocar aqui que é parâmetros o olá, parâmetros, vá mundo, certo? e vou dar aqui um println parâmetros, o parâmetros, vá só para mostrar aqui o que eu já falei várias vezes para reposar com exemplo, né? ele é mais, vou nomear aqui beleza, então eu vou aqui roda esse exemplo ponto F como se expandê-lo está apenas com aspas simples então o que você acha que vai acontecer ele não vai expandir as variáveis, certo? opa, botou alguma coisa aqui eu não fechei aqui o aspas simples estou a fazer contar de novo ele vai imprimir aqui o nome das variáveis, está com aspas simples, certo? beleza, agora se eu colocar com aspas duplas que eu falei alguns minutos atrás agora assim ele vai substituir esses valores, essas variáveis com seus valores respectivos, certo? olá mundo, beleza se eu e vou lá aqui no documentação de configuração, né? o maior na hierarquia aqui, certo? de prioridade, o maior é do parâmetro dado então se eu vim aqui e der um full hello para world, é, dois tracinhos porque é parâmetro pipeline, vai aparecer olá mundo ou hello world, vai aparecer o hello world porque ele tem uma prioridade maior do que o arquivo de script vamos ver aqui o que vai acontecer hello world, de fato, se vocês virem na configuração na verdade, a prioridade mais baixa é no script, certo? então se eu colocar ainda aqui no próprio arquivo de configuração em vez de colocar vamos mexer no arquivo de configuração em vez de colocar no próprio na própria lendo comando então hello world beleza, se eu voltar agora o pipeline se eu voltar com esse parâmetro ele vai mostrar de novo o value world porque o parâmetro de lendo comando tem a maior prioridade certo? mas agora que está no next-loop config, ele vai dar um hello world que ele vai ser uma prioridade maior do que o que está no arquivo de script, então isso é importante vocês saberem porque até no próprio arquivo de configuração tem vários arquivos de configuração no geral tem vários locais onde você pode oferecer informações de configuração e é importante entender essa prioridade aqui, para saber qual informação será mais em consideração desse canto daquele outro certo? beleza, vimos aqui o exemplo de prioridade é o que ele pede aqui no exercício basicamente, beleza existe também variáveis de ambiente certo? então até aqui, como vocês viram, a gente está pelo nível do momento essa cifra um pé é uma variável de ambiente muito conhecida porque para o Linux, por exemplo, quando você dá um comando ls como é que ele sabe onde está esse programa? porque ele checa nos diretórios dessa variável de ambiente de pé, de caminhos então às vezes você quer que seu pipeline ele trabalhe com alguma variável de ambiente e aí o escopo envy do next-loop permite isso aqui por exemplo é um exemplo muito simples aqui eu uso comando envy que ele liste todas as variáveis de ambiente então tem várias como vocês podem ver e se eu der um grep um grep alfa não vai ter nada que não exista a variável de ambiente mas se eu rodar um pipeline de next-loop com essa informação de configuração eu condomorei sem ver aqui mas na tarefa específica que eu colocar ou no todo pipeline, se eu colocar uma geral nesse escopo vai aparecer essa variável de ambiente então é bom um exemplo para mostrar como o next-loop sempre de forma isolada ele consegue configurar e preparar tudo para você certo? talvez seja um pouco difícil agora de pensar em um exemplo para vocês que estão começando mas existem vários momentos onde você quer trabalhar com a variável de ambiente naquela tarefa específica e não em outra ou você quer que tenha outro valor para aquela outra então é importante saber que o next-loop permite essa gerencia de variável de ambiente a número de tarefas for necessário certo? também pode oferecer um arquivo de configuração com menu C que é o que basicamente está aqui tem várias formas de você setar variáveis de configuração de um pipeline aqui a gente já viu em vários momentos essa questão de diretivas de processo são informações profissionais que você coloca no começo do globo de processo e descrevem características daquela tarefa todas as tarefas que vão ser instanciadas a partir desse processo aqui temos exemplos no arquivo de configuração por isso que ele está com esse globo 10 CPUs 8 GB com esse container se eu colocar isso aqui no meu arquivo de configuração todos os processos irão solicitar o sistema operacional ou os serviços de nuvem 10 CPUs 8 GB de RAM e esse container para ser utilizado para cada tarefa mas Marcel não é assim que funciona na prática eu tenho geralmente algumas tarefas que são mais simples outras mais complexas eu gostaria de poder falar as tarefas aqui é um cara assado eu não quero definir essa coisa para todos os processos nessas situações você vai trabalhar com uma coisa que a gente vai se seletando em processo se você clicar aqui abrindo a nova aba vai levar para o documento oficial do nextflow ele tem aqui bastante extensiva mais muitas informações sobre os seletores e processos no material treinamento ele é mais curto mas é que vocês conseguem ver com mais detalhes mas o importante de saber é que você pode definir tais características de configuração para tais processos e outras para outros processos utilizando esses seletores então aqui se ele dá um exemplo para aquele adorno artificial tem dois modos que eu acho muito interessantes um deles é utilizando o nome do processo e outro utilizando um label vamos fazer um exemplo com cada então vamos abrir o script set que é a última script que a gente viu com a gente dar a prova de conselho de arnecique, eu tenho aqui um processo de index de quantificação beleza, o de quantificação aqui a gente não especificou nenhuma cpu nenhuma formação de cpu e o nextflow config também é um desnado desse tipo o que significa vamos apagar aqui a passagem do trabalho para a tela zerada quando eu rodar esse script set como eu não falei nada, esse cpu ele vai utilizar o valor padrão que aqui nesse caso vai ser o valor 1 certo não tem nada aqui especificando o contrário e nada no arquivo de configuração e eu vou poder tem que colocar o dockerenabled para utilizar o docker um dockerenabled.2 e eu poderia muito bem colocar o runoff e o label dentro de chaves para colocar assim o runoff, o label, vou rodar de novo aqui vou pegar o cpf na tarefa o rechezinho da pasta e ver como que foi chamado desse processo então quantificação eu quero ver aqui, então vamos lá work set e vou rodar aqui para eu pegar essa pasta ponto command ponto sh beleza, 3, 1 então ele substitui de fato o test.cpu com o valor 1 que nesse caso é o padrão eu poderia muito bem no arquivo de configuração que eu vou abrir agora colocar conseletor olha, eu não quero todos os processos eu quero só esse cara aqui vou copiar e colocar para facilitar vou dizer vou pegar essa pasta vou colocar para o dentro o processo que eu tenho o nome quantification eu quero 4 CPUs eu quero 8 GB de RAM vou apagar isso aqui beleza na hora que eu fizer isso aqui e rodar de novo eu vou abrir lá aquele arquivo que é o comando para ser executado e nós vamos ver em vez de 1 vai ter 4 certo? sendo substituído aqui em test.cpu se isso fosse um cluster seria solicitado ao explorador de logic mais essa informação, 4 CPUs vamos ver aqui 4 CPUs como a gente colocou aqui a massa, beleza você poderia colocar, sei lá CPUs 2 para todo mundo mas se for quantificar eu quero 4 mas eu posso ter no meu pipeline 50 processos e eu quero que 30 seja assim eu não quero ficar adigitando 30 nomes você pode inclusive colocar tem um exemplo legal aqui com vários nomes que eles colocam tanto o ful ou o bar começando com ful você pode colocar isso para seus regulários aqui com global de fato você tem a abordar com um sistema pequeno vários nomes e processos mas ainda assim é muito trabalho seria muito interessante que eu pudesse falar, todos os processos que são precisam de muito CPU usam muito CPU esse é muito legal porque tem o weak label esse weak label é muito legal e tem inclusive se fazer para os pipelines do NFCore por aqui no Arnec por exemplo botar aqui na configuração aqui eu acho que é o base config pronto, ele tem aqui todo processo que tiver o label que é uma diretiva de processo é um rótulo que você coloca no começo do computo e o que tiver com o nome process single eu quero muito CPU beleza o que tiver process low eu quero 2 o que tiver aqui process high memory eu quero 200 GB de RAM e aqui vamos falar daqui um pouco nessa questão de tentativa essa aqui é uma definição dinâmica da solução de recursos cego vamos ver daqui um pouco ainda hoje mas por hora apenas foquem um processo, uma quantidade padrão e outras quantidades dependendo do rótulo se é single, se é um processo de memória e aí eu posso vir aqui vou procurar esse repositório para o process low e vocês vão ver que vai ter processos esse processo salmo por exemplo o TX2DIN ele tem um label dizendo o process low então na hora que for rodar esse processo para o process low ver na configuração tem uma procuração específica para o process low e aplicar ela certo então esses seletores ajudam muito para a gente definir configurações específicas para processos por nomes ou por rótulos certo aquele tem um exemplo com vários eventivos de processos 4 CPU, 2 GB de RAM eu quero que esse cara tarefa lembrando que é uma descrição de processo gera uma instância que é uma tarefa e isso é para cara tarefa se eu tenho 10 tarefas em paralelo eu quero estar 10 GB de RAM porque tem 2 GB de RAM para cara tarefa uma hora se a tarefa demora mais de uma hora mata ela ele vai passar de formação para o cluster certo beleza uma coisa que você também pode fazer é é adicionar um pouco de dinamismo então eu quero 4 GB de RAM vezes o número de CPU então o CPU vocês viram que aqui no caso de 1 vai ser 4 GB de RAM mas na hora de colocar a CPU os dois por exemplo, ele já vai só listar 8 GB de RAM você pode ter esse tipo de dinamismo certo nessas definições ele fala que quando desistir mais de um valor no arquivo de configuração vai ser um mapa que ele vai utilizar, que a gente vê um pouquinho no dedo groove esse chave em dois pontos e o valor da chave, esses 2 unidades que é o mapa que é essa procuração do Docker que a gente já viu algumas vezes no scope de processo eu seto o container aqui vai para todos os processos e aqui eu falo que eu quero ativar o Docker certo a gente também viu no dia de ontem sobre Docker essa questão de utilizar a chave a hash para ter um cpf da imagem do container, eu quero usar aquela ali e ela vai alterar essa hash e aí eu vou saber, não vou utilizar uma outra imagem por engano também falei ontem essa questão que o singularity o conda, spec, todos eles os nomes são syntax, docker.enable singularity.enable e assim por diante a a a gente não pode usar o singular, que o git pode que vocês não tem o que fazer mas aqui também conda, a mesma coisa process container, process conda esse aqui é um ambiente do conda que a gente criou ele vai ser carregado para todas as tarefas então pessoal, a parte de configuração isso aqui, como eu falei, a gente já mencionou muito nos dias, configuração aqui e tal basicamente é isso, saber que muito importante que no arquivo de configuração tem que ter o igual e não precisa de igual, como é no arquivo do script de nextflow saber essa prioridade que é fundamental isso que na linha, quando passa o parábado da linha de comando, é maior do que no script ou no arquivo de configuração ou no arquivo que você passa com menos c, isso é importante e tem um coisinho, eu até queria falar para vocês que eu cheguei a falar, acho que foi ontem também a diferença entre o Cifrão e o Cifrão com colchele eu acho que vale para fazer um exemplo aqui porque eu acho que ficou claro e isso também pode ser razão de dor de cabeça, certo? Então vou criar aqui um teste para recolher um pouco beleza, então vamos lá eu vou criar aqui uma variável muito simples, idade colocar 25 anos, certo? e eu vou imprimir essa idade beleza a primeira coisa que a gente já viu aqui, isso não vai funcionar vai dar cifrão idade porque as faz simples não expandem as variáveis então esse aqui vai imprimir cifrão idade não é o que a gente quer uma vez sendo mostrado isso vamos ver cifrão idade não vai expandir beleza aqui porque tem o arquivo de nextflow.config como o nosso bitname quantification e não tem mais esse processo então nesse script eu vou apagar lembrando que esse nextflow.config idealmente você tem os seus pipelines por pasta o nextflow.config relacionado a um script é um pipeline beleza, vimos aqui que idade ele imprimiu como se fosse um string não é isso que eu quero eu quero com as fazúpulas, eu quero que a variável seja substituída por 25 se vai acontecer 25 substituiu a gente também pode fazer assim usando cifrão chaves o que vai acontecer? a mesma coisa a questão é que em algumas situações existem sintaxes que elas são reguladas elas não tem para quê, certo? então 25 funcionando por exemplo, vocês viram que em alguns momentos eu vou ter um processo vou ter um canal aqui com alguns valores eu vou passar para um processo e no final eu vou dar um view para ver isso eu quero consumir os elementos do canal Marcel não seria um parêntesis, verdade a questão é que quando você não está dando nenhum argumento em uma opção você pode deixar assim do mesmo jeito que o println na verdade ele é assim com parêntesis mas como estou dando nenhuma opção aqui eu simplesmente escondo o mito de parêntesis mesma coisa aqui ou então se fosse com uma clausura que a gente viu que quando eu passo um bloco de código com um argumento para uma função aqui o it, como ele já é o si mesmo eu não tenho que colocar e aqui como a clausura está vazio eu não tenho que colocar então em várias situações você pode deixar de ficar adicionando símbolos porque eles não são necessários em muitos casos e é a mesma coisa da chave aqui como eu já mostrei agora deu 25 igual daria sem as chaves onde está a diferença? digamos que seja aqui nome agora e o nome vai ser Marcel beleza se eu colocar isso aqui ele vai imprimir vou dar um clear aqui para sempre ficar limpando a tela com dois erputos vai limpar e colocar Marcel porque está com as questões de expandir a variável que eu quero utilizar a função to uppercase que é uma função do nextflow que coloca uma string em letras maiúsimas eu posso colocar aqui ponto, que ele tem um do ponto para chamar a função to uppercase vai dar um problema aqui qual é o problema? do mesmo jeito que eu repitem aquelas variáveis parâmetros, ponta ou alguma coisa e isso é um nome completo da variável aqui o nextflow está pensando que eu estou me referindo a variável que é um ponto to uppercase e essa variável não exerpa não tem essa variável isso aqui poderia ser um objeto para quem entende programatório interobjeto isso aqui é um método um atributo então nesse caso, quando eu quero fazer coisas, digamos assim, com a variável que uma expressão seja avaliada com relação a essa variável eu vou utilizar as chaves para deixar claro que eu vou ter uma variável com ela e no final eu quero que esse valor seja disponível então agora assim, quando eu rodar vai aparecer maçã em maiúscula beleza, maçã em maiúscula então tem gente que até quando descarga consciência sempre fica colocando com as chaves eu prefiro quando pode ser omitido para ficar mais simples o texto mas lembrando que em alguns casos quando você quiser fazer alguma coisa com essa variável você vai ter que colocar aqui dentro das chaves então eu estou falando isso porque aqui no começo do material de compreensão você até fala essa sintaxe de colocar com os chaves e inclusive coloquei a expressão para lembrar que isso é útil quando você quer que uma expressão seja avaliada com relação àquela variável deixa eu ver se eu tenho que falar com relação a isso, acho que não compreensão é só isso beleza vamos agora então para o próximo capítulo que é os cenários de implantação esse cenário de implantação tem relação com a parte de configuração porque assim como a gente falou que a configuração a ideia é desacoplar da lógica em si aqui também, aqui eu vou ter a configuração de onde eu quero que o meu pipeline seja executado e como, em relação à infraestrutura a configuração do ambiente em si o primeiro exemplo que a gente começa é em Plaster de infraestruturas de computação e ao desempenho você tem um super computador ou você vai ter vários contradores que foram configurados para funcionar em cluster, etc então o que vai acontecer aqui basicamente é que eu vou ter meu escrito nextflow uma equipe de configuração que vai ter configurações sobre esse cenário de implantação que vai acontecer de fato a execução do pipeline e aí, dependendo de como foi isso aqui ele vai executar isso ou localmente, que a gente fala que é na máquina programada e tudo mais ou ele vai passar para um super computador que vai ter, por exemplo, um batch scheduler um escalador de lote um software que gerencia recursos de infraestruturas de computação e ao desempenho falando primeiro dia que o nextflow tem suporte a várias tecnologias como Sber, PBS, Torque o próprio Kubernetes, na Nuvem como Amazon AWS, Microsoft Azure Google Cloud Platform suporte nativo a várias lembrando quando eu falo suporte nativo você basicamente diz o que você quer e o nextflow vai a essa ponte com ele quem conhece o slurmin e outros sistemas desse tipo nade of schedulers, sabe que você tem que criar por exemplo um arquivo best com várias informações e tudo mais você não precisa fazer isso aqui você fala para o nextflow que você quer de CPU e o nextflow vai traduzir isso para o arquivo no formato slurmin ou no formato PBS ou no formato de qualquer outro braddingin e assim por diante computação, compute environment que a gente fala em inglês é com a diretiva executor no escopo de processo se eu colocar slurmin o nextflow automaticamente vai saber que ele tem que criar um arquivo inserir o escrito no formato que o slurmin atende preparando esse arquivo ele vai usar o comando sbat são os comandos do slurmin para executar esse script e fazer direito nas teletas ele monta tudo para você você fala que ele slurmin e ele se vira e geralmente que trabalha no cluster sabe que ele vai ter que falar quanto CPU você quer quanto tempo, porque assim que o sistema os job schedulers eles vão gerenciar os recursos do cluster o que tem disponível para quem ele vai dar para a gente dar na fila aqui então você vai dizer com as leituras de processo qual é a fila que você quer que utiliza no cluster número de CPUs lógicas, memória espaço em visco mais uma vez, aqui algumas das principais documentação oficial do nextflow que é o docs.nextflow você vai ver a lista completa que é bastante grande aquele tem um exemplo mais real digamos assim então ele fala, eu quero que execute todos os processos do pipeline com slurmin é lá a tecnologia slurmin eu quero um arquivo que eu mandei criar que o sysadimia de todos os sistemas do meu cluster ele criou quando é curta eu vou solicitar para todas as tarefas de todos os processos do pipeline 10gb de RAM e a tarefa máxima é 30 minutos e eu quero 4 CPUs mas eu quero diferenciar para cada processo que a gente já viu, usa withname usa withlabel, você vai usar os leituras de processo para ter algumas grações mais tailor mais específicas para cada tipo de processo uma coisa interessante, como eu falei a pouco no snyrdium geralmente em vários jobs, caderns e clusters você vai criar uns scripts para colocar as informações lá e usar o sbed o snyrdium for, para rodar cada tarefa o nextflow lhe ajuda para você criando esses arquivos e rodando no entanto idealmente, em muitos casos você tem que criar esse script de inicial para o nextflow porque um resumo assim rápido para quem nunca trabalhou com cluster quando você conecta remotamente nesse cluster para trabalhar ele dá um nó, que é tipo um computador para você estar assim que você entra um nó de login ou nó cabeça é um nó para você basicamente mandar ele fazer alguma coisa eu quero submeter esse trabalho e aí um nó de trabalho vai ser associado a sua tarefa com isso em mente, geralmente os nós de login eles não permitem que você fique muito tempo nele, porque para você entrar fazer algo está aí porque você utiliza processamentos de computação, coisa pesada, não é o propósito então nesse caso, se você rodar o nextflow por mais que as tarefas estejam em nós de trabalho, que vão durar o tempo necessário o nó do nextflow o processo do nextflow que gerencia isso tudo, ele vai ser morto pelo cluster, pelo job scheduler porque passou um tempo que usava um sistema do seu cluster, disseram que era o máximo então as vezes eles configuram o nó de login para permitir esse tipo de coisa, para sentir quanto tempo quiser mas não usam de computação também está ok, porque o processo principal do nextflow ele usa pouquíssimo recurso então está ok, mas a questão de tempo pode ser um problema então vai utilizando cluster, chega com a administração do seu cluster, se você pode ter um processo rodando por muito tempo no nó de login, se não puder você cria um arquivo de script para chamar só o nextflow e aí uma vez ele é submetido o nextflow vai criar um arquivo para as milhares de tarefas que você pode vir a ter aqui tem um exemplo de uma experiência de script do nextflow como executar aqui no git para a gente não tem um cluster para brincar, mas saibam que basicamente eu vou criar esse arquivo e vou chamar esse problema com esse batch aqui para chamar o nextflow aqui tem dois postes no blog do nextflow muito úteis com várias dicas para quem quer utilizar o nextflow em ambientes de tipo de computação de computação e performance eu recomendo ler quem tivesse interesse aqui nós vimos na situação passada que começa a questão de configurar por nome então aqui eu tenho todo mundo slurme e tal mas especificamente o processo com o nome full eu quero só dois CPUs mais RAM do que antes, o dobro já o que tem bar, eu quero bem mais RAM e bem mais CPU do que antes certo, então só mais um exemplo aqui com cluster como seria a configuração a gente chegou a fazer esse exemplo também já que foi um modificar esse valor de CPU e ver no arquivo do ponto comando e ver se vai chegar ser alterado aqui é interesse sempre de cluster porque não só ele mudaria além de comando como ele mudaria aqui também então esse arquivo é o que o slurme usa para interpretar quanto recurso você quer então o nextflow aqui também iria mudar esse de RAM então essa é a mágica do nextflow e muda em todos os canso que você quiseria mudar se talvez use nextflow em cluster por anos e nunca saiba que tem isso aqui que o nextflow faz isso para você certo a gente viu por rótulos também que é com leibão então eu tenho um processo que é uma tarefa um leibão longo aqui eu tenho um leibão curto e aí na configuração eu vou falar quando é curto eu quero assim assado quando for longo eu quero desse outro modo então mais exemplos que a gente viu uma outra questão é também a parte de containers, ah Marcel você falou quando a gente falou que o ideal é ter um container para cada processo em vez de ter um container grandão é lembrando aqui porque uma imagem de container menor ela é menor em tamanho então é mais rápido para você baixá-la e mais rara você enviá-la ah Marcel eu trabalho localmente beleza, se você for para a nuvem por exemplo ou até no cluster em algum momento você tem que baixar essa imagem para utilizar então ter uma forma muito grande vai demorar muito e como nós nem sempre vamos utilizar uma imagem de containers de containers em várias vezes então uma imagem pequena ela baixa rápido e envia rápido e ela é levantada e derrubada rápido também sem contar que se tiver um problema você sabe exatamente onde é porque ela é tão simples é tão pequenininha que fica fácil contar o problema na hora de você ter uma imagem muito grande tem vários lugares diferentes tem tantos programas que você instalou tantas versões, bibliotecas assim como eu faço isso? você pode fazer assim um processo, pode ter uma imagem geral mas o full vai ser essa imagem o ba vai ser essa outra imagem é assim que você configura vários containers a nível de configuração um recurso muito legal que eu gosto do nextflow são o que a gente fala de perfis de configuração então a ideia é que sempre que estou usando o perfil quando você não fala nada mas você pode criar outros perfis até para compartilhar com outras pessoas por exemplo, aqui tem vários nomes perfis tem o standard que é o padrão mas ele tem o cluster também então na hora que eu criar esse perfil cluster eu posso falar o nextflow normal o nextflow run scriptset.nm ele vai rodar na minha máquina local mas eu poderia ter configurado um perfil colocar profile cluster na hora que eu fizer isso, ele vai rodar no cluster da situação as configurações do cluster da situação ah não, eu quero agora nuvem ele vai rodar, então você não tem que mudar o código do pipeline, você não tem que mudar o pipeline, você não tem que fazer nada você basicamente fala para o nextflow qual o perfil que você quer utilizar um perfil de teste um perfil de teste sim, de teste completo um perfil de uma análise mais extensa ou de uma análise mais curta então tudo isso pode ser levado em consideração aquele mostra como setar esse perfil você pode utilizar vários perfis então até quando a gente brincou um pouquinho com o NFCore eu acho que utilizou um perfil pronto, acho que era nextflow run, NFCore, RNA-seq e aí o perfil que a gente tinha era o docker para dizer, use docker e o perfil de teste você vai fazer um teste então você pode utilizar ao mesmo tempo vários perfis na nuvem não é diferente eu vou ter um xx, eu estou novamente em direito do xx que é um perfil de um executor que o nextflow suporta aqui no caso a AWS Batch é um exemplo que é um serviço de computação em lote da Amazon uma fila que você configurou lá eu acho que o nextflow se arre o container, eu vou trazer esse container na nuvem geralmente ele exige que o diretor de trabalho seja um bucket que é um tipo de tecnologia um tipo semelhativo de object storage não é no teu computador, não é igual como a gente do computador na Amazon é o S3 na Azure da Microsoft vai ser o Azure Blob o Azure Blob Storage na Google Cloud e a Google Cloud Storage então ele vai ter na nuvem esse diretório de trabalho eu posso setar, a gente já viu se eu não me engano que eu possa utilizar eu posso utilizar menos W para dizer onde eu quero ser o diretório em qualquer lugar mas também posso, no arquivo de configuração aqui ele colocou que é esse caminho aqui num bucket S3 da Amazon que vai ser o diretório de trabalho, é lá que os arquivos intermediários no final vão estar no caso da Amazon e geralmente também Microsoft e Google você tem que especificar uma região que ele colocou uma região e no caso da Amazon especificamente ele utiliza um programa de linha de comando da Amazon AWS e aqui você tem que explicar para eles onde está esse programa para o nextflow aqui um arquivo simples de configuração para sempre derrubar essa pipeline na Amazon AWS Batch e tendo isso aqui como um profile no formato que a gente colocou aqui em cima nos profiles aqui o nomezinho dele eu simplesmente diria que ele iria tocar as coisas na Amazon de outro modo, em outro campo para quem trabalha entende um pouco de Amazon tem o serviço de Elastic Blockstores que é um modo de armazenar arquivos também além do S3 utilizando o scope AWS Batch eu posso setar esse volume então eu quero esse volume do AWS para armazenar arquivo quero montar os arquivos que tem lá eu quero que você coloque aqui e vários volumes eles podem ser especificados e até como você que esteja dentro do automático da virtual da Amazon com um detalhe para fazer a executada então aqui não vale a pena entrar em muito detalhe até porque para muita gente talvez seja algo muito distante do que se faz não é muito comum ainda na academia utilizar a contação em nuvem mas saiba que toda essa tecnologia da Amazon, do Microsoft, da Google pode ser utilizada com o NextLogo certo? mesma coisa aqui para criar tarefas específicos da Amazon, aqui a gente não tem a plataforma para poder executar isso na prática então apenas saiba que todas essas questões com computação em nuvem da Amazon com Google também, a gente consegue trabalhar certo? criar uma imagem personalizada na Amazon, a gente consegue fazer isso um template certo para lançar essas macros também, tudo isso tranquilo uma coisa que eu acho interessante é a implantação híbrida perdão, que que é a implantação híbrida o deploy híbrido é você poder ter o seu pipeline rodando em mais de um ambiente de computação diferente eu poderia, por exemplo conecto no Cluster da instituição certo? vou rodar um pipeline o primeiro processo que basicamente é organizar uma vida de diretódio ou pegar alguns arquivos de Google para algum canto eu quero que faça um exemplo de torno local então assim, nem mande para os Learn que é um simples, roda aqui como se fosse eu derritando, aqui no Cluster mesmo esses processos passam aqui e a partir da 90 eu posso falar agora esses processos eles já são um pouco mais complicados eu quero que você rode eles no Learn aqui no Cluster, mas utilizando o Learn para gerenciar esses recursos e eu quero que outras tarefas são muito complexas, muito pesadas eu quero que você rode na Nuvem, na Amazon e quando eu falo eu quero que você faça aquilo, não é manual se estou automatizado, eu coloquei aqui que eu quero que tal processo, roda no Learn mas quando tiver o label, roda um tarefa grande, roda com a AWS Batch então você pode ter um pipeline um pipeline que vai ter tarefas diferentes executadas em ambientes de computação diferentes uma parte na Google, uma parte na Azure uma parte na Amazon uma parte local, uma parte no Cluster e assim por diante, certo? e aqui nós chegamos ao que nessa sessão de implantação assim, o ritmo realmente é muito rápido, o curso a gente dá o material completo eu acho que uma vantagem nesse treinamento está sendo gravado, é que vocês podem sempre quiserem pausar, diminuir aumentar o ritmo de velocidade rever amanhã, certo? então acho que a gente se preocupou mais em ter o material completo falando um linguajão um pouco mais milçado com exemplo, praticando com vocês no Gitpod apresentando o Gitpod do que fazer algo muito lento, muito curto e assim por diante, certo? então assim a ideia dessa sessão é entender que dá pra você ter o pipeline executado em ambientes de computação diferente que você não tem que se preocupar com detalhes em configuração de cluster de nub, porque o nextflow toma conta disso, certo? que você pode ter pipelines em ambientes híbridos e assim por diante o tal agora vou deixar por último vamos pular agora pra parte de cache e reentrancia na cache e reentrancia mais uma vez, é um tema que a gente já tocou em vários momentos ao longo do treinamento em vários momentos já tocando ao longo do treinamento e essa questão de reentrancia no primeiro dia já estávamos usando o tracinho regio pra ele retomar o pipeline de onde parou, de onde teve um e de onde foi operado, certo? é apenas um pouco mais de detalhes vocês já viram que o cara tarefa tem seu cpf, que é inclusive o endereço da passa dentro do diretório de trabalho onde vai estar os arquivos de entrada que são atalhos na verdade os de saída, os meta arquivos da tarefa tudo vai estar lá isolado, certo? e esse cpf ele leva em consideração várias informações da própria tarefa certo? então temos posse de bloco vamos colocar já que tem mais informações mas ele leva em consideração os arquivos que estão entrando o bloco de script qual é a coisa que você não dá ali que pode ter um efeito na sua tarefa ele vai ter um cpf diferente e ele vai criar um novo diretório e recomputar sua tarefa então tem uma tarefa lá com fila e etapas a partir do momento que encontrar um arquivo que mudou ele já invalida o cache para o restante ele vai recomputar no zero, por quê? porque se a tarefa mudou e a próxima depende dela então tem que recomputar as posteriores, certo? nós vimos que basicamente se trata de colocar o traço de um então eu posso rodar aqui o script 7.nf vamos ver aqui se está configurado direitinho vamos ver o que a moça está atualizando então a moça de gut eu acho que nem são todas de fato é só o gut de novo eu apaguei o preenabled do next.config o que eu faço que o sino foi encontrado eu apaguei o process containers ele não sabe qual container eu acho que é o sino no new space beleza, é funcional veja esse aqui ele está utilizando esse global então é só o gut 1 e 2 são dois arquivos de uma moça de tecido do gut, beleza eu poderia agora fazer o seguinte eu vou dar um resume e ele apenas vai dizer que tudo em cache que eu acabei de executar, tudo está em cache beleza, vai dar cache para tudo beleza, um negócio diferente eu vou dar o traço reads tem o parâmetros.reads que tem um valor padrão que é esse do gut eu vou reescrever isso aqui eu quero todas as amostras ter naquele diretório que se vocês se lembram bem é o gut, liver e lung então eu vou rodar aqui traço reads e ele vai ser assim e o que vai acontecer? o gut já está em cache ele vai apenas recomputar ou computar pela primeira vez as amostras, certo? e isso pode parecer simples mas o ar foi uma coisa interessante opa, até que eu dei um endereço errado isso que eu fiz não é aqui vou fazer aqui, vou fazer aqui vou fazer aqui, vou fazer aqui isso assim vai tinha alguma relação com o a pasta que eu estava colocando acho que ele não tinha com aço o que vocês podem ver aqui são três amostras o lung, o liver e o gut mas uma já tinha cache então isso pode parecer algo bom, algo simples mas na verdade eu quero mostrar o impacto que isso tem quando você vai escrever um pipeline você pode começar com algo simples um amostra, um processo mais simples e aí na hora que veio funcionando com o vasco você vai expandindo adicionando mais questões, mais recursos mais amostras e tal você vai sempre melhorar um pouco o pipeline você não recorrece, você está com o resume e ele só recorrece um pouco o novo e adão eu, a Jeita, só o novo e ele vai crescendo assim isso pouco há muito tempo então é uma coisa que eu coloquei o hard porque comentou, isso ele não pensa muito mas até no desenvolvimento em pipeline salva muito tempo fica sempre utilizando o resume para retomar e ele parou em vez de recorrecer tudo e se você pensar em computações nuvens até que tem concorrência grande por recurso do computador, se ficar às vezes hora esperando na fila vale muito a pena você poupar a computação que já foi feita então esse resume ele faz uma diferença muito grande nesse sentido, certo? beleza a gente já viu que dá para mudar o diretor de trabalho com o menos W ou utilizando o Workgear no arquivo de configuração, a gente viu alguns minutos atrás e a questão é esse diretor de trabalho ele é um diretor que tem arquivos temporários certo? então como você pode ter milhares, milhões de tarefas e resultados intermediários é um diretor que ele costuma ficar muito grande então aqui, ali, é recomendado que você apague ele para que ele não fique com muito espaço a direita de publish here para salvar os resultados interessados que você quer em um local específico e você vai apagando sua pasta do interior do trabalho a questão é que as tarefas isoladas todas e o nextflow checa para entender o que pode retomar ou não então na hora que você apagar o diretor de trabalho ele não vai conseguir retomar mais vai começar do zero porque não tem cache o cache dele é o diretor de trabalho então é importante essas duas questões saber que aqui ele vai ter que apagar não com muito espaço mas lembrando também que ali ao cache você vai perder a capacidade de retomar uma execução já realizada, certo? e assim, até um touch de mudar e trífono aqui qualquer vai mudar o CPF da tarefa e ele não vai retomar vai recalcular aquilo ali então tenha cuidado quando você for alterar esses arquivos em uma execução que já foi realizada então com um menu legal que é o nextflow log que ele te ajuda a ver o log de todas as execuções de pipeline que já ocorreram, certo? então aqui o nextflow log a 20 segundos atrás teve um o nome foi esse, nessa data aqui no OK, o pipeline aqui eu tenho acho que a revision é o que a gente sempre que roda um pipeline aparece aqui a revision do CPF também, do pipeline em si se você não mudar o script se você mudar algo, ele muda, certo? então vocês podem ver que em alguns momentos tem repetido várias vezes porque eu não mudei eu apenas fiquei repetindo o script o set aqui com a Brazil é o mesmo script, então ele fica sempre com o mesmo CPF já quando eu mudei aqui ele mudou o revision, certo? que eu mudei para colocar o gut lembra, coloquei um asterisco na hora que eu mudei o pipeline do script ele mudou aqui o revision id também aqui ele tem o accession id que é mais indicado do que o runname geralmente, que o runname a gente tem um conjunto de adjetivos e um outro conjunto de nomes de cientistas e o runname é sempre um adjetivo aleatório e um nome de cientista aleatório como são muitos é muito improvável que repita um adjetivo com mesmo a nome de cientista mas não é impossível já o session id é bem único então quando você realmente quer se referir a uma execução em específico o session id é mais indicado e aqui tem de fato o comando que foi executado nessa execução que às vezes assim, às vezes não às vezes tem bastante coisa sendo passada, certo? então o legal é que eu posso dar esse nextflow log e passar o nome de um de uma execução o runname, ele vai me dar todos os diretores do trabalho todos os diretores da tarefa daquele pipeline então aqui eu posso contar que teve 3 6, 9, foram 9 tarefas que tem 9 diretores de trabalho, então eu posso com esse nextflow log encontrar, essa aqui é a provenância que a gente fala encontrar todos os arquivos de um pipeline de uma execução de um pipeline eu posso utilizar o resume também por runname então falou, esse aqui é o script set mas eu quero retomar esse runname com esses parâmetros tais aqui do comando que eu dei certo? com doc, o que for você pode passar o nome da sessão por resume aqui foi o que eu falei mostra os arquivos em si você pode também fazer um filtro de algumas informações sobre a execução então aqui eu poderia copiar isso aqui e passar o tizis tizisle aqui, em biblioteli format e pra mostrar o nome do processo o valor saída, o status saída a hash da tarefa e a duração pra todas as tarefas desse pipeline de um cara 9 aqui são três de quantificação três e faz que ia ser um de index 3, 6, 8 na verdade 8 então aqui eu tenho o nome de cada processo da tarefa, o status é zero é como acontece com o sucesso toda se tiver um sucesso, aqui a pasta tem a duração de 8 segundos, menos de 1 segundo 3,6 segundos, certo? ah, Marcel, como é que eu sei a lista e todas essas palavrinhas, né? você pode utilizar o log-l ele vai dar o nome de todos os valores que você pode filtrar pra cada hora essas tarefas, certo? você também pode utilizar um critério de filtro eu quero apenas os processos que o nome tem faz que o si então eu vou colocar aqui maiusco, né? aqui está o maiusco lá e é o tz o isli, né? tz, isla beleza, são três que a gente tinha visto que tinham faz que o si você pode ter esse critério de filtro também você não pode passar o "-t para a opressão template, então aqui eu crio um arquivo html esse aqui é html, certo? o nome, esse aqui tá eu vou utilizar as palavrinhas que a gente conhece e eu simplesmente executo com esse "-t passando esse template aqui e ele vai gerar uma página html nesse formato que eu fiz aqui no layout que eu fiz design, se eu entender html de javascript, eu faço um negócio bem legal e ele vai substituir esses placeholders essas variáveis pelo seus valores o nome do pipeline script, enfim, assim por diante, certo? Marcel, eu estou usando o resume não tá funcionando, ele não tá retomando de onde parou então aqui é uma acessãozinha pra gente libertar algumas estratégias de resolver problemas de que entrança primeiro que tem esses três esportes de blog aqui no blog do nextflow que são muito importante se você quiser realmente entender como isso funciona o primeiro ele explica bem direitinho quais informações são utilizadas para encontrar a hash, certo? valores de input, arquivos de input o bloco de linha de comando o id do container, o ambiente do conda, os modos do ambiente inscritos para ser executados ele é tudo isso em consideração para gerar o hash então qualquer mudança desse tipo de coisa vai mudar o hash, vai falhar a reentrança, certo? além disso os outros dois blogs eles ensinam como você realmente entender fazer esse troubleshoot que a gente vai ver agora alguns problemas comuns que levam a um resume não funcionar então vale a pena ler esses blogs situações que podem fazer a retomada resume falhar ou se de algum modo altera um arquivo de entrada você não deve ter um arquivo de entrada porque sabe que tem tarefas que vão passando alimentares com eles se você alterar, você pode ter tarefas funcionando de forma diferente e além do que, na hora que você isso já é errado porque vai dar errado no ano da análise, né? mas ainda assim tem um problema do hash que vai mudar o hash da tarefa e a tarefa não vai ser retomada vai ser recupitada do zero e aqui é a mesma coisa quando um processo modifica um arquivo de entrada ou um valor de entrada tem a mesma coisa alguns sistemas de arquivos que é um modo como o sistema operacional enxerga os dados no seu disco eles tem algumas imunitações de marcações de modificação de tempo de modificação e esse tipo de coisa se você alterar um arquivo mude o horário de modificação e o nextflow vai ter dificuldade em retomar isso aí então tem um modo de você prevenir isso se você pôde clicar aqui vai mostrar uma opção de uma diretiva de cache que vai usar o leniente e aí ele não vai levar em consideração acho que a hora de marcação e esse tipo de coisa um outro detalhe que eu queria falar foi o que eu lembrei agora que a gente falou brevemente no dia de ontem, se não me engano com uma variável no nextflow apenas dizendo nome igual a Marcel ou colocar o def nome igual a Marcel a gente viu que quando eu fiz o def a variável é local dos cor e quando não utiliza nada ela é global o problema de variáveis globais é que se eu tiver duas funções trabalhando aqui com a variável com o mesmo nome e elas sejam globais eles têm um retrado inesperado isso é o que a gente chama de de condição de corrida quando tem uma variável e duas funções querem modificá-lo e se ainda vai em consideração que um vai estar modificando o outro então esse é um exemplo do erro que vai dar porque eu tenho um map trabalhando nesse x no canal aqui e ele vai alterar os valores porque é uma variável global e esse local para cá um outro questão que é problemática é o que a gente chama de canais de entrada não determinísticos esse é um problema porque vocês viram logo no começo que a gente falou de canais e eu falei que a gente queria falar mais sobre isso mais na frente que foi até a introdução na verdade quando tem o hello world as vezes ele vem hello world e as vezes ele vem world hello porque a gente viu que nos canais no Dataflow há uma garantia de que os elementos do canal eles são lidos na ordem que são inscritos então eu coloquei o arquivo x depois o arquivo y, depois o arquivo z você tem a garantia que a primeira tarefa executada, instanciada do processo ela vai ser com arquivo x e depois com y e depois com z então a garantia de que os elementos serão lidos consumidos na ordem que eles foram inseridos no canal só que tem um problema imagine que o meu produto vai contar até um número que tem no canal você tem um elemento 10 e vai contar de 1 até 10 que tem 1 até 1000 então imagine que eu coloco no meu canal um milhão 500 por mais que o processo de 1 milhão comece primeiro, ele vai demorar muito para contar até 1 milhão enquanto o segundo processo que ele comece até 5 ele começa depois e vai terminar primeiro e na hora que ele terminar esse elemento de resultar no processo ele vai ser adicionado ao canal de saída do processo isso significa que embora a ordem em que os elementos são consumidos é igual a ordem que eles foram inseridos no canal a ordem que eles são inscritos no canal de saída é igual ao mesmo porque graças a paralelização dessas tarefas algumas tarefas podem terminar mais cedo do que outros e começaram primeiro que elas e isso é meio que aleatória em alguns casos vamos abrir aqui um exemplo com a TNF vamos colocar esse código aqui e executar esse pipeline então aqui basicamente ele vai dormir por alguns segundos então 1, 2B, 3C, 4D beleza, a ordem que foi colocada aqui é a ordem que no final até foi inscrito no canal de saída vamos voltar de novo aqui é interessante porque o que o comando faz é mandar a tarefa dormir por um número aleatório de segundos por isso que vai conseguir ter essa nem sempre respeitando a ordem aqui DCBA então a ordem que está no canal é a ordem que as tarefas são iniciadas ao que o A é sempre 1 você pensa que é o Task Index é justamente isso, elas são iniciadas na ordem que estão no canal mas elas podem terminar mais cedo e terminando mais cedo já são adicionadas ao canal de saída daquele processo então como não tem essa essa garantia você pode acabar alterando algumas coisas do seu processo e quebrando o teu cache então tem alguns modos de você trabalhar a gente tem uma de canais de entrada no determinístico mas você está falando de canal de saída entenda, a saída ela tem esse problema que a gente está mostrando mas ela vai ser entrada para o próximo processo então se o próximo processo está esperando algo que vai demorar na determinística vai ter esse problema às vezes eu posso ter dois processos trabalhando, gerando duas coisas eu tenho uma amostra eu tenho uma amostra, eu vou fazer uma coisa com ela um programa, um outro programa eu vou dar essas duas para o próximo processo se esse processo está esperando que o primeiro elemento do canal de saída seja a saída do programa A para a amostra 1 e a saída do programa B para a amostra 1 eu posso ter um problema porque eu posso ser que tenha um e dois dois e um por causa dessa dificuldade manter essa ordem na saída então para isso tem algumas estratégias uma estratégia é utilizar um de mapa a metra quando a gente coloca uma tupla esse aqui é a amostra 1 e aí eu utilizo o que esse aqui é para simular um processo na saída deu isso aqui dois elementos que são tuples, a amostra 1 para a amostra 2 e tal esse aqui é um banco eu chamei e um outro processo gerou esse BAI antes de eu passar isso para o processo ser eu vou fazer o join que é um operador que a gente viu, operadores ele junta se você não fala nada ele diz que as cabe ao primeiro elemento que aqui no caso é o nosso mapa então ele vai juntar o que é a amostra 1 esses dois arquivos são a amostra 1 que é o BAI e o BAN e esses dois arquivos a amostra 2.BAI e a amostra 2.BAN são a amostra 2 e aí eu passo o processo ser e independente da ordem o processo irá receber como um elemento tudo que é de amostra 1 tudo que é de amostra 2 e assim por diante consegui lidar com esses canais esses canais e os elementos a ordem não era terminística um outro modo é utilizar uma derivativa de processo chamada FAIR que ele implementa um conceito quanto a FAIR threading que é você falar para o sistema operacional para ele garantir que todas as tarefas terão a mesma quantidade de recursos mas se não é sempre assim, não é em vários casos o sistema operacional vai tomar decisões para fazer o mais optimizado possível e com isso, ele quebra essa ordem então o FAIR garante essa distribuição honesta justa de recursos para as tarefas mas é um custo que todas vão terminar em ordem porque a que começou primeiro vai tentar igual a segunda e vai ter reto primeiro mas aí a otimização não vai ser tão ideal o seu papel é poder demorar um pouco mais então essa é uma estratégia que funciona mas você tem uma queda de performance não é muito indicado a pergunta você só quer falar porque depois dela tem um tower ainda é de tratar muito de erros e resolução de problemas a minha beleza estamos chegando ao fim do treinamento pessoal então aqui, quando acontece um erro ele pode até abrir o nosso exemplo aqui e colocar um comando que não existe que me asdeado, beleza quando eu rodar aqui, ele vai dar um erro igual ao que a gente estava vendo ali no material treinamento aqui ele vai ser bem óbvio eu que vai falar que esse comando não existe certo? ele falou, esse asdeado e asdeado esse comando não foi encontrado então ele vai fazer a gente bater o olho aqui e corre e ver qual o plano resolve vamos voltar aqui para o material treinamento lembrando que quando tem esses mais você pode clicar para ter mais informações então pela coisa que ele fala aqui a descrição da causa do erro ele foi terminado com uma série de EOS 27 que a gente sabe que é de comando não encontrado ele mostra o comando executado Marcelo, eu sei que comando é isso qual o interesse disso? lembre-se que comando executado não é optar no teu script porque você pode ter várias variáveis no teu bloco de script do teu pipeline, do processo e só depois a conexão vai substituir aquilo ali com os valores de fato então aqui a gente consegue ver que o next one substituiu o cipram, test.cpu com isso pode ser comandos muito mais complexos com várias instituições eu posso ter blocos condicionais se for assim esse bloco de script outra coisa que a gente viu sobre isso também então esse bloco de comando executado é importante porque nem sempre é tão óbvio o que foi executado e às vezes não é o que a gente pensava então a interesse da uma olhada também nesse bloco aqui o comando status, às vezes você pode colocar no google ali meu serro de comando tal ele vai dizer o que é, nesse caso aqui é o de comando não encontrado a saída, não teve nem um saída porque no nosso caso o comando falhou e ele dá aqui exatamente o mesmo de comando que foi reportado pelo samba para o sinal que é Samo comando não encontrado aqui a gente estava com com várias escasas que a gente encontrou com a gente porque a gente não colocava o weak docker ou o docker.nable true ele não encontrava o Samo, dá ver se ele ele mostra inclusive a pasta da tarefa que deu erro aqui também viu isso a pasta específica eu posso entrar aqui e dar um cat comando o ssh mostrar o az e az e az que foi porque é digitado e não existe deu aquele erro vale a pena prestar atenção todas essas áreas do output de erro quando você vai pilar em falha a gente já viu também que dentro da pasta da tarefa, em cada tarefa tem vários arquivos, certo, ocultos por isso tem um ponto na frente e alímos que o comando, o ponto comando o ponto ssh, ele tem um script de tweets e tudo mais o ponto comando e ponto raw não olha muito porque ele é um comando gigante é um script gigantesco que o nextflow cria com várias configurações quando é com docker então quando for com docker por exemplo você vai ver que ele vai ter aqui justamente como ele falou que cria com docker o nextflow.config está com docker enable true ele diz que toda linha do docker com a CPU, os volumes com a imagem que vai ser utilizada a imagem que vai ser utilizada qual é o terminal o direitinho o ponto comando e ponto out ele geralmente tem a saída que tipo se o programa teve uma saída vai aparecer aqui o log, ele tem não só isso, tem todos aqui todas as informações de log o ponto rr, ele tem o erro da tarefa, o script, certo que for aliás, o perdão a informação de erro que a gente viu eu vou ter agora analisando aqui em cima eu posso dar aqui um que o safário vai querer reiniciar aqui ou não é, o safário reinicionava aqui são seguninho pessoal como é o mesmo IDE ele vai para o ponto node ele não parou eu posso dar o ponto comando ponto rr aqui assim, esse de fato é o comando é o erro do seu operacional comando not found vou ver o que mais aqui tinha tem o begin ele começou as vezes ele nem começa tem um erro muito antes disso então checar se esse arquivo existe é interessante para ver se é de fato para a client igual começar tem o exit code, que é o 127 que é o comando not found vale a pena investigar esses arquivos quando você tem um problema com pipeline Marcel, eu tenho vários vários processos, pipeline, vários etapas tudo mais, algumas as vezes elas falham e é normal as vezes ela vai dar erro e beleza eu notei que toda vez que uma tarefa falha no nextflow ele mata o pipeline ele para aí mesmo e eu não quero isso essa é a ideia de estratégia de erro que a gente fala a estratégia de erro padrão se você não colocar nada, é o ritmo de terminate o que é o terminate mais uma vez vocês podem ir na descrição oficial do nextflow e vai ter lá tudo explicando o terminate é pari agora em merda muito mais de tudo pari uma outra é o finish que é, não você tem uma tarefa, termina o que tem a execução e aí pari tem o retry que é, tem que novamente se abrir a falhar e tem ignore que é a mesma, falhou essa tarefa ignore e vai para o próximo certo? ele vai dar um aviso se você colocar isso então se eu colocar esse por exemplo aqui mas se eu mandar erro, ele vai terminar o pipeline ele vai falar, mas tem um aviso, esse tarefa falhou beleza, se mandar ignorar eu vou ignorar certo? você pode colocar para todos os processos e você tem que ignorar então como sempre mas se é um pouco de trabalho de fazer manual isso de um erro eu tenho que recomeçar eu queria um gil de ram, episódio 2 porque 2 era 3 da verdade o trabalho manual fica atentando demora para começar na nuvem, demora para o cluster liberar o recurso do meu trabalho não tem que automatizar isso? tem a gente medir tolerância e a falhas automáticas a tolerância automática e a falhas fica melhor então eu coloco que essa tarefa de erro tendo novamente por padrão o max retry é uma deletiva de processos para um então ele vai tentar uma vez e se ele assim falhar aí ele para geralmente a gente não quer só isso a gente espera alguns segundos para tendo novamente a gente quer esse próximo exemplo aqui com atraso ele fala eu quero no máximo sim tentativas de repetição se der um erro e qual é a estratégia de erro ela vai ser o número da determinativa o número da tentativa é a primeira tentativa é a segunda, terceira esse téssico da temp, ele traz se é 1, 2, 3, o que for ele vai pegar 2 elevado a número de tentativa vai multiplicar para o 200 e vai esperar essa quantidade em milisimumos certo? e quando isso acontecer ele vai dizer que é retry então teve um erro o next one vai chegar tenta novamente então a gente fala que é resrecução com atraso que às vezes é só esperar um pouquinho e você consegue executar novamente que funciona, então aqui eu falo no máximo 5 tentativas, estamos a estar 6 vezes 1, aí deu erro segunda, terceira, quarta, quinta falhou, beleza, aí para outra coisa legal é a alocação dinâmica de recursos a alocação dinâmica de recursos são segundinho beleza, a alocação dinâmica de recursos como funciona, então na real eu falo agora que a gente já sabe que o téssico atente ele tem um número da tentativa eu falo eu quero 2 de vídeo RAM para esse processo 2 de vídeo RAM se der um problema, o que vai acontecer? cheque essa terra de erro se o ébisete de status, se for 140 tempamente se não for esse erro termine isso aqui é uma estrutura ternária que a gente viu no dia do Groove lá a creação de introdução do Groove explica essa expressão condicional então, tenta novamente uma tentativa 2 GB de RAM é a segunda tentativa 4 GB de RAM é a terceira tentativa vai ser 3 GB de RAM e assim por diante hora, uma tentativa 1 hora é a segunda, duas horas então você permite pedir o mínimo de recursos necessário se você pede mais e você vai cálculo ao lançamento aumentando isso para não gastar dinheiro ou pedir recursos que é uma desnecessária para o cluster para quem ainda mais ou menos não tem muito de cluster se você pedir muito de recursos para o cluster pode dizer que você nunca tem a decisão para utilizar porque ele sempre vai dar prioridade para quem está pedindo menos recursos então é uma boa conduta sempre pedir o mínimo possível de recursos isso por algum acaso por pouco e falhar aí você pede mais um pouquinho e assim vai até adequar uma tentativa 3 o que significa o que? 4 GB de RAM 4 GB de RAM 2 GB de RAM para, não vai tentar novamente e assim chegamos ao fim da nossa sessão nossa sessão de resolução de problemas vamos agora para o tower então a gente chegou a mencionar também em alguns momentos o nextflow tower como serviço, ele é um site que é o tower.nf ele, eu gosto muito desse nome tower, ele é de fato uma torre de comando ele tanto serve para você monitorar o seu pipeline de execução mas para dar comandos também de direcionamento bem interessante você não precisa do tower para o nextflow mas quando você usa o nextflow começar a ficar de fato real vai para mais complexo, executando um paralelo colaborador e trabalhando junto o tower se torna fundamental ele tem uma versão gratuita você pode ver aqui em price, ele tem uma versão gratuita que tem vários recursos e para muita gente é mais do que necessário mas se você tiver uma empresa um projeto maior, com um desenho de colaboradores tudo mais, vale a pena começar a levar em consideração as versões pagas mas a versão gratuita geralmente supre boa parte das demandas então os principais recursos do tower é você poder ter pipeline de pré-configurados nele você não tem que ser para decorrer do zero você pode criar a sua organização colocar os pipelines lá pré-configurados e apenas com o click as pessoas da sua organização elas podem lançar as pipelines ele tem vários recursos que facilitam que você tenha a sua organização com perfis usuários com permissões diferentes com pipeline assinhaçado com acesso a ambientes de computação na nuvem você tem local que for com permissões diferentes você consegue ter muitos recursos para uma organização que trabalha com análise de dados, certo? e esse gerenciamento da infraestrutura que ele faz é fundamental ele facilita muito você gerenciar e configurar esses ambientes na nuvem principalmente então o meu ponto é você ir no site do tower e criar uma conta ou se registrar eu vou logar aqui com minha conta do não, eu vou logar com a conta do da própria sequeira então eu vou entrar aqui logar com a minha sequeira beleza e entrando aqui eu já tenho no meu perfil que não é miberdantas alguns pipelines que eu adicionei eu adicionei esses são pipelines pré-configurados que o Marcelo pode utilizar mas eu poderia também ter aqui eu criei uma organização de exemplo exemplo org eu poderia aqui ter as minhas coisas mas vamos lá a primeira coisa é que você pode ir para a lei do comando executar os pipelines do tower após acrescentando um traço um traço tower mas como é que ele sabe quem é você o meu ponto é que você tem que criar o teu token então eu vou vir aqui clicar em your tokens e eu vou criar um novo token eu vou colocar aqui treinamento NFCore eu vou mostrar para vocês aqui mas eu vou apagar isso do treinamento então eu vou copiar isso aqui e eu tenho que salvar o meu ambiente para o que você pode saber quem sou eu para o tower então você vai vir com o teu ambiente e vai colocar o export tower access token igual o meu token nada que eu fizer isso e rodar um pipeline qualquer ele vai saber qual é a conta do tower que ele vai colocar eu vou colocar também o tower workspace ID eu vou voltar aqui na minha organização na minha organização e aqui tem um ID do meu workspace eu vou voltar lá colocar o export tower workspace ID igual na hora que eu fizer isso aqui meu workspace eu posso clicar nele aqui para entrar não tem nada aqui dentro não tem nenhum pipeline não tem nenhuma run mas eu vou voltar aqui e eu vou executar o hello que é o pipeline em comum que a gente viu que ele vai rodar aqui localmente e vai aparecer o tower é só aqui na nossa maclogit pode ele vai baixar o pipeline executar vai parecer hello oral de idiomas beleza, vamos ver aqui show de bola e aqui realmente não tem nada aqui dentro beleza agora vou fazer diferente, vou executar with tower lembrando mais uma vez um tracinho o pipeline é parâmetro do nextflow na hora que eu rodar esse with tower ele vai rodar com o tower ele vai contar rodando local mas ele vai compartilhar com o tower informações sobre o pipeline em execução apareceu aqui um nome que é o pensive pensive chandras beleza o git poda terminou com o sucesso porque o pipeline é muito rápido eu posso clicar aqui e vai ter foram quatro tarefas, elas foram bem sucedidas ele fala o hello world em quatro palavras cada uma é uma tarefa eu posso ver os parâmetros que não são muito comparação aqui muito básica data 7101 teve um relatório algumas informações da onde foi beleza o nome do usuário foi local, a versão nextflow beleza, três segundos não tem muita informação porque é um pipeline um cicles, o hello agora vou fazer diferente agora vou botar o nosso script set vou botar por runs aqui lembrando que em launch pair de sex ele não vai entrar configurado porque eu não adicionei em 1 não runs eu vou botar aqui de novo o normal no script set para a subwhip trastower fazendo isso, ele tem meu workspace ele tem minha chave token vai aparecer aqui na minha list de runs e como eu coloquei o workspace vai ser aqui, lembre que eu tenho aqui várias workspaces, várias organizações a própria básica do mrm vai ser aqui, várias pipelines vários runs se tem que ser realizada no workspace vou atualizar aqui ele está executando ainda está executando tem um rodando, eu demorei um pouco para mostrar, no começo eles ficam como submetidos quando a trajeira começa a executar ela vai para executando, opende o que for e aí de fato é com sucesso já foi um pipeline com sucesso agorou mais segundos, demorou um pouquinho mais demorou 23 segundos aqui de script, boa coisa já foi um número maior de tarefas, mas ele é sempre um pouco ainda que tenha sido com guantelou e langue, mas aqui eu já consigo ver o uso de cpu acho que ele fica melhor para mostrar um exemplo real de fato posso vir aqui as testes que eu falei que a amazon é uma patrocina para a gente vou vir aqui em runs e vou ver o do harnessik pronto sempre que a versão nova automaticamente a gente tem esse teste feito esse harnessik, o teste dele o perfil de teste foram 197 tarefas ele fala que foi da amazon a ws batch legal também local aqui esse nosso ele falou que era local ele fala qual foi o aumento de computação foi esse específico da amazon demorou 15 minutos esses são os processos eu posso pegar detalhes dos processos esse processo específico esse foi o nome dele esse é o comando esse foi o status, o número de alternativas o work directly foi um bug do s3 quando foi submetido quando começou, quando completou a duração qual foi o container que essa tarefa utilizou qual foi a fila na ws batch número de cpu vários detalhes aqui essa tarefa, quantos kb essa tarefa leu quantos porcentagens de cpu foi utilizado por esse processo então tem muitos detalhes e esse vai vendo aqui esse gráfico de boxplot eu consigo ver por processo o quanto ele utilizou de cpu ou de porcentagem de cpu um mediano aqui, primeiro quartio a gente partiu o que foi aqui eu tenho memória RAM aqui eu tenho duração então o alinhamento é o processo que demora mais tempo nesse processo, com star eu tenho aqui a comandada de dados que foram leads o trungalore, ele é quem mais leu em comparação com os outros processos e para a escrita também foi quem mais escreveu mas logo depois tem o bbmap o bbsplit aqui enfim vários detalhes sobre a execução do pipeline, certo? tem uma estimativa de custo aqui não foi nenhum centavo uma estimativa de custo quanto foi escrito enfim, aí tem os parâmetros aqui vários parâmetros, um pipeline real com vários parâmetros, configuração resolvido então vários aqui, várias formas de configuração para a pipeline os dados que foram utilizados aqui em si que é um recurso do power para você gerenciar certo? ele não utilizou um log de execução, até em termos de relatório também tem um pipeline muito legal esse table de fission que eu fiz no runetree, ele demora um pouquinho não vou rodar aqui de novo mas aqui foi o que eu rodei basicamente você dá uma expressão e ele te dá uma imagem foi o que eu falei, eu coloquei uma foto de estudantes assistindo uma paleta sobre nextflow e aí a saída, ele vai gerar imagens né? vou esperar um pouquinho para ver enfim, ele gera imagens com vários strings então, mais uma vez é uma computação um computador que está aqui configurado mas você pode falar, Marcel onde que você executa isso? o do gate pod vocês viram, por exemplo, será que como sempre a única diferença é que eu coloquei o vital para monitorar aqui e ter vários detalhes e ficar mais senado aqui ainda que o gate pod exploda, eu tenho aqui todos os detalhes executando o pipeline com as configurações, parâmetros tudo eu posso favoritar aqui eu posso deletar, posso colocar um label e assim por diante, só que às vezes não, às vezes você não quer nem na sua máquina de setar nem aqui, seja que seja na nuvem, por exemplo então você pode configurar os ambientes de computação então eu criei aqui no computer environments tem um a Google Cloud, ela dá credit para a gente utilizar certo, acham 300 os dólares para brincar com Google Cloud então fui e configurei um ambiente, então você basicamente baixa um JSON de credenciais deles, adicionar a forma, pode ser Azure Batch, Amazon Batch Google Cloud, Google Science aqui os clusters, tem várias tecnologias diferentes eu coloquei o Google Cloud Batch adicionei o Google Cloud Batch, que ele está em beta adicionei os credenciais eu posso colocar onde eu quero que meu dedo do trabalho seja, pode ser em Bunket do Google Cloud Storage eu quero uma máquina de spot, que é uma máquina mais barata pode ser client de volta, e todos os opções aqui e aí eu salvo esse ambiente de computação fazendo isso, eu posso subir no meu launch pad escolher um pipeline, que eu queira eu quero esse aqui, o NF Whisper e quando eu adiciono ele, eu já posso adicionar com um ambiente de computação dizendo que eu quero que ele rode lá eu posso ir aqui em monte, e já está configurado mas não, eu quero hoje em outro computador eu quero rodar no cluster de infinção eu quero rodar no AWS Batch você pode rodar onde você quiser você escolhe qual é a computação aqui qual os arquivos você quer e você coloca as configurações e no final clique em monte então mostrando que eu tenho aqui a lista de runs execuções, tem um vários ao longo do tempo algumas por erro, outras não tem essas ações que você pode utilizar API do Tower que é o que fala um pouquinho aqui embaixo para utilizar alguns gatinhos eu quero que eu quero que sempre que chegar um arquivo novo numa empresa, ele lança um pipeline eu quero tal dia e tal hora, ele começa um pipeline então são o que a gente mande, Tower Action são ações automatizadas para executar pipeline, certo? ele pode dar para ir aqui os computadores em forma que já viram que é ter essas amigas de computação configurados aqui, para facilmente utilizar eles com pipeline e aqui alguns set de labels então, um exemplo de adicionar aqui eu poderia eu não tenho aqui, pronto, eu não tenho o pipeline do nextflow e Rdcknf, eu vou adicionar ele então eu pego basicamente o link do link hub que eu coloco aqui coloco em ad pipeline eu coloco um nome, parece que eu parei sig pipeline do nextflow eu acho que tem que ter, ele colocou o underscore aqui, eu coloco a descrição qualquer eu escolho o que é o ambiente que eu quero eu coloco esse, e aqui eu coloco a une do it hub eu posso criar uma revisão específica eu coloco aqui master mesmo ele já carrega aqui todas, eu quero um master o work directory, eu coloquei esse endereço aqui que ele é um bucket do Google Cloud Storage eu posso ter parâmetros de configuração de perfis, que vocês virem como a gente faz o extension mais, aqui ele já tem alguns eu posso vir aqui ver no nextflow.config que ele tem aqui o profile, todos esses profiles ele já é carregado aqui certo, para me escolher ah, eu quero, alguns parâmetros que eu posso colocar tem opções e tal, e vou ver, fazendo isso ele já vai aparecer com pipeline pré-configurado do meu launchpad e aí é só aplicando em launch colar os arquivos e ele vai executar esse pipeline, certo? por algum razão, eu acho como é velho essa execução aqui ele apagou os arquivos deixa eu ver esse aqui então aqui foi o que foi o parâmetro uma foda de Barack Obama usando uma gravata roboleta ah, está aqui, pronto ele gera uma IA que vai gerar essa imagem, então aqui um quad de agree de grade grow você consegue que os arquivos saibam os arquivos ah, o que que pipeline é esse? é o que é o CEO dessa queira de fusion, e F acho que é assim é assim, vamos como é que é o nome desse pipeline que é um arquivo que você compra do EM para colocar os relatórios assim assim assado o arquivo de configuração, basicamente é só uma imagem que ele criou do Docker e dizer que vai utilizar o Docker e aí vai ter todos os inscritos assim para ver o que vocês viram e na verdade se você vai ter um launchpad isso não é disso aqui aqui como ele colocou na AWS no meu caso era da Google porque eu estava utilizando Google tem credenciais tem uma coisa aqui e dá para fazer, certo? aqui várias aplastoclas que eu adicionei tem mais alguma coisa o community ele tem quando você crie uma conta no tal é ele tem para alguns pipelines específicos eles tem uma beda de computação gratuito para você, então você pode utilizar o teu launchpad, todas as pipelines aqui no modo de test e você não vai pagar a sequela está financiando para você brincar e entender um pouco como funciona o que vai acontecer, certo? e é isso pessoal acho que o tal é a ideia porque eu falei participantes da sua organização certo? aqui no caso do showcase tem bastante gente o complete environments tem o da sequela tem alguns das sets você vai ver como funciona basicamente ele vai ter um sample sheet que a gente fala que ele tem o ID e onde estão armazenadas aqui no caso são buckets da S3 então você consegue, na hora que tem cadastrados, quando você for rodar um pipeline você consegue utilizar eu tive aqui um exemplo o Arneic pode filtrar aqui Arneic eu quero lançar esse cara aqui e lançar ele o input já tem aqui de teste não precisa me preocupar com isso e aí você consegue dar um launch e ele vai executar para você então isso aqui passa tudo no site como tem um ambiente de computação configurado que é na Amazon eu faço tudo pelo site do tower e ele vai rodar lá isso poderia ser o clã da minha instituição minha contra Google Cloud você controla a cura aqui por isso que eu vou ter um torre de comando ele monitora mais minha impolidade comandos vou clicar aqui no meu pipeline e vou ter vários informações como ele está começando ele está se preparando para o atual para ele começar a submeter isso então pessoal é isso chegamos ao fim esse treinamento mais um treinamento que a gente tem teve último outubro esse agora ele cobriu mais coisas teve mais tempo também foram 4 dias já vi alguns feedbacks no próprio slack do NFCore de que foi um pouco rápido eu concordo que realmente o que a gente tem que fazer é fazer isso porque você pode pausar tornar o vídeo novo ouvir o outro dia voltar em ordem diferente eu acho que é fenomenal deixar gravar para vocês vocês conseguem mudar o ritmo lembrando que embora os canais e dúvidas serão fechadas arquivadas a próxima semana o slack continuará para sempre que vocês ficarem dúvidas o canal region traço latino e troço america você pode perguntar lá em português e em espanhol certo? e se quiser perguntar em inglês tem um help lá lembrando que tem o slack a gente sempre está falando do slack do NFCore você pode vir aqui no NFCore About John NFCore e clicar aqui em slack para entrar mas também tem o slack do next low que é onde o fato de perguntar sobre o next low deve ser perguntadas o slack do NFCore é a mais uma pergunta sobre o NFCore se você tem alguma pergunta sobre o next low você vem em community e clica aqui em slack community chat e ele vai dar o link para você entrar no slack fazer as perguntas lá então eu agradeço a passação de todos vocês espero que tenham gostado espero que comece a utilizar o next low eu acho que se eu soubesse, eu conheço o next low durante a minha mestrada eu terei me beneficiado muito eu acho que ele ajuda muito dia a dia do cientista ou donalista e profissionalmente permite que você clica em 5 lines, muito poderosos, replicáveis, reproduzíveis então espero que vocês continuem utilizando qualquer dúvida toda disposição, não só eu mas todos os voluntários da comunidade do next low e do NFCore pergunte no slack e eu gostaria de aproveitar a sua oportunidade também para lembrar que eu trabalho na Sequeira Labs que é a empresa por trás do next low na Sequeira, para a América Latina e Caribe então vocês vão organizar algum evento aqui na região da América Latina e Caribe sobre o next low, sobre NFCore, sobre análise de dados sobre pipeline, sobre repróximilidade e científica toda disposição me chamem para conversar para passar uma mesa redonda, dar uma palestra dar um curso no treinamento do next low no meu grupo eu vou começar a utilizar o next low porque a gente tá perdido, tem como você conversar com a gente dar um direcionamento, nos ajudar toda disposição então qualquer assunto sobre next low e NFCore pipeline também que vai ser um prazer conversar com vocês então é isso pessoal chegamos ao fim do nosso treinamento mais uma vez eu agradeço a prensa de todos a atenção, espero que tenham gostado e até a próxima, tchau tchau