1

De Novo魚ゲノムのアノテーション パイプラインの一部として、BLAST の e 値を比較して、それらが特定のしきい値よりも低いかどうかを確認する必要があります。

セマンティクスを正しくするために、最初に blast-output の他の列の 1 つを評価しました。これは次のように正常に動作します。

for f in FOLDER/*; do 
myVar=$(head -1 $f | awk '{print $4}') ;
if [[ $myVar -gt 50 ]]; then echo ..... ;done

$4 は、数値全体 (ヒットの長さなど) を含む BLAST 出力の列です。

ただし、スクリプトを e 値を使用するように変更しようとすると、科学的表記法などの解釈に問題が発生します...

私が好きなのはこれです:

for f in FOLDER/*; do 
myVar=$(head -1 $f | awk '{print $11}') ;
if [[ $myVar -gt 1.0e-10 ]]; then echo ..... ;done

ここで、$11 は各ヒットの e-value を指します。

これは、bash で面倒でない方法で行うことができますか?

4

1 に答える 1

2

ではawk、次のことが可能です。

for f in FOLDER/*; do awk '$11 < 1e-10 {print $11}' "$f"; done

これは、最初に変数を定義する必要はありません。

于 2012-11-02T13:32:51.487 に答える