2

ID の1 つのids.fileを含むテキスト ファイル (という名前)を読み取り、特別にフォーマットされた 2 番目のテキスト ファイル (この例では "fasta"という名前) を検索するのに素晴らしく機能する既存の perl ワンライナー (Edwards lab から) があります。バイオインフォマティクスを知っている人向けの形式) で、最初のファイルの ID に一致するシーケンスを返します。このスクリプトを拡張して、次の 2 つのことを追加したいと考えていました。fasta.file

  1. 現在の perl ワンライナーは、に 1 列のデータが含まれている場合にのみ機能するようです。ids.file2 つの列 (スペースで区切られている) を含むファイルで動作し、データの 2 番目の列 (まあ、実際にはデータの任意の列) で動作するようにしたいと思いますが、誰かが2番目の列を使用して例を挙げることができます)
  2. 検索の出力から返された結果を、新しいファイルだけでなく、3 番目の列に追加したいと考えています。

誰かが親切に例を提供してくれたが、これらのいずれかに取り組む時間や傾向しかない場合は、#2 を解決することをお勧めします - awk のみを使用する for ループで #1 を解決することに近づいています。 2 番目の列の Perl コードを使用してください。まだ取得していませんが、近いので、#2 は私には難しいように思えます。

perl のワンライナーは次のとおりです。

perl -ne 'if(/^>(\S+)/){$c=$i{$1}}$c?print:chomp;$i{$_}=1 if @ARGV' ids.file fasta.file

私はあなたが与えることができる助けに感謝します!

4

1 に答える 1

2

よくわかりませんが、これでうまくいきますか?

perl -ne 'chomp; s/^>(\S+).*/$c=$i{$1}/e; print if $c; 
    $i{(/^\S*\s(\S*)$/)[0]}="$_ " if @ARGV' 
  ids.file fasta.file
于 2013-01-08T00:13:51.973 に答える