化合物の類似性でネットワークを構築してCytoscapeで見てみる

chemoinformaticsでもネットワークアナリシスは重要だと思う。今はマイナーだけど今後精力的に研究されんじゃないかなぁと。

cytoscape

pybel使うとシミラリティベースのネットワークは簡単に作れる。

import pybel

mols = list(pybel.readfile("sdf", "pc_sample.sdf"))
fps = [x.calcfp() for x in mols] 

for i in range(len(fps)):
    ids = []
    for j in range(i,len(fps)): 
        if (fps[i] | fps[j]) > 0.5 and i != j: 
            ids.append(mols[j].title)
    print "%s %s %s" % (mols[i].title, "sim", " ".join(ids))

SIF(simple interaction format)形式なので、拡張子sifでcytoscapeに読み込まさせればOK。

あとでケモインフォクックブックにも載せておこう。

pubchemのクラスタリングの結果をcytoscapeで見てみた

pubchemはクラスタリングの結果をgml形式でダウンロードできるので、それをcytoscapeで読み込んで解析することができる。早速データをとってくる。benzothioleで検索すると大体3000件くらいヒットするのでこれをクラスタリングしたものをgmlでダウンロードして、cytoscapeで読み込んでみた。

pubchem

適当に描かせて眺めてみる。なんかネットワークっぽくなってますの。

cytoscape

さらに、ズームしてみる。

cytoscape zoom

うーん、クラスタリングの結果を見てもちょっと面白くない。むしろ部分構造(MCS:Maximum Common Substructure)から構築したネットワークのほうがわかりやすいだろうな。

あとは、合成の時系列でネットワークをつくればいいと思うが、その場合、元々参考にした化合物の構造への情報をケミストから聞かなきゃいけないのでちょっとめんどいなぁ。

ということはpatentか?あれは先行技術の特許番号ついてたはずだからあれでネットワーク構築すればいいのか。これだったら、描いてみておもしろそう。

TODO: 奇麗な絵が描けるようにcydocなどを参考にちょっと勉強しとく