# [Minicurso 2025] 03. Pré-Processamento ###### tags: `Minicurso25` ![](https://i.imgur.com/504oC8W.png =500x) [TOC] ## 1. Procedimentos iniciais - Recapitulando: :::warning ***CASO TENHA DEIXADO DE COPIAR OS ARQUIVOS DO PROJETO, EXECUTE:*** ```bash= cd ~/ rm -rf ~/projeto/ mkdir -p ~/projeto/{dados,info,analises,scripts} mkdir -p ~/projeto/analises/{atropos,dada2,fastp,fastqc,flash,usearch/{findadapt,meanee,trimsize}} ln -s /srv/cibioinfo/projeto/data/*.fastq ~/projeto/dados/ cp /srv/cibioinfo/projeto/info/* ~/projeto/info/ cp /srv/cibioinfo/projeto/scripts/*sh ~/projeto/scripts/ ``` ::: ### 1.1. Cheque a estrutura de diretório e dados - Dentro do diretório `projeto`, utilize o comando `tree -d` verifique se sua estrutura de diretórios corresponde a figura abaixo: ```bash= # Entrando no diretório do projeto cd ~/projeto/ # Checando a estrutura de diretórios tree -d ``` ![](https://i.imgur.com/dJgp6EW.png) - Faça o mesmo para checar os arquivos, sem o parâmetro `-d` ```bash= # Checando presença dos arquivos tree ``` - Agora, vamos abrir um novo screen nomeado com o comando abaixo: ```bash= screen -S preproc ``` - Note que você pode não estar no diretório do projeto, siga para lá com o comando: `cd ~/projeto/` ## 2. Pré-processamento **Objetivos:** - Checagem inicial dos dados; - Melhorar a qualidade dos dados brutos; - Padronização dos dados (qualidade, tamanho, formato, etc...); - Remoção de adaptadores e sequências pequenas e/ou de baixa qualidade. - Fusão de bibliotecas do tipo *paired-end* - **Dados de boa qualidade darão respostas mais precisas e corretas! (Qualidade >>> Quantidade)** - Não faz milagres! *Garbage in, garbage out.* **Entrada:** - Dados brutos (Pós-sequenciamento); - Podem estar ou não demultiplexados (Aqui estão!); - Podem conter ou não adaptadores de sequenciamento (Aqui parcialmente). **Saída:** - Dados filtrados, fundidos e prontos para serem explorados; - Dados capazes de fornecerem a ***resposta biológica*** sem interferência de erros. **Esquema do pré-processamento:** ![](https://i.imgur.com/8s4efxY.png) ### 2.1. Avaliação inicial dos dados **Introdução** - Nessa primeira etapa, realizaremos uma inspeção inicial dos dados brutos através da ferramenta **FastQC** ([Site](https://www.bioinformatics.babraham.ac.uk/projects/fastqc/)); - Esse programa de propósito geral, é comumente utilizado para avaliar a qualidade de dados gerados em processos de sequenciamento de alto-rendimento; - Embora não seja voltado especificamente à análise de dados metagenomicos (certas propriedades podem não fazer sentido aqui), algumas informações providas pelo **FastQC** são importantes para tomadas de decisão relacionadas ao pré-processamento dos dados. - Através da linha de comandos temos duas possíveis opções de execução deste programa: Em sua forma gráfica (*GUI - Graphic User Interface*) ou através relatórios produzidos por comandos (*CLI - Command-Line Interface*). Executaremos ambos durante esse pipeline. >- **Programa:** FastQC (v.0.11.9) >- **Entrada:** Arquivos de sequências no formato `fastq` (fasta + qualidades) >- **Saída:** Relatório completo, contendo distribuição de qualidades, tamanhos e presença de adaptadores. **Execução 1 (GUI)** - Para a execução inicial, vamos executar o **FastQC** em sua forma GUI. Para isso, execute o seguinte comando: ```bash= fastqc ``` - Note a abertura de uma janela gráfica. Clique em `File` e então em `Open...`. Navegue até a pasta dos dados (`~/projeto/dados`) e selecione um par de bibliotecas (`xxx_R1.fastq` e `xxx_R2.fastq`). Ps: Segure a tecla `shift` e clique para selecionar mais de uma biblioteca. - Ao carregar, nos depararemos com a seguinte tela: ![](https://i.imgur.com/LKEHlzk.png) - Na aba *"Basic Statistics"* temos duas informações importantes: A quantidade de sequências (*Total sequences*) e a distribuição de tamanho destas (*Sequence length*). Note que ambas as bibliotecas; - A próxima aba de interesse é a *"Per base sequence quality"*. Aqui temos a distribuição de qualidades dentro de nossa biblioteca de sequências. Note a diferença de qualidade da biblioteca R1 e R2; ![](https://i.imgur.com/pXfNDEn.png) - *"Per sequence quality scores"* também demonstra a qualidade média das bases; - Outra informação importante é a distribuição dos tamanhos das sequências, que pode ser observado na aba *"Sequence length distribution"*; - As abas *"Per base sequence content"*, *"Per sequence GC content"*, *"Sequence duplication levels"* e *"Overrepresented sequences"* não são aplicáveis ao nosso tipo de experimento. - Por fim, a aba *"Adapter content"* irá informar se há a presença de adaptadores Illumina resíduais em nossas sequências. **Execução 2 (CLI)** - Agora, executar o **FastQC** por meio de comandos. Isso nos permitirá salvar os relatórios em formato *html* para poderem ser acessados futuramente. - A excução básica do **FastQC** para leituras PE (paired-end), ocorre da seguinte forma: ```bash= fastqc <local_e_nome_R1> <local_e_nome_R2> --outdir <local_de_saida> ``` - Substituindo por nossas informações, teremos (rodando somente para um par): ```bash= fastqc ~/projeto/dados/MP_BS_H_1_R1.fastq ~/projeto/dados/MP_BS_H_1_R2.fastq --outdir ~/projeto/analises/fastqc/ ``` - Verifique os arquivos gerados: ```bash= ls ~/projeto/analises/fastqc ``` **Execução 3 (Script)** - Note que para executarmos para os 24 pares de bibliotecas, seriam exigidas 24 execuções diferentes. Na prática, esses números podem ser bem maiores! - Uma solução, é a utilização de **scripts** que automatizam a execução de tais funções. Os **scripts** são, basicamente, a mesma coisa que rodar individualmente, mas o fazem de forma expansível. Logo, com uma única linha de comando iremos obter os relatórios **FastQC** para todas as bibliotecas. - É necessário, no entanto, entender o funcionamento de um script. Ao passo que, alguns podem possuir tudo que é necessário dentro do código, e outros necessitam de informações como localizações dos arquivos que serão processados. - Para descobrir isso, vamos invesigar o script: `01_runFastQC_single.sh` com o comando `cat`. ```bash= # Indo até a pasta dos scripts: cd ~/projeto/scripts # Visualizando script 01_runFastQC_single.sh: cat 01_runFastQC_single.sh ``` - Nesse script, nos são solicitadas duas informações: - Pasta de entrada (onde estão os arquivos fastq) - Pasta de saída (onde serão salvos os relatórios) ![](https://i.imgur.com/r5ec4Bf.png) - Ao contrário de programas "instalados" (Localizados em pastas situadas no `$PATH`), é necessário se ater ao local de onde os scrips estão sendo executados. Portanto, o caminho das informações passadas devem ser **relativos** ao local da execução. - Logo, vamos executá-lo da seguinte forma: ```bash= # Vá até a pasta "scripts" cd ~/projeto/scripts/ # Execute o script "01_runFastQC_single.sh" ./01_runFastQC_single.sh ../dados/ ../analises/fastqc/ ``` - Note o "`./`" indicando que o script será executados na pasta atual, e os "`../`" indicando que essas pastas encontram-se à um nível anterior da nossa pasta atual. - Verifique se os arquivos foram gerados com o comando: ```bash= ls ~/projeto/analises/fastqc/ ``` ### 2.2. Relatórios USEARCH **Introdução** - O **USEARCH** ([site](https://www.drive5.com/usearch/)) contempla um conjunto de ferramentas e utilitários para análises de sequências, em especial daquelas oriundas de experimentos de metataxonômica. - Apesar de possuir um pipeline completo para o processamento desse tipo de dados, aqui, utilizaremos apenas algumas subfunções para aferição de qualidade e outras propriedades das sequências. - Mais precisamente, aferiremos: A média de erros esperados (EE) (função: `fastx_info`), a posição dos primers biológicos (função: `search_oligodb`) e distribuição de sequências por tamanho + EE (função: `fastq_eestats2`). - Da mesma forma que no **FastQC**, executaremos as funções para uma biblioteca e, posteriomente, para todas através dos scripts. #### **Função: fastx_info** >- **Programa:** USEARCH (v.11.0.667) >- **Entrada:** Arquivos de sequências no formato `fastq` (fasta + qualidades) >- **Saída:** Relatório de distribuição dos erros esperados. **Erro Esperado:** Número de bases erradas esperadas para cada sequência com base nos scores Phred (Q) ([Saiba mais](https://www.drive5.com/usearch/manual/exp_errs.html)). Quanto menor este valor, maior a qualidade da sequência. **Execução 1 (CLI)** - A execução básica consiste no seguinte comando: ```bash= usearch11 \ -fastx_info <local_e_nome_da_biblio> \ -output <local_e_nome_do_relatorio> ``` - Substituindo... ```bash= usearch11 \ -fastx_info ~/projeto/dados/MP_BS_H_1_R1.fastq \ -output ~/projeto/analises/usearch/meanee/MP_BS_H_1_R1_meanEE.txt ``` - Visualize a saída da execução. Note a qualidade média (EE mean): ```bash= cat ~/projeto/analises/usearch/meanee/MP_BS_H_1_R1_meanEE.txt ``` ![](https://i.imgur.com/VXw1OR2.png) **Execução 2 (Script)** - Assim como no script anterior (**FastQC**), precisamos ir até a pasta script, e então executar o script `02_runUSEARCH_meanee.sh` fornecendo a pasta entrada dos dados e a de saída dos relatórios. ![](https://i.imgur.com/Ch3qKJe.png) - Note que devemos informar a saída somente até a pasta `usearch`, já que o script contém os complementos para as saídas de cada função. ```bash= # Indo até a pasta "scripts" cd ~/projeto/scripts/ # Executando "02_runUSEARCH_meanee.sh" ./02_runUSEARCH_meanee.sh ../dados/ ../analises/usearch/ ``` - No fim do script, é obtido um arquivo contendo o resumo de todas as médias de EEs, de modo a facilitar a observação geral. Abra esse resumo: ```bash= cat ~/projeto/analises/usearch/meanee/meanEE.txt ``` - Observe a diferença entre os valores de leituras R1 e R2. Quais são os valores mais recorrentes nessas bibliotecas? #### **Função: search_oligodb** >- **Programa:** USEARCH (v.11.0.667) >- **Entrada:** Arquivos de sequências no formato `fastq` (fasta + qualidades) e Arquivo de sequências de primers/adaptadores. >- **Saída:** Relatório de posição dos adaptadores. **Execução 1 (CLI)** - Execução básica: ```bash= usearch11 \ -search_oligodb <local_e_nome_da_biblio> \ -db <local_e_nome_do_arq_de_adap-primers> \ -strand <direcao_de_busca> \ -userout <local_e_nome_do_relatorio> \ -userfields <campos_a_serem_exibidos> ``` - Substituindo... ```bash= usearch11 \ -search_oligodb ~/projeto/dados/MP_BS_H_1_R1.fastq \ -db ~/projeto/info/primers.fa \ -strand both \ -userout ~/projeto/analises/usearch/findadapt/MP_BS_H_1_R1_findAdapts.txt \ -userfields query+target+qstrand+diffs+tlo+thi+qlor+qhir+trowdots ``` - Visualização: ```bash= head ~/projeto/analises/usearch/findadapt/MP_BS_H_1_R1_findAdapts.txt | less -S ``` - Os campos representam: | Seq ID | Adapt ID | Direção | N. de Mismatches | Inicio Adapt | Final Adapt | Inicio Seq | Final Seq | Mismatches | | -- | -- | -- | -- | -- | -- | -- | -- | -- | ![](https://i.imgur.com/3LvDohi.png) - Lembre-se: Os primers biológicos localizam-se em regiões conservadas, com pouquissíma ou nenhuma variação. Logo, a remoção dessas áreas não ocasionará nenhum prejuízo aos processos de detecção de sequências variantes ou atribuição taxonômica. - Note que os primers não se iniciam pela primeira base da sequência, indicando que há sequências não biológicas e que **precisam** ser removidas. Isso se deve a estratégia (não-convencional) utilizada pelos autores, onde os índices que diferenciam as bibliotecas no momento do sequenciamento (barcodes), foram sintetizados em conjunto com os primers biológicos, e não obtidos separadamente por meio de kits de índices (como é feito convencionalmente). ![](https://i.imgur.com/jItfSE8.png) **Execução 2 (Script)** ```bash= # Indo até a pasta "scripts" cd ~/projeto/scripts/ # Executando "02_runUSEARCH_findadapt.sh" ./02_runUSEARCH_findadapt.sh ../dados/ ../analises/usearch/ ``` - Visualize um par de bibliotecas: ```bash= # R1 head ~/projeto/analises/usearch/findadapt/MP_BS_L_1_R1_findAdapts.txt | less -S # R2 head ~/projeto/analises/usearch/findadapt/MP_BS_L_1_R2_findAdapts.txt | less -S ``` - Notou algo curioso? :::spoiler > A sequência R1 e R2 estão em sentidos contrários ao convencional, ao passo que a R1 tem o primer iniciando 806R e a R2 no 515F. Isso implica que as sequências representam o **reverso complementar** da sequência do gene 16S rRNA. ::: #### **Função: fastq_eestats2** >- **Programa:** USEARCH (v.11.0.667) >- **Entrada:** Arquivos de sequências no formato `fastq` (fasta + qualidades). >- **Saída:** Relatório distribuição de seqs. por tamanho e qualidade. **Execução 1 (CLI)** - Execução básica: ```bash= usearch11 \ -fastq_eestats2 <local_e_nome_da_biblio> \ -output <local_e_nome_do_relatorio> \ -length_cutoffs <val_tam_ini,val_tam_fin,salto> \ -ee_cutoffs <vals_de_ee> ``` - Substituindo... ```bash= usearch11 \ -fastq_eestats2 ~/projeto/dados/MP_BS_H_1_R1.fastq \ -output ~/projeto/analises/usearch/trimsize/MP_BS_H_1_R1_trimSizes.txt \ -length_cutoffs 240,260,1 \ -ee_cutoffs 0.5,1,2,4,6 ``` - O resultado nos informará o número e porcentagem de reads retidas se filtrássemos de acordo com cada combinação específica de tamanho e qualidade (EE). ![](https://i.imgur.com/KYmoeFE.png) **Execução 2 (Script)** ```bash= # Indo até a pasta "scripts" cd ~/projeto/scripts/ # Executando "02_runUSEARCH_trimsize.sh" ./02_runUSEARCH_trimsize.sh ../dados/ ../analises/usearch/ ``` - Vamos visualizar um par de bibliotecas. Note as diferenças entre R1 e R2: ```bash= # R1 cat ~/projeto/analises/usearch/trimsize/MP_BS_L_1_R1_trimSizes.txt # R2 cat ~/projeto/analises/usearch/trimsize/MP_BS_L_1_R2_trimSizes.txt ``` ### 2.3. Remoção dos Primers/Adaptadores **Introdução** - A primeira transformação que faremos nos dados será a remoção dos primers e adaptadores com o programa **Atropos**. - O **Atropos** ([Site](https://atropos.readthedocs.io/en/1.1/)) é um programa especializado em encontrar e remover adaptadores, primers e outras sequências indesejadas, possuindo grande versatilidade na forma de fazê-lo. - Além disso, é possível fazer algumas filtragens de acordo com a presença ou ausência de primers nas sequências, removendo, assim, seqs que não os contenham e podem não ser os fragmentos desejados. - Aqui, utilizaremos os primers que foram detectados pelo **USEARCH** (*find_adapt*) como uma "âncora" para removermos, também, os barcodes presentes no inicio da sequência. - De acordo com as posições encontradas pelo **USEARCH**, é esperado que as seqs. das bibliotecas R1 e R2, percam 38 e 31 bases iniciais, respectivamente. Passando a ter ~210 pb (é sempre importante ter em mente o tamanho dos fragmentos!). >- **Programa:** Atropos (v.1.1.24) >- **Entrada:** Arquivos de sequências no formato `fastq`. >- **Saída:** Arquivos de sequências no formato `fastq` livres de adaptadores. **Execução 1 (CLI)** - Execução básica: ```bash= atropos \ -g <primer_ou_adaptador_R1> \ # -a adapt 3' / -g adapt 5' -G <primer_ou_adaptador_R2> \ # -A adapt 3' / -G adapt 5' *--minimum-length=<tam_min_esperado> \ # Descartar seqs. curtas *--pair-filter=<filtrar_se_ambas_ou_cada_n_passar_nos_filtros> \ *--discard-untrimmed \ # Descartar seqs. sem adapt/primer *--match-read-wildcards \ # Aceitar caracteres coringa IUPAC -o <local_e_nome_da_saida_R1> \ -p <local_e_nome_da_saida_R2> \ -pe1 <local_e_nome_da_entrada_R1> \ -pe2 <local_e_nome_da_entrada_R2> # * = opcionais (porém, recomendáveis) ``` - Substituindo... ```bash= atropos \ -g GACTACHVGGGTATCTAATCC \ -G GTGYCAGCMGCCGCGGTAA \ --minimum-length=200 \ --pair-filter=any \ --discard-untrimmed \ --match-read-wildcards \ -o ~/projeto/analises/atropos/MP_BS_H_1_noadapt_R1.fastq \ -p ~/projeto/analises/atropos/MP_BS_H_1_noadapt_R2.fastq \ -pe1 ~/projeto/dados/MP_BS_H_1_R1.fastq \ -pe2 ~/projeto/dados/MP_BS_H_1_R2.fastq ``` - \>97% "sobreviveram" aos filtros, ou seja, possuiram os primers, foram "trimadas" em ambas as bibliotecas (R1/R2) com, ao menos, 200pb. ![](https://i.imgur.com/bgEoMEv.png) - Note a distribuição da quantidade de bases cortadas: ![](https://i.imgur.com/ppWyiU5.png) **Execução 2 (Script)** ```bash= # Indo até a pasta "scripts" cd ~/projeto/scripts/ # Executando "03_runAtropos_removeadapt.sh" ./03_runAtropos_removeadapt.sh ../dados/ ../analises/atropos/ ``` - Vamos visualizar um par no `fastqc` para verificar as diferenças notavéis. O que é possível na aba *"Per base sequence quality"*? E na *"Sequence Length Distribution"*? ### 2.4. Remoção de Baixa Qualidade **Introdução** - Agora que cuidamos da porção inicial das sequências, vamos trabalhar na qualidade da porção terminal para melhorar nossa capacidade de fusionar os pares. - Diversos programas são capazes de realizar processos de controle de qualidade. Aqui, trabalharemos com o **Fastp** ([Site](https://github.com/OpenGene/fastp)), uma alternativa mais recente, rápida e simples (porém, completa). Embora optemos por trabalhar as epatas de forma isolada, esse programa possui uma enormidade de opções e é capaz de executar desde a remoção dos adaptadores, até o processo de fusão. No entanto, usaremos apenas sua capacidade de lidar com bases e sequências de qualidades ruins. >- **Programa:** Fastp (v.0.23.2) >- **Entrada:** Arquivos de sequências no formato `fastq`. >- **Saída:** Arquivos de sequências no formato `fastq` filtrados por qualidade. **Execução 1 (CLI)** - Execução básica: ```bash= fastp \ -i <local_e_nome_da_entrada_R1> \ -I <local_e_nome_da_entrada_R2> \ -o <local_e_nome_da_saida_R1> \ -O <local_e_nome_da_saida_R2> \ --disable_adapter_trimming \ # Desativando a remoção de adaptadores - já fizemos --average_qual <limiar_qual_med_p_remover_seq> \ --cut_right \ # Ativar CQ na extremidade direita (final) --cut_right_window_size <tam_da_janela> \ # N. de bases cuja média será lida p/ remoção --cut_right_mean_quality <limiar_qual_med_janela_p_remover_base> \ --html <local_e_nome_da_saida_relatorio> \ # Formato html --json <local_e_nome_da_saida_relatorio> # Formato json ``` - Substituindo. Note que não trabalharemos mais com as sequências brutas! ```bash= fastp \ -i ~/projeto/analises/atropos/MP_BS_H_1_noadapt_R1.fastq \ -I ~/projeto/analises/atropos/MP_BS_H_1_noadapt_R2.fastq \ -o ~/projeto/analises/fastp/MP_BS_H_1_clean_R1.fastq \ -O ~/projeto/analises/fastp/MP_BS_H_1_clean_R2.fastq \ --disable_adapter_trimming \ --average_qual 20 \ --cut_right \ --cut_right_window_size 5 \ --cut_right_mean_quality 20 \ --html /dev/null \ --json /dev/null ``` - Tenha em vista que o corte agirá de forma diferente em cada seq. e será especialmente drástico nas seqs. R2. Isso não deve ser um problema para esses dados, mas um corte muito rigoroso pode prejudicar o processo de fusão! ![](https://i.imgur.com/c1WEYi0.png) **Execução 2 (Script)** - A pasta dos arquivos de entrada passa a ser `../analises/atropos/`, pois lá estão as seqs. sem adaptadores/primers. ```bash= # Indo até a pasta "scripts" cd ~/projeto/scripts/ # Executando "04_runFastp_QC.sh" ./04_runFastp_QC.sh ../analises/atropos/ ../analises/fastp/ ``` - Vamos comparar as diferenças entre as bibliotecas iniciais e as "limpas" de qualidades ruins. No `fastqc` abra as bibliotecas: >~/projeto/dados/MP_BS_H_1_R1.fastq >~/projeto/dados/MP_BS_H_1_R2.fastq >~/projeto/analises/fastp/MP_BS_H_1_clean_R1.fastq >~/projeto/analises/fastp/MP_BS_H_1_clean_R2.fastq :::success - Compare as qualidades médias e tamanhos. - Conseguimos puxar a maior parte das sequências para a qualidade considerada boa (> Q30). - Os tamanhos passaram a ser mais heterogêneos (Especialmente R2). ::: ### 2.5. Fusão dos Pares **Introdução** - O sequenciamento em layout *paired-end* permite obter a sequência contígua de fragmentos superiores a capacidade de ciclos do sequenciador. Contudo, duas coisas devem ser levadas em consideração: **1.** Deve haver uma **sobreposição** entre as sequências R1 e R2, ou seja, o tamanho do fragmento não pode superar a soma dos tamanhos de ambos, somados à uma sobreposição mínima. - ***Ex.:** Região V4 possui ~250pb, se for feito um sequenciamento de 2x150pb, haverá uma sobreposição de 50pb (2\*150 - 250 = 50bp).* - Em termos relativos, temos: - ***Seq. R1:** base 0 a 150* - ***Seq. R2:** base 250 a 100* ![](https://i.imgur.com/WqKo1eL.png) **2.** A sobreposição não pode ser **super restrita!** Processos de controle de qualidade poderão ser necessários e, assim, essa sobreposição podera sofrer reduções antes do processo de fusão. ![](https://i.imgur.com/BbxG7Eg.png) - Por *defaut* (valor padrão) os programas costumam utilizar uma sobreposição mínima de 10pb. Contudo, esse valor pode ser ajustado. - Aqui utilizaremos o programa **FLASH** ([Site](http://ccb.jhu.edu/software/FLASH/)), que é voltado especificamente a união de sequências do tipo *paired-end*. Outro programa (mais completo) para esse tipo de processamento é o **PEAR**. >- **Programa:** FLASh (v.1.2.11) >- **Entrada:** Par de bibliotecas `fastq`. >- **Saída:** Biblioteca fundida no formato `fastq`. **Execução 1 (CLI)** - Execução básica: ```bash= flash \ <local_e_nome_da_entrada_R1> \ <local_e_nome_da_entrada_R2> \ --min-overlap <n_min_de_bases_sobrepostas> \ --max-overlap <n_max_de_bases_sobrepostas> \ # Tem de ser alterado, pois default = 65pb *--output-prefix <local_e_nome_da_biblio_fundida> ``` :::warning \* Esse programa tem limitações para interpretar o local de saída. Portanto, precisamos especificar de forma **relativa** ao local de execução, onde gostariamos de salvar as saídas. ::: - Substituindo... ```bash= # Indo para pasta do projeto: cd ~/projeto/ # Executando: flash \ ~/projeto/analises/fastp/MP_BS_H_1_clean_R1.fastq \ ~/projeto/analises/fastp/MP_BS_H_1_clean_R2.fastq \ --min-overlap 10 \ --max-overlap 250 \ --output-prefix ./analises/flash/MP_BS_H_1 ``` - 90% dos pares foram combinados: ![](https://i.imgur.com/QoQ1WlQ.png) - Perceba que ele gera uma série de outputs (saídas): ```bash= ls -l ~/projeto/analises/flash/ ``` ![](https://i.imgur.com/0hDwbQd.png) - Arquivo das seqs. fundidas recebe o padrão "extendedFrags". **Execução 2 (Script)** - A pasta dos arquivos de entrada passa a ser `../analises/fastp/`, pois lá estão as seqs. de qualidade assegurada. ```bash= # Indo até a pasta "scripts" cd ~/projeto/scripts # Executando "05_runFlash_merge.sh" ./05_runFlash_merge.sh ../analises/fastp/ ../analises/flash/ ``` - Além de executar todos os pares, o script já fará a limpeza dos arquivos intermediários e a renomeação dos arquivos finais. Esses passarão a receber o padrão "joined" no final dos nomes. ### 2.6. Avaliação final dos dados :::info Os processos de transformação do pré-processamento foram concluídos! Agora, vamos recuperar algumas informações finais de qualidade que serão uteis na etapa de processamento. ::: - Vamos repetir a execução de alguns programas para obter os relatórios finais: **FastQC (Script)** Obtendo os relatórios FastQC para as seqs. fundidas. Note que é utilizado um script alternativo, uma vez que a primeira versão necessitava de um par, e aqui será apenas uma biblioteca por amosta. ```bash= # Indo até a pasta "scripts" cd ~/projeto/scripts/ # Executando "06_runFastQC_joined.sh" ./06_runFastQC_joined.sh ../analises/flash/ ../analises/fastqc/ ``` Execute o `fastqc` na linha de comando é observe o que ocorreu após a fusão! Abra as bibliotecas: >~/projeto/analises/fastp/MP_BS_H_1_clean_R1.fastq >~/projeto/analises/fastp/MP_BS_H_1_clean_R2.fastq >~/projeto/analises/flash/MP_BS_H_1_joined.fastq **USEARCH: fastx_info (Script)** O resumo dos Erros Esperados poderá ser obtido com o mesmo script. No entanto, vamos alterar o nome do arquivo de resumo original para não sobrescreve-lo. ```bash= # Renomeando resumo das biblios separadas: mv ~/projeto/analises/usearch/meanee/meanEE.txt ~/projeto/analises/usearch/meanee/meanEE_sep.txt # Indo até a pasta "scripts" cd ~/projeto/scripts/ # Executando "02_runUSEARCH_meanee.sh" ./02_runUSEARCH_meanee.sh ../analises/flash/ ../analises/usearch/ # Renomeando resumo das biblios fundidas: mv ~/projeto/analises/usearch/meanee/meanEE.txt ~/projeto/analises/usearch/meanee/meanEE_joi.txt ``` Compare os resumos de EEs. Veja como os EEs das seqs. R2 foram mitigados pelo processo de fusão. ```bash= less -S ~/projeto/analises/usearch/meanee/meanEE_sep.txt less -S ~/projeto/analises/usearch/meanee/meanEE_joi.txt ``` **USEARCH: fastq_eestats2 (Script)** Vamos verificar novamente a distribuição dos tamanhos por EE. ```bash= # Indo até a pasta "scripts" cd ~/projeto/scripts/ # Executando "02_runUSEARCH_trimsize.sh" ./02_runUSEARCH_trimsize.sh ../analises/flash/ ../analises/usearch/ ``` Note que a qualidade deixou de ser um fator limitante. O tamanho que contempla maior parte das sequências é um valor importante para o processo de **truncagem** que será realizado posteriormente. ```bash= less -S ~/projeto/analises/usearch/trimsize/MP_BS_H_1_joined_trimSizes.txt ``` **Resumo das contagens (Script)** Por fim, através de alguns comandos encapsulados em um script, vamos capturar o número de sequências registradas em cada etapa, para que assim, possamos visualizar quais foram as perdas. O script não requer nenhum parâmetro para ser rodado. Se a **estrutura de diretórios** e nomenclatura estiver correta, ele deve capturar automaticamente os arquivos intermediários e registra-los em `~/projeto/info/resumo_preproc.txt`. ```bash= # Indo até a pasta "scripts" cd ~/projeto/scripts/ # Executando "07_getCounts.sh" ./07_getCounts.sh ``` Veja a tabela: ```bash= less -S ~/projeto/info/resumo_preproc.txt ``` ![](https://i.imgur.com/NtkI3iy.png) - Qual etapa foi mais excludente? - A perda foi grande? - Os dados restantes serão suficientes para atacar o problema? :::spoiler **Cenas dos próximos episódios...** ::: ## Se perdeu? Venha por aqui! Caso tenha se perdido em alguma etapa, não tem problema! Copie o trecho de códigos a seguir para reiniciar sua análise e chegar até esse ponto: ```bash= ## Preparação do ambiente: echo "Iniciando Pré-Processamento!" # Limpeza: rm -rf ~/projeto/ # Criação da estrutura de dados: mkdir -p ~/projeto/{dados,info,analises,scripts} mkdir -p ~/projeto/analises/{atropos,dada2,fastp,fastqc,flash,usearch/{findadapt,meanee,trimsize}} # Copiando arquivos: ln -s /srv/cibioinfo/projeto/data/*.fastq ~/projeto/dados/ cp /srv/cibioinfo/projeto/scripts/*sh ~/projeto/scripts/ cp /srv/cibioinfo/projeto/info/* ~/projeto/info/ ## Pré-processamento: # Indo até a pasta dos scripts: cd ~/projeto/scripts ./01_runFastQC_single.sh ../dados/ ../analises/fastqc/ ./02_runUSEARCH_meanee.sh ../dados/ ../analises/usearch/ ./02_runUSEARCH_findadapt.sh ../dados/ ../analises/usearch/ ./02_runUSEARCH_trimsize.sh ../dados/ ../analises/usearch/ ./03_runAtropos_removeadapt.sh ../dados/ ../analises/atropos/ ./04_runFastp_QC.sh ../analises/atropos/ ../analises/fastp/ ./05_runFlash_merge.sh ../analises/fastp/ ../analises/flash/ ./06_runFastQC_joined.sh ../analises/flash/ ../analises/fastqc/ mv ~/projeto/analises/usearch/meanee/meanEE.txt ~/projeto/analises/usearch/meanee/meanEE_sep.txt ./02_runUSEARCH_meanee.sh ../analises/flash/ ../analises/usearch/ mv ~/projeto/analises/usearch/meanee/meanEE.txt ~/projeto/analises/usearch/meanee/meanEE_joi.txt ./02_runUSEARCH_trimsize.sh ../analises/flash/ ../analises/usearch/ ./07_getCounts.sh echo "Fim!" ```