Knimeを使ってVirtual Libraryを作るWork Flow

Grüezi,

 

今回は久しぶりにLibraryっぽいお話を。

端的に言うと、こちらのWork Flowの解説です。

hub.knime.com

右側のDownload Work FlowからDownloadしてしまえばOK何ですが、ケミストにも使いやすいように少しだけカスタマイズします。

 

と言うわけで今回の内容はこちら。

Work Flow全体像

f:id:keetane:20200630203518p:plain

オリジナルでは先頭にFile readerのNodeを使っていたと思います。それでも全然OKです。最初に構造式を読み込みたいだけなので、SDF readerでもChemical Structure readerでも何でもいいかと思います。

それとオリジナルではTwo Component ReactionではSMARTSで化学反応を指定していました。しかし私はもちろんSMARTSの記述なんて調べるだけでも半日くらいかかります多分。と言うわけで、Enumerationする反応式もMarvin Sketchを使ってしまいます。

Marvin Sketch

フリーで使える構造式描画ソフトでお馴染みのMarvinですが、KnimeでもフリーでNodeが使えます。今回はこんな感じで実際に記載しましたが、File > Openから任意の構造式ファイルが読み込めます。SDFやSmilesはもちろん、 cdxも対応してるので、非常に優秀なNodeだと思います。数が多いときはSDF Readerとかの方が使いやすそうです。

 

f:id:keetane:20200630204014p:plain

 次がちょっと重要で、Change structure outputにチェックをいれてsdfを指定します。それと、output molecules as separate rowsを選択しておきます。この後のWork Flowで使うBuilding BlockはTable上ではバラバラにしておきたいからです。

 

f:id:keetane:20200630204307p:plain


RDKit Functional Group Filter

一つ前のRDKit from MoleculeはSDFファイルをRDKitに変換しているだけです。次に必要な構造をfilteringしておきます。オリジナルのまんまですが、Primary Amineは拾ってSecondary Amineは除くようになってます。下段ではカルボン酸を拾ってます。

そもそもBuilding Blockごとにファイルを用意して読み込んでおけば、ここのステップは省略出来ます。官能基を選抜出来るので、Work Flowの中に置いておくだけでも邪魔にはなりませんけどね。

 

f:id:keetane:20200630204634p:plain

 

Row sampling

Row samplingは、Building Blocks数が多い時に上限を設定してランダムサンプリングしてくれます。

f:id:keetane:20200630205304p:plain


 RDKit Two Component Reaction (Enumerate)

今回の要がこいつです。Reactants 1と2をソースにReactionに基づいた構造を発生させます。オリジナルではカルボン酸とアミンの縮合ですが、SMARTSで書いてあるので私にはさっぱり意味がわかりません...

f:id:keetane:20200630205350p:plain

そこでここでもオススメしたいのがMarvin SketchのNodeです。使い方はReaxysなんかと一緒です。まずは実施したい化学式をシンプルに描画した後、対応する原子をarrow toolでmappingしていきます。

f:id:keetane:20200630205651p:plain

今回はこんな感じになればOKです。

f:id:keetane:20200630205905p:plain

そしてOutput optionsを設定します。今回はStructure typeがRxnCellで、output as one row containing all molecules in oneをチェックします。Nodeの解説に書いてあるまんまです。

f:id:keetane:20200630205944p:plain

後はRDKit Canon SMILESまで全て実行します。こんな感じでoutputされればOKです。

f:id:keetane:20200630210319p:plain

Work Flowの最後にCDKのMolecular Properties Nodeとかを置いてあげると、rotatable bondやheavy atomなどdiscreptorを計算してくれます。

多段階反応も基本的には同じ流れで構築出来ます。仮にBuilding Blockを100個ずつ揃えた3成分連結反応なら、100*100*100=1,000,000化合物があっという間に出来上がりです。こいつをVirtual Screeningに流したらVirtual Hitが見つかってくるわけですが、現実にAffinityがあったり活性を示すかは全然別の話なので工夫が必要になってくるわけです。

 

今までSchrödingerのMaestroでこれをやってましたが、Ligprepなしの2次元で作るだけならKnimeの方が軽くて早いですね。