有機化合物・生成した分子の重複チェックはRDKitのSMILESで行いましょう!

分子設計・材料設計・プロセス設計・プロセス管理において、分子記述子・実験条件・合成条件・製造条件・評価条件・プロセス条件・プロセス変数などの特徴量 x と分子・材料の物性・活性・特性や製品の品質などの目的変数 y との間で数理モデル y = f(x) を構築し、構築したモデルに x の値を入力して y の値を予測したり、y が目標値となる x の値を設計したりします。

有機化合物を扱うデータ解析・機械学習において、今あるデータセットに同じ種類の分子が存在するかしないかを検討したいことがあります。複数のデータセットを統合してひとつのサンプル郡を作成する際に、分子に重複があったり、化学構造を生成した際に重複した分子が生成されてしまったりする可能性がありますので、データセットから唯一の分子を抽出したいといったことがあります。実は、こちらの課題で使用している水溶解度のデータセットにも、重複する分子が存在しています。

これであなたもデータサイエンティスト!?~Python入門のためのプログラミング課題と模範解答~(逐次更新)
データ化学工学研究室(金子研)では、新しく配属になった学生にいろいろなトレーニングをしています。その1つがPython言語のトレーニングです。化学構造を扱ったりデータ解析・機械学習をしたりするときに、Python言語を使うわけです。Pyth...

 

このような場合、的確に重複チェックをすることが重要です。分子の同一性をチェックする方法として、フィンガープリントを使用することも考えられますし、過去にはそういった方法が主流だったこともあるかと思います。しかし、フィンガープリントも万能ではなく、異なる分子構造でもフィンガープリントのビット列が同じになってしまうことも起こり得ます。フィンガープリントでは、厳密な分子構造の重複チェックは困難です。

分子構造のチェックには、Canonical SMILES を使用すると良いでしょう。SMILES であれば、SMILES が異なれば異なる分子構造として認識できます。もともとの SMILES は、開始する原子によって同じ分子構造でも必ずしも一意に定まるとは限りませんが、正規化された Canonical SMILES であれば、あるルールによって開始する原子が決められますので、同じ分子であれば同じ (Canonical) SMILES になります。もちろん、配置異性体のような、2次元構造は同じでも3次元構造が異なる場合は、SMILES では差異を判断できませんが、分子の種類を考える上では問題なく重複チェックが可能です。

ただし、SMILES にも問題点があります。正規化する(Canonical にする)方法、つまりそのルールやアルゴリズムが、データベースやソフトウェアによって異なるということです。ソフトウェアごとに、同じ分子の Canonical SMILES を計算した時に、異なる Canonical SMILES として出力されることもあります。

そこで、分子の重複チェックをする場合は、RDKit で計算される SMILES を使用すると良いでしょう。RDKit の SMILES は Canonical SMILES になっており、また RDKit で固定しておけば、後日に生成された分子に対して SMILES を計算しても、既存の分子との重複チェックをすることができます。

たとえば、上記の課題における水溶解度のデータセットで、上記の方法で重複チェックを行うと、重複した分子が見つかります。

ぜひ、有機化合物の解析をする際に分子の情報をチェックする場合には、RDKit の SMILES を用いましょう。

 

以上です。

質問やコメントなどありましたら、X, facebook, メールなどでご連絡いただけるとうれしいです。

タイトルとURLをコピーしました