Usando no BLAST na linha de comando
Observações:
- Este tutorial é apenas para fins didáticos. A reprodução dele para qualquer outro fim não é permitida e nem consentida.
- Para executar este tutorial você necessitará dos arquivos obtidos no tutorial anterior Instalando o NCBI-Entrez-Direct-E-utilities.
- O usuário de cada discente para acesso ao servidor tem restrições e o endereço IP de cada acesso é registrado. Muito cuidado ao usar.
- Para instalação do BLAST em sua própria máquina UNIX siga as instruções contidas AQUI.
Criando um banco BLAST
Uma das grandes vantagens do BLAST, que o levou a ser a ferramenta padrão para busca de similaridades, é a sua rapidez. Apesar de ser uma heurística, os resultados de suas buscas são confiáveis, desde que bem explorados pelo pesquisador. Uns dos motivos de tal rapidez na comparação é a indexação que o programa faz nas sequências do banco de dados, especificamente com as "sementes" contidas nas sequências. Essa indexação é parte do processo de formatação do banco BLAST, que deve ser realizado antes da utilização do programa. A suíte de programas vem com um aplicativo chamado makeblastdb
que é utilizado para tal fim.
Em versões antigas do BLAST (BLAST legacy) o comando era o formatdb, mas foi descontinuado. Apenas tenha cuidado ao verificar a versão do BLAST antes de preparar o banco de sequências.
Os inputs para a criação do banco serão os dois arquivos no formato fasta (os multifastas) baixados no item anterior. Outros arquivos com anotações e sequências também podem ser utilizados como input, mas por simplicidade iremos começar com a criação a partir de um arquivo multifasta.
- Vamos primeiro criar o banco de sequências nucleotídicas, usando o arquivo
G6PD-craniata-NTs.fasta
. Para isso execute o seguinte comando:
makeblastdb -dbtype nucl -in G6PD-craniata-NTs.fasta -title g6pd-nt -hash_index -out g6pd-nt
-
Os argumentos do executável
makeblastdb
significam: -
-dbtype
: o tipo de sequência biológica.nucl
significa nucleotídeos. -
-in
: o arquivo com as sequências que serão utilizadas para criar o banco. -
-title
: o título do banco de dados, que deve ser único para cada banco criado. -
-hash_index
: Possibilita a criação de valores de hash para as sequências do banco. Estes valores são usados para determinar rapidamente se um determinado dado de sequência existe neste banco de dados BLAST. Não é obrigatória para todos os bancos. -
-out
: o nome do banco de dados a ser criado. Caso essa opção não seja colocada, o nome a ser criado será igual ao do arquivo de entrada. -
A saída será similar a seguinte:
Building a new DB, current time: 04/20/2022 16:49:03
New DB name: /home/jpmslima/blastDB/g6pd-nt
New DB title: g6pd-nt
Sequence type: Nucleotide
Keep MBits: T
Maximum file size: 1000000000B
Adding sequences from FASTA; added 262 sequences in 0.00907397 seconds.
- Agora vamos criar o banco com sequências de aminoácidos, tendo como input as sequências contidas no arquivo
G6PD-craniata-AA.fasta
. Para isso execute o comando abaixo:
makeblastdb -dbtype prot -in G6PD-craniata-AA.fasta -title g6pd-aa -hash_index -out g6pd-aa
- Os argumentos são basicamente os mesmos, no entanto, note que houve mudança no
dbtype
devido as sequências serem de aminoácidos.
Agora que temos os dois bancos criados, iremos realizar as buscas por similiaridade.
Realizando buscas de similaridade
Vamos executar agora buscas utilizando como query (sequência consulta) as duas sequências baixadas, a NT-teste.fasta
e AA-teste.fasta
. É muito importante que saibas a utilidade de cada "sabor" do programa BLAST e o tipo de comparação que eles realizam.
Iniciaremos com uma busca BLASTn (sequência de nucleotídeos contra um banco de sequências nucleotídicas). Execute o seguinte comando:
blastn -query NT-teste.fasta -db g6pd-nt -out busca1.txt
-
Os argumentos são:
-
-query
: arquivo contendo a sequência consulta. -
-db
: nome do banco contra o qual a busca será realizada. -
-out
: nome do arquivo de saída para a busca realizada. -
Analise os resultados, abrindo o arquivo
busca1.txt
com o comandomore
ou com o editornano
. Houve hits nessa sua busca?
Agora iremos realizar uma busca BLASTp (sequência de aminoácidos contra um banco de sequências de proteínas). Para isso, execute o seguinte comando:
blastp -query AA-teste.fasta -db g6pd-aa -out busca2.txt
- Verifique que os argumentos são similares ao do BLASTn acima. E agora, houve hits nesta busca? Explique.
Podemos fazer uma "busca cruzada" utilizando o BLASTx (sequência traduzida de nucleotídeos contra um banco de sequências proteicas), com o comando:
blastx -query NT-teste.fasta -db g6pd-aa -out busca3.txt
E agora vamos executar um tBLASTn (sequência de aminoácidos contra um banco de sequências nucleotídicas traduzidas) e um tBLASTx (sequência de nucleotídeos traduzida contra um banco de sequências nucleotídicas traduzidas):
tblastn -query AA-teste.fasta -db g6pd-nt -out busca4.txt
tblastx -query NT-teste.fasta -db g6pd-nt -out busca5.txt
Verifique as diferenças entra as buscas, analisando os arquivos de saída.
Outras opções de formatos de saída e documentação
A grande vantagem do BLAST local via linha comando é a facilidade na obtenção dos formatos de saída. Nos exemplos acima, só usamos a saída básica do BLAST, aquela que vocês já conhecem. No entanto, muitas vezes precisamos customizar a saída da busca de similaridade para facilitar a análise dos resultados ou fazer integração com outros programas ou bancos de dados em SQL. A saída pode até ser em um formato html (usando o argumento -html
), para visualizares com os links hits-alinhamento funcionando. A opção é dada por um argumento -outfmt
. Veja as opções com o comando:
blastn -help
Os formatos de saída estarão na seção abaixo:
*** Formatting options
-outfmt <String>
alignment view options:
0 = Pairwise,
1 = Query-anchored showing identities,
2 = Query-anchored no identities,
3 = Flat query-anchored showing identities,
4 = Flat query-anchored no identities,
5 = BLAST XML,
6 = Tabular,
7 = Tabular with comment lines,
8 = Seqalign (Text ASN.1),
9 = Seqalign (Binary ASN.1),
10 = Comma-separated values,
11 = BLAST archive (ASN.1),
12 = Seqalign (JSON),
13 = Multiple-file BLAST JSON,
14 = Multiple-file BLAST XML2,
15 = Single-file BLAST JSON,
16 = Single-file BLAST XML2,
17 = Sequence Alignment/Map (SAM),
18 = Organism Report
Options 6, 7, 10 and 17 can be additionally configured to produce
a custom format specified by space delimited format specifiers,
or in the case of options 6, 7, and 10, by a token specified
by the delim keyword. E.g.: "17 delim=@ qacc sacc score".
The delim keyword must appear after the numeric output format
specification.
The supported format specifiers for options 6, 7 and 10 are:
qseqid means Query Seq-id
qgi means Query GI
qacc means Query accesion
qaccver means Query accesion.version
qlen means Query sequence length
sseqid means Subject Seq-id
sallseqid means All subject Seq-id(s), separated by a ';'
sgi means Subject GI
sallgi means All subject GIs
sacc means Subject accession
saccver means Subject accession.version
sallacc means All subject accessions
slen means Subject sequence length
qstart means Start of alignment in query
qend means End of alignment in query
sstart means Start of alignment in subject
send means End of alignment in subject
qseq means Aligned part of query sequence
sseq means Aligned part of subject sequence
evalue means Expect value
bitscore means Bit score
score means Raw score
length means Alignment length
pident means Percentage of identical matches
nident means Number of identical matches
mismatch means Number of mismatches
positive means Number of positive-scoring matches
gapopen means Number of gap openings
gaps means Total number of gaps
ppos means Percentage of positive-scoring matches
frames means Query and subject frames separated by a '/'
qframe means Query frame
sframe means Subject frame
btop means Blast traceback operations (BTOP)
staxid means Subject Taxonomy ID
ssciname means Subject Scientific Name
scomname means Subject Common Name
sblastname means Subject Blast Name
sskingdom means Subject Super Kingdom
staxids means unique Subject Taxonomy ID(s), separated by a ';'
(in numerical order)
sscinames means unique Subject Scientific Name(s), separated by a ';'
scomnames means unique Subject Common Name(s), separated by a ';'
sblastnames means unique Subject Blast Name(s), separated by a ';'
(in alphabetical order)
sskingdoms means unique Subject Super Kingdom(s), separated by a ';'
(in alphabetical order)
stitle means Subject Title
salltitles means All Subject Title(s), separated by a '<>'
sstrand means Subject Strand
qcovs means Query Coverage Per Subject
qcovhsp means Query Coverage Per HSP
qcovus means Query Coverage Per Unique Subject (blastn only)
When not provided, the default value is:
'qaccver saccver pident length mismatch gapopen qstart qend sstart send
evalue bitscore', which is equivalent to the keyword 'std'
The supported format specifier for option 17 is:
SQ means Include Sequence Data
SR means Subject as Reference Seq
Default = `0'
Você também pode limitar as buscas a:
-
Número de sequências.
-
% de identidade e % de cobertura.
-
E-value e bit-escore.
Os argumentos específicos de cada versão também podem ser consultados com os comandos:
blastp -help
blastx -help
tblastn -help
Ou você pode consultar o manual completo do BLAST nesta página.