agox 2.2.2__tar.gz → 3.1.1__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 (442) hide show
  1. agox-3.1.1/MANIFEST.in +4 -0
  2. agox-3.1.1/PKG-INFO +54 -0
  3. agox-3.1.1/README.md +38 -0
  4. {agox-2.2.2 → agox-3.1.1}/agox/__version__.py +1 -1
  5. {agox-2.2.2 → agox-3.1.1}/agox/acquisitors/ABC_acquisitor.py +9 -8
  6. {agox-2.2.2 → agox-3.1.1}/agox/acquisitors/LCB.py +16 -17
  7. agox-3.1.1/agox/acquisitors/__init__.py +25 -0
  8. {agox-2.2.2 → agox-3.1.1}/agox/candidates/ABC_candidate.py +84 -3
  9. agox-3.1.1/agox/candidates/__init__.py +8 -0
  10. {agox-2.2.2 → agox-3.1.1}/agox/collectors/ABC_collector.py +4 -1
  11. agox-3.1.1/agox/collectors/__init__.py +7 -0
  12. agox-3.1.1/agox/databases/__init__.py +12 -0
  13. {agox-2.2.2 → agox-3.1.1}/agox/databases/database.py +11 -7
  14. {agox-2.2.2 → agox-3.1.1}/agox/environments/ABC_environment.py +3 -0
  15. agox-3.1.1/agox/environments/__init__.py +12 -0
  16. {agox-2.2.2 → agox-3.1.1}/agox/environments/environment.py +17 -4
  17. agox-3.1.1/agox/evaluators/__init__.py +11 -0
  18. {agox-2.2.2 → agox-3.1.1}/agox/generators/ABC_generator.py +21 -6
  19. agox-3.1.1/agox/generators/__init__.py +24 -0
  20. agox-3.1.1/agox/generators/ce_generator.py +115 -0
  21. agox-3.1.1/agox/generators/complementary_energy/attractor_methods/ABC_attractors.py +24 -0
  22. agox-3.1.1/agox/generators/complementary_energy/attractor_methods/ce_attractors_another_structure.py +40 -0
  23. agox-3.1.1/agox/generators/complementary_energy/attractor_methods/ce_attractors_current_structure.py +36 -0
  24. agox-3.1.1/agox/generators/complementary_energy/attractor_methods/ce_attractors_interpolation.py +44 -0
  25. agox-3.1.1/agox/generators/complementary_energy/attractor_methods/ce_attractors_kmeans.py +49 -0
  26. agox-3.1.1/agox/generators/complementary_energy/ce_calculators.py +183 -0
  27. {agox-2.2.2 → agox-3.1.1}/agox/generators/random.py +2 -1
  28. {agox-2.2.2 → agox-3.1.1}/agox/helpers/gpaw_io.py +5 -4
  29. {agox-2.2.2 → agox-3.1.1}/agox/main.py +7 -8
  30. agox-3.1.1/agox/models/ABC_model.py +599 -0
  31. agox-3.1.1/agox/models/GPR/GPR.py +892 -0
  32. agox-3.1.1/agox/models/GPR/__init__.py +3 -0
  33. agox-3.1.1/agox/models/GPR/kernels/__init__.py +1 -0
  34. agox-3.1.1/agox/models/GPR/kernels/kernels.py +134 -0
  35. agox-3.1.1/agox/models/GPR/priors/__init__.py +1 -0
  36. {agox-2.2.2/agox/models → agox-3.1.1/agox/models/GPR}/priors/repulsive.c +9997 -6156
  37. {agox-2.2.2/agox/models → agox-3.1.1/agox/models/GPR}/priors/repulsive.pyx +1 -1
  38. agox-3.1.1/agox/models/GPR/sGPR.py +599 -0
  39. agox-3.1.1/agox/models/__init__.py +9 -0
  40. agox-3.1.1/agox/models/descriptors/ABC_descriptor.py +154 -0
  41. agox-3.1.1/agox/models/descriptors/acsf.py +176 -0
  42. agox-3.1.1/agox/models/descriptors/exponential_density.py +147 -0
  43. agox-3.1.1/agox/models/descriptors/fingerprint.py +58 -0
  44. {agox-2.2.2 → agox-3.1.1}/agox/models/descriptors/fingerprint_cython/angular_fingerprintFeature_cy.c +15273 -10896
  45. agox-3.1.1/agox/models/descriptors/fingerprint_cython/setup.py +5 -0
  46. {agox-2.2.2 → agox-3.1.1}/agox/models/descriptors/simple_fingerprint.py +22 -6
  47. {agox-2.2.2 → agox-3.1.1}/agox/models/descriptors/soap.py +27 -18
  48. {agox-2.2.2 → agox-3.1.1}/agox/models/descriptors/spectral_graph_descriptor.py +18 -4
  49. {agox-2.2.2 → agox-3.1.1}/agox/module.py +54 -4
  50. {agox-2.2.2 → agox-3.1.1}/agox/observer.py +21 -4
  51. agox-3.1.1/agox/postprocessors/__init__.py +16 -0
  52. agox-2.2.2/agox/postprocessors/ray_pool_relax.py → agox-3.1.1/agox/postprocessors/ray_relax.py +2 -0
  53. {agox-2.2.2 → agox-3.1.1}/agox/postprocessors/relax.py +6 -5
  54. agox-3.1.1/agox/samplers/__init__.py +15 -0
  55. {agox-2.2.2 → agox-3.1.1}/agox/samplers/genetic.py +1 -1
  56. {agox-2.2.2 → agox-3.1.1}/agox/samplers/kernel_similarity.py +52 -40
  57. agox-3.1.1/agox/samplers/kmeans.py +234 -0
  58. agox-3.1.1/agox/test/__pycache__/__init__.cpython-38.pyc +0 -0
  59. agox-3.1.1/agox/test/__pycache__/conftest.cpython-38-pytest-7.4.0.pyc +0 -0
  60. agox-3.1.1/agox/test/__pycache__/test_utils.cpython-38-pytest-7.4.0.pyc +0 -0
  61. {agox-2.2.2 → agox-3.1.1}/agox/test/conftest.py +13 -0
  62. agox-2.2.2/agox/test/database_tests/__pycache__/database_test.cpython-38-pytest-7.2.1.pyc → agox-3.1.1/agox/test/database_tests/__pycache__/database_test.cpython-38-pytest-7.4.0.pyc +0 -0
  63. agox-3.1.1/agox/test/datasets/AgO-dataset.traj +0 -0
  64. agox-3.1.1/agox/test/datasets/databases/mos2_databases/db1.db +0 -0
  65. agox-3.1.1/agox/test/datasets/databases/mos2_databases/db2.db +0 -0
  66. agox-3.1.1/agox/test/descriptor_tests/__pycache__/soap_test.cpython-38-pytest-7.4.0.pyc +0 -0
  67. agox-3.1.1/agox/test/descriptor_tests/__pycache__/spectral_graph_test.cpython-38-pytest-7.4.0.pyc +0 -0
  68. {agox-2.2.2 → agox-3.1.1}/agox/test/descriptor_tests/soap_test.py +2 -2
  69. {agox-2.2.2 → agox-3.1.1}/agox/test/descriptor_tests/spectral_graph_test.py +2 -2
  70. agox-2.2.2/agox/test/environment_tests/__pycache__/environment_test.cpython-38-pytest-7.2.1.pyc → agox-3.1.1/agox/test/environment_tests/__pycache__/environment_test.cpython-38-pytest-7.4.0.pyc +0 -0
  71. agox-3.1.1/agox/test/generator_tests/__pycache__/generator_test.cpython-38-pytest-7.4.0.pyc +0 -0
  72. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/__pycache__/generator_utils.cpython-38.pyc +0 -0
  73. agox-3.1.1/agox/test/generator_tests/__pycache__/test_cog.cpython-38-pytest-7.4.0.pyc +0 -0
  74. agox-3.1.1/agox/test/generator_tests/__pycache__/test_permutation.cpython-38-pytest-7.4.0.pyc +0 -0
  75. agox-3.1.1/agox/test/generator_tests/__pycache__/test_random.cpython-38-pytest-7.4.0.pyc +0 -0
  76. agox-3.1.1/agox/test/generator_tests/__pycache__/test_rattle.cpython-38-pytest-7.4.0.pyc +0 -0
  77. agox-3.1.1/agox/test/generator_tests/__pycache__/test_replace.cpython-38-pytest-7.4.0.pyc +0 -0
  78. agox-3.1.1/agox/test/generator_tests/__pycache__/test_sampling.cpython-38-pytest-7.4.0.pyc +0 -0
  79. agox-3.1.1/agox/test/generator_tests/__pycache__/test_steepest_descent.cpython-38-pytest-7.4.0.pyc +0 -0
  80. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/generator_test.py +16 -13
  81. agox-3.1.1/agox/test/model_tests/__pycache__/__init__.cpython-38.pyc +0 -0
  82. agox-3.1.1/agox/test/model_tests/__pycache__/test_api.cpython-38-pytest-7.4.0.pyc +0 -0
  83. agox-3.1.1/agox/test/model_tests/__pycache__/test_global_gpr.cpython-38-pytest-7.4.0.pyc +0 -0
  84. agox-3.1.1/agox/test/model_tests/__pycache__/test_global_sparse_gpr.cpython-38-pytest-7.4.0.pyc +0 -0
  85. agox-3.1.1/agox/test/model_tests/__pycache__/test_load.cpython-38-pytest-7.4.0.pyc +0 -0
  86. agox-3.1.1/agox/test/model_tests/__pycache__/test_local_gpr.cpython-38-pytest-7.4.0.pyc +0 -0
  87. agox-3.1.1/agox/test/model_tests/__pycache__/test_ray_gpr.cpython-38-pytest-7.4.0.pyc +0 -0
  88. agox-3.1.1/agox/test/model_tests/__pycache__/test_ray_sgpr_global.cpython-38-pytest-7.4.0.pyc +0 -0
  89. agox-3.1.1/agox/test/model_tests/__pycache__/test_ray_sgpr_local.cpython-38-pytest-7.4.0.pyc +0 -0
  90. agox-3.1.1/agox/test/model_tests/descriptors_api.py +23 -0
  91. agox-3.1.1/agox/test/model_tests/expected_outputs/GlobalGPR_dataAgO_parameter0.pckl +0 -0
  92. agox-3.1.1/agox/test/model_tests/expected_outputs/GlobalGPR_dataB12_parameter0.pckl +0 -0
  93. agox-3.1.1/agox/test/model_tests/expected_outputs/GlobalGPR_dataC30_parameter0.pckl +0 -0
  94. agox-3.1.1/agox/test/model_tests/expected_outputs/LocalSparseGPR_dataAgO_parameter0.pckl +0 -0
  95. agox-3.1.1/agox/test/model_tests/expected_outputs/LocalSparseGPR_dataB12_parameter0.pckl +0 -0
  96. agox-3.1.1/agox/test/model_tests/expected_outputs/LocalSparseGPR_dataC30_parameter0.pckl +0 -0
  97. agox-3.1.1/agox/test/model_tests/expected_outputs/globalSparseGPR_dataAgO_parameter0.pckl +0 -0
  98. agox-3.1.1/agox/test/model_tests/expected_outputs/globalSparseGPR_dataB12_parameter0.pckl +0 -0
  99. agox-3.1.1/agox/test/model_tests/expected_outputs/globalSparseGPR_dataC30_parameter0.pckl +0 -0
  100. agox-3.1.1/agox/test/model_tests/gpr_api.py +44 -0
  101. agox-3.1.1/agox/test/model_tests/load_api.py +25 -0
  102. {agox-2.2.2 → agox-3.1.1}/agox/test/model_tests/model_utils.py +16 -9
  103. agox-3.1.1/agox/test/model_tests/sgpr_api.py +41 -0
  104. agox-3.1.1/agox/test/model_tests/test_api.py +13 -0
  105. {agox-2.2.2 → agox-3.1.1}/agox/test/model_tests/test_global_gpr.py +16 -10
  106. agox-3.1.1/agox/test/model_tests/test_global_sparse_gpr.py +92 -0
  107. agox-3.1.1/agox/test/model_tests/test_load.py +62 -0
  108. agox-3.1.1/agox/test/model_tests/test_local_gpr.py +95 -0
  109. agox-3.1.1/agox/test/model_tests/test_ray_gpr.py +85 -0
  110. agox-3.1.1/agox/test/model_tests/test_ray_sgpr_global.py +83 -0
  111. agox-3.1.1/agox/test/model_tests/test_ray_sgpr_local.py +81 -0
  112. agox-3.1.1/agox/test/postprocessor_tests/__pycache__/model_results_test.cpython-38-pytest-7.4.0.pyc +0 -0
  113. agox-3.1.1/agox/test/postprocessor_tests/__pycache__/postprocessor_test.cpython-38-pytest-7.4.0.pyc +0 -0
  114. {agox-2.2.2 → agox-3.1.1}/agox/test/postprocessor_tests/model_results_test.py +19 -9
  115. {agox-2.2.2 → agox-3.1.1}/agox/test/postprocessor_tests/postprocessor_test.py +12 -10
  116. agox-3.1.1/agox/test/run_tests/__pycache__/run_utils.cpython-38.pyc +0 -0
  117. agox-2.2.2/agox/test/run_tests/__pycache__/test_bh.cpython-38-pytest-7.2.1.pyc → agox-3.1.1/agox/test/run_tests/__pycache__/test_bh.cpython-38-pytest-7.4.0.pyc +0 -0
  118. agox-3.1.1/agox/test/run_tests/__pycache__/test_ce_default_gofee.cpython-38-pytest-7.4.0.pyc +0 -0
  119. agox-3.1.1/agox/test/run_tests/__pycache__/test_ce_gofee.cpython-38-pytest-7.4.0.pyc +0 -0
  120. agox-2.2.2/agox/test/run_tests/__pycache__/test_ea.cpython-38-pytest-7.2.1.pyc → agox-3.1.1/agox/test/run_tests/__pycache__/test_ea.cpython-38-pytest-7.4.0.pyc +0 -0
  121. agox-3.1.1/agox/test/run_tests/__pycache__/test_gofee.cpython-38-pytest-7.4.0.pyc +0 -0
  122. agox-3.1.1/agox/test/run_tests/__pycache__/test_lgpr_bh.cpython-38-pytest-7.4.0.pyc +0 -0
  123. agox-2.2.2/agox/test/run_tests/__pycache__/test_pt.cpython-38-pytest-7.2.1.pyc → agox-3.1.1/agox/test/run_tests/__pycache__/test_pt.cpython-38-pytest-7.4.0.pyc +0 -0
  124. agox-2.2.2/agox/test/run_tests/__pycache__/test_rss.cpython-38-pytest-7.2.1.pyc → agox-3.1.1/agox/test/run_tests/__pycache__/test_rss.cpython-38-pytest-7.4.0.pyc +0 -0
  125. agox-3.1.1/agox/test/run_tests/__pycache__/test_rss_2d.cpython-38-pytest-7.4.0.pyc +0 -0
  126. agox-3.1.1/agox/test/run_tests/__pycache__/test_schnet_bh.cpython-38-pytest-7.4.0.pyc +0 -0
  127. {agox-2.2.2 → agox-3.1.1}/agox/test/run_tests/expected_outputs/bh_test/db0.db +0 -0
  128. agox-3.1.1/agox/test/run_tests/expected_outputs/ce_default_gofee_test/db0.db +0 -0
  129. agox-3.1.1/agox/test/run_tests/expected_outputs/ce_gofee_test/db0.db +0 -0
  130. agox-3.1.1/agox/test/run_tests/expected_outputs/ea_test/db0.db +0 -0
  131. agox-3.1.1/agox/test/run_tests/expected_outputs/ea_test/population_5.traj +0 -0
  132. agox-3.1.1/agox/test/run_tests/expected_outputs/gofee_test/db0.db +0 -0
  133. agox-3.1.1/agox/test/run_tests/expected_outputs/lgpr_bh_test/db0.db +0 -0
  134. agox-3.1.1/agox/test/run_tests/expected_outputs/pt_test/db0.db +0 -0
  135. {agox-2.2.2 → agox-3.1.1}/agox/test/run_tests/expected_outputs/rss_2d_test/db0.db +0 -0
  136. {agox-2.2.2 → agox-3.1.1}/agox/test/run_tests/expected_outputs/rss_test/db0.db +0 -0
  137. {agox-2.2.2 → agox-3.1.1}/agox/test/run_tests/run_utils.py +9 -3
  138. {agox-2.2.2 → agox-3.1.1}/agox/test/run_tests/script_bh.py +28 -17
  139. agox-3.1.1/agox/test/run_tests/script_ce_default_gofee.py +134 -0
  140. agox-3.1.1/agox/test/run_tests/script_ce_gofee.py +141 -0
  141. {agox-2.2.2 → agox-3.1.1}/agox/test/run_tests/script_ea.py +47 -30
  142. {agox-2.2.2 → agox-3.1.1}/agox/test/run_tests/script_gofee.py +68 -34
  143. agox-3.1.1/agox/test/run_tests/script_lgpr_bh.py +113 -0
  144. {agox-2.2.2 → agox-3.1.1}/agox/test/run_tests/script_pt.py +45 -27
  145. {agox-2.2.2 → agox-3.1.1}/agox/test/run_tests/script_rss.py +27 -17
  146. {agox-2.2.2 → agox-3.1.1}/agox/test/run_tests/script_rss_2d.py +39 -22
  147. agox-2.2.2/agox/test/run_tests/script_lgpr_bh.py → agox-3.1.1/agox/test/run_tests/script_schnet_bh.py +44 -29
  148. agox-3.1.1/agox/test/run_tests/test_ce_default_gofee.py +7 -0
  149. agox-3.1.1/agox/test/run_tests/test_ce_gofee.py +7 -0
  150. agox-3.1.1/agox/test/run_tests/test_gofee.py +7 -0
  151. agox-3.1.1/agox/test/run_tests/test_lgpr_bh.py +10 -0
  152. agox-3.1.1/agox/test/run_tests/test_schnet_bh.py +9 -0
  153. agox-3.1.1/agox/test/sampler_tests/__pycache__/sampler_test.cpython-38-pytest-7.4.0.pyc +0 -0
  154. agox-3.1.1/agox/test/sampler_tests/sampler_test.py +110 -0
  155. agox-3.1.1/agox/test/utils_tests/__pycache__/analysis_test.cpython-38-pytest-7.4.0.pyc +0 -0
  156. agox-3.1.1/agox/test/utils_tests/__pycache__/cache_test.cpython-38-pytest-7.4.0.pyc +0 -0
  157. agox-3.1.1/agox/test/utils_tests/__pycache__/plot_test.cpython-38-pytest-7.4.0.pyc +0 -0
  158. agox-3.1.1/agox/test/utils_tests/__pycache__/test_feature_dist_filter.cpython-38-pytest-7.4.0.pyc +0 -0
  159. agox-3.1.1/agox/test/utils_tests/__pycache__/tracker_test.cpython-38-pytest-7.4.0.pyc +0 -0
  160. agox-3.1.1/agox/test/utils_tests/cache_test.py +25 -0
  161. agox-3.1.1/agox/test/utils_tests/plot_test.py +124 -0
  162. agox-3.1.1/agox/test/utils_tests/test_feature_dist_filter.py +26 -0
  163. agox-3.1.1/agox/test/utils_tests/tracker_test.py +94 -0
  164. agox-2.2.2/agox/logger.py → agox-3.1.1/agox/tracker.py +171 -181
  165. agox-3.1.1/agox/utils/__init__.py +1 -0
  166. {agox-2.2.2 → agox-3.1.1}/agox/utils/batch_analysis.py +22 -71
  167. agox-3.1.1/agox/utils/cache.py +74 -0
  168. agox-3.1.1/agox/utils/decorators.py +20 -0
  169. agox-3.1.1/agox/utils/filters/ABC_filter.py +102 -0
  170. agox-3.1.1/agox/utils/filters/__init__.py +3 -0
  171. agox-3.1.1/agox/utils/filters/energy.py +34 -0
  172. agox-3.1.1/agox/utils/filters/feature_distance.py +93 -0
  173. agox-3.1.1/agox/utils/filters/filter.py +57 -0
  174. {agox-2.2.2 → agox-3.1.1}/agox/utils/jupyter_interactive.py +8 -14
  175. agox-3.1.1/agox/utils/plot.py +250 -0
  176. {agox-2.2.2 → agox-3.1.1}/agox/utils/ray_utils.py +88 -71
  177. agox-3.1.1/agox/utils/sparsifiers/ABC_sparsifier.py +125 -0
  178. agox-3.1.1/agox/utils/sparsifiers/CUR.py +20 -0
  179. agox-3.1.1/agox/utils/sparsifiers/MBkmeans.py +66 -0
  180. agox-3.1.1/agox/utils/sparsifiers/__init__.py +4 -0
  181. agox-3.1.1/agox/utils/sparsifiers/random.py +17 -0
  182. agox-3.1.1/agox.egg-info/PKG-INFO +54 -0
  183. {agox-2.2.2 → agox-3.1.1}/agox.egg-info/SOURCES.txt +109 -110
  184. {agox-2.2.2 → agox-3.1.1}/agox.egg-info/requires.txt +7 -2
  185. agox-3.1.1/pyproject.toml +9 -0
  186. {agox-2.2.2 → agox-3.1.1}/setup.py +26 -25
  187. agox-2.2.2/MANIFEST.in +0 -5
  188. agox-2.2.2/PKG-INFO +0 -39
  189. agox-2.2.2/README.md +0 -24
  190. agox-2.2.2/agox/acquisitors/__init__.py +0 -4
  191. agox-2.2.2/agox/candidates/__init__.py +0 -2
  192. agox-2.2.2/agox/collectors/__init__.py +0 -3
  193. agox-2.2.2/agox/collectors/ray_collector.py +0 -114
  194. agox-2.2.2/agox/databases/__init__.py +0 -3
  195. agox-2.2.2/agox/environments/__init__.py +0 -3
  196. agox-2.2.2/agox/evaluators/__init__.py +0 -3
  197. agox-2.2.2/agox/generators/__init__.py +0 -8
  198. agox-2.2.2/agox/helpers/plot_confinement.py +0 -108
  199. agox-2.2.2/agox/helpers/post_analysis_methods.py +0 -197
  200. agox-2.2.2/agox/models/ABC_model.py +0 -388
  201. agox-2.2.2/agox/models/GPR.py +0 -396
  202. agox-2.2.2/agox/models/__init__.py +0 -4
  203. agox-2.2.2/agox/models/descriptors/ABC_descriptor.py +0 -183
  204. agox-2.2.2/agox/models/descriptors/average_soap.py +0 -86
  205. agox-2.2.2/agox/models/descriptors/fingerprint.py +0 -23
  206. agox-2.2.2/agox/models/gaussian_process/GPR.py +0 -406
  207. agox-2.2.2/agox/models/gaussian_process/delta_functions_multi/delta.c +0 -10953
  208. agox-2.2.2/agox/models/gaussian_process/delta_functions_multi/delta.pyx +0 -221
  209. agox-2.2.2/agox/models/gaussian_process/featureCalculators_multi/angular_fingerprintFeature_cy.c +0 -17874
  210. agox-2.2.2/agox/models/gaussian_process/featureCalculators_multi/angular_fingerprintFeature_cy.pyx +0 -738
  211. agox-2.2.2/agox/models/gaussian_process/funcsigs.py +0 -815
  212. agox-2.2.2/agox/models/gaussian_process/kernels.py +0 -1437
  213. agox-2.2.2/agox/models/local_GPR/LSGPR.py +0 -571
  214. agox-2.2.2/agox/models/local_GPR/LSGPR_CUR.py +0 -27
  215. agox-2.2.2/agox/models/local_GPR/LSGPR_MBKMeans.py +0 -114
  216. agox-2.2.2/agox/models/local_GPR/LSGPR_MBKMeans_Noise.py +0 -22
  217. agox-2.2.2/agox/models/local_GPR/sparsifiers/ABC_sparsifier.py +0 -19
  218. agox-2.2.2/agox/models/local_GPR/sparsifiers/__init__.py +0 -1
  219. agox-2.2.2/agox/models/local_GPR/sparsifiers/latest.py +0 -16
  220. agox-2.2.2/agox/postprocessors/__init__.py +0 -7
  221. agox-2.2.2/agox/postprocessors/ray_relax.py +0 -145
  222. agox-2.2.2/agox/samplers/__init__.py +0 -7
  223. agox-2.2.2/agox/samplers/kmeans.py +0 -145
  224. agox-2.2.2/agox/test/__pycache__/__init__.cpython-38.pyc +0 -0
  225. agox-2.2.2/agox/test/__pycache__/conftest.cpython-38-pytest-7.2.1.pyc +0 -0
  226. agox-2.2.2/agox/test/__pycache__/test_featureCalculators_multi.cpython-38-pytest-7.2.1.pyc +0 -0
  227. agox-2.2.2/agox/test/__pycache__/test_utils.cpython-38-pytest-7.2.1.pyc +0 -0
  228. agox-2.2.2/agox/test/__pycache__/test_utils.cpython-38.pyc +0 -0
  229. agox-2.2.2/agox/test/datasets/databases/mos2_databases/BA_data/best_energies.pckl +0 -0
  230. agox-2.2.2/agox/test/datasets/databases/mos2_databases/BA_data/best_structure.pckl +0 -0
  231. agox-2.2.2/agox/test/datasets/databases/mos2_databases/BA_data/energies.pckl +0 -0
  232. agox-2.2.2/agox/test/datasets/databases/mos2_databases/BA_data/names.pckl +0 -0
  233. agox-2.2.2/agox/test/datasets/databases/mos2_databases/BA_data/order.pckl +0 -0
  234. agox-2.2.2/agox/test/datasets/databases/mos2_databases/dataset/BA_data/best_energies.pckl +0 -0
  235. agox-2.2.2/agox/test/datasets/databases/mos2_databases/dataset/BA_data/best_structure.pckl +0 -0
  236. agox-2.2.2/agox/test/datasets/databases/mos2_databases/dataset/BA_data/energies.pckl +0 -0
  237. agox-2.2.2/agox/test/datasets/databases/mos2_databases/dataset/BA_data/names.pckl +0 -0
  238. agox-2.2.2/agox/test/datasets/databases/mos2_databases/dataset/BA_data/order.pckl +0 -0
  239. agox-2.2.2/agox/test/datasets/databases/mos2_databases/dataset/db1.db +0 -0
  240. agox-2.2.2/agox/test/datasets/databases/mos2_databases/dataset/db10.db +0 -0
  241. agox-2.2.2/agox/test/datasets/databases/mos2_databases/dataset/db2.db +0 -0
  242. agox-2.2.2/agox/test/datasets/databases/mos2_databases/dataset/db3.db +0 -0
  243. agox-2.2.2/agox/test/datasets/databases/mos2_databases/dataset/db4.db +0 -0
  244. agox-2.2.2/agox/test/datasets/databases/mos2_databases/dataset/db5.db +0 -0
  245. agox-2.2.2/agox/test/datasets/databases/mos2_databases/dataset/db6.db +0 -0
  246. agox-2.2.2/agox/test/datasets/databases/mos2_databases/dataset/db7.db +0 -0
  247. agox-2.2.2/agox/test/datasets/databases/mos2_databases/dataset/db8.db +0 -0
  248. agox-2.2.2/agox/test/datasets/databases/mos2_databases/dataset/db9.db +0 -0
  249. agox-2.2.2/agox/test/datasets/databases/mos2_databases/db1.db +0 -0
  250. agox-2.2.2/agox/test/datasets/databases/mos2_databases/db10.db +0 -0
  251. agox-2.2.2/agox/test/datasets/databases/mos2_databases/db2.db +0 -0
  252. agox-2.2.2/agox/test/datasets/databases/mos2_databases/db3.db +0 -0
  253. agox-2.2.2/agox/test/datasets/databases/mos2_databases/db4.db +0 -0
  254. agox-2.2.2/agox/test/datasets/databases/mos2_databases/db5.db +0 -0
  255. agox-2.2.2/agox/test/datasets/databases/mos2_databases/db6.db +0 -0
  256. agox-2.2.2/agox/test/datasets/databases/mos2_databases/db7.db +0 -0
  257. agox-2.2.2/agox/test/datasets/databases/mos2_databases/db8.db +0 -0
  258. agox-2.2.2/agox/test/datasets/databases/mos2_databases/db9.db +0 -0
  259. agox-2.2.2/agox/test/descriptor_tests/__pycache__/soap_test.cpython-38-pytest-7.2.1.pyc +0 -0
  260. agox-2.2.2/agox/test/descriptor_tests/__pycache__/spectral_graph_test.cpython-38-pytest-7.2.1.pyc +0 -0
  261. agox-2.2.2/agox/test/generator_tests/__pycache__/generator_test.cpython-38-pytest-7.2.1.pyc +0 -0
  262. agox-2.2.2/agox/test/generator_tests/__pycache__/test_cog.cpython-38-pytest-7.2.1.pyc +0 -0
  263. agox-2.2.2/agox/test/generator_tests/__pycache__/test_permutation.cpython-38-pytest-7.2.1.pyc +0 -0
  264. agox-2.2.2/agox/test/generator_tests/__pycache__/test_random.cpython-38-pytest-7.2.1.pyc +0 -0
  265. agox-2.2.2/agox/test/generator_tests/__pycache__/test_rattle.cpython-38-pytest-7.2.1.pyc +0 -0
  266. agox-2.2.2/agox/test/generator_tests/__pycache__/test_replace.cpython-38-pytest-7.2.1.pyc +0 -0
  267. agox-2.2.2/agox/test/generator_tests/__pycache__/test_sampling.cpython-38-pytest-7.2.1.pyc +0 -0
  268. agox-2.2.2/agox/test/generator_tests/__pycache__/test_steepest_descent.cpython-38-pytest-7.2.1.pyc +0 -0
  269. agox-2.2.2/agox/test/model_tests/__pycache__/__init__.cpython-38.pyc +0 -0
  270. agox-2.2.2/agox/test/model_tests/__pycache__/model_utils.cpython-38.pyc +0 -0
  271. agox-2.2.2/agox/test/model_tests/__pycache__/test_global_gpr.cpython-38-pytest-7.2.1.pyc +0 -0
  272. agox-2.2.2/agox/test/model_tests/__pycache__/test_local_gpr.cpython-38-pytest-7.2.1.pyc +0 -0
  273. agox-2.2.2/agox/test/model_tests/__pycache__/test_local_gpr_kmeans.cpython-38-pytest-7.2.1.pyc +0 -0
  274. agox-2.2.2/agox/test/model_tests/__pycache__/test_new_global_gpr.cpython-38-pytest-7.2.1.pyc +0 -0
  275. agox-2.2.2/agox/test/model_tests/expected_outputs/LSGPRModelCUR_dataAgO_parameter0.pckl +0 -0
  276. agox-2.2.2/agox/test/model_tests/expected_outputs/LSGPRModelCUR_dataB12_parameter0.pckl +0 -0
  277. agox-2.2.2/agox/test/model_tests/expected_outputs/LSGPRModelCUR_dataC30_parameter0.pckl +0 -0
  278. agox-2.2.2/agox/test/model_tests/expected_outputs/LSGPRModelMBKMeans_dataAgO_parameter0.pckl +0 -0
  279. agox-2.2.2/agox/test/model_tests/expected_outputs/LSGPRModelMBKMeans_dataB12_parameter0.pckl +0 -0
  280. agox-2.2.2/agox/test/model_tests/expected_outputs/LSGPRModelMBKMeans_dataC30_parameter0.pckl +0 -0
  281. agox-2.2.2/agox/test/model_tests/expected_outputs/ModelGPR_dataAgO_parameter0.pckl +0 -0
  282. agox-2.2.2/agox/test/model_tests/expected_outputs/ModelGPR_dataB12_parameter0.pckl +0 -0
  283. agox-2.2.2/agox/test/model_tests/expected_outputs/ModelGPR_dataC30_parameter0.pckl +0 -0
  284. agox-2.2.2/agox/test/model_tests/test_local_gpr.py +0 -79
  285. agox-2.2.2/agox/test/model_tests/test_local_gpr_kmeans.py +0 -68
  286. agox-2.2.2/agox/test/postprocessor_tests/__pycache__/model_results_test.cpython-38-pytest-7.2.1.pyc +0 -0
  287. agox-2.2.2/agox/test/postprocessor_tests/__pycache__/postprocessor_test.cpython-38-pytest-7.2.1.pyc +0 -0
  288. agox-2.2.2/agox/test/run_tests/__pycache__/run_utils.cpython-38.pyc +0 -0
  289. agox-2.2.2/agox/test/run_tests/__pycache__/script_bh.cpython-38.pyc +0 -0
  290. agox-2.2.2/agox/test/run_tests/__pycache__/script_ea.cpython-38.pyc +0 -0
  291. agox-2.2.2/agox/test/run_tests/__pycache__/script_gofee.cpython-38.pyc +0 -0
  292. agox-2.2.2/agox/test/run_tests/__pycache__/script_lgpr_bh.cpython-38.pyc +0 -0
  293. agox-2.2.2/agox/test/run_tests/__pycache__/script_pt.cpython-38.pyc +0 -0
  294. agox-2.2.2/agox/test/run_tests/__pycache__/script_rss.cpython-38.pyc +0 -0
  295. agox-2.2.2/agox/test/run_tests/__pycache__/test_gofee.cpython-38-pytest-7.2.1.pyc +0 -0
  296. agox-2.2.2/agox/test/run_tests/__pycache__/test_lgpr_bh.cpython-38-pytest-7.2.1.pyc +0 -0
  297. agox-2.2.2/agox/test/run_tests/expected_outputs/bh_test/log.pckl +0 -0
  298. agox-2.2.2/agox/test/run_tests/expected_outputs/ea_test/db0.db +0 -0
  299. agox-2.2.2/agox/test/run_tests/expected_outputs/ea_test/log.pckl +0 -0
  300. agox-2.2.2/agox/test/run_tests/expected_outputs/ea_test/population_5.traj +0 -0
  301. agox-2.2.2/agox/test/run_tests/expected_outputs/gofee_test/db0.db +0 -0
  302. agox-2.2.2/agox/test/run_tests/expected_outputs/gofee_test/log.pckl +0 -0
  303. agox-2.2.2/agox/test/run_tests/expected_outputs/lgpr_bh_test/db0.db +0 -0
  304. agox-2.2.2/agox/test/run_tests/expected_outputs/lgpr_bh_test/log.pckl +0 -0
  305. agox-2.2.2/agox/test/run_tests/expected_outputs/pt_test/db0.db +0 -0
  306. agox-2.2.2/agox/test/run_tests/expected_outputs/pt_test/log.pckl +0 -0
  307. agox-2.2.2/agox/test/run_tests/expected_outputs/rss_test/log.pckl +0 -0
  308. agox-2.2.2/agox/test/run_tests/test_gofee.py +0 -5
  309. agox-2.2.2/agox/test/run_tests/test_lgpr_bh.py +0 -5
  310. agox-2.2.2/agox/test/sampler_tests/__pycache__/sampler_test.cpython-38-pytest-7.2.1.pyc +0 -0
  311. agox-2.2.2/agox/test/sampler_tests/sampler_test.py +0 -74
  312. agox-2.2.2/agox/test/test_featureCalculators_multi.py +0 -51
  313. agox-2.2.2/agox/test/utils_tests/__pycache__/analysis_test.cpython-38-pytest-7.2.1.pyc +0 -0
  314. agox-2.2.2/agox/utils/__init__.py +0 -0
  315. agox-2.2.2/agox.egg-info/PKG-INFO +0 -39
  316. agox-2.2.2/pyproject.toml +0 -3
  317. {agox-2.2.2 → agox-3.1.1}/LICENSE.txt +0 -0
  318. {agox-2.2.2 → agox-3.1.1}/agox/__init__.py +0 -0
  319. {agox-2.2.2 → agox-3.1.1}/agox/acquisitors/LCB_power.py +0 -0
  320. {agox-2.2.2 → agox-3.1.1}/agox/candidates/standard.py +0 -0
  321. /agox-2.2.2/agox/collectors/ray_pool_collector.py → /agox-3.1.1/agox/collectors/ray_collector.py +0 -0
  322. {agox-2.2.2 → agox-3.1.1}/agox/collectors/standard.py +0 -0
  323. {agox-2.2.2 → agox-3.1.1}/agox/databases/ABC_database.py +0 -0
  324. {agox-2.2.2 → agox-3.1.1}/agox/databases/concurrent_ordered.py +0 -0
  325. {agox-2.2.2 → agox-3.1.1}/agox/databases/database_concurrent.py +0 -0
  326. {agox-2.2.2 → agox-3.1.1}/agox/databases/database_utilities.py +0 -0
  327. {agox-2.2.2 → agox-3.1.1}/agox/evaluators/ABC_evaluator.py +0 -0
  328. {agox-2.2.2 → agox-3.1.1}/agox/evaluators/local_optimization.py +0 -0
  329. {agox-2.2.2 → agox-3.1.1}/agox/evaluators/rattle.py +0 -0
  330. {agox-2.2.2 → agox-3.1.1}/agox/evaluators/single_point.py +0 -0
  331. {agox-2.2.2 → agox-3.1.1}/agox/generators/cog.py +0 -0
  332. {agox-2.2.2/agox/helpers/helper_observers → agox-3.1.1/agox/generators/complementary_energy}/__init__.py +0 -0
  333. {agox-2.2.2/agox/models/gaussian_process → agox-3.1.1/agox/generators/complementary_energy/attractor_methods}/__init__.py +0 -0
  334. {agox-2.2.2 → agox-3.1.1}/agox/generators/permutation.py +0 -0
  335. {agox-2.2.2 → agox-3.1.1}/agox/generators/rattle.py +0 -0
  336. {agox-2.2.2 → agox-3.1.1}/agox/generators/replace.py +0 -0
  337. {agox-2.2.2 → agox-3.1.1}/agox/generators/reuse.py +0 -0
  338. {agox-2.2.2 → agox-3.1.1}/agox/generators/sampling.py +0 -0
  339. {agox-2.2.2 → agox-3.1.1}/agox/generators/steepest_descent.py +0 -0
  340. {agox-2.2.2 → agox-3.1.1}/agox/helpers/__init__.py +0 -0
  341. {agox-2.2.2 → agox-3.1.1}/agox/helpers/confinement.py +0 -0
  342. {agox-2.2.2/agox/models/local_GPR → agox-3.1.1/agox/helpers/helper_observers}/__init__.py +0 -0
  343. {agox-2.2.2 → agox-3.1.1}/agox/helpers/helper_observers/parameter_updater.py +0 -0
  344. {agox-2.2.2/agox/models → agox-3.1.1/agox/models/GPR}/priors/setup.py +0 -0
  345. /agox-2.2.2/agox/test/datasets/AgO-dataset.traj → /agox-3.1.1/agox/models/datasets/Ag5O3-dataset.traj +0 -0
  346. {agox-2.2.2 → agox-3.1.1}/agox/models/datasets/__init__.py +0 -0
  347. {agox-2.2.2 → agox-3.1.1}/agox/models/datasets/loader.py +0 -0
  348. {agox-2.2.2 → agox-3.1.1}/agox/models/descriptors/__init__.py +0 -0
  349. {agox-2.2.2/agox/models/priors → agox-3.1.1/agox/models/descriptors/fingerprint_cython}/__init__.py +0 -0
  350. {agox-2.2.2 → agox-3.1.1}/agox/models/descriptors/fingerprint_cython/angular_fingerprintFeature_cy.pyx +0 -0
  351. {agox-2.2.2 → agox-3.1.1}/agox/postprocessors/ABC_postprocess.py +0 -0
  352. {agox-2.2.2 → agox-3.1.1}/agox/postprocessors/centering.py +0 -0
  353. {agox-2.2.2 → agox-3.1.1}/agox/postprocessors/immunizer.py +0 -0
  354. {agox-2.2.2 → agox-3.1.1}/agox/postprocessors/minimum_dist.py +0 -0
  355. {agox-2.2.2 → agox-3.1.1}/agox/postprocessors/mpi_relax.py +0 -0
  356. {agox-2.2.2 → agox-3.1.1}/agox/postprocessors/wrap.py +0 -0
  357. {agox-2.2.2 → agox-3.1.1}/agox/samplers/ABC_sampler.py +0 -0
  358. {agox-2.2.2 → agox-3.1.1}/agox/samplers/metropolis.py +0 -0
  359. {agox-2.2.2 → agox-3.1.1}/agox/samplers/parallel_tempering_sampler.py +0 -0
  360. {agox-2.2.2 → agox-3.1.1}/agox/samplers/spectral_graph.py +0 -0
  361. {agox-2.2.2 → agox-3.1.1}/agox/test/.coverage +0 -0
  362. {agox-2.2.2 → agox-3.1.1}/agox/test/.coveragerc +0 -0
  363. {agox-2.2.2 → agox-3.1.1}/agox/test/__init__.py +0 -0
  364. {agox-2.2.2 → agox-3.1.1}/agox/test/database_tests/database_test.py +0 -0
  365. {agox-2.2.2 → agox-3.1.1}/agox/test/datasets/B12-dataset.traj +0 -0
  366. {agox-2.2.2 → agox-3.1.1}/agox/test/datasets/C30-dataset.traj +0 -0
  367. {agox-2.2.2 → agox-3.1.1}/agox/test/descriptor_tests/expected_outputs/SOAP_AgO.pckl +0 -0
  368. {agox-2.2.2 → agox-3.1.1}/agox/test/descriptor_tests/expected_outputs/SOAP_B12.pckl +0 -0
  369. {agox-2.2.2 → agox-3.1.1}/agox/test/descriptor_tests/expected_outputs/SOAP_C30.pckl +0 -0
  370. {agox-2.2.2 → agox-3.1.1}/agox/test/environment_tests/environment_test.py +0 -0
  371. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataAgO_parameter0.pckl +0 -0
  372. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataAgO_parameter1.pckl +0 -0
  373. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataAgO_parameter2.pckl +0 -0
  374. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataB12_parameter0.pckl +0 -0
  375. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataB12_parameter1.pckl +0 -0
  376. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataB12_parameter2.pckl +0 -0
  377. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataC30_parameter0.pckl +0 -0
  378. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataC30_parameter1.pckl +0 -0
  379. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataC30_parameter2.pckl +0 -0
  380. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/PermutationGenerator_dataAgO_parameter0.pckl +0 -0
  381. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/PermutationGenerator_dataAgO_parameter1.pckl +0 -0
  382. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/PermutationGenerator_dataAgO_parameter2.pckl +0 -0
  383. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataAgO_parameter0.pckl +0 -0
  384. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataAgO_parameter1.pckl +0 -0
  385. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataAgO_parameter2.pckl +0 -0
  386. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataB12_parameter0.pckl +0 -0
  387. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataB12_parameter1.pckl +0 -0
  388. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataB12_parameter2.pckl +0 -0
  389. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataC30_parameter0.pckl +0 -0
  390. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataC30_parameter1.pckl +0 -0
  391. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataC30_parameter2.pckl +0 -0
  392. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataAgO_parameter0.pckl +0 -0
  393. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataAgO_parameter1.pckl +0 -0
  394. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataAgO_parameter2.pckl +0 -0
  395. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataB12_parameter0.pckl +0 -0
  396. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataB12_parameter1.pckl +0 -0
  397. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataB12_parameter2.pckl +0 -0
  398. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataC30_parameter0.pckl +0 -0
  399. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataC30_parameter1.pckl +0 -0
  400. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataC30_parameter2.pckl +0 -0
  401. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataAgO_parameter0.pckl +0 -0
  402. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataAgO_parameter1.pckl +0 -0
  403. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataAgO_parameter2.pckl +0 -0
  404. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataB12_parameter0.pckl +0 -0
  405. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataB12_parameter1.pckl +0 -0
  406. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataB12_parameter2.pckl +0 -0
  407. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataC30_parameter0.pckl +0 -0
  408. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataC30_parameter1.pckl +0 -0
  409. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataC30_parameter2.pckl +0 -0
  410. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/SamplingGenerator_dataAgO_parameter0.pckl +0 -0
  411. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/SamplingGenerator_dataB12_parameter0.pckl +0 -0
  412. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/SamplingGenerator_dataC30_parameter0.pckl +0 -0
  413. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/SteepestDescentGenerator_dataAgO_parameter0.pckl +0 -0
  414. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/SteepestDescentGenerator_dataB12_parameter0.pckl +0 -0
  415. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/expected_outputs/SteepestDescentGenerator_dataC30_parameter0.pckl +0 -0
  416. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/generator_utils.py +0 -0
  417. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/test_cog.py +0 -0
  418. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/test_permutation.py +0 -0
  419. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/test_random.py +0 -0
  420. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/test_rattle.py +0 -0
  421. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/test_replace.py +0 -0
  422. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/test_sampling.py +0 -0
  423. {agox-2.2.2 → agox-3.1.1}/agox/test/generator_tests/test_steepest_descent.py +0 -0
  424. {agox-2.2.2 → agox-3.1.1}/agox/test/model_tests/__init__.py +0 -0
  425. {agox-2.2.2 → agox-3.1.1}/agox/test/run_tests/test_bh.py +0 -0
  426. {agox-2.2.2 → agox-3.1.1}/agox/test/run_tests/test_ea.py +0 -0
  427. {agox-2.2.2 → agox-3.1.1}/agox/test/run_tests/test_pt.py +0 -0
  428. {agox-2.2.2 → agox-3.1.1}/agox/test/run_tests/test_rss.py +0 -0
  429. {agox-2.2.2 → agox-3.1.1}/agox/test/run_tests/test_rss_2d.py +0 -0
  430. {agox-2.2.2 → agox-3.1.1}/agox/test/test_utils.py +0 -0
  431. {agox-2.2.2 → agox-3.1.1}/agox/test/utils_tests/analysis_test.py +0 -0
  432. {agox-2.2.2 → agox-3.1.1}/agox/utils/constraints/__init__.py +0 -0
  433. {agox-2.2.2 → agox-3.1.1}/agox/utils/constraints/box_constraint.py +0 -0
  434. {agox-2.2.2 → agox-3.1.1}/agox/utils/convert_database.py +0 -0
  435. {agox-2.2.2 → agox-3.1.1}/agox/utils/data_selection.py +0 -0
  436. {agox-2.2.2 → agox-3.1.1}/agox/utils/matplotlib_utils.py +0 -0
  437. {agox-2.2.2 → agox-3.1.1}/agox/utils/notebook_batch_analysis.py +0 -0
  438. {agox-2.2.2 → agox-3.1.1}/agox/writer.py +0 -0
  439. {agox-2.2.2 → agox-3.1.1}/agox.egg-info/dependency_links.txt +0 -0
  440. {agox-2.2.2 → agox-3.1.1}/agox.egg-info/entry_points.txt +0 -0
  441. {agox-2.2.2 → agox-3.1.1}/agox.egg-info/top_level.txt +0 -0
  442. {agox-2.2.2 → agox-3.1.1}/setup.cfg +0 -0
agox-3.1.1/MANIFEST.in ADDED
@@ -0,0 +1,4 @@
1
+ recursive-include agox/test *
2
+ include agox/models/datasets/*.traj
3
+ global-include *.pyx
4
+
agox-3.1.1/PKG-INFO ADDED
@@ -0,0 +1,54 @@
1
+ Metadata-Version: 2.1
2
+ Name: agox
3
+ Version: 3.1.1
4
+ Summary: Atomistic Global Optimziation X is a framework for structure optimization in materials science.
5
+ Home-page: https://agox.gitlab.io/agox/
6
+ Author: Mads-Peter V. Christiansen, Nikolaj Ronne, Bjork Hammer
7
+ Author-email: hammer@phys.au.dk
8
+ License: GNU GPLv3
9
+ Project-URL: Source Code, https://gitlab.com/agox/agox
10
+ Project-URL: Documentation, https://agox.gitlab.io/agox
11
+ Requires-Python: >=3.5
12
+ Description-Content-Type: text/markdown
13
+ Provides-Extra: full
14
+ Provides-Extra: extras
15
+ License-File: LICENSE.txt
16
+
17
+ # Atomistic Global Optimization X (AGOX)
18
+
19
+ AGOX is a package for global optimization of atomic system using e.g. the energy
20
+ calculated from density functional theory as the objective function. AGOX interfaces
21
+ with the Atomistic Simulation Environment (ASE) and as such supports any of
22
+ calculators in ASE as objectives for optimization.
23
+
24
+ AGOX is built to be flexible, consisting of modules that can be put together to
25
+ create an optimization algorithm, from simple random searches to Bayesian searches
26
+ guided by a surrogate model and many more.
27
+
28
+ Check out the documentation at
29
+
30
+ https://agox.gitlab.io/agox/
31
+
32
+ # Contributions & Issues
33
+
34
+ Feel free to make a fork and submit a merge request!
35
+
36
+ If you have an issue or a question please post it on the issue board!
37
+
38
+ # Authors
39
+
40
+ The main AGOX framework has been written by
41
+ * Mads-Peter Verner Christiansen
42
+ * Nikolaj Rønne
43
+ * Bjørk Hammer
44
+
45
+ with inspiration and help from current and previous members of the Hammer group at Aarhus University, Denmark.
46
+ Parts of the code have been contributed by
47
+
48
+ * Andreas Slavensky (Complementary Energy Generator)
49
+
50
+ # License
51
+
52
+ AGOX is released under the GPLv3 license.
53
+
54
+
agox-3.1.1/README.md ADDED
@@ -0,0 +1,38 @@
1
+ # Atomistic Global Optimization X (AGOX)
2
+
3
+ AGOX is a package for global optimization of atomic system using e.g. the energy
4
+ calculated from density functional theory as the objective function. AGOX interfaces
5
+ with the Atomistic Simulation Environment (ASE) and as such supports any of
6
+ calculators in ASE as objectives for optimization.
7
+
8
+ AGOX is built to be flexible, consisting of modules that can be put together to
9
+ create an optimization algorithm, from simple random searches to Bayesian searches
10
+ guided by a surrogate model and many more.
11
+
12
+ Check out the documentation at
13
+
14
+ https://agox.gitlab.io/agox/
15
+
16
+ # Contributions & Issues
17
+
18
+ Feel free to make a fork and submit a merge request!
19
+
20
+ If you have an issue or a question please post it on the issue board!
21
+
22
+ # Authors
23
+
24
+ The main AGOX framework has been written by
25
+ * Mads-Peter Verner Christiansen
26
+ * Nikolaj Rønne
27
+ * Bjørk Hammer
28
+
29
+ with inspiration and help from current and previous members of the Hammer group at Aarhus University, Denmark.
30
+ Parts of the code have been contributed by
31
+
32
+ * Andreas Slavensky (Complementary Energy Generator)
33
+
34
+ # License
35
+
36
+ AGOX is released under the GPLv3 license.
37
+
38
+
@@ -1,2 +1,2 @@
1
- __version_info__ = (2, 2, 2)
1
+ __version_info__ = (3, 1, 1)
2
2
  __version__ = '{}.{}.{}'.format(*__version_info__)
@@ -144,23 +144,24 @@ class AcquisitonCalculatorBaseClass(Calculator, Module):
144
144
 
145
145
  name = 'AcqusitionCalculator'
146
146
 
147
- def __init__(self, model_calculator, **kwargs):
148
- super().__init__(**kwargs)
149
- self.model_calculator = model_calculator
147
+ def __init__(self, model, **kwargs):
148
+ Calculator.__init__(self, **kwargs)
149
+ Module.__init__(self)
150
+ self.model = model
150
151
 
151
152
  @property
152
153
  def verbose(self):
153
- return self.model_calculator.verbose
154
+ return self.model.verbose
154
155
 
155
156
  def get_model_parameters(self):
156
- parameters = self.model_calculator.get_model_parameters()
157
+ parameters = self.model.get_model_parameters()
157
158
  return parameters
158
159
 
159
160
  def set_model_parameters(self, parameters):
160
- self.model_calculator.set_model_parameters(parameters)
161
+ self.model.set_model_parameters(parameters)
161
162
 
162
163
  def set_verbosity(self, verbose):
163
- self.model_calculator.set_verbosity(verbose)
164
+ self.model.set_verbosity(verbose)
164
165
 
165
166
  def get_iteration_number(self):
166
167
  if hasattr(self, 'get_iteration_counter'):
@@ -170,4 +171,4 @@ class AcquisitonCalculatorBaseClass(Calculator, Module):
170
171
 
171
172
  @property
172
173
  def ready_state(self):
173
- return self.model_calculator.ready_state
174
+ return self.model.ready_state
@@ -6,19 +6,17 @@ class LowerConfidenceBoundAcquisitor(AcquisitorBaseClass):
6
6
 
7
7
  name = 'LCBAcquisitor'
8
8
 
9
- def __init__(self, model_calculator, kappa=1, **kwargs):
9
+ def __init__(self, model, kappa=1, **kwargs):
10
10
  super().__init__(**kwargs)
11
11
  self.kappa = kappa
12
- self.model_calculator = model_calculator
12
+ self.model = model
13
13
 
14
14
  def calculate_acquisition_function(self, candidates):
15
15
  fitness = np.zeros(len(candidates))
16
16
 
17
17
  # Attach calculator and get model_energy
18
18
  for i, candidate in enumerate(candidates):
19
- candidate.set_calculator(self.model_calculator)
20
- E = candidate.get_potential_energy()
21
- sigma = candidate.get_uncertainty()
19
+ E, sigma = self.model.predict_energy_and_uncertainty(candidate)
22
20
  fitness[i] = self.acquisition_function(E, sigma)
23
21
 
24
22
  # For printing:
@@ -28,7 +26,7 @@ class LowerConfidenceBoundAcquisitor(AcquisitorBaseClass):
28
26
  return fitness
29
27
 
30
28
  def print_information(self, candidates, acquisition_values):
31
- if self.model_calculator.ready_state:
29
+ if self.model.ready_state:
32
30
  for i, candidate in enumerate(candidates):
33
31
  fitness = acquisition_values[i]
34
32
  Emodel = candidate.get_meta_information('model_energy')
@@ -36,7 +34,7 @@ class LowerConfidenceBoundAcquisitor(AcquisitorBaseClass):
36
34
  self.writer('Candidate: E={:8.3f}, s={:8.3f}, F={:8.3f}'.format(Emodel, sigma, fitness))
37
35
 
38
36
  def get_acquisition_calculator(self):
39
- return LowerConfidenceBoundCalculator(self.model_calculator, self.acquisition_function, self.acquisition_force)
37
+ return LowerConfidenceBoundCalculator(self.model, self.acquisition_function, self.acquisition_force)
40
38
 
41
39
  def acquisition_function(self, E, sigma):
42
40
  return E - self.kappa * sigma
@@ -45,14 +43,14 @@ class LowerConfidenceBoundAcquisitor(AcquisitorBaseClass):
45
43
  return F - self.kappa*sigma_force
46
44
 
47
45
  def do_check(self, **kwargs):
48
- return self.model_calculator.ready_state
46
+ return self.model.ready_state
49
47
 
50
48
  class LowerConfidenceBoundCalculator(AcquisitonCalculatorBaseClass):
51
49
 
52
50
  implemented_properties = ['energy', 'forces']
53
51
 
54
- def __init__(self, model_calculator, acquisition_function, acquisition_force, **kwargs):
55
- super().__init__(model_calculator, **kwargs)
52
+ def __init__(self, model, acquisition_function, acquisition_force, **kwargs):
53
+ super().__init__(model, **kwargs)
56
54
  self.acquisition_function = acquisition_function
57
55
  self.acquisition_force = acquisition_force
58
56
 
@@ -61,13 +59,14 @@ class LowerConfidenceBoundCalculator(AcquisitonCalculatorBaseClass):
61
59
  system_changes=all_changes):
62
60
  super().calculate(atoms, properties, system_changes)
63
61
 
64
- if 'forces' in properties:
65
- E, sigma = self.model_calculator.predict_energy(atoms, return_uncertainty=True)
66
- F, sigma_force = self.model_calculator.predict_forces(atoms, return_uncertainty=True, acquisition_function=self.acquisition_function)
67
- self.results['forces'] = self.acquisition_force(E, F, sigma, sigma_force)
68
- else:
69
- E, sigma = self.model_calculator.predict_energy(atoms, return_uncertainty=True)
70
-
62
+ model_data = self.model.converter(atoms)
63
+
64
+ E = self.model.predict_energy(atoms, **model_data)
65
+ sigma = self.model.predict_uncertainty(atoms, **model_data)
66
+ F = self.model.predict_forces(atoms, **model_data)
67
+ sigma_force = self.model.predict_uncertainty_forces(atoms, **model_data)
68
+
69
+ self.results['forces'] = self.acquisition_force(E, F, sigma, sigma_force)
71
70
  self.results['energy'] = self.acquisition_function(E, sigma)
72
71
 
73
72
 
@@ -0,0 +1,25 @@
1
+ """
2
+ Acquisitors are used to select the next candidate to evaluate among a number of
3
+ candidates, usually by sorting according to some metric.
4
+ The concept of acquisitors comes from Bayesian search algorithms.
5
+
6
+ A common acquisitor is the Lower Confidence Bound (LCB) acquisitor, which
7
+ selects according to the expression
8
+
9
+ .. math::
10
+ LCB(x) = E(x) - \kappa \sigma(x).
11
+
12
+ Where E(x) is a prediction of the objective function at x, and :math:`\sigma(x)`
13
+ is the uncertainty of the prediction. :math:`\kappa` is a parameter that
14
+ controls the trade-off between exploration and exploitation.
15
+ This lets an algorithm choose which candidates to evaluate, but
16
+ does require the generation of multiple candidates to choose from.
17
+ """
18
+
19
+
20
+
21
+
22
+ from .ABC_acquisitor import AcquisitorBaseClass, AcquisitonCalculatorBaseClass
23
+ from .LCB import LowerConfidenceBoundAcquisitor, LowerConfidenceBoundCalculator
24
+ from .LCB_power import PowerLowerConfidenceBoundAcquisitor
25
+
@@ -2,14 +2,16 @@ from abc import ABC, abstractmethod
2
2
  from ase import Atoms
3
3
  import numpy as np
4
4
 
5
+ import functools
5
6
  from copy import deepcopy
6
7
  from ase.calculators.singlepoint import SinglePointCalculator
7
8
 
8
9
  from agox.module import Module
9
-
10
+ from agox.utils.cache import Cache
11
+
10
12
  class CandidateBaseClass(ABC, Atoms, Module):
11
13
 
12
- def __init__(self, template=None, template_indices=None, **kwargs):
14
+ def __init__(self, template=None, template_indices=None, use_cache=True, **kwargs):
13
15
  """
14
16
 
15
17
  Initialization method of the Candidate.
@@ -26,8 +28,11 @@ class CandidateBaseClass(ABC, Atoms, Module):
26
28
  cell, positions and numbers of ALL atoms - including template atoms.
27
29
  """
28
30
  Atoms.__init__(self, **kwargs) # This means all Atoms-related stuff gets set.
29
- Module.__init__(self)
31
+ Module.__init__(self, use_cache=use_cache)
30
32
  self.meta_information = dict()
33
+
34
+ self.use_cache = use_cache
35
+ self._cache = Cache()
31
36
 
32
37
  # Template stuff:
33
38
  if template_indices is not None:
@@ -50,6 +55,54 @@ class CandidateBaseClass(ABC, Atoms, Module):
50
55
  # if len(template) > 0:
51
56
  # assert (self.positions[:len(template)] == template.positions).all(), 'Template and positions do not match'
52
57
 
58
+
59
+ @classmethod
60
+ def cache(cls, key):
61
+ def decorator(func):
62
+ @functools.wraps(func)
63
+ def wrapper(self, atoms, *args, **kwargs):
64
+ if not self.use_cache:
65
+ return func(self, atoms, *args, **kwargs)
66
+
67
+ full_key = self.cache_key + '/' + key
68
+ if isinstance(atoms, CandidateBaseClass):
69
+ value = atoms.get_from_cache(full_key)
70
+ if value is None:
71
+ value = func(self, atoms, *args, **kwargs)
72
+ if atoms.use_cache:
73
+ atoms.set_to_cache(full_key, value)
74
+ else:
75
+ value = func(self, atoms, *args, **kwargs)
76
+
77
+ return value
78
+ return wrapper
79
+ return decorator
80
+
81
+ def get_from_cache(self, key):
82
+ if not self.use_cache:
83
+ return None
84
+
85
+ identifier, value = self._cache.get(key, (None, None))
86
+ if identifier is not None:
87
+ if self.compare_identity(identifier):
88
+ return value
89
+ else:
90
+ return None
91
+
92
+ def set_to_cache(self, key, value):
93
+ self._cache.put(key, (self.get_identifier(), value))
94
+
95
+ def compare_identity(self, identifier):
96
+ for a,b in zip(identifier, self.get_identifier()):
97
+ equal = (a == b).all()
98
+ if not equal:
99
+ return equal
100
+ return equal
101
+
102
+ def get_identifier(self):
103
+ return (self.get_atomic_numbers(), self.get_positions(), self.get_cell())
104
+
105
+
53
106
  def add_meta_information(self, name, value):
54
107
  """
55
108
  Adds an entry to the meta_information dictionary
@@ -265,3 +318,31 @@ class CandidateBaseClass(ABC, Atoms, Module):
265
318
  return np.mean(self.positions, axis=0).reshape(1, 3)
266
319
  else:
267
320
  return np.mean(self.positions[self.get_optimize_indices()], axis=0).reshape(1, 3)
321
+
322
+ def set_calculator(self, calc):
323
+ """
324
+ "Old" ASE syntax for setting calculator, avoids the annoying warning and
325
+ uses this better syntax.
326
+
327
+ Parameters
328
+ -----------
329
+ calc: calculator
330
+ Calculator to set.
331
+ """
332
+ self.calc = calc
333
+
334
+ def disable_cache(candidate):
335
+ # Can be either Candidate or Atoms.
336
+ if isinstance(candidate, CandidateBaseClass):
337
+ candidate.use_cache = False
338
+
339
+ def switch_cache(candidate, state):
340
+ prev_state = False
341
+ if isinstance(candidate, CandidateBaseClass):
342
+ prev_state = candidate.use_cache
343
+ candidate.use_cache = state
344
+ return prev_state
345
+
346
+
347
+
348
+
@@ -0,0 +1,8 @@
1
+ """
2
+ A candidate is the basic piece of data being moved around in the algorithm.
3
+ Generators create candidates, and evaluators evaluate the objective function
4
+ at the coordinates described by the candidate.
5
+ """
6
+
7
+ from .ABC_candidate import CandidateBaseClass
8
+ from .standard import StandardCandidate
@@ -1,6 +1,6 @@
1
1
  import numpy as np
2
2
  from abc import ABC, abstractmethod
3
- from agox.module import Module
3
+ from agox.module import Module, register_modules
4
4
  from agox.observer import Observer
5
5
  from agox.writer import Writer, agox_writer
6
6
 
@@ -47,6 +47,9 @@ class CollectorBaseClass(ABC, Observer, Writer):
47
47
  if observer_method.method_name == 'generate':
48
48
  generator.remove_observer_method(observer_method)
49
49
 
50
+ # Register the generators as attributes of the collector, so that they can be tracked.
51
+ register_modules(self, self.generators, 'generator')
52
+
50
53
  @abstractmethod
51
54
  def make_candidates(self):
52
55
  """
@@ -0,0 +1,7 @@
1
+ """
2
+ Collectors are used to collect multiple candidates generated by generators.
3
+ This is a task that can be parallelized over the number of generated candidates,
4
+ and this is done using parallelization from Ray.
5
+ """
6
+ from agox.collectors.standard import StandardCollector
7
+ from agox.collectors.ray_collector import ParallelCollector
@@ -0,0 +1,12 @@
1
+ """
2
+ A database records the candidates that have been evaluated during a search.
3
+
4
+ Further, because some things need to be trained, e.g. a ML potential model,
5
+ databases can be used to store the training data. The databases all implement
6
+ a similar observer-pattern as the main AGOX class, so models can be trained
7
+ whenever data is added to the database.
8
+ """
9
+
10
+ from .ABC_database import DatabaseBaseClass
11
+ from agox.databases.database import Database
12
+ from agox.databases.database_concurrent import ConcurrentDatabase
@@ -28,7 +28,8 @@ class Database(DatabaseBaseClass):
28
28
  forces blob,
29
29
  pbc blob,
30
30
  template_indices blob,
31
- iteration int
31
+ iteration int,
32
+ cache_key text
32
33
  )""",
33
34
 
34
35
  """CREATE TABLE text_key_values (
@@ -66,12 +67,12 @@ class Database(DatabaseBaseClass):
66
67
 
67
68
  # Pack: Positions, energy, type, cell, forces, pbc, template_indices, iteration
68
69
  # Unpack: ID, time, -//-
69
- pack_functions = [blob, nothing, blob, blob, blob, blob, blob, nothing]
70
- unpack_functions = [nothing, nothing, deblob, nothing, deblob, deblob, deblob, deblob, deblob, nothing]
70
+ pack_functions = [blob, nothing, blob, blob, blob, blob, blob, nothing, nothing]
71
+ unpack_functions = [nothing, nothing, deblob, nothing, deblob, deblob, deblob, deblob, deblob, nothing, nothing]
71
72
 
72
73
  name = 'Database'
73
74
 
74
- def __init__(self, filename='db.db', initialize=False, verbose=False, write_frequency=1, call_initialize=True,
75
+ def __init__(self, filename='db.db', initialize=False, verbose=False, write_interval=1, call_initialize=True,
75
76
  store_meta_information=True, **kwargs):
76
77
  super().__init__(**kwargs)
77
78
 
@@ -80,10 +81,10 @@ class Database(DatabaseBaseClass):
80
81
  if initialize and os.path.exists(filename):
81
82
  os.remove(filename)
82
83
  self.con = sqlite3.connect(filename, timeout=600)
83
- self.write_frequency = write_frequency
84
+ self.write_interval = write_interval
84
85
 
85
86
  # Important that this matches the init_statements list.
86
- self.storage_keys = ['positions', 'energy', 'type', 'cell', 'forces', 'pbc', 'template_indices', 'iteration']
87
+ self.storage_keys = ['positions', 'energy', 'type', 'cell', 'forces', 'pbc', 'template_indices', 'iteration', 'cache_key']
87
88
 
88
89
  # Memory-based stuff:
89
90
  self.candidate_instanstiator = StandardCandidate
@@ -177,6 +178,7 @@ class Database(DatabaseBaseClass):
177
178
  self.storage_dict['pbc'].append(np.array(candidate.pbc.astype(int), dtype=np.float64))
178
179
  self.storage_dict['template_indices'].append(np.array(candidate.get_template_indices(), dtype=np.float64))
179
180
  self.storage_dict['iteration'].append(self.get_iteration_counter())
181
+ self.storage_dict['cache_key'].append(candidate.cache_key)
180
182
  self.number_of_rows += 1
181
183
 
182
184
  if self.store_meta_information:
@@ -203,7 +205,7 @@ class Database(DatabaseBaseClass):
203
205
  if not already_stored:
204
206
  self.store_information(candidate)
205
207
 
206
- if self.number_of_rows == self.write_frequency or force_write:
208
+ if self.number_of_rows == self.write_interval or force_write:
207
209
  try:
208
210
  for row_index in range(self.number_of_rows):
209
211
  cur = self.con.cursor()
@@ -264,6 +266,7 @@ class Database(DatabaseBaseClass):
264
266
  cell = structure['cell']
265
267
  pbc = structure.get('pbc', None)
266
268
  template_indices = structure.get('template_indices', None)
269
+ cache_key = structure.get('cache_key', None)
267
270
 
268
271
  if hasattr(self, 'template') and template_indices is None:
269
272
  template = self.template
@@ -271,6 +274,7 @@ class Database(DatabaseBaseClass):
271
274
  template = None
272
275
 
273
276
  candidate = self.candidate_instanstiator(symbols = num, positions = pos, cell = cell, pbc=pbc, template=template, template_indices=template_indices)
277
+ candidate.cache_key = cache_key
274
278
  calc = SinglePointCalculator(candidate, energy=e, forces=f)
275
279
  candidate.set_calculator(calc)
276
280
 
@@ -7,6 +7,9 @@ from ase.constraints import FixAtoms
7
7
  from agox.module import Module
8
8
 
9
9
  class EnvironmentBaseClass(ABC, Module):
10
+
11
+ name = 'Environment'
12
+
10
13
  """
11
14
  The Environment contains important properties about the envrionment (or conditions) of the global atomisation problem.
12
15
  These are at least:
@@ -0,0 +1,12 @@
1
+ """
2
+ An environment describes the search problem
3
+ - How many and which types of atoms will the search place?
4
+ - What is the computational cell?
5
+ - Is there a fixed template, e.g. a surface to be decorated by the search?
6
+ - Is the search constrained to a certain region of space?
7
+
8
+ These are settings that are not part of the search algorithm itself, but
9
+ rather describe the problem that the search is trying to solve.
10
+ """
11
+ from .ABC_environment import EnvironmentBaseClass
12
+ from agox.environments.environment import Environment
@@ -1,11 +1,15 @@
1
1
  import numpy as np
2
2
  from agox.environments.ABC_environment import EnvironmentBaseClass
3
+ from ase import Atoms
3
4
  from ase.atoms import symbols2numbers
4
5
  from ase.symbols import Symbols
5
6
 
7
+
6
8
  class Environment(EnvironmentBaseClass):
7
9
 
8
- def __init__(self, template, numbers=None, symbols=None, **kwargs):
10
+ def __init__(self, template, numbers=None, symbols=None, print_report=True,
11
+ **kwargs):
12
+
9
13
  super().__init__(**kwargs)
10
14
 
11
15
  # Both numbers and symbols cannot be specified:
@@ -17,8 +21,9 @@ class Environment(EnvironmentBaseClass):
17
21
  self._numbers = symbols2numbers(symbols)
18
22
 
19
23
  self._template = template
20
-
21
- self.environment_report()
24
+
25
+ if print_report:
26
+ self.environment_report()
22
27
 
23
28
 
24
29
  def get_template(self):
@@ -52,6 +57,14 @@ class Environment(EnvironmentBaseClass):
52
57
  def get_all_species(self):
53
58
  return list(Symbols(self.get_all_types()).species())
54
59
 
60
+ def get_species(self):
61
+ return list(np.unique(self.get_all_species()))
62
+
63
+ def get_atoms(self):
64
+ atoms = self.get_template()
65
+ atoms += Atoms(self.get_numbers())
66
+ return atoms
67
+
55
68
  def match(self, candidate):
56
69
  cand_numbers = candidate.get_atomic_numbers()
57
70
  env_numbers = self.get_all_numbers()
@@ -100,4 +113,4 @@ class Environment(EnvironmentBaseClass):
100
113
  pretty_print(tab + '{:4.2f} {:4.2f} {:4.2f}'.format(*cell_vec))
101
114
 
102
115
  header_print('')
103
-
116
+
@@ -0,0 +1,11 @@
1
+ """
2
+ Evaluators are responsible for evaluating the objective function of a candidate.
3
+ The main two flavours of evaluators are single-point and local optimization.
4
+
5
+ Single-point evaluators evaluate the objective function at a single point,
6
+ whereas local optimization evaluators perform a local optimization starting from
7
+ the candidate's coordinates.
8
+ """
9
+ from .single_point import SinglePointEvaluator
10
+ from .local_optimization import LocalOptimizationEvaluator
11
+ from .rattle import RattleEvaluator
@@ -142,11 +142,26 @@ class GeneratorBaseClass(ABC, Observer, Writer, Confinement):
142
142
  state.add_to_cache(self, self.set_key, candidates, mode='a')
143
143
 
144
144
  def plot_confinement(self, environment):
145
- from agox.helpers.plot_confinement import plot_confinement
145
+ if not self.confined:
146
+ return
147
+
146
148
  import matplotlib.pyplot as plt
147
- from agox.utils.matplotlib_utils import use_agox_mpl_backend; use_agox_mpl_backend()
149
+ from agox.utils.matplotlib_utils import use_agox_mpl_backend
150
+ from agox.utils.plot import plot_atoms, plot_cell
151
+
152
+ use_agox_mpl_backend()
153
+
154
+ atoms = environment.get_template()
155
+
156
+ fig, axs = plt.subplots(1, 3, figsize=(15, 5))
157
+
158
+ for ax, plane in zip(axs, ['xy', 'xz', 'yz']):
159
+ plot_atoms(ax, atoms, plane=plane)
160
+ plot_cell(ax, atoms.cell, plane=plane,
161
+ collection_kwargs=dict(edgecolors='black', linestyles='dotted'))
162
+ plot_cell(ax, self.confinement_cell, plane=plane, offset=self.confinement_corner,
163
+ collection_kwargs=dict(edgecolors='red', linestyles='dashed'))
164
+ ax.autoscale_view()
148
165
 
149
- if self.confined:
150
- fig, ax = plot_confinement(environment.get_template(), self.confinement_cell, self.confinement_corner)
151
- plt.savefig(f'confinement_plot_{self.name}.png')
152
- plt.close()
166
+ fig.savefig(f'confinement_plot_{self.name}.png')
167
+ plt.close()
@@ -0,0 +1,24 @@
1
+ """
2
+ Generators are are responsible for generating new configurations.
3
+ Typically there are two types of generators:
4
+ - Those that can generate a candidate by modifying one or more configurations.
5
+ - Those that can generate a candidate without any input configurations.
6
+
7
+ The first catagory of generators require a Sampler to sample the configurations
8
+ that it uses as a basis for generating a new candidate. The second category of
9
+ generators do not require a sampler.
10
+
11
+ The generators have to generate a candidate that follows the rules set by the
12
+ environment, that is
13
+ - The correct stoichoimetry
14
+ - Inside the confinement box.
15
+ """
16
+ from agox.generators.random import RandomGenerator
17
+ from agox.generators.rattle import RattleGenerator
18
+ from agox.generators.replace import ReplaceGenerator
19
+ from agox.generators.reuse import ReuseGenerator
20
+ from agox.generators.permutation import PermutationGenerator
21
+ from agox.generators.steepest_descent import SteepestDescentGenerator
22
+ from agox.generators.cog import CenterOfGeometryGenerator
23
+ from agox.generators.sampling import SamplingGenerator
24
+ from agox.generators.ce_generator import ComplementaryEnergyGenerator