saída de explosão do filtro para o valor e

2

Eu executei um BlastX no banco de dados SwissProt com um limite de valor de 1e-3.

A saída é semelhante a:

>TCONS_00006082    sp|P43298|TMK1_ARATH    57.89    57    23    2    459    292    751    806    8e-11    67.4
>TCONS_00006082    sp|P0DH62|Y4407_SELML    69.05    42    12    1    435    313    373    414    1e-08    60.1
>TCONS_00006082    sp|Q8RWZ5|SD25_ARATH    56.52    46    19    1    435    301    659    704    1e-08    60.1
>TCONS_00006082    sp|Q8VYA3|WAKLJ_ARATH    41.43    70    40    1    477    271    586    655    5e-08    58.2
>TCONS_00006082    sp|Q9C9L5|WAKLH_ARATH    40.00    70    41    1    477    271    600    669    5e-08    58.2
>TCONS_00006082    sp|P93749|Y2197_ARATH    40.54    74    43    2    501    283    225    297    6e-08    57.8
>TCONS_00006082    sp|Q9M342|WAKLP_ARATH    34.52    84    54    2    519    271    504    580    6e-08    57.8

Agora, desejo filtrar esses IDs com um valor de e-mail (campo 11) > 0,001. Como posso fazer isso?

    
por user106326 24.03.2015 / 07:40

2 respostas

4

Você pode simplesmente usar awk , suponho que o 11º campo seja o valor que você quer dizer:

awk '$11>0.001{print $0}' file

awk entende a notação científica e imprime toda a linha, se a afirmação for verdadeira.

Aviso : na saída da sua pergunta, nenhuma linha corresponde aos critérios > 0,001, portanto, nenhuma linha é impressa. Em vez disso, você pode testá-lo da seguinte maneira:

awk '$11>0.00000001{print $0}' file

4 linhas devem ser impressas.

    
por 24.03.2015 / 08:03
3

Se você quiser uma solução em perl,

perl -lane 'print $_ if ($F[10] >0.001)' file 

-a divide automaticamente cada linha de entrada e armazena as colunas em uma matriz @F e $F[0] terá a primeira coluna.

    
por 24.03.2015 / 10:49