blast2html
paintBLASTとか知っているだろうか?かつてNCBIのウェブサイトでBLAST検索した時に上部に、queryのどの部分にDB中の配列がマッチしたかを可視化してくれるクリッカブルイメージがあったと思うのだが、それを生成するためのツールがそれだったと思う。 それを使ってBLASTの結果を可視化したいと思い、探したのだが、どうも維持されていない。いろいろ検索して行きあたったのがpythonのツールでblast2html。localBLASTの結果(xml形式)をHTMLに変換して出力し、paintBLASTのような結果も表示くれるものらしい。というわけで早速
[shell] blastn -query query.fa -db db.fa -outfmt 5 > hoge.xml [/shell]
としてXML形式(-outfmt 5はXML形式出力の暗号)の(local)BLASTの結果を用意して
[shell] python blast2html.py -i hoge.xml -o hoge.html [/shell]
で実行してみるとエラーが。
UnicodeEncodeError: 'ascii' codec can't encode character u'u2013' in position 9337: ordinal not in range(128)
とおっしゃってコケる。 どうも有名なpython2系の日本語環境によくあるエラーらしくて、いろいろ調べていたら、環境変数PYTHONIOENCODINGにutf-8をセットすればいいらしいということだったので、
[shell] export PYTHONIOENCODING=utf-8 [/shell]
としたらあっさりと動いた。 そして、このhoge.htmlをウェブブラウザで開くと…望みのものが得られた!
パイソニスタなフォロワーさんにも、以下のアドバイスを頂いた。
python2だと↓こんな感じのを頭につけると文字列の処理で悩まないで済む事が多いかも [python] # -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') [/python]
ありがとうございました。