【W3】部分構造による化合物フィルタリング_05_Step2_デバッグ編
【本パート(W3)の目的】
いくつか私たちのスクリーニングライブラリーに含めたくない部分構造があります。このトークトリアルでは、そのような好ましくない部分構造の様々なタイプを学び、そしてRDKitを使ってそれらの部分構造を見つけ、ハイライトする方法を学びます。
上記はPython版のT3の説明ですが、W3の目的も同じです。
【化合物部分構造でのフィルタリング学習中】
れまでPAINSとBRENKでのフィルタリングを体験しました。
特に前回は忌避構造リスト(例:BRENK)をカスタマイズして化合物選抜する手法を学びました。
そして
①RDKit Molecule Catalog Filterノードに既存のBRENKフィルター
②RDKit Molecule Substructure Filterノードを用いたカスタムでのフィルタリング
を比較してみると
デモデータでの実行結果に1化合物のずれがあったことまで紹介しました。
もう基本技術は学べたので、Step3に進めたい方は今回はスキップして頂いて大丈夫です。
今回は余談として、より実践的な不具合発生時の調査と改良をどうやるかの一例を共有します。現実にはよくあることですよね。もし興味があったらどうぞ。
【BRENKフィルターの実行結果比較】
Step2の上部では既存のRDKit Molecule Catalog Filterノードに収載されているBrenkらの忌避構造リストを用いてフィルタリングしました。
下部はBy handすなわち自分の手で忌避構造リストを作成して部分構造検索しました。
では上図の2種のフィルタリング結果を比較してみます。ノードの性質上、フィルターされた化合物の出力ポートが
RDKit Molecule Catalog Filterノードは下のポート、
RDKit Molecule Substructure Filterノードは上のポート
なのでその二つをReference Row Splitterで繋いでみます。
ノードの技術説明はやはりまっきーさんで間違いない。
設定は
結果は
まず上のポート
2248行は一致してます。
で、残りの1行が下のポートに出ています。
どのルールでヒットした化合物かを見ると「リン原子」
すなわちStep2上部のRDKit Molecule Catalog Filterノードではリン原子を含むのでフィルターされています。なぜ下部のworkflowではヒットしないのか、その鍵は検索式にあるだろうと考えて検索式の定義データを見るために、最初のCSV Readerの出力を確認してみます。
【原因の究明】
実はRow76がおかしな感じになってます。
smartカラムにはphthalimideのSMARTSだけが入ってます。
これ、もともとのcsvファイルを確認する必要がありそうです。
そこでcsvファイルのありかを見るためにCSV Readerの設定を確認してみます。
相対パスだった。中級者にはおすすめですが、初心者にはいったいどこにあるのかわかりにくいですよね。
こういう時はファイル名だけでWindows検索も有用です。
これでどこにあるのかがわかったので、メモ帳などテキストエディタでファイルを開いて中身を見てみましょう。
【定義ファイルの修正と結果確認】
今回のcsvファイルは、スペースでルール名とSMARTSを切り分け、リターンで行を変えているはずです。なので下記のようにすれば修正できますね。ちなみに私は念のため別名で保存してから編集しました。
このように、csv側で適切にカスタマイズすれば、任意の検索式を加えたり詳細な場合分けをしたり出来ると言う実例でもあります。
一応訂正後の実行結果を見てみましょうか。
CSV Readerは105行へと修正前から1行増えて、Row76でリン原子を定義できています。
RDKit Molecule Substructure Filterノードを用いたカスタムでのフィルタリング結果も、修正前から1行増えて2349化合物がヒットし、Row2992の含リン化合物も加わっていました。
我ながら細かいなぁとは思ったのですが、もし参考になればと共有しました。
次回は本題に戻ってStep3へ進めます。