蛋白配列や核酸配列の冗長性を除きたいときには、blastclustを使うとよいらしい。
blastclust -i infile -o outfile -p F -L .9 -b T -S 95
上の例だと、infileの配列を、配列の90%以上の領域で95%以上の同一性を持つものをクラスタリングして出力します。
でも、実際に検索したり、配列いじくったりする側からすると、最初に配列リストありきみたいな状況は稀で、大概次のような処理フローになると思うから、コレだけだとイマイチ使えん。
- NR,NT,SNP,ESTなんかにblast検索
- ヒットしたIDから配列リストをゲット
- マルチプルアライメント or クラスタリング
blastallでfastalistを吐くか、id-listを吐けば blastall | fastacmd が出来るから、
blastall -p blastn -d nt -i XXX.seq -e 1e-20 | blastclust -o outfile -p F -L .9 -b T -S 95
こんな感じでワンライナーになって使いやすいかな。いまのとこ、同じことやる自前のスクリプトのほうが取り回しがらくだ。
ん?
1をタブ区切りで出力させて、fastacmdで2を実行するコマンド作っておけばワンライナーへの道は開けるか?