Help us understand the problem. What is going on with this article?

mordredで計算エラーとなるパターンを調べる

はじめに

mordredで計算エラーとなるパターンをそろそろ整理しようと思う。

環境

  • python 3.6
  • morded 1.1.2

調査方法

MoleculeNetで使われているESOLのデータ(https://s3-us-west-1.amazonaws.com/deepchem.io/datasets/molnet_publish/ESOL.zip) の全1128件に対しmordredの記述子計算を行い、例外が発生した場合の全てのエラーメッセージを列挙する。またそのエラーが発生する代表的な記述子、化合物を列挙し、原因を考察する。なお、3次元記述子も計算対象にしたが、化合物の3次元立ち上げは面倒臭かったので実施しなかった。

結果

以下、エラーメッセージ毎に結果を記載する。
なお、mordredの記述子一覧は、https://mordred-descriptor.github.io/documentation/master/descriptors.html を参照。

1. divide by zero encountered in log

発生する記述子例

VR3_A, VR3_D, VR3_Dt 等多数

発生理由の考察

原子が1つしかないとか、水素を除く結合が1つもない等のイレギュラー化合物のため、0にlogを適用しようとしたということではないだろうか。

発生する化合物例

以下はVR3_Dzmで発生した化合物の例

smiles strucure
C divide by zero encountered in log_VR3_Dzm_C.png

2. float division by zero

発生する記述子例

  • MDEC, MDEN, MDEO, Kier, AXpで始まるもの等多数

発生理由の考察

発生理由、発生条件は良くわからないが、0除算が発生したためだろう。

発生する化合物例

以下AXp-2dでエラーとなった化合物の例

smiles strucure
CO float division by zero_AXp-2d_CO.png

3. invalid value encountered in double_scalars

発生する記述子例

  • AAT, GATS, MATSで始まるもの等多数。

発生理由の考察

これもよくわからないが桁あふれ等のためdouble型で表現できなくなったとか?

発生する化合物例

以下は、MATS8cでエラーとなった化合物の例である。

smiles strucure
c1ccsc1 invalid value encountered in double_scalars_MATS8c_c1ccsc1.png

4.max() arg is an empty sequence

発生する記述子例

  • MAXから始まる多数の記述子

発生理由の考察

おそらくある原子タイプの最大値を計算しようとしたところ、その原子タイプ自体が含まれてなかったため最大が計算できなかったということであろう。

発生する化合物例

以下はMAXsNH2でエラーとなる化合物の例である。

smiles strucure
N#CC(OC1OC(COC2OC(CO)C(O)C(O)C2O)C(O)C(O)C1O)c1ccccc1 max() arg is an empty sequence_MAXsNH2_N#CC(OC1OC(COC2OC(CO)C(O)C(O)C2O)C(O)C(O)C1O)c1ccccc1.png

5. min() arg is an empty sequence

発生する記述子例

  • MINから始まる多数の記述子

発生理由の考察、発生する化合物例

maxの場合と同様と思われるため省略

6. missing 3D coordinate

発生する記述子例

  • DPSA1等、三次元記述子

発生理由の考察

単に三次元座標のないmolに対して三次元座標が必要な記述子を適用しようとした場合に発生すると思われる。

7. missing intrinsic state for ['C']

発生する記述子例

  • AATS, GATS, MATS, BCUTs等で始まる多数の記述子等

発生理由の考察

これも良くわからないが、結合がないため、何かの計算ができない?

発生する化合物例

以下はMATS3sでエラーとなる化合物の例である。

smiles strucure
C missing intrinsic state for ['C']_AATS0s_C.png

8. single atom

発生する記述子例

  • AETA_eta_B, AETA_eta_BR_C, ETA_eta_B, ETA_eta_BR

発生理由の考察

これも良くわからないが、原子が1つしかないため、計算ができないということだろう。

発生する化合物例

以下はAETAでエラーとなる化合物の例である。

smiles strucure
C missing intrinsic state for ['C']_AATS0s_C.png

9. some properties less then or equal to 0

発生する記述子例

  • AXp-0d, Xp-0d

発生理由の考察

これも良くわからないが、原子が1つしかないため、計算ができないということだろう(このパターンが多いなあ)

発生する化合物例

以下はAXp-0dでエラーとなる化合物の例である。

smiles strucure
C missing intrinsic state for ['C']_AATS0s_C.png

10. there are no sp3 and sp2 carbons_HybRatio

発生する記述子例

  • HybRatio

発生理由の考察

計算に必要となるsp3, sp2タイプの構造が含まれていなかったということだろう。

発生する化合物例

以下、HybRatioでエラーとなる化合物の例である。絵が変(笑)

smiles strucure
C#C there are no sp3 and sp2 carbons_HybRatio_C#C.png

11. unknown atom type

発生する記述子例

  • Vabc

発生する化合物例

smiles strucure
CCCCCCCI unknown atom type_Vabc_CCCCCCCI.png

発生理由の考察

これは簡単。対応していない原子が含まれていたということだろう。

おわりに

途中から同じパターンの連続となったので、もっとうまくまとめれそうだが、時間がかかったのでこの辺で終了する。
とは言え、1度洗い出しておきたかったので、胸のつかえがとれ少しすっきりした。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away