Anotação em montagens de novo de transcriptoma (Pannzer2, HMMER e SwissProt) - lmigueel/Bioinformatica GitHub Wiki
1. Sobre
PANNZER (Protein ANNotation with Z-scoRE) é um serviço totalmente automatizado para anotação funcional de proteínas procarióticas e eucarióticas de função desconhecida. A ferramenta foi projetada para prever a descrição funcional (DE) e as classes GO.
Pannzer2 é um software bastante divertido que pode te auxiliar bastante após montagens de novo. Muita das vezes temos as nossas sequencias em DNA oriundas, por exemplo, de softwares como Trinity ou Velvet, e desejamos anotá-las.
Manual e exemplos do Pannzer2 podem ser acessados AQUI
HMMER é usado para pesquisar bancos de dados de sequência para homólogos de sequência e para fazer alinhamentos de sequência. Ele implementa métodos usando modelos probabilísticos chamados modelos ocultos de Markov (HMMs).
O HMMER costuma ser usado junto com um banco de dados de perfis, como o Pfam ou muitos dos bancos de dados que participam da Interpro. Mas o HMMER também pode trabalhar com sequências de consulta, não apenas perfis, como o BLAST.
O Swiss-Prot é o componente habilmente curado do UniProtKB (produzido pelo consórcio UniProt). Ele contém centenas de milhares de descrições de proteínas, incluindo função, estrutura de domínio, localização subcelular, modificações pós-tradução e variantes caracterizadas funcionalmente. Vamos usar um Blast contra ele. Acesse aqui o manual do Blast.
2. Instalação
A instalação necessita de download dos arquivos, e a adequação para alguns pacotes, como o fastqcluster.
wget http://ekhidna2.biocenter.helsinki.fi/sanspanz/SANSPANZ.3.tar.gz
tar -zxvf SANSPANZ.3.tar.gz
export PATH=$PATH:/directory/SANSPANZ.3/
O script desta pasta que iremos utilizar inicialmente é o runsanspanz.py, por isso, dê suas permissões de acesso. Eu vou disponibilizar acesso total com o chmod 777 runsanspanz.py.
O Pannzer2 necessita de alguns pacotes Python (numpy, scipy e requests). O único que é um pacote R é o fastcluster. Para isso, abra seu R no terminal (normalmente digitando R mesmo) e execute:
install.packages("fastcluster")
O HMMER pode ser baixado através do conda ou source code.
Via conda:
conda install -c bioconda hmmer
Ou através do source code aqui.
Manual do HMMER pode ser acessado aqui.
3. Extraindo ORFs
Com a montagem de novo, primeiro precisamos extrair as orfs de cada sequência montada. Esse é o primeiro filtro após a montagem de novo: spo deixar sequências que possuem ORF. As restantes podem ser quimeras ou non-coding. Para isso vamos utilizar o software Transdecoder.
Para isso, instale-o.
Via conda:
conda install -c bioconda transdecoder
Source code pode ser acessado aqui.
Logo após a instalação, vamos utilizar o script TransDecoder.LongOrfs, com a opção de ORF de no mínimo 100aa ou 300bp. Para fins educacional, vamos supor que temos o arquivo transcritos_brutos.fasta.
TransDecoder.LongOrfs -t transcritos_brutos.fasta -m 100
O arquivo que nos interessa é o transcritos_brutos.transdecoder.pep, que contém as ORFs geradas por sequência. Uma mesma sequência pode ter mais de uma ORF, e ela estará numerada como .pX, sendo X as possibilidades (X=1,2,3,...,n). Para gerar a MAIOR ORF de cada transcrito montado você deve rodar o script na pasta do Transdecoder (/util/get_longest_ORF_per_transcript.pl) ou, caso você tenha instalado via conda, pode ser acessado aqui. Esse script é realmente importante. Caso não seja possível parsear com este arquivo, execute um script para parseá-lo.
O arquivo final gerado, vamos supor, que terá o nome transcritos_brutos_longest.pep.
Ele será utilizado para as demais análises.
4. Pannzer2
Para rodar o Pannzer2 necessitamos uma espécie para ele buscar no banco de dados (flag -s). Vamos supor que desejamos realizar a anotação de reads de banana (Musa acuminata).
python runsanspanz.py -R -m Pannzer -s "Musa acuminata" -i transcritos_brutos_longest.pep -o ",DE.out,GO.out,anno.out"
Os arquivos de anotação são os .out. Segundo o manual do Pannzer2, à respeito dos cortes dos índices PPV :
Esta discussão usa pontuações ARGOT como exemplo, mas os princípios são os mesmos para outras pontuações também. ARGOT_score é o resultado da função interna de PANNZER, que quantifica o quão fortemente representada é uma determinada classe GO. Atualmente, não temos uma regra simples para interpretar esse valor. Portanto, geramos a estimativa de PPV abaixo.
PPV (Positive Predictive Value) é uma estimativa da confiabilidade da classe GO prevista. Ele estima se a confiabilidade da classe GO está correta ou aproximadamente correta. Aproximadamente correto aqui significa que a classe GO correta está próxima da classe GO prevista na árvore GO (um nó filho ou pai da classe GO correta). A relação entre PPV e pontuação de Argot foi calibrada usando um conjunto de treinamento de proteínas para o qual a anotação correta era conhecida.
PPV = Good_Stuff / (Good_Stuff + Bad_Stuff)
Good_Stuff é o número de previsões corretas ou aproximadamente corretas com aproximadamente a mesma pontuação de Argot. Bad_Stuff é o número de previsões claramente ruins com aproximadamente a mesma pontuação de Argot.
Intencionalmente, não fornecemos regras claras e exatas sobre como os valores de PPV devem ser usados. Temos previsões mais confiáveis e menos confiáveis nos resultados do PANNZER. A seguir estão as recomendações:
*Baixe os resultados do PANNZER com as pontuações PPV.
*Gere uma lista de valores de limite (exemplos: [0,9, 0,8, 0,7, 0,6, 0,5], [0,8, 0,6, 0,4])
*Gere alguns conjuntos separados de resultados PANNZER, cada um filtrado com o valor de limite selecionado. Mantenha apenas os resultados que têm um VPP maior do que o limite nos resultados.
*Faça algumas análises preliminares downstream com cada conjunto separado.
*Selecione um conjunto (ou conjuntos) que tenham uma boa aparência na análise preliminar para as próximas etapas.
5. HMMER
Verifiquemos o repositório do PFAM que contém o arquivo Pfam-A.hmm.gz. O repositório pode ser acessado aqui. Vamos baixá-lo e extraí-lo com o 'hmmscan' (vindo da instalação):
wget http://ftp.ebi.ac.uk/pub/databases/Pfam/current_release/Pfam-A.hmm.gz
gunzip Pfam-A.hmm.gz hmmpress Pfam-A.hmm
Agora executamos o HMMER:
hmmscan --cpu 8 --domtblout transcritosPFAM.out Pfam-A.hmm transcritos_brutos_longest.pep > pfam.log
6. SwissProt
Vamos fazer o download do Swiss-Prot a partir de seu repositório.
wget https://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase/complete/uniprot_sprot.fasta.gz
Vamos rodar o blast do nosso arquivo de proteínas contra o banco de dados curado do Swiss-Prot.
makeblastdb -in uniprot_sprot.fasta -dbtype prot
blastp -query transcritos_brutos_longest.pep -db uniprot_sprot.fasta -out transcritos_swissprot_results.tab -evalue 1e-5 -outfmt 6 -max_target_seqs 1 -num_threads 10
As anotações podem ser parseadas da sua maneira.
Citação
Törönen, Petri, Alan Medlar, and Liisa Holm. "PANNZER2: a rapid functional annotation web server." Nucleic acids research 46.W1 (2018): W84-W88.
Potter, Simon C., et al. "HMMER web server: 2018 update." Nucleic acids research 46.W1 (2018): W200-W204.
https://github.com/TransDecoder/TransDecoder/wiki
Bairoch, Amos, and Rolf Apweiler. "The SWISS-PROT protein sequence data bank and its new supplement TREMBL." Nucleic acids research 24.1 (1996): 21-25.