Montagem de genomas com SPAdes - lmigueel/Bioinformatica GitHub Wiki

1. Sobre

Montar um genoma possui várias etapas e processos. Caso queira saber mais sobre cada etapa, leia sobre ela no Vars Omics. Vou detalhar melhor aqui os tipos de montagens, o porquê montar um genoma e possíveis erros.

1.1 Quais são os objetivos de uma montagem?

  • Determinar a sequência completa do genoma de um organismo (animal, planta, fungo, bactéria, etc.)
  • Montar e organizar a sequência (em cromossomos)
  • Anotar a sequência do gene que codifica a proteína (e outras características funcionais geneticamente importantes)

1.2 Por que a montagem do genoma é um problema difícil?

  • Polimorfismo

    1. Diploide (com pares de cromossomos): As reads de regiões em cromossomos homólogos podem ser diferentes
    1. Quimera: Um organismo com vários genomas na mesma amostra
    1. Vários indivíduos
  • Repeats

    1. Grandes repetições, duplicações segmentares ... 40 Kb e mais!
    1. Poliploidia: Duplicações de genoma inteiro; Múltiplas cópias de cromossomos
    1. Erro de Sequenciamento: Diferentes tecnologias de sequenciamento têm diferentes tipos de erros
A precisão da base varia - pontuações de Phred
Logaritmicamente vinculado à probabilidade de erro
Q10: P [chamada de base errada] = 1 em 10
Q20: P [chamada de base errada] = 1 em 100
Q30: P [chamada de base errada] = 1 em 1.000
Q40: P [chamada de base errada] = 1 em 10.000
Q50: P [chamada de base errada] = 1 em 100.000
Q50 é considerado muito bom
  • Contaminação da amostra: A contaminação de humanos, bactérias e vírus são comuns

1.3 Tipos de montadores

Existem duas classes principais de montagem do genoma: Overlap Layout Consensus (OLC) e Debruijn Graph (DBG).

  • Overlap Layout Consensus (OLC)

O Overlap Layout Consensus (OLC) é um método de montagem que pega todas as reads e localiza as sobreposições entre elas e, em seguida, cria uma sequência de consenso a partir das leituras sobrepostas alinhadas.

  • Gráfico De Bruijn (DBG) ou abordagem k-mer

    1. Corte as leituras em k-mers (subsequencias de tamanho k)
    1. Construa DBG a partir de k-mers
    1. Represente uma sequência em termos de seus componentes k-mer
    1. Encontre o caminho Euleriano no grafo
    1. Derive a sequência do genoma do grafo

Exemplo de DBG você encontra AQUI.

Exemplo de OLC você encontra AQUI.

Se você estiver trabalhando em um genoma de procarioto, recomendo começar com SPAdes, pois funciona bem para genomas pequenos e não é recomendado para genomas grandes. Para reads longos, leia sobre o CANU bem aqui.

** VAMOS FALAR DO SPAdes !! **

1.4 SPAdes

SPAdes - St. Petersburg genome assembler - é um kit de ferramentas de montagem contendo vários pipelines de montagem.

SPAdes possui muitos tipos de montadores, e o metaSpades, para montagem de dados de metagenômica, é super indicado! Além disso, o SPAdes possui a opção de adicionar reads não pareados (single-end) com a opção -s, e reads PacBio e Nanopore, com a opção --pacbio e --nanopore, respectivamente. Ter estes reads longos ajudam muito nas montagens e evitam fragmentação.

Além disso, SPAdes tem a flag --continue, que continua a montagem de onde parou. Muito útil quando se coloca uma variação de k-mers para montar. By the way, essa é uma das grande vantagens do SPAdes: montagem multipla de k-mers. Ele monta com um k-mer, e, posteriormente, a próxima montagem será feita sobre a anterior.

2. Instalação

Pelo CONDA:

 conda install -c bioconda spades 

Os binários você encontra aqui.

3. Exemplo de uso

Vamos supor que tenhamos reads paired-end de bacteria, denominados bacteria_R1.fastq e bacteria_R2.fastq.

Após fazer toda a parte de QUALIDADE e TRIMAGEM, bora montar.

Vamos ainda supor que o Trimmomatic nos rendeu um arquivo razoável de não pareados. Importante usar o máximo possível. Então chamaremos esse arquivo de unpaired_bacteria.fastq. Aconselho a pegar os unpaired do foward no trimmomatic.

Aconselho também a execução do montador no modo --careful, que tenta diminuir a taxa de montagens incorretas. Caso você já tenha feito a correção de reads, utilize a flag --only-assembler, assim ele sabe que basta montar, e pula a etapa de correção.

Spades aceita reads no formato .fastq.gz.

Vamos rodar nossa análise. Vamos usar paired-end e unpaireds, com pasta de saída na opção -o, com 4 processadores na opção -t e a variação de k-mer de 21 até 77.

spades.py -1 bacteria_R1.fastq -2 bacteria_R2.fastq -s unpaired_bacteria.fastq -o spades_careful_assembly -t 4 -k 21,33,55,77 --careful

Como OUTPUT, o SPAdes libera:

  • <output_dir>/corrected/: contém reads corrigidas por BayesHammer em arquivos * .fastq.gz; se a compactação for desativada, as leituras são armazenadas em arquivos * .fastq não compactados.
  • <output_dir>/scaffolds.fasta: contém scaffolds resultantes (recomendado para uso como sequências resultantes)
  • <output_dir>/contigs.fasta: contém contigs resultantes
  • <output_dir>/assembly_graph.gfa: contém grafo de montagem SPAdes e caminhos de andaimes no formato GFA 1.0
  • <output_dir>/assembly_graph.fastg: contém grafo de montagem SPAdes no formato FASTG
  • <output_dir>/contigs.paths: contém caminhos no grafo de montagem correspondentes a contigs.fasta
  • <output_dir>/scaffolds.paths: contém caminhos no grafo de montagem correspondentes a scaffolds.fasta

4. Métricas importantes e montadores

Para verificar uma boa montagem, e até compará-la com outra estratégia, você deve verificar:

  • Completeza com o BUSCO. A parte reconstruída corretamente deve estar com mais de 90%.
  • N50: 50% (pares de bases) dos conjuntos são contigs acima deste tamanho.
  • L50: número de contigs maior que o comprimento N50
  • Numero de contigs: Menor número de contigs representa uma menor fragmentação
  • Total de bases reconstruída (base pairs)

E estes são os montadores segundo os reads que você possui:

  • Shorst reads: SPAdes, MaSuRCA, supernova, Unicycler, abyss, Velvet e SOAPdenovo2.
  • Long reads: canu, Unicycler, Flye e Falcon.
  • Hidrido: SPAdes, MaSuRCA, Unicycler e abyss.

Você pode verificar a qualidade da montagem com o BUSCO ou QUAST. Os posts ainda estão pra sair!

Referências

Bankevich, Anton, et al. "SPAdes: a new genome assembly algorithm and its applications to single-cell sequencing." Journal of computational biology 19.5 (2012): 455-477.

⚠️ **GitHub.com Fallback** ⚠️