2016-05-30 4 views
1

参照テキストファイルの情報に基づいてFASTAヘッダーを変更したいとします。だから私は2つのファイルを持っていると言う:(タブ区切り参照)2つのファイル(fastaとtxt)を比較します。一致する場合は、fastaヘッダーにtxtファイルの値を付加します。

FILE1.TXT

chr1:100-1000(+) ORF1_ORF2_ 
chr2:30-400(-)  ORF2_ 
chr3:50-4500(+) 
chr4:60-800(-)  ORF1_ 

file2.fasta

>chr1:100-1000(+) 
TTTTGAGAGGACTTCTCTGAGAGCTATGCTAGTCATCGAGGGGAAA 
>chr2:30-400(-) 
GGGGGGAGAGAGATCTCTGAGCTAGTCATCGTAGCTAGTCATGGGG 
>chr3:50-4500(+) 
ATGCGCGAGCGAGCGCGACGATCATCGTAGCTACAAAAAAAAAAAG 
>chr4:60-800(-) 
AGTCTAGCTATCGTAGCTGATCGTAGCTAGCTGATCGTAGCTAGTC 

私が識別するためにFILE1.TXTから$ 1使いたいですfile2.fastaの対応するヘッダー。一致するものがあれば、現在のヘッダーにfile1.txtから$ 2を付加します。だから、所望の出力は次のようになります。

>ORF1_ORF2_chr1:100-1000(+) 
TTTTGAGAGGACTTCTCTGAGAGCTATGCTAGTCATCGAGGGGAAA 
>ORF2_chr2:30-400(-) 
GGGGGGAGAGAGATCTCTGAGCTAGTCATCGTAGCTAGTCATGGGG 
>chr3:50-4500(+) 
ATGCGCGAGCGAGCGCGACGATCATCGTAGCTACAAAAAAAAAAAG 
>ORF1_chr4:60-800(-) 
AGTCTAGCTATCGTAGCTGATCGTAGCTAGCTGATCGTAGCTAGTC 

output.fasta

私は2つのファイルから列を比較するために、過去にはawkを使用しましたが、私はにテキストファイルを比較する方法についての困惑しますfastaファイル(カラムの代わりにヘッダとシーケンスがある)。どんな助けも素晴らしいだろう!

+1

これはなぜpythonとbashタグを持っていますか?無関係のタグを削除してください。 –

+0

ああああ。私はsedタグについて言及していませんでしたが、**あなたはsed **を使用していません。脳と一般的な礼儀を適用してください。 –

+0

私はawk解のみに質問を限定するつもりはありませんでした(同様の質問はsedなどで解決されているように見えます)。 – gizmo

答えて

3
$ awk 'NR==FNR{m[">"$1]=$2;next} {sub(/^>/,"&"m[$0])} 1' file1 file2 
>ORF1_ORF2_chr1:100-1000(+) 
TTTTGAGAGGACTTCTCTGAGAGCTATGCTAGTCATCGAGGGGAAA 
>ORF2_chr2:30-400(-) 
GGGGGGAGAGAGATCTCTGAGCTAGTCATCGTAGCTAGTCATGGGG 
>chr3:50-4500(+) 
ATGCGCGAGCGAGCGCGACGATCATCGTAGCTACAAAAAAAAAAAG 
>ORF1_chr4:60-800(-) 
AGTCTAGCTATCGTAGCTGATCGTAGCTAGCTGATCGTAGCTAGTC 

上記のファイル1の$ 2は、&を含むことはできません。

+0

これは、ヘッダーを破損する '>'の前に値(ORF1_など)を置くことを除いて、ほぼ完璧です。私はそれを変更しようとしています(後処理なし) – gizmo

+0

'>'の後に置くように修正しました。 –

+1

ありがとうございました:)別の愚かな質問に気付かないなら、 '^'は 'sub(/ ^> /'?それは同じことをしているようです – gizmo

関連する問題