e 值的过滤鼓风输出

e 值的过滤鼓风输出

我针对 SwissProt 数据库运行了 BlastX,评估阈值为 1e-3。

输出看起来像:

>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

现在,我想用 e 值(字段 11)> 0.001 来过滤这些 ID。我怎样才能做到这一点?

答案1

你可以简单地使用awk,我想第 11 个字段就是你想要的值:

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

awk如果陈述正确,则理解科学记数法并打印整行。

注意:从问题的输出来看,没有任何行符合 >0.001 的标准,因此不会打印任何行。相反,您可以按如下方式测试它:

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

应打印 4 行。

答案2

如果你想要 perl 的解决方案,

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

-a自动分割每个输入行并将列存储在数组中@F,并且$F[0]将具有第一列。

相关内容