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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329816/dcb62d5b-3c9e-7be7-34ee-c56da136539d.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329816/fa8a5d1b-e48f-9332-615e-265938a7d6c2.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329816/ec0d2a5e-728c-3bce-d913-ed35d0c1ab66.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329816/e9d816af-5af6-5622-a698-b1ab0a9ebc72.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329816/6dedb815-1fef-c3e9-2bf7-2c988554f7df.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329816/6dedb815-1fef-c3e9-2bf7-2c988554f7df.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329816/6dedb815-1fef-c3e9-2bf7-2c988554f7df.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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329816/bdb832de-3730-7302-5176-87723cc48739.png)|


##11. unknown atom type
####発生する記述子例
- Vabc

####発生する化合物例

| smiles      |strucure |
|:-----------------|:------------------|
|CCCCCCCI|![unknown atom type_Vabc_CCCCCCCI.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329816/a62d405d-ac94-f5e6-6115-9ebe0f8dd73b.png)|
####発生理由の考察
これは簡単。対応していない原子が含まれていたということだろう。


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