構造のクラスタリング

ラボで、超多次元データのクラスタリングとか分布の比較といったことが研究されている。対象となるデータは、多チャンネルFACS(10マーカx1万細胞とか)とか LC/MS だったりするわけだが、私にとっては蛋白質構造が一番親しみ深いので、そこでの手法を調べてみる。蛋白質は原子数が数千〜数百万であり、1つの原子につき座標(x, y, z)の三成分があるので、次元としても数千〜数百万のオーダである。

Protein Data Bank にある構造は、本日の更新でも高々 92884 件である。一方、分子動力学法 MD の軌跡 trajectory は、1つの run だけでそれ以上となりうる。蛋白質の折りたたみやコンフォメーション変化を研究する際は、長時間の run において出現した subpopulation (反応中間体や substate と考えられる)を抽出し、それらの間の遷移行列や反応速度を求めることになる。

簡単な系では、人間が直感的に設定した指標(注目した二残基の距離や、注目残基の rotamer など)をもとに一次元の反応座標系を考えることができる。一方、登場する状態が複雑な場合は、クラスタリングによって subpopulation を定義しなければならない。

あの有名な Anton による折りたたみシミュレーションの論文("How fast-folding proteins fold" Science(2011)) の Supplementary Method を読むと、RMSD を指標にクラスタリングしたと書いてある。そこから引用されているのは、"Peptide Folding: When Simulation Meets Experiment" ACIE(1999) であった*1。読んでみるとアルゴリズムは単純。

  1. cutoff を決める。
  2. 各点について、自分から cutoff 以内の距離にある周辺点を列挙する
  3. もっとも周辺点の多い点を新しい cluster の中心と定め、周辺点をすべてそこに所属させる
  4. この cluster を取り除く
  5. ステップ 3 から繰り返す

k-means 法などと違い、クラスタの初期点を与える必要がないのが特徴か。クラスタ数を最初に与える必要はないが、cutoff の決め方次第で結果が大きく変わりそうだ。この方法、何か名前ついていたっけ?

#Rでやってみる

*1:ちなみにこの論文の次のページは、あの K. C. Nicolaou による vancomycin の全合成である!