高速文字列解析の世界を読み始めた

僕のフィールドには一応Bioinformatics,Chemoinformaticsも含まれているので、文字列だけでどこまでいけるのかは非常に興味がある。まぁ物理法則を無視できなくなってくると文字列処理ではどうしようもないんだけどね。

3章のBWTまで読んだけど、3-4のBWTの性質と復元のところがさらっと流されていてさっぱり分からなかったので、検索したらわかりやすい説明を見つけた。

が、全体的には丁寧に解説されていて、分かりやすいと思うし、読んでて楽しい。

個人的にはSMILESみたいな構造情報を文字列にしたものをBWTで扱えないかなぁと考えている(chemoinformaticsに応用してみたい)。構造変換ルールにもイディオムみたいなのあるしね。MMPを高速に検索できても嬉しいだろうし、なんか使い道がありそうな気がするんだけど。

ゲノム言語ATGC

プログラムとして実行できるfasta形式のプログラミング言語を作ってみた。いちおうチューリング完全(なはず)。

>HELLO_WORLD
ccggaccgcg gggcaccgcc ggcggaccgc cgccggaccg cccggcgacc gccgccccac
cgcccgccca ccgcggggga ccgccgcccc accgccgccg gaccgccgcc ggaccgccgg
cgcaccgcgg cgggaaccga cacatccata ccacagaacc caaaa

これはatgcというコマンドで解釈して実行します。

$ bin/atgc hello_world.fasta 
Hello world!

ゲノム的にGCリッチなほうがいいだろうということで0と1にg,cをそれぞれ割り当てて数字を表現するようにしてる。exitコマンドには終止コドンを割り当てようかとも思ったが、なんとなくaaaにしてみた(polyA)。

しかも(というか当たり前だけど)blastでホモロジーサーチがかけられるし、multifastaにしておけばソース管理もできるうえに、データベース化してインデックスはっておけば、NCBIのツール群でコマンド一発で取り出せる。

ただ今回作ったHELLO_WORLDの配列はblastnだといい感じにヒットしなくて悲しかったので、blastxかけたらブラックコットンウッドからなんかひっかかった。

>gb|ABK94795.1|  unknown [Populus trichocarpa]
Length=229

 Score = 33.5 bits (75),  Expect = 5.9
 Identities = 14/21 (66%), Positives = 15/21 (71%), Gaps = 0/21 (0%)
 Frame = +1

Query  100  GPPPDRRRTAAGTDTSIPQNP  162
            GPPPDRRRT  GT  S P +P
Sbjct  209  GPPPDRRRTRQGTTKSEPASP  22

VMとかは特にいじってないのでEsotericの本を参照のこと。

ProductName Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~
原 悠
毎日コミュニケーションズ / ?円 ( 2008-12-20 )


VMを使った中間言語方式の強力さを理解した。

追記 2012.07.31

ソースをGitHubに移した

$ ./bin/atgc examples/shizuoka.fasta

                                                  **
                                                 **
                                              ****
                                              ******
                                              ******
                                            ********
                                              ****                  ******
                                            ********              ******      ************
                                          ********              **************************
                                     ****************            **********************
                              **********************        **********************
                          **************************      ************************
                        **************************          **********************
                        **********************************************************
                    ******************************************   ******************
                  ****************************************                ************
                  **************************************                ****************
                ************************************                    ****************
              **************************************               ********************
           **************************************                ************************
        ************************************                      ************************
        **************************************                    **********************
  ******************************************                    ********************
************************************************                  ********************
****      ********************************                        ********************
****     **************** **************                              ****************
**************************************                              **************
                 ****************************                                ******
                                          **********

気になる創薬関連書籍

2012年2月発刊の創薬関連書籍を見てたら面白そうなのを二冊見つけた。

バイオマーカーのマイニングの本は興味があるなぁ。

FBDDの本は事例が多めなんだけど、目新しさは感じられない。会社に買ってもらおうっと。

PyMOL v1.5をosx10.6.8に入れた

リリースしている安定版はインストールできなかったので、svnのtrunk(r3983)を入れた。それからbrewを使っているのでsetup.pyをちょっと変える必要があった。

/opt/localはmacports用の設定だと思うので/usr/X11に変更しないとGL/gl.hがないとかそんなエラーを吐くはず。

156         EXT = "/usr/X11"
157         inc_dirs=["ov/src",
158                   "layer0","layer1","layer2",
159                   "layer3","layer4","layer5",
160                   EXT+"/include",
161                   EXT+"/include/GL",
162                   EXT+"/include/freetype2",
163                   "modules/cealign/src",
164                   "modules/cealign/src/tnt",
165                   "generated/include",
166                   "generated/src",
167                   ]

それからPmwはソースをダウンロードしてきて入れた。なくても動くと思うが、import errorが出るので気持ち悪かったから後から入れておいた。

PythonでFasta fileを扱う

pyfastaってのがあった。

Biopythonでいいんじゃないかと思ったが、pyfastaのほうがメモリ効率がいいのかな。ゲノムを扱うような気がする。

あとでちゃんと見てみる。

PDBデータに化合物情報を追記して一つのファイルにしたい

mol形式(sdf形式)のデータだと化合物の区切りが$$$$なので、化合物を追加したい場合は何も考えずにファイルに追記するだけでいいのでよいですね。

PDB形式のデータにsdf形式の化合物情報をマージしたいんだけど、いい方法ないかなぁと調べてみたところmol2でOKだった。

両方mol2形式にして

cat compounds.mol2 >> protein_data.mol2

ってやればマージできる。

どういう用途を想定しているかっていうと

ある適当な部分構造(substructure)を持っている化合物の複合体結晶構造に、同じsubstructureをもつ別の化合物のコンフォマーを発生しつつ複合体のsubstructureの座標でalignする

つまり

  • obconformerでコンフォマーを発生
  • 複合体結晶構造のリガンドの部分構造を使ってobfitでコンフォマーをアライン
  • 一つのファイルにまとめてドッキングモデル完成

みたいなことをやりたかったわけです。こういうのはファイルが2つに分かれてるとユーザーのヒトとか使いにくいしどういう計算したのかわからなくなっちゃうからね。

ProductName Bioinformatics Programming Using Python
Mitchell L. Model
Oreilly & Associates Inc / 5119円 ( 2009-12-23 )


Half Sphere Exposureという指標

biopythonのMLに「蛋白内部に埋没している残基をどうやってけいさんすんの?」っていう質問が流れてて、HSEっていう指標が実装されているのを知った。

HSEってのはCalphaとCbetaのベクトルと直交する平面で球を切ってUpとDownの半球のことで、その中に他の残基のCalphaとCbetaが幾つあるか数えるという単純なCNっていう指標で溶媒接触表面積の代わりに使えるらしい。

この指標って例えば(潜在的な)リガンド結合部位の予測に使えたりするんだろうか?

PPI阻害剤なんかのターゲット部位予測に使えたら面白いかもねと思った。

ProductName Python for Bioinformatics (Chapman & Hall/CRC Mathematical & Computational Biology)
Sebastian Bassi
Chapman and Hall/CRC / 5857円 ( 2009-10-07 )


pubmedのidをdoiに変換する

pubmedのidからdoiを調べたい。

BeautifulSoupでXMLをパースするのが良いのだが、ソース見たらげんなりした(preってなんやねん)。というわけで、MEDLINE形式のデータから正規表現でdoiを抜き出してます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env python

import urllib2
import re,sys

def pmid2doi(pmid):
   url = "http://www.ncbi.nlm.nih.gov/pubmed/%s?dopt=MEDLINE" % pmid
   r = re.compile('AID - (10.\d+/.+?) \[doi\]')
   response = urllib2.urlopen(url)
   if response.code == 200:
       s = response.read()
       m = r.search(s)
       return m.group(1)
   else:
       return "error: %d" % response.code

if __name__ == '__main__':
   if len(sys.argv) == 2:
       print pmid2doi(sys.argv[1])
   else:
       print "usage: %s [pmid]" % sys.argv[0]

コマンドラインから使う場合には

$ pmid2doi.py 20053000
10.1021/ci900416a

ProductName Bioinformatics Programming Using Python
Mitchell L. Model
Oreilly & Associates Inc / 5119円 ( 2009-12-23 )


Rによるバイオインフォマティクスデータ解析 第2版 -Bioconductorを用いたゲノムスケールのデータマイニング

献本ありがとうございます

内容はバイオインフォマティクスに限らずに割と広い内容をカバーした感じで、クックブックと逆引きの中間的なスタイルと言えば良いのだろうか?

Rのインストールから基本的な操作は(大体どの本にもあるように)載っていて

データマイニングとしては

  • PCA
  • ICA
  • PLS
  • MDS
  • SPE
  • k-means,Fuzzy cmeans
  • spectral clustering
  • NMF
  • SOM
  • decision tree
  • kNN
  • SVM
  • RF
  • LASSO
  • MARS

がサンプルコードとともに簡潔に説明されている。

8章はバイオ系データの解析、チップとか。odesolveを利用したシミュレーションのサンプルもあって、SBMLRは面白そうだなぁと思った。メカニズムがどうなっているのかはモデルと実験系の不一致をよく突き詰めて考えることでしかきちんとした理解は得られないと思っている。

最後のほうの章は統合環境、データベースの連携、サーバー構築あたりの話。

あと、twitteRを使って生体組織名をつぶやくとその組織の図が返ってくるという例が載ってた。ちなみにRでもPitがあります。

芳泉閣でゆったりしませんか?

熱海でだらだらと温泉につかりながら、コード書いたり書かなかったりという場を設けました。キーワードはchemoinformatics,bioinformatics,R,Python,Rubyで製薬企業でコード書いているヒト多めです。僕はFlaskいじるかopenbabelのMCS実装かなんかをする予定です(でもいい日本酒がゲットできたら飲んでるかも)

  • 2010.10.29-30
  • 芳泉閣@熱海
  • 一泊二日で10500くらい

まだ何人か分の空きがありますので興味があれば私にメールかtwitterでメッセージを下さい。金曜から土曜にかけてという日程です。

今のとこの参加者

  • kzfm
  • zgmfx20a
  • bohohu
  • garuby
  • shirahakase
  • hiro_h