いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【KNIME】化合物の類似度をランキングしてみたい。

・化合物の構造を、何らかの形で纏めたいと思った。

・一つのやり方として、機械的に類似度を算出し、似ている化合物は同じ性質をもつだろうと推測する手法があると思う。

・例えば、A、B、C、Dの4つの化合物がある場合、Aと一番似ている(A-B、A-C、A-Dのペアで類似度が最も高い)ものはどれか、Bと一番似ている(B-A、B-C、B-Dのペアで類似度が最も高い)ものはどれか、Cと(以下略)を実施し、提示してくれるワークフローをイメージする。このワークフローはあくまで提示してくれるだけで、本当に似ているかどうかは自分で構造を見て考える。

・化合物のFingerprintから類似度を算出して、ランキングするワークフローを組んでみた(以下)。

f:id:choron81:20220129221202p:plain

・工程は以下の通り。

①SDFファイルを読み込み。今回はchemblから適当に拾ってきた246化合物。

②情報を抽出。流れは以前の記事の通り。出力ポートは以下のテーブルを吐き出す。

f:id:choron81:20220129230106p:plain

f:id:choron81:20220129230139p:plain

③Fingerprintを算出。Fingerprintに関して知りたい場合は、以下の記事を参照。すごい。

future-chem.com

④類似度を算出。以下、設定画面と出力画面。これで、気になる化合物と最も似ていると推定される化合物が何でどれだけ似ているのかが分かる。

f:id:choron81:20220129223624p:plain

f:id:choron81:20220129230222p:plain

・一応今回の目的はこれで達成しているが、Referenceがchembl_idのままだとどれだけ似ているかイメージが付きにくくて仕方がないので、Referenceに構造をくっつける(下図。左のウィンドウはjoinerの設定)。入出力をともにFingerprint Similarityにするのがミソ。

f:id:choron81:20220129230451p:plain

・最後のcolumn filterの出力は以下(tanimotoで降順にしてある)。

f:id:choron81:20220129230735p:plain

・実は医薬品から諸々の条件でfilterしたデータセットだったのだが、似すぎている化合物が含まれるデータセットだったため、却ってわかりにくくなってしまった。。

 

終わり。