YangSolidSolution featurizer raising 'divide by zero encountered in double_scalars'

Hello everyone. I’m observing the exception ‘divide by zero encountered in double_scalars’ while running the YangSolidSolution featurizer.
In the method compute_omega(…), the mixing enthalpy can add up to 0, therefore, this error is triggered while calculating (mean_Tm * entropy / enthalpy).

In order to avoid this exception, I simply changed the end of the method from:

return abs(mean_Tm * entropy / enthalpy)

``

to:

if enthalpy == 0:
return 0
else:
return abs(mean_Tm * entropy / enthalpy)

``

Here is a list of compounds that were causing the error (i.e. that have enthalpy --> 0)

Pm1 Ho3
Sm1 Tm3
Sm3 Y1
Sm3 Er1
Sm3 Ho1
La3 Dy1
Pr1 Tm3
Pr1 Lu3
Hf1 Zr1
Ce1 Y3
La1 Tb3
Dy3 Y1
Nd1 Tm3
Lu1 Th3
Ho3 Lu1
Pr1 Ho3
Zn1 Ga3
Pd1 Au3
Pr1 Sm3
Sm1 Lu3
Nd1 Y3
Nd1 Dy3
Tb1 Y3
Pr3 Er1
Nd3 Sm1
Pr1 Dy3
Cd2 Hg1
Sm1 Tm3
Sm1 Y3
Cd3 In1
Cd1 Hg2
Co1 Sn1
Zr1 Ti2
Co1 Sn2
Tl1 Cd1 Rh2

Many thanks,

Thanks for pointing this out!

I have made a change to the code to avoid the “divide by zero” warning: https://github.com/hackingmaterials/matminer/pull/407

Rather than returning “0” in the case of enthalpy == 0, I use a very small positive value of enthalpy to better emulate the limit of Omega as enthalpy approaches 0 (positive infinity).

Best,

Logan

PS. If you’d like to make these changes yourself, I would be happy to help you with the GitHub pull request system.

···

From: camilofs
Sent: Thursday, August 8, 2019 5:35 PM
To: matminer
Subject: YangSolidSolution featurizer raising ‘divide by zero encountered indouble_scalars’

Hello everyone. I’m observing the exception ‘divide by zero encountered in double_scalars’ while running the YangSolidSolution featurizer.
In the method compute_omega(…), the mixing enthalpy can add up to 0, therefore, this error is triggered while calculating (mean_Tm * entropy / enthalpy).

In order to avoid this exception, I simply changed the end of the method from:

return abs(mean_Tm * entropy / enthalpy)

to:

if enthalpy == 0:
return 0
else:
return abs(mean_Tm * entropy / enthalpy)

Here is a list of compounds that were causing the error (i.e. that have enthalpy --> 0)

Pm1 Ho3
Sm1 Tm3
Sm3 Y1
Sm3 Er1
Sm3 Ho1
La3 Dy1
Pr1 Tm3
Pr1 Lu3
Hf1 Zr1
Ce1 Y3
La1 Tb3
Dy3 Y1
Nd1 Tm3
Lu1 Th3
Ho3 Lu1
Pr1 Ho3
Zn1 Ga3
Pd1 Au3
Pr1 Sm3
Sm1 Lu3
Nd1 Y3
Nd1 Dy3
Tb1 Y3
Pr3 Er1
Nd3 Sm1
Pr1 Dy3
Cd2 Hg1
Sm1 Tm3
Sm1 Y3
Cd3 In1
Cd1 Hg2
Co1 Sn1
Zr1 Ti2
Co1 Sn2
Tl1 Cd1 Rh2

Many thanks,


You received this message because you are subscribed to the Google Groups “matminer” group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To view this discussion on the web visit https://groups.google.com/d/msgid/matminer/2c876d9c-cc12-4b37-b230-d45659ba8b23%40googlegroups.com.

Hi Logan,

I agree with the modification. A minimum enthalpy of 1e-06 will produce a better result than returning 0.
Thank you for requesting the pull on GitHub. I’m new to GitHub, but I’ll be reading about it and try to request the next pull by myself.

Best,

···

Em seg, 12 de ago de 2019 às 13:16, Logan Ward [email protected] escreveu:

Thanks for pointing this out!

I have made a change to the code to avoid the “divide by zero” warning: https://github.com/hackingmaterials/matminer/pull/407

Rather than returning “0” in the case of enthalpy == 0, I use a very small positive value of enthalpy to better emulate the limit of Omega as enthalpy approaches 0 (positive infinity).

Best,

Logan

PS. If you’d like to make these changes yourself, I would be happy to help you with the GitHub pull request system.

From: camilofs
Sent: Thursday, August 8, 2019 5:35 PM
To: matminer
Subject: YangSolidSolution featurizer raising ‘divide by zero encountered indouble_scalars’

Hello everyone. I’m observing the exception ‘divide by zero encountered in double_scalars’ while running the YangSolidSolution featurizer.
In the method compute_omega(…), the mixing enthalpy can add up to 0, therefore, this error is triggered while calculating (mean_Tm * entropy / enthalpy).

In order to avoid this exception, I simply changed the end of the method from:

return abs(mean_Tm * entropy / enthalpy)

to:

if enthalpy == 0:
return 0
else:
return abs(mean_Tm * entropy / enthalpy)

Here is a list of compounds that were causing the error (i.e. that have enthalpy --> 0)

Pm1 Ho3
Sm1 Tm3
Sm3 Y1
Sm3 Er1
Sm3 Ho1
La3 Dy1
Pr1 Tm3
Pr1 Lu3
Hf1 Zr1
Ce1 Y3
La1 Tb3
Dy3 Y1
Nd1 Tm3
Lu1 Th3
Ho3 Lu1
Pr1 Ho3
Zn1 Ga3
Pd1 Au3
Pr1 Sm3
Sm1 Lu3
Nd1 Y3
Nd1 Dy3
Tb1 Y3
Pr3 Er1
Nd3 Sm1
Pr1 Dy3
Cd2 Hg1
Sm1 Tm3
Sm1 Y3
Cd3 In1
Cd1 Hg2
Co1 Sn1
Zr1 Ti2
Co1 Sn2
Tl1 Cd1 Rh2

Many thanks,


You received this message because you are subscribed to the Google Groups “matminer” group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To view this discussion on the web visit https://groups.google.com/d/msgid/matminer/2c876d9c-cc12-4b37-b230-d45659ba8b23%40googlegroups.com.