BLAST - lmigueel/Bioinformatica GitHub Wiki

1. Sobre

BLAST é uma ferramenta de busca de alinhamentos locais. O BLAST encontra regiões de similaridade entre sequências biológicas. O programa compara sequências de nucleotídeos ou proteínas com bancos de dados de sequências e calcula a significância estatística. Ele possui acesso e execução online, e pode ser acessado AQUI. Mas, caso queira executar para centenas de sequências, precisará em linha de comando.

Existem vários tipos de BLAST, ou seja, comparações entre as sequências. Isso vai depender do tipo de sequência (DNA ou proteína). Vide abaixo seu resumo retirado do livro “Bioinformatic for Dummies”, Claverie and Notredame, 2007 , com um pequeno complemento de minha parte:

Program Query Database Usage Choosing the BLAST
blastn DNA DNA Very similar DNA sequences (more than 70%) I'm interested in non-coding and coding DNA
blastp Protein Protein Similar protein sequences I want to find similar proteins
blastx TDNA Protein Analysis of the query DNA sequences I want to discover proteins encoded in my query DNA sequence
tblastx TDNA TDNA protein discovery and EST I want to discovery new proteins
tblastn Protein TDNA compare a protein sequence to a nucleotide DB I want associate proteins with chromosomes or with mRNAs

No tblastn, você sabe como a proteína deve ser e deseja pesquisar as sequências de nucleotídeos em que essa proteína pode ser semelhante. Para o blastx, você não tem ideia de onde ou qual proteína pode estar presente nele, então você faz a triagem para um banco de dados de proteína para procurar possíveis correspondências de proteínas conhecidas. Lembrando que não podemos comparar nucleotídeos e proteínas entre si diretamente, então a sequência de nucleotídeos é traduzida (em todos os 6 frames, isso é importante!) e, em seguida, uma comparação de aminoácidos vs aminoácidos é feita. Essa tradução nos 6 frames é realizada tanto pelo blastx como o tblastn.

2. Instalação

Via conda:

 conda install -c bioconda blast 

Download dos executáveis pode ser feito AQUI.

3. Exemplos

Vamos baixar o dataset das proteínas de vaca e de humano, e extraímos:

wget ftp://ftp.ncbi.nih.gov/refseq/B_taurus/mRNA_Prot/cow.1.protein.faa.gz

wget ftp://ftp.ncbi.nih.gov/refseq/H_sapiens/mRNA_Prot/human.1.protein.faa.gz

gunzip *gz

Agora podemos BLASTAR (não utilize esse verbo em textos acadêmicos) essas duas sequências de vaca contra o conjunto de sequências humanas. O BLAST precisa indexar o arquivo de banco de dados antes de pesquisar. Isso ajuda a fazer o software funcionar muito mais rápido. Como você instalou sua própria versão do sotware, é necessário informar ao shell onde o software está localizado. Use o caminho completo e o comando makeblastdb:

Neste caso, iremos procurar as sequencias de vaca nas de humano, então indexamos as de humano. O tipo do database (-dbtype) é proteína.

makeblastdb -in human.1.protein.faa -dbtype prot

Agora podemos executar o trabalho de detonação. Usaremos blastp, que é apropriado para comparações de proteína para proteína.

blastp -query cow.small.faa -db human.1.protein.faa

Mas vamos aprimorar os parâmetros do BLAST. Neste caso podemos adicionar o e-value (-evalue), o número máximo de best hits por query (-max_target_seqs), número de processadores (-num_threads) e output no formato tabular (-outfmt 6), que não possui resultados dos alinhamentos. Segue:

blastp -query cow.medium.faa -db human.1.protein.faa -out cow_vs_human_blast_results.tab -evalue 1e-5 -outfmt 6 -max_target_seqs 1 -num_threads 10

Você pode alterar o tamanho da palavra que o BLAST procura (-word_size). A diminuição deste valor aumenta o tempo de execução.

O header do arquivo tabular de saída é composto por:

número coluna header descrição
1 qseqid query (e.g., unknown gene) sequence id
2 sseqid subject (e.g., reference genome) sequence id
3 pident percentage of identical matches
4 length alignment length (sequence overlap)
5 mismatch number of mismatches
6 gapopen number of gap openings
7 qstart start of alignment in query
8 qend end of alignment in query
9 sstart start of alignment in subject
10 send end of alignment in subject
11 evalue expect value
12 bitscore bit score

Lembrando que a ideia é sempre a mesma:

  1. Criar o database indexado
  2. Executar o blast correto (Vide Seção 1. Sobre)

Citação:

Altschul, S.F., Gish, W., Miller, W., Myers, E.W. & Lipman, D.J. (1990) "Basic local alignment search tool." J. Mol. Biol. 215:403-410.