Grep e AWK para análises de saídas de BLAST


  • Para saber quantas seqüências há em uma biblioteca de seqüências em formato fasta:
    $grep ">" nome_arquivo -c

    BLAST saída normal

  • Para saber quantas seqüências foram usadas como Query em uma pesquisa BLAST com saída normal:
    $grep "Query=" nome_arquivo -c
  • Para saber, das seqüências acima, quantas deram hit:
    $grep "Sequences producing" nome_arquivo -c
  • Agora, para saber quantas não deram hit:
    $grep "No hit" nome_arquivo -c
  • Para selecionar quais deram hit, é preciso fazer o "grep do grep", pegando as linhas de cima de "Sequences producing" e depois buscar pelo "Query=", assim:
    $grep "Sequences producing" -B 11 | grep "Query=" | more
  • Para selecionar quais não deram hit, é igual, pegando as linhas de cima de "No hits" e depois buscando pelo "Query=", assim:
    $grep "No hits" -B 9 | grep "Query=" | more

    BLAST saída m 8

  • Só são mostrados os hits e cada query aparece em várias linhas, portanto para saber quantas seqüências query deram hit e quais são elas:
    $cat nome_arquivo | awk '{print $1}' | sort | uniq -c
  • Para saber quantas seqüências subject foram selecionadas com a biblioteca query utilizada e quais são elas:
    $cat nome_arquivo | awk '{print $2}' | sort | uniq -c
  • Para determinar o número de no hits é preciso contar o número de seqüências na biblioteca fasta com grep ">" e subtrair o número de hits:
    $grep arquivo_biblioteca ">"
  • Às vezes o BLAST foi feito com um cutoff de valor de "e" não muito exigente e agora se quer selecionar somente os hits com similaridade auperior a 96% (coluna 3 da saída m 8). Para isso e analisar os hits use:$cat nome_arquivo | awk '$3 > 96 {print $1}' | uniq -c | more
  • Veja que é possível usar "cat" para carregar o arquivo e depois usar "awk", mas também pode-se escrever:
    $ awk '$3 > 96 {print $1}' nome_arquivo | uniq -c | more
    Que o resultado é o mesmo. Assim como:
    $grep ">" nome_arquivo - também poderia ser - $cat nome_arquivo | grep ">"
  • No awk, é possível exigir uma condição (logo depois da primeira das aspas simples) e executar uma ação (entre as chaves).
    Portando, no exemplo acima, awk '$3 > 96 {print $1}' nome_arquivo, é mostrada a coluna 1 de todas as linhas onde a coluna 3 é maior que 96.
  • Uma maneira de ordenar o resultado com saída m 8 por valor de similaridade decrescente é usando sort:
    $sort -k 3,3 -n -r
    Isso classifica o resultado pela coluna 3 (início em 3, fim em 3, logo -k 3,3)
    Trata os elementos da coluna 3 como números e não como "string" de texto (logo, -n) E classifica do maior para o menor (logo, -r)