このファイルには最大500個のシーケンスがあり、そのうちのいくつかは同じ名前でコピーを1つにマージしたいと思います。
file 1
>1
aa
>2
cc
>3
tt
>4
atc
>2
tag
>1
gg
outfile
>1
aagg
>2
cctag
>3
tt
>4
atc
ベストアンサー1
これはAwkスクリプトです:
#!/usr/bin/awk -f
/^>/ { header = $0 }
!/^>/ { sequence[header] = sequence[header] $0 }
END {
for (head in sequence) {
printf("%s\n%s\n", head, sequence[head])
}
}
Fastaファイル全体をメモリに解析し、すべてのシーケンスデータを同じヘッダーに関連付けます。最後にデータを出力します。
このアプローチは次のとおりです。悪い大きなFastaファイルでは、ゲノムサイズファイルで完全に(メモリ不足)クラッシュが発生します。このような場合、より良いアプローチを見つけるには、解析されたデータを最後のリンクファイルに保存することをお勧めします。それでもこれを実装するつもりはありませんでした。
スクリプトを実行します。
$ awk -f ./script.awk file.fa
>1
aagg
>2
cctag
>3
tt
>4
atc