# [Minicurso 2025] 03. Pré-Processamento
###### tags: `Minicurso25`

[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
```

- 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:**

### 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:

- 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;

- *"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)

- 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
```

**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.

- 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 |
| -- | -- | -- | -- | -- | -- | -- | -- | -- |

- 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).

**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).

**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.

- Note a distribuição da quantidade de bases cortadas:

**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!

**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*

**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.

- 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:

- Perceba que ele gera uma série de outputs (saídas):
```bash=
ls -l ~/projeto/analises/flash/
```

- 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
```

- 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!"
```