mlatom 3.5.0__tar.gz → 3.6.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. {mlatom-3.5.0/src/mlatom.egg-info → mlatom-3.6.0}/PKG-INFO +3 -3
  2. {mlatom-3.5.0 → mlatom-3.6.0}/README.md +2 -2
  3. {mlatom-3.5.0 → mlatom-3.6.0}/setup.py +1 -1
  4. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatom.py +2 -2
  5. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/args_class.py +3 -0
  6. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/data.py +1 -0
  7. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/doc.py +3 -0
  8. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/header.py +12 -0
  9. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/initial_conditions.py +1 -1
  10. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interfaces/__init__.py +4 -0
  11. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interfaces/gaussian_interface.py +6 -6
  12. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interfaces/pyscf_interface.py +48 -2
  13. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interfaces/torchani_interface.py +132 -1
  14. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/md.py +7 -0
  15. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/md_cmd.py +14 -3
  16. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/models.py +3 -2
  17. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/ref.json +5 -1
  18. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/simulations.py +1 -1
  19. {mlatom-3.5.0 → mlatom-3.6.0/src/mlatom.egg-info}/PKG-INFO +3 -3
  20. {mlatom-3.5.0 → mlatom-3.6.0}/LICENSE.txt +0 -0
  21. {mlatom-3.5.0 → mlatom-3.6.0}/setup.cfg +0 -0
  22. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLTPA.py +0 -0
  23. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/ML_NEA.py +0 -0
  24. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF +0 -0
  25. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/A_KRR.f90 +0 -0
  26. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/A_KRR_kernel.f90 +0 -0
  27. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/D_CoulombMatrix.f90 +0 -0
  28. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/D_ID.f90 +0 -0
  29. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/D_rel2eq.f90 +0 -0
  30. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/MLatomF.f90 +0 -0
  31. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/MLatomFInfo.f90 +0 -0
  32. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/MLmodel.f90 +0 -0
  33. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/Makefile +0 -0
  34. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/Makefile.intel +0 -0
  35. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/__init__.py +0 -0
  36. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/analyze.f90 +0 -0
  37. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/constants.f90 +0 -0
  38. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/cs.cpp +0 -0
  39. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/dataset.f90 +0 -0
  40. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/mathUtils.f90 +0 -0
  41. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/molDescr.f90 +0 -0
  42. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/optionsModule.f90 +0 -0
  43. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/precision.f90 +0 -0
  44. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/recover.sh +0 -0
  45. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/sampling.f90 +0 -0
  46. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/statistics.f90 +0 -0
  47. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/stopper.f90 +0 -0
  48. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/strings.f90 +0 -0
  49. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/timing.f90 +0 -0
  50. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLatomF_src/types.f90 +0 -0
  51. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/MLtasks.py +0 -0
  52. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/__init__.py +0 -0
  53. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1.py +0 -0
  54. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1_model/__init__.py +0 -0
  55. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1_model/aiqm1_cc_cv0.pt +0 -0
  56. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1_model/aiqm1_cc_cv1.pt +0 -0
  57. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1_model/aiqm1_cc_cv2.pt +0 -0
  58. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1_model/aiqm1_cc_cv3.pt +0 -0
  59. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1_model/aiqm1_cc_cv4.pt +0 -0
  60. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1_model/aiqm1_cc_cv5.pt +0 -0
  61. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1_model/aiqm1_cc_cv6.pt +0 -0
  62. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1_model/aiqm1_cc_cv7.pt +0 -0
  63. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1_model/aiqm1_dft_cv0.pt +0 -0
  64. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1_model/aiqm1_dft_cv1.pt +0 -0
  65. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1_model/aiqm1_dft_cv2.pt +0 -0
  66. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1_model/aiqm1_dft_cv3.pt +0 -0
  67. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1_model/aiqm1_dft_cv4.pt +0 -0
  68. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1_model/aiqm1_dft_cv5.pt +0 -0
  69. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1_model/aiqm1_dft_cv6.pt +0 -0
  70. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/aiqm1_model/aiqm1_dft_cv7.pt +0 -0
  71. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/ccsdtstarcbs.py +0 -0
  72. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/composite_methods.py +0 -0
  73. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/constants.py +0 -0
  74. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/conversions.py +0 -0
  75. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/cs.so +0 -0
  76. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/decorators.py +0 -0
  77. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/fortran/KREG.f90 +0 -0
  78. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/fortran/__init__.py +0 -0
  79. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/fortran/compile.py +0 -0
  80. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/fortran/mathUtils.f90 +0 -0
  81. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/fortran/stopper.f90 +0 -0
  82. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interface_MLatomF.py +0 -0
  83. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interfaces/ase_interface.py +0 -0
  84. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interfaces/columbus_interface.py +0 -0
  85. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interfaces/dftd4_interface.py +0 -0
  86. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interfaces/dpmd_interface.py +0 -0
  87. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interfaces/gap_interface.py +0 -0
  88. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interfaces/mace_interface.py +0 -0
  89. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interfaces/mndo_interface.py +0 -0
  90. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interfaces/orca_interface.py +0 -0
  91. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interfaces/physnet_interface.py +0 -0
  92. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interfaces/sgdml_interface.py +0 -0
  93. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interfaces/sparrow_interface.py +0 -0
  94. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interfaces/turbomole_interface.py +0 -0
  95. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/interfaces/xtb_interface.py +0 -0
  96. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/kreg_api.py +0 -0
  97. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/log.py +0 -0
  98. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/md2vibr.py +0 -0
  99. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/md2vibr_cmd.py +0 -0
  100. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/mlatom_gui.py +0 -0
  101. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/mltpa/__init__.py +0 -0
  102. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/mltpa/mff.txt +0 -0
  103. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/mltpa/mltpa2022_2.pkl +0 -0
  104. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/mltpa/mltpa2022_2_new_.pkl +0 -0
  105. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/namd.py +0 -0
  106. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/plot.py +0 -0
  107. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/shell_cmd.py +0 -0
  108. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/sliceData.py +0 -0
  109. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/stats.py +0 -0
  110. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/stopper.py +0 -0
  111. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/thermostat.py +0 -0
  112. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/utils.py +0 -0
  113. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom/xyz.py +0 -0
  114. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom.egg-info/SOURCES.txt +0 -0
  115. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom.egg-info/dependency_links.txt +0 -0
  116. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom.egg-info/entry_points.txt +0 -0
  117. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom.egg-info/requires.txt +0 -0
  118. {mlatom-3.5.0 → mlatom-3.6.0}/src/mlatom.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mlatom
3
- Version: 3.5.0
3
+ Version: 3.6.0
4
4
  Summary: A Package for Atomistic Simulations with Machine Learning
5
5
  Home-page: http://mlatom.com
6
6
  Author: Pavlo O. Dral
@@ -27,7 +27,7 @@ Requires-Dist: tqdm
27
27
  # About Program
28
28
  MLatom: a Package for Atomistic Simulations with Machine Learning
29
29
 
30
- Version 3.5.0
30
+ Version 3.6.0
31
31
 
32
32
  **Official website**: http://mlatom.com/
33
33
  **Manual**: http://mlatom.com/manual/
@@ -60,7 +60,7 @@ When this Software or its derivatives are used in scientific publications, it sh
60
60
  * Pavlo O. Dral, Fuchun Ge, Yi-Fan Hou, Peikun Zheng, Yuxinxin Chen, Mario Barbatti, Olexandr Isayev, Cheng Wang, Bao-Xin Xue, Max Pinheiro Jr, Yuming Su, Yiheng Dai, Yangtao Chen, Lina Zhang, Shuang Zhang, Arif Ullah, Quanhao Zhang, Yanchi Ou. [MLatom 3: A Platform for Machine Learning-enhanced Computational Chemistry Simulations and Workflows](https://doi.org/10.1021/acs.jctc.3c01203). *J. Chem. Theory Comput.* **2024**, *20*, 1193--1213.
61
61
  * Pavlo O. Dral, Fuchun Ge, Bao-Xin Xue, Yi-Fan Hou, Max Pinheiro Jr, Jianxing Huang, Mario Barbatti. [MLatom 2: An Integrative Platform for Atomistic Machine Learning](http://doi.org/10.1007/s41061-021-00339-5). *Top. Curr. Chem.* **2021**, *379*, 27.
62
62
  * Pavlo O. Dral. [MLatom: A Program Package for Quantum Chemical Research Assisted by Machine Learning](http://dx.doi.org/10.1002/jcc.26004). *J. Comput. Chem.* **2019**, *40*, 2339--2347.
63
- * Pavlo O. Dral, Fuchun Ge, Yi-Fan Hou, Peikun Zheng, Yuxinxin Chen, Bao-Xin Xue, Max Pinheiro Jr, Yuming Su, Yiheng Dai, Yangtao Chen, Shuang Zhang, Lina Zhang, Arif Ullah, Quanhao Zhang, Sebastian V. Pios, Yanchi Ou, MLatom: A Package for Atomistic Simulations with Machine Learning, version 3.5.0, Xiamen University, Xiamen, China, 2013-2024.
63
+ * Pavlo O. Dral, Fuchun Ge, Yi-Fan Hou, Peikun Zheng, Yuxinxin Chen, Bao-Xin Xue, Max Pinheiro Jr, Yuming Su, Yiheng Dai, Yangtao Chen, Shuang Zhang, Lina Zhang, Arif Ullah, Quanhao Zhang, Sebastian V. Pios, Yanchi Ou, MLatom: A Package for Atomistic Simulations with Machine Learning, version 3.6.0, Xiamen University, Xiamen, China, 2013-2024.
64
64
  [MLatom.com](http://mlatom.com).
65
65
 
66
66
  The citations for MLatom's interfaces and features shall be eventually
@@ -1,7 +1,7 @@
1
1
  # About Program
2
2
  MLatom: a Package for Atomistic Simulations with Machine Learning
3
3
 
4
- Version 3.5.0
4
+ Version 3.6.0
5
5
 
6
6
  **Official website**: http://mlatom.com/
7
7
  **Manual**: http://mlatom.com/manual/
@@ -34,7 +34,7 @@ When this Software or its derivatives are used in scientific publications, it sh
34
34
  * Pavlo O. Dral, Fuchun Ge, Yi-Fan Hou, Peikun Zheng, Yuxinxin Chen, Mario Barbatti, Olexandr Isayev, Cheng Wang, Bao-Xin Xue, Max Pinheiro Jr, Yuming Su, Yiheng Dai, Yangtao Chen, Lina Zhang, Shuang Zhang, Arif Ullah, Quanhao Zhang, Yanchi Ou. [MLatom 3: A Platform for Machine Learning-enhanced Computational Chemistry Simulations and Workflows](https://doi.org/10.1021/acs.jctc.3c01203). *J. Chem. Theory Comput.* **2024**, *20*, 1193--1213.
35
35
  * Pavlo O. Dral, Fuchun Ge, Bao-Xin Xue, Yi-Fan Hou, Max Pinheiro Jr, Jianxing Huang, Mario Barbatti. [MLatom 2: An Integrative Platform for Atomistic Machine Learning](http://doi.org/10.1007/s41061-021-00339-5). *Top. Curr. Chem.* **2021**, *379*, 27.
36
36
  * Pavlo O. Dral. [MLatom: A Program Package for Quantum Chemical Research Assisted by Machine Learning](http://dx.doi.org/10.1002/jcc.26004). *J. Comput. Chem.* **2019**, *40*, 2339--2347.
37
- * Pavlo O. Dral, Fuchun Ge, Yi-Fan Hou, Peikun Zheng, Yuxinxin Chen, Bao-Xin Xue, Max Pinheiro Jr, Yuming Su, Yiheng Dai, Yangtao Chen, Shuang Zhang, Lina Zhang, Arif Ullah, Quanhao Zhang, Sebastian V. Pios, Yanchi Ou, MLatom: A Package for Atomistic Simulations with Machine Learning, version 3.5.0, Xiamen University, Xiamen, China, 2013-2024.
37
+ * Pavlo O. Dral, Fuchun Ge, Yi-Fan Hou, Peikun Zheng, Yuxinxin Chen, Bao-Xin Xue, Max Pinheiro Jr, Yuming Su, Yiheng Dai, Yangtao Chen, Shuang Zhang, Lina Zhang, Arif Ullah, Quanhao Zhang, Sebastian V. Pios, Yanchi Ou, MLatom: A Package for Atomistic Simulations with Machine Learning, version 3.6.0, Xiamen University, Xiamen, China, 2013-2024.
38
38
  [MLatom.com](http://mlatom.com).
39
39
 
40
40
  The citations for MLatom's interfaces and features shall be eventually
@@ -43,7 +43,7 @@ with open(os.path.join(here, 'README.md')) as f:
43
43
 
44
44
  setup(
45
45
  name = pkg_name,
46
- version = "3.5.0",
46
+ version = "3.6.0",
47
47
  author = "Pavlo O. Dral",
48
48
  author_email = "admin@mlatom.com",
49
49
  license = 'MIT (modified)',
@@ -4,7 +4,7 @@
4
4
  !---------------------------------------------------------------------------!
5
5
  ! !
6
6
  ! MLatom: a Package for Atomistic Simulations with Machine Learning !
7
- ! MLatom 3.5.0 !
7
+ ! MLatom 3.6.0 !
8
8
  ! @ !
9
9
  ! Xiamen Atomistic Computing Suite (XACS) !
10
10
  ! !
@@ -36,7 +36,7 @@
36
36
  ! Xue, Max Pinheiro Jr, Yuming Su, Yiheng Dai, Yangtao Chen, Shuang Zhang, !
37
37
  ! Lina Zhang, Arif Ullah, Quanhao Zhang, Sebastian V. Pios, Yanchi Ou, !
38
38
  ! MLatom: A Package for Atomistic Simulations with Machine Learning, !
39
- ! version 3.5.0, Xiamen University, Xiamen, China, 2013-2024. !
39
+ ! version 3.6.0, Xiamen University, Xiamen, China, 2013-2024. !
40
40
  ! !
41
41
  ! The citations for MLatom's interfaces and features shall be eventually !
42
42
  ! included too. See header.py, ref.json and http://mlatom.com. !
@@ -462,6 +462,9 @@ class mlatom_args(ArgsBase):
462
462
  self.set_keyword_alias('ANI-2x', ['ani2x'])
463
463
  self.set_keyword_alias('ANI-1x-D4', ['ani1xd4'])
464
464
  self.set_keyword_alias('ANI-2x-D4', ['ani2xd4'])
465
+ self.set_keyword_alias('ANI-1xnr', ['ani1xnr'])
466
+ self.set_keyword_alias('AIMNet2@B973c', ['aimnet2atb973c'])
467
+ self.set_keyword_alias('AIMNet2@wb97M-D3', ['aimnet2atwb97md3'])
465
468
  self.set_keyword_alias('GFN2-xTB', ['gfn2xtb'])
466
469
  self.set_keyword_alias('MNDO/dH', ['mndodh'])
467
470
  self.set_keyword_alias('MNDO/H', ['mndoh'])
@@ -1486,6 +1486,7 @@ class molecular_trajectory():
1486
1486
  moldb.write_file_with_properties(filename+'.ekin',property_to_write='kinetic_energy')
1487
1487
  moldb.write_file_with_properties(filename+'.epot',property_to_write='energy')
1488
1488
  moldb.write_file_with_properties(filename+'.etot',property_to_write='total_energy')
1489
+ moldb.write_file_with_properties(filename+'.temp',property_to_write='temperature')
1489
1490
  if 'dipole_moment' in moldb.molecules[0].__dict__.keys():
1490
1491
  with open(filename+'.dp','w') as dpf:
1491
1492
  for imolecule in moldb.molecules:
@@ -179,6 +179,9 @@ class Doc():
179
179
  ANI-2x perform ANI-2x calculations
180
180
  ANI-1x-D4 perform ANI-1x-D4 calculations
181
181
  ANI-2x-D4 perform ANI-2x-D4 calculations
182
+ ANI-1xnr perform ANI-1xnr calculations
183
+ AIMNet2@B973c perform AIMNet2@B97-3c calculations
184
+ AIMNet2@wB97M-D3 perform AIMNet2@wB97M-D3 calculations
182
185
  ODM2
183
186
  ODM2*
184
187
  GFN2-xTB
@@ -128,6 +128,18 @@ def printHeader(args):
128
128
  if args.ani2xd4:
129
129
  refItems['D4'] = refs['D4']
130
130
  refItems['D4 program'] = refs['D4prog']
131
+
132
+ if args.method:
133
+ if 'DM21' in args.method.upper():
134
+ refItems['DM21'] = refs['DM21']
135
+
136
+ if args.ani1xnr:
137
+ refItems['ANI-1xnr'] = refs['ANI-1xnr']
138
+ if args.aimnet2atb973c:
139
+ refItems['AIMNet2@B973c'] = refs['AIMNet2']
140
+ if args.aimnet2atwb97md3:
141
+ refItems['AIMNet2@wb97M-D3'] = refs['AIMNet2']
142
+
131
143
 
132
144
  if args.geomopt:
133
145
  if 'optprog=ase' in ' '.join(args.args2pass).lower():
@@ -202,7 +202,7 @@ def generate_initial_conditions(molecule=None, generation_method=None, number_of
202
202
  mass = mass_.reshape(Natoms,1)
203
203
  total_mass = np.sum(mass_)
204
204
  for irepeat in range(number_of_initial_conditions):
205
- if eliminate_angular_momentum:
205
+ if eliminate_angular_momentum and not molecule.is_it_linear():
206
206
  velocities_all[irepeat] = getridofang(coordinates_all[irepeat],velocities_all[irepeat],mass_)
207
207
  v_cm = sum(velocities_all[irepeat]*mass)/total_mass
208
208
  velocities_all[irepeat] -= v_cm
@@ -10,6 +10,10 @@ def ani(**kwargs):
10
10
  from .torchani_interface import ani_methods as interface
11
11
  return interface(**kwargs)
12
12
 
13
+ def aimnet2(**kwargs):
14
+ from .torchani_interface import aimnet2_methods as interface
15
+ return interface(**kwargs)
16
+
13
17
  def mndo(**kwargs):
14
18
  from .mndo_interface import mndo_methods as interface
15
19
  return interface(**kwargs)
@@ -186,13 +186,18 @@ def run_gaussian_job(**kwargs):
186
186
  memory = f"%mem={kwargs['memory']}\n"
187
187
  gaussian_keywords = f'{memory}%nproc={nthreads}\n' + gaussian_keywords
188
188
 
189
+ if 'cwd' in kwargs:
190
+ cwd = kwargs['cwd']
191
+ else:
192
+ cwd='.'
193
+
189
194
  if 'model_predict_kwargs' in kwargs:
190
195
  model_predict_kwargs_str = str(kwargs['model_predict_kwargs'])
191
196
  else:
192
197
  model_predict_kwargs_str = "{}"
193
198
 
194
199
  model_predict_kwargs_str_file = 'model_predict_kwargs'
195
- with open(model_predict_kwargs_str_file, 'w') as f:
200
+ with open(os.path.join(cwd, model_predict_kwargs_str_file), 'w') as f:
196
201
  f.write(model_predict_kwargs_str)
197
202
 
198
203
  if 'external_task' in kwargs:
@@ -227,11 +232,6 @@ def run_gaussian_job(**kwargs):
227
232
  kwargs['method'] = 'p ' + kwargs['method']
228
233
  gaussian_keywords += '# '+kwargs['method']+'\n'
229
234
 
230
- if 'cwd' in kwargs:
231
- cwd = kwargs['cwd']
232
- else:
233
- cwd='.'
234
-
235
235
  if 'writechk' in kwargs:
236
236
  writechk = kwargs['writechk']
237
237
  else:
@@ -72,6 +72,10 @@ class pyscf_methods(OMP_pyscf):
72
72
  pyscf_mol.unit = 'Ang'
73
73
  pyscf_mol.build()
74
74
 
75
+ # DM21
76
+ if 'DM21' in self.method.upper():
77
+ self.predict_for_molecule_DM21(molecule=molecule, pyscf_mol=pyscf_mol, calculate_energy=calculate_energy, calculate_energy_gradients=calculate_energy_gradients, calculate_hessian=calculate_hessian, **kwargs)
78
+ return
75
79
 
76
80
  # HF
77
81
  if 'HF' == self.method.upper():
@@ -193,8 +197,50 @@ class pyscf_methods(OMP_pyscf):
193
197
  h[ii*3:(ii+1)*3, jj*3:(jj+1)*3] = hess[ii][jj]
194
198
  molecule.hessian = h / constants.Bohr2Angstrom**2
195
199
 
196
-
197
-
200
+ def predict_for_molecule_DM21(self, molecule=None, pyscf_mol=None, calculate_energy=True, calculate_energy_gradients=False, calculate_hessian=False, **kwargs):
201
+ # reference: https://github.com/google-deepmind/deepmind-research/tree/f5de0ede8430809180254ee957abf36ed62579ef/density_functional_approximation_dm21
202
+ # METHODS AVAILABE:
203
+ # DM21 - trained on molecules dataset, and fractional charge, and fractional spin constraints.
204
+ # DM21m - trained on molecules dataset.
205
+ # DM21mc - trained on molecules dataset, and fractional charge constraints.
206
+ # DM21mu - trained on molecules dataset, and electron gas constraints.
207
+
208
+ from pyscf import dft
209
+ try:
210
+ import density_functional_approximation_dm21 as dm21
211
+ except:
212
+ errmsg = 'Please install required packages for DM21. For more details, please refer to https://github.com/google-deepmind/deepmind-research/tree/master/density_functional_approximation_dm21.'
213
+ raise ModuleNotFoundError(errmsg)
214
+
215
+ if pyscf_mol.spin == 0:
216
+ pyscf_method = dft.RKS(pyscf_mol)
217
+ else:
218
+ pyscf_method = dft.UKS(pyscf_mol)
219
+
220
+ pyscf_method.xc = 'B3LYP'
221
+ pyscf_method.run()
222
+ dm0 = pyscf_method.make_rdm1()
223
+ pyscf_method._numint = dm21.NeuralNumInt(dm21.Functional.__dict__[self.method])
224
+ # relax convergence tolerances to increase success to convergence
225
+ pyscf_method.conv_tol = 1E-6
226
+ pyscf_method.conv_tol_grad = 1E-3
227
+ try:
228
+ pyscf_method.kernel(dm0=dm0)
229
+ except:
230
+ errmsg = 'DM21 cannot converge properly'
231
+ stopper.stopMLatom(errmsg)
232
+
233
+ if calculate_energy:
234
+ molecule.energy = pyscf_method.e_tot
235
+
236
+ if calculate_energy_gradients:
237
+ errmsg = 'DM21 by pyscf does not support gradients calculation'
238
+ raise ValueError(errmsg)
239
+
240
+ if calculate_hessian:
241
+ errmsg = 'DM21 by pyscf does not support hessian calculation'
242
+ raise ValueError(errmsg)
243
+
198
244
  @doc_inherit
199
245
  def predict(self, molecule=None, molecular_database=None, calculate_energy=True, calculate_energy_gradients=False, calculate_hessian=False, **kwargs):
200
246
  '''
@@ -15,8 +15,11 @@ import numpy as np
15
15
  import tqdm
16
16
  from collections import OrderedDict
17
17
  import torch
18
+ from torch import nn, Tensor
18
19
  import torchani
19
20
  from torchani.data import TransformableIterable, IterableAdapter
21
+ from typing import Dict, List
22
+
20
23
 
21
24
  from .. import data
22
25
  from .. import models
@@ -649,7 +652,9 @@ class ani_methods(models.torchani_model):
649
652
 
650
653
  def model_setup(self, method):
651
654
  self.method = method
652
- if 'ANI-1x'.casefold() in method.casefold():
655
+ if 'ANI-1xnr'.casefold() in method.casefold():
656
+ self.model = load_ani1xnr_model()
657
+ elif 'ANI-1x'.casefold() in method.casefold():
653
658
  self.model = torchani.models.ANI1x(periodic_table_index=True).to(self.device).double()
654
659
  elif 'ANI-1ccx'.casefold() in method.casefold():
655
660
  self.model = torchani.models.ANI1ccx(periodic_table_index=True).to(self.device).double()
@@ -726,6 +731,132 @@ class ani_methods(models.torchani_model):
726
731
  modelname = self.method.lower().replace('-','')
727
732
  molecule.__dict__[f'{modelname}'].standard_deviation(properties=properties+atomic_properties)
728
733
 
734
+ def load_ani1xnr_model():
735
+ # ANI-1xnr https://github.com/atomistic-ml/ani-1xnr/
736
+ # Universal reactive ML potential ANI-1xnr: https://doi.org/10.1038/s41557-023-01427-3
737
+ species = ['H', 'C', 'N', 'O']
738
+ def parse_ani1xnr_resources():
739
+ import requests
740
+ import zipfile
741
+ import io
742
+ local_dir = os.path.expanduser('~/.local/ANI1xnr/')
743
+ url = "https://github.com/atomistic-ml/ani-1xnr/archive/refs/heads/main.zip"
744
+ if not os.path.exists(local_dir+'ani-1xnr-main'):
745
+ os.makedirs(local_dir, exist_ok=True)
746
+ print(f'Downloading ANI-1xnr model parameters ...')
747
+ resource_res = requests.get(url)
748
+ resource_zip = zipfile.ZipFile(io.BytesIO(resource_res.content))
749
+ resource_zip.extractall(local_dir)
750
+ return local_dir
751
+ model_prefix = parse_ani1xnr_resources() + 'ani-1xnr-main/model/ani-1xnr/'
752
+ # const_file, sae_file, ensemble_prefix, ensemble_size = parse_ani1xnr_resources()
753
+ const_file = model_prefix + 'rHCNO-5.2R_32-3.5A_a8-4.params'
754
+ sae_file = model_prefix + 'sae_linfit.dat'
755
+ consts = torchani.neurochem.Constants(const_file)
756
+ aev_computer = torchani.AEVComputer(**consts)
757
+ energy_shifter = torchani.neurochem.load_sae(sae_file)
758
+ species_converter = torchani.nn.SpeciesConverter(species)
759
+
760
+ neural_networks = []
761
+ for ii in range(8):
762
+ neural_network = torchani.neurochem.load_model(consts.species, model_prefix + f'train{ii}/networks')
763
+ neural_networks.append(torchani.nn.Sequential(species_converter, aev_computer, neural_network, energy_shifter))
764
+
765
+ model_ensemble = torchani.nn.Ensemble(modules=neural_networks)
766
+ model_ensemble.species = species
767
+
768
+ return model_ensemble
769
+
770
+ class aimnet2_methods(models.torchani_model):
771
+ '''
772
+ Universal ML methods with AIMNet2: https://doi.org/10.26434/chemrxiv-2023-296ch
773
+
774
+ Arguments:
775
+ method (str): A string that specifies the method. Available choices: ``'AIMNet2@b973c'`` and ``'AIMNet2@wb97m-d3'``.
776
+ device (str, optional): Indicate which device the calculation will be run on, i.e. 'cpu' for CPU, 'cuda' for Nvidia GPUs. When not speficied, it will try to use CUDA if there exists valid ``CUDA_VISIBLE_DEVICES`` in the environ of system.
777
+
778
+ '''
779
+
780
+ available_methods = models.methods.methods_map['aimnet2']
781
+ element_symbols_available = ['H', 'B', 'C', 'N', 'O', 'F', 'Si', 'P', 'S', 'Cl', 'As', 'Se', 'Br', 'I']
782
+
783
+ def __init__(self, method: str = 'AIMNet2@b973c', device: str = 'cuda' if torch.cuda.is_available() else 'cpu', **kwargs):
784
+ self.device = torch.device(device)
785
+ self.model_path = self.parse_aimnet2_resources(method)
786
+ self.model = torch.jit.load(self.model_path)
787
+
788
+ @doc_inherit
789
+ def predict(
790
+ self,
791
+ molecular_database: data.molecular_database = None,
792
+ molecule: data.molecule = None,
793
+ calculate_energy: bool = False,
794
+ calculate_energy_gradients: bool = False,
795
+ calculate_hessian: bool = False,
796
+ batch_size: int = 2**16,
797
+ ) -> None:
798
+
799
+ molDB = super().predict(molecular_database=molecular_database, molecule=molecule)
800
+
801
+ for element_symbol in np.unique(np.concatenate(molDB.element_symbols)):
802
+ if element_symbol not in self.element_symbols_available:
803
+ print(f' * Warning * Molecule contains elements \'{element_symbol}\', which is not supported by method \'{self.method}\' that only supports {self.element_symbols_available}, no calculations performed')
804
+ return
805
+
806
+ for mol in molDB:
807
+ self.predict_for_molecule(
808
+ molecule=mol,
809
+ calculate_energy=calculate_energy,
810
+ calculate_energy_gradients=calculate_energy_gradients,
811
+ calculate_hessian=calculate_hessian)
812
+
813
+ def predict_for_molecule(
814
+ self,
815
+ molecule,
816
+ calculate_energy: bool = False,
817
+ calculate_energy_gradients: bool = False,
818
+ calculate_hessian: bool = False):
819
+
820
+ coord = torch.as_tensor(molecule.xyz_coordinates).to(torch.float).to(self.device).unsqueeze(0)
821
+ numbers = torch.as_tensor(molecule.atomic_numbers).to(torch.long).to(self.device).unsqueeze(0)
822
+ charge = torch.tensor([molecule.charge], dtype=torch.float, device=self.device)
823
+ nninput = dict(coord=coord, numbers=numbers, charge=charge)
824
+ prev = torch.is_grad_enabled()
825
+ torch._C._set_grad_enabled(calculate_energy_gradients)
826
+ if calculate_energy_gradients:
827
+ nninput['coord'].requires_grad_(True)
828
+ nnoutput = self.model(nninput)
829
+ if calculate_energy:
830
+ molecule.energy = nnoutput['energy'].item()
831
+ if calculate_energy_gradients:
832
+ if 'forces' in nnoutput:
833
+ f = nnoutput['forces'][0]
834
+ else:
835
+ f = - torch.autograd.grad(nnoutput['energy'], nninput['coord'])[0][0]
836
+ forces = f.detach().cpu().numpy()
837
+ molecule.add_xyz_vectorial_property(forces, 'energy_gradients')
838
+
839
+ if calculate_hessian:
840
+ print('Hessian not available yet')
841
+ molecule.hessian = np.zeros((len(molecule),)*2)
842
+
843
+ torch._C._set_grad_enabled(prev)
844
+
845
+ @staticmethod
846
+ def parse_aimnet2_resources(method):
847
+ import requests
848
+ local_dir = os.path.expanduser('~/.local/AIMNet2/')
849
+ repo_name = "AIMNet2"
850
+ tag_name = method.lower().replace('@', '_')
851
+ url = "https://github.com/isayevlab/{}/raw/main/models/{}_ens.jpt".format(repo_name, tag_name)
852
+ if not os.path.exists(local_dir+f'{tag_name}_ens.jpt'):
853
+ os.makedirs(local_dir, exist_ok=True)
854
+ print(f'Downloading {method} model parameters ...')
855
+ resource_res = requests.get(url)
856
+ with open(local_dir+f'{tag_name}_ens.jpt', 'wb') as f:
857
+ f.write(resource_res.content)
858
+ return local_dir + f'{tag_name}_ens.jpt'
859
+
729
860
  def printHelp():
730
861
  helpText = __doc__.replace('.. code-block::\n\n', '') + '''
731
862
  To use Interface_ANI, please install TorchANI and its dependencies
@@ -141,6 +141,12 @@ class md():
141
141
 
142
142
  self.stop_function = stop_function
143
143
  self.stop_function_kwargs = stop_function_kwargs
144
+
145
+ self.linearity = self.molecule_with_initial_conditions.is_it_linear()
146
+ if self.linearity:
147
+ self.degrees_of_freedom = 3 * self.Natoms - 5
148
+ else:
149
+ self.degrees_of_freedom = 3 * self.Natoms - 6
144
150
  self.propagate()
145
151
 
146
152
  def propagate(self):
@@ -200,6 +206,7 @@ class md():
200
206
  velocity = np.copy(molecule.get_xyz_vectorial_properties('xyz_velocities'))
201
207
 
202
208
  molecule.total_energy = molecule.energy + molecule.kinetic_energy
209
+ molecule.temperature = molecule.kinetic_energy / (constants.kB_in_Hartree*self.degrees_of_freedom/2)
203
210
  trajectory_step.step = istep
204
211
  trajectory_step.time = istep * self.time_step
205
212
  trajectory_step.molecule = molecule
@@ -90,9 +90,20 @@ class MD_CMD():
90
90
  stopMLatom('User-defined initial XYZ file %s does not exist'%(args.initXYZ))
91
91
  mol = data.molecule()
92
92
  mol.read_from_xyz_file(args.initXYZ)
93
+ else:
94
+ mol = data.molecule()
95
+ mol.load(args.normalModefile)
93
96
 
94
97
  # Deal with degrees of freedom
95
- if args.initConditions.lower() == 'random':
98
+ if args.initConditions == '' or args.initConditions.lower() == 'user-defined' or args.initConditions.lower() == 'random':
99
+ if mol.is_it_linear():
100
+ linear = 1
101
+ print(' Linear molecule detected')
102
+ else:
103
+ linear = 0
104
+ Natoms = len(mol.atoms)
105
+ DOF = 3*Natoms-6+linear
106
+ else:
96
107
  if mol.is_it_linear():
97
108
  linear = 1
98
109
  print(' Linear molecule detected')
@@ -100,6 +111,7 @@ class MD_CMD():
100
111
  linear = 0
101
112
  Natoms = len(mol.atoms)
102
113
  DOF = 3*Natoms-6+linear
114
+
103
115
  # print(' Degrees of freedom: %d'%(DOF))
104
116
 
105
117
  # Generate initial conditions
@@ -117,8 +129,7 @@ class MD_CMD():
117
129
  file_with_initial_xyz_coordinates = args.initXYZ,
118
130
  file_with_initial_xyz_velocities = args.initVXYZ)
119
131
  elif args.initConditions.lower() == 'random':
120
- if args.initTemperature == 0:
121
- initTemperature = 300
132
+ initTemperature = args.initTemperature
122
133
  print(' Use random sampling to generate initial condition')
123
134
  print(f' Initial XYZ coordinates file: {args.initXYZ}')
124
135
  print(f' Initial instantaneous temperature: {initTemperature}')
@@ -162,7 +162,7 @@ class methods(model):
162
162
  =============== ==========================================================================================================================================================================
163
163
  Program Methods
164
164
  =============== ==========================================================================================================================================================================
165
- TorchANI ``'AIQM1'``, ``'AIQM1@DFT'``, ``'AIQM1@DFT*'``, ``'ANI-1ccx'``, ``'ANI-1x'``, ``'ANI-1x-D4'``, ``'ANI-2x'``, ``'ANI-2x-D4'``
165
+ TorchANI ``'AIQM1'``, ``'AIQM1@DFT'``, ``'AIQM1@DFT*'``, ``'ANI-1ccx'``, ``'ANI-1x'``, ``'ANI-1x-D4'``, ``'ANI-2x'``, ``'ANI-2x-D4'``, ``'ANI-1xnr'``
166
166
  dftd4 ``'AIQM1'``, ``'AIQM1@DFT'``, ``'ANI-1x-D4'``, ``'ANI-2x-D4'``, ``'D4'``
167
167
  MNDO or Sparrow ``'AIQM1'``, ``'AIQM1@DFT'``, ``'AIQM1@DFT*'``, ``'MNDO'``, ``'MNDO/d'``, ``'ODM2*'``, ``'ODM3*'``, ``'OM2'``, ``'OM3'``, ``'PM3'``, ``'SCC-DFTB'``, ``'SCC-DFTB-heats'``
168
168
  MNDO ``'CNDO/2'``, ``'MINDO/3'``, ``'MNDO/H'``, ``'MNDO/dH'``, ``'MNDOC'``, ``'ODM2'``, ``'ODM3'``, ``'OM1'``, semiempirical OMx, DFTB, NDDO-type methods
@@ -177,7 +177,8 @@ class methods(model):
177
177
 
178
178
  methods_map = {
179
179
  'aiqm1': ['AIQM1', 'AIQM1@DFT', 'AIQM1@DFT*'],
180
- 'ani': ["ANI-1x", "ANI-1ccx", "ANI-2x", 'ANI-1x-D4', 'ANI-2x-D4'],
180
+ 'ani': ["ANI-1x", "ANI-1ccx", "ANI-2x", 'ANI-1x-D4', 'ANI-2x-D4', 'ANI-1xnr'],
181
+ 'aimnet2': ["AIMNet2@b973c", "AIMNet2@wb97m-d3"],
181
182
  'mndo': ['ODM2*', 'ODM2', 'ODM3', 'OM3', 'OM2', 'OM1', 'PM3', 'AM1', 'MNDO/d', 'MNDOC', 'MNDO', 'MINDO/3', 'CNDO/2', 'SCC-DFTB', 'SCC-DFTB-heats', 'MNDO/H', 'MNDO/dH'],
182
183
  'sparrow': ['DFTB0', 'DFTB2', 'DFTB3', 'MNDO', 'MNDO/d', 'AM1', 'RM1', 'PM3', 'PM6', 'OM2', 'OM3', 'ODM2*', 'ODM3*', 'AIQM1'],
183
184
  'xtb': ['GFN2-xTB'],
@@ -46,5 +46,9 @@
46
46
  "KREGgrads": "Y.-F. Hou, F. Ge, P. O. Dral.\nJ. Chem. Theory Comput. 2023, 19, 2369",
47
47
  "MLTPA": "Y. Su, Y. Dai, Y. Zeng, C. Wei, Y. Chen, F. Ge, P. Zheng,\nD. Zhou, P. O. Dral, C. Wang. Adv. Sci. 2023, 2204902",
48
48
  "MLQDprog": "A. Ullah, P. O. Dral.\nMLQD: A package for machine learning-based quantum dissipative dynamics.\nChemRxiv. 2023. DOI: 10.26434/chemrxiv-2023-0xkv1\nSee MLatom.com for reference updates",
49
- "geometric": "L.-P. Wang, C. C. Song,\nJ. Chem. Phys. 2016, 144, 214108"
49
+ "geometric": "L.-P. Wang, C. C. Song,\nJ. Chem. Phys. 2016, 144, 214108",
50
+ "DM21": "J. Kirkpatrick, ; B. McMorrow, D. H. P. Turban, A. L. Gaunt, J. S. Spencer, \nA. G. D. G. Matthews, A. Obika, L. Thiry, M. Fortunato, D. Pfau, et al.,\nScience 2021, 374, 1385",
51
+ "AIMNet2": "D. Anstine, R. Zubatyuk , O. Isayev \nAIMNet2: A Neural Network Potential to Meet your Neutral, \nCharged, Organic, and Elemental-Organic Needs. \nChemRxiv. 2024; DOI:10.26434/chemrxiv-2023-296ch-v2",
52
+ "ANI-1xnr": "S. Zhang, M.Z. Makoś, R.B. Jadrich, E. Kraka, K. Barros, \nB. T. Nebgen,S. Tretiak, O. Isayev, N. Lubbers, R. A. Messerly,\nJ. S. Smith, Nat. Chem. 2024, 16, 727"
50
53
  }
54
+
@@ -477,7 +477,7 @@ class freq():
477
477
 
478
478
  def freq_pyscf(self):
479
479
  self.successful = False
480
- self.model.interface.predict(molecule=self.molecule, calculate_energy=True, calculate_hessian=True, **self.model_predict_kwargs)
480
+ self.model.predict(molecule=self.molecule, calculate_energy=True, calculate_hessian=True, **self.model_predict_kwargs)
481
481
  from .interfaces import pyscf_interface
482
482
  self.successful = pyscf_interface.thermo_calculation(molecule=self.molecule)
483
483
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mlatom
3
- Version: 3.5.0
3
+ Version: 3.6.0
4
4
  Summary: A Package for Atomistic Simulations with Machine Learning
5
5
  Home-page: http://mlatom.com
6
6
  Author: Pavlo O. Dral
@@ -27,7 +27,7 @@ Requires-Dist: tqdm
27
27
  # About Program
28
28
  MLatom: a Package for Atomistic Simulations with Machine Learning
29
29
 
30
- Version 3.5.0
30
+ Version 3.6.0
31
31
 
32
32
  **Official website**: http://mlatom.com/
33
33
  **Manual**: http://mlatom.com/manual/
@@ -60,7 +60,7 @@ When this Software or its derivatives are used in scientific publications, it sh
60
60
  * Pavlo O. Dral, Fuchun Ge, Yi-Fan Hou, Peikun Zheng, Yuxinxin Chen, Mario Barbatti, Olexandr Isayev, Cheng Wang, Bao-Xin Xue, Max Pinheiro Jr, Yuming Su, Yiheng Dai, Yangtao Chen, Lina Zhang, Shuang Zhang, Arif Ullah, Quanhao Zhang, Yanchi Ou. [MLatom 3: A Platform for Machine Learning-enhanced Computational Chemistry Simulations and Workflows](https://doi.org/10.1021/acs.jctc.3c01203). *J. Chem. Theory Comput.* **2024**, *20*, 1193--1213.
61
61
  * Pavlo O. Dral, Fuchun Ge, Bao-Xin Xue, Yi-Fan Hou, Max Pinheiro Jr, Jianxing Huang, Mario Barbatti. [MLatom 2: An Integrative Platform for Atomistic Machine Learning](http://doi.org/10.1007/s41061-021-00339-5). *Top. Curr. Chem.* **2021**, *379*, 27.
62
62
  * Pavlo O. Dral. [MLatom: A Program Package for Quantum Chemical Research Assisted by Machine Learning](http://dx.doi.org/10.1002/jcc.26004). *J. Comput. Chem.* **2019**, *40*, 2339--2347.
63
- * Pavlo O. Dral, Fuchun Ge, Yi-Fan Hou, Peikun Zheng, Yuxinxin Chen, Bao-Xin Xue, Max Pinheiro Jr, Yuming Su, Yiheng Dai, Yangtao Chen, Shuang Zhang, Lina Zhang, Arif Ullah, Quanhao Zhang, Sebastian V. Pios, Yanchi Ou, MLatom: A Package for Atomistic Simulations with Machine Learning, version 3.5.0, Xiamen University, Xiamen, China, 2013-2024.
63
+ * Pavlo O. Dral, Fuchun Ge, Yi-Fan Hou, Peikun Zheng, Yuxinxin Chen, Bao-Xin Xue, Max Pinheiro Jr, Yuming Su, Yiheng Dai, Yangtao Chen, Shuang Zhang, Lina Zhang, Arif Ullah, Quanhao Zhang, Sebastian V. Pios, Yanchi Ou, MLatom: A Package for Atomistic Simulations with Machine Learning, version 3.6.0, Xiamen University, Xiamen, China, 2013-2024.
64
64
  [MLatom.com](http://mlatom.com).
65
65
 
66
66
  The citations for MLatom's interfaces and features shall be eventually
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes