1

--tblout オプションを使用して表形式の出力形式を要求する FASTA ファイルを使用して hmmscan 分析を実行します。

ファイルは次のようになります (これは単なるフォーマットの例です)

targetname accession queryname    accession  e-value score bias
x_x_x      PFyyyy.y  ContigXXX_0  -          x.xe-xx yy.y  x.x
x          PFyyyy.yy COntigXXX_1  -          xe-x    yy.y  x.x
x_x        PFyyyy.y  COntigXXX_2  -          xe-xx    y.y  x.x
x_x_x      PFyyyy.yy COntigXXX_3  -          x.xe-x  yy.y  x.x
.
..

ターゲット名の例: Methyltransf または Dimer_tnp_hAT または Nucleotide_trans

アクセッションの例: PF13847.1 または PF03407.11 または PF01958.13。

クエリ名の例: Contig244_1 または Contig44245_3 または Contig12345_6

ここで、2 番目の登録列は次のとおりです。 -

e.value の例: 4.0e-10 または 3.5e-15 など。

スコアとバイアスは次の形式の数値です: xx.x

私がやりたいのは、タンパク質ドメインへの重要なヒットを持つすべての ContigXXX_X がある queryname 列をカットすることです。

この後、それらを並べ替えて、各コンティグの最初の出現のみを保持し、ファイルを BlastP および BlastX からの結果と比較できます (ここで、nr にヒットしたコンティグのリストを既に取得できました)。データベース)

だから私の質問は次のとおりです。すべてのコンティグがある列をどのように切り取ることができますか? grep、sed、cut コマンドを試してみましたが、まだ適切なコマンドが見つかりません。

私は Unix 言語が初めてで、まだ学んでいるので、すべての提案は本当に感謝しています。

私の質問が明確でない場合は、教えてください。変更できます。

4

2 に答える 2

1

表面的には、GNUcutをお持ちの場合は、次を使用できます。

cut -i -f 3 tblout-file

この-iオプションは、1 つまたは複数の空白がフィールド区切り文字として使用されることを意味します (これがないと、各空白がフィールド区切り文字になります)。の非 GNU バージョンはcut通常、 をサポートしていません-i。(GNU かどうかはcutを実行することで確認できcut --versionます。意味のあるバージョン番号が表示された場合は (おそらく) GNU であり、無効なオプション メッセージが表示された場合はそうではありません。)

それはあなたにとってうまくいきませんか?明らかに、作成したファイルの名前を に置き換えますtblout-file

問題がある場合 ( GNU がないなど)、代わりにcut次のことを検討してください。awk

awk '{print $3}' tblout-file

これらは両方とも、出力の最初の行も含みます。最初の行を削除する方法は複数あります。

cut -i -f 3 tblout-file | sed 1d
awk 'NR>1 { print $3 }' tblout-file
于 2012-11-26T05:57:08.777 に答える
1
awk 'NR!=1{print $3}' your_file

また

perl -F -lane 'if($.!=1){print $F[2]}' your_file
于 2012-11-26T06:01:18.807 に答える