Drkcore

04 08 2012 chemoinformatics cytoscape Tweet

散布図を密度の情報からグラフに変換する

複数のパラメータが相互作用しあっている状態で最適なパラメーターセットを探索する際に、あまり精度の高いフィードバックが得られないと最適解の近傍の密度が高くなり、さらに準最適解があちこちに散らばるようなことがおこる。

それはPCAとかICAで空間を適当にとってあげることが出来て、特に第一主成分と第二主成分を平面にとってプロットしてやると、散布図として表現できる。

さてこれを、グラフにしてやればCytoscapeで扱えて便利だろうと思ったことがあったのでやり方を考えてみた。

アルゴリズム

  1. 任意の点から非類似度Tの距離にある点の数をすべての点について数える
  2. 最も点を含むものが多い点をrootとし、含まれる点との間で親子関係をつくる
  3. 2の点を除いて1を行い新たな親子を決める。その際に親から非類似度T内にある既存の子のうち一番近いものを結ぶ(階層ができる)
  4. これをすべての点がなくなるまで繰り返す。

例

以下の様な散布図を考える。

nnplot1

総当りで近傍の数をかぞえると、次の5つの点が含まれる空間が一番密度が高いことが分かる。

nnplot2

中心と含まれる点に対して親子関係をつくる(P1, C1-C4)。

nnplot3

これらを除いて、近傍の数をかぞえると次に密度が高いのが右側で3つの点を含んでいる。

nnplot4

これらに関しても先ほどと同様に親子関係をつくっておくが、新しくできた親に関しては既存の子とつなげられないかをチェックする。

するとC2 -> P2をつなげるのが良いことがわかる。

nnplot5

同様に行う(図の左側)。

nnplot6

これもC4 -> P3とつなげることができる。

nnplot7

最終的に全部つなげることができた。

nnplot8

実際に階層型の木を描くと以下のようになる。

nnplot

単純だけど、全体の構造を保ったままCytoscapeで眺められていいかなーと思うんだけど。

もっといい方法あったら教えてもらえると嬉しいです。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021