CompPhysVienna / n2p2

n2p2 - A Neural Network Potential Package
https://compphysvienna.github.io/n2p2/
GNU General Public License v3.0
217 stars 82 forks source link

Compatibility of RuNNer potential with n2p2 #143

Closed philippmisof closed 2 years ago

philippmisof commented 2 years ago

Originally posted by @omaraek in https://github.com/CompPhysVienna/n2p2/issues/122#issuecomment-973904568

I see here that you were capable of using an old RuNNer potential with the n2p2 package. I would like to ask you how did you mange to reshape the the scaling.data and weights.??.data files form the RuNNer format to n2p2 format? Is there any tool available to this transformation safely?

Also, I would like to ask you how did you face the fact that in RuNNer the cutoff_type was not mandatory while in n2p2 it is?

example from the weights.??.data that I have: 0.7687375104 5.7056093262 -4.5217175115 1.0616692096 4.5810339440

while what n2p2 wants: ################################################## 1 2 3 4 5 6 7 connection t index l_s n_s l_e n_e ################################################## -6.2446602207005186E-01 a 1 0 1 1 1 7.9109168478070069E-01 a 2 0 1 1 2 5.0258947941284748E-01 a 3 0 1 1 3 5.5154910097820120E-01 a 4 0 1 1 4 1.4505158314343458E+00 a 5 0 1 1 5

example from the scaling.data that I have: 1 1 0.000000000 9.650448658 2.976205229 1 2 0.000000000 7.281561717 3.278659279 1 3 0.000000000 7.368214687 1.927503271 1 4 0.000000000 5.162462777 2.214860272 1 5 0.000000000 4.368753732 0.841284349

while what n2p2 wants: ######################################################################################################################### 1 2 3 4 5 6 e_index sf_index sf_min sf_max sf_mean sf_sigma ######################################################################################################################### 1 1 9.1739161189824411E-08 7.0593095050533450E-01 2.2372649929284196E-02 9.6379208796011293E-02 1 2 2.6433999906765265E-01 2.4749666370750676E+00 1.0378805142792313E+00 1.9413782463770093E-01 1 3 1.5504686427401054E-05 1.4168627312588329E+00 5.5254915214857578E-02 2.1495058826125538E-01 1 4 1.4086411910634238E+00 4.7388215758712082E+00 3.1031877925923803E+00 3.5864448236496921E-01 1 5 9.8043626772015909E-04 1.9535901883323099E+00 1.1429456309160095E-01 2.2901461288065855E-01

Thanks in advance. Best regards, Omar

philippmisof commented 2 years ago

Sorry for the late reply. So basically you can assume that we try to keep n2p2 compatible with RuNNer.

  1. Regarding the weights.??????.data files it is true that n2p2 produces them with additional columns. However those are not read by n2p2 when it sets up the NN (neural network), it is just additional information which can be used for debugging or other things one might do with the NN.
  2. In the scaling.data file of n2p2 you will notice that there is one extra column. This column (sf_sigma) is also optional in favor of backward compatibility. So basically your scaling.data from RuNNer should be accepted by n2p2 (at least if there are no other problems).
  3. It is true that in n2p2 the cutoff_type is not optional compared to RuNNer but there is an easy work around: If you look into the documentation of RuNNer you will see that if no cutoff_type is given it defaults to 1 which corresponds to the cosine variant. This cutoff is also implemented in n2p2 with the same number. This means if you have a RuNNer configuration without any specified cutoff_type, just add cutoff_type 1 and everything should work as expected.

Best regards, Philipp

omaraek commented 2 years ago

Dear Philipp, Thank you very much for the detailed reply. Best regards, Omar