agox 3.7.0rc1__tar.gz → 3.8.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 (484) hide show
  1. {agox-3.7.0rc1/agox.egg-info → agox-3.8.0}/PKG-INFO +6 -1
  2. {agox-3.7.0rc1 → agox-3.8.0}/README.md +3 -0
  3. {agox-3.7.0rc1 → agox-3.8.0}/agox/__init__.py +1 -1
  4. {agox-3.7.0rc1 → agox-3.8.0}/agox/acquisitors/ABC_acquisitor.py +7 -0
  5. agox-3.8.0/agox/acquisitors/LCB_penalty.py +135 -0
  6. {agox-3.7.0rc1 → agox-3.8.0}/agox/acquisitors/__init__.py +13 -10
  7. agox-3.8.0/agox/acquisitors/meta_acquisitor.py +28 -0
  8. {agox-3.7.0rc1 → agox-3.8.0}/agox/collectors/__init__.py +2 -3
  9. agox-3.8.0/agox/collectors/parallel_tempering.py +165 -0
  10. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/GPR.py +3 -1
  11. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/priors/repulsive.c +133 -133
  12. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/sGPR.py +3 -2
  13. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/sGPR_ensemble.py +2 -2
  14. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/__init__.py +6 -2
  15. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/fingerprint_cython/angular_fingerprintFeature_cy.c +133 -133
  16. agox-3.8.0/agox/models/descriptors/fingerprint_jax/compare_fingerprint.py +114 -0
  17. agox-3.8.0/agox/models/descriptors/fingerprint_jax/fingerprint_jax.py +357 -0
  18. agox-3.8.0/agox/models/descriptors/fingerprint_jax/utils.py +355 -0
  19. agox-3.8.0/agox/models/descriptors/voronoi_site.py +124 -0
  20. {agox-3.7.0rc1 → agox-3.8.0}/agox/module.py +1 -3
  21. {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/__init__.py +14 -11
  22. agox-3.8.0/agox/postprocessors/surface_centering.py +90 -0
  23. {agox-3.7.0rc1 → agox-3.8.0}/agox/samplers/__init__.py +3 -1
  24. agox-3.7.0rc1/agox/samplers/parallel_tempering_sampler.py → agox-3.8.0/agox/samplers/concurrent_tempering.py +1 -1
  25. agox-3.8.0/agox/samplers/parallel_tempering.py +316 -0
  26. agox-3.8.0/agox/test/model_tests/__init__.py +0 -0
  27. agox-3.8.0/agox/test/model_tests/expected_outputs/GlobalGPRJax_dataAgO_parameter0.pckl +0 -0
  28. agox-3.8.0/agox/test/model_tests/expected_outputs/GlobalGPRJax_dataB12_parameter0.pckl +0 -0
  29. agox-3.8.0/agox/test/model_tests/expected_outputs/GlobalGPRJax_dataC30_parameter0.pckl +0 -0
  30. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/model_utils.py +6 -2
  31. agox-3.8.0/agox/test/model_tests/test_global_gpr_jax.py +74 -0
  32. agox-3.8.0/agox/test/postprocessor_tests/surface_centering_test.py +40 -0
  33. agox-3.7.0rc1/agox/test/run_tests/tests_pt/script_pt.py → agox-3.8.0/agox/test/run_tests/tests_ct/script_ct.py +2 -2
  34. agox-3.8.0/agox/test/run_tests/tests_ct/test_ct.py +5 -0
  35. agox-3.8.0/agox/test/run_tests/tests_pt/expected_outputs/pt_test/confinement_plot_RandomGenerator.png +0 -0
  36. agox-3.8.0/agox/test/run_tests/tests_pt/expected_outputs/pt_test/confinement_plot_RattleGenerator.png +0 -0
  37. agox-3.8.0/agox/test/run_tests/tests_pt/expected_outputs/pt_test/db0.db +0 -0
  38. agox-3.8.0/agox/test/run_tests/tests_pt/expected_outputs/pt_test/db0_tracker.npz +0 -0
  39. agox-3.8.0/agox/test/run_tests/tests_pt/script_pt.py +112 -0
  40. agox-3.8.0/agox/test/run_tests/tests_pt/test_pt.py +7 -0
  41. {agox-3.7.0rc1 → agox-3.8.0}/agox/tracker.py +1 -1
  42. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/metrics/calibration.py +1 -1
  43. agox-3.8.0/agox/utils/plot/plot_parity.py +188 -0
  44. {agox-3.7.0rc1 → agox-3.8.0}/agox/writer.py +1 -1
  45. {agox-3.7.0rc1 → agox-3.8.0/agox.egg-info}/PKG-INFO +6 -1
  46. {agox-3.7.0rc1 → agox-3.8.0}/agox.egg-info/SOURCES.txt +22 -1
  47. {agox-3.7.0rc1 → agox-3.8.0}/agox.egg-info/requires.txt +2 -0
  48. {agox-3.7.0rc1 → agox-3.8.0}/pyproject.toml +2 -0
  49. agox-3.7.0rc1/agox/test/run_tests/tests_pt/test_pt.py +0 -5
  50. agox-3.7.0rc1/agox/utils/plot/plot_parity.py +0 -167
  51. {agox-3.7.0rc1 → agox-3.8.0}/LICENSE.txt +0 -0
  52. {agox-3.7.0rc1 → agox-3.8.0}/MANIFEST.in +0 -0
  53. {agox-3.7.0rc1 → agox-3.8.0}/agox/acquisitors/EI.py +0 -0
  54. {agox-3.7.0rc1 → agox-3.8.0}/agox/acquisitors/LCB.py +0 -0
  55. {agox-3.7.0rc1 → agox-3.8.0}/agox/acquisitors/LCB_power.py +0 -0
  56. {agox-3.7.0rc1 → agox-3.8.0}/agox/candidates/ABC_candidate.py +0 -0
  57. {agox-3.7.0rc1 → agox-3.8.0}/agox/candidates/__init__.py +0 -0
  58. {agox-3.7.0rc1 → agox-3.8.0}/agox/candidates/standard.py +0 -0
  59. {agox-3.7.0rc1 → agox-3.8.0}/agox/cli/__init__.py +0 -0
  60. {agox-3.7.0rc1 → agox-3.8.0}/agox/cli/cli_analysis.py +0 -0
  61. {agox-3.7.0rc1 → agox-3.8.0}/agox/cli/cli_convert.py +0 -0
  62. {agox-3.7.0rc1 → agox-3.8.0}/agox/cli/cli_example.py +0 -0
  63. {agox-3.7.0rc1 → agox-3.8.0}/agox/cli/cli_graph_sorting.py +0 -0
  64. {agox-3.7.0rc1 → agox-3.8.0}/agox/cli/cli_notebook.py +0 -0
  65. {agox-3.7.0rc1 → agox-3.8.0}/agox/cli/main.py +0 -0
  66. {agox-3.7.0rc1 → agox-3.8.0}/agox/collectors/ABC_collector.py +0 -0
  67. {agox-3.7.0rc1 → agox-3.8.0}/agox/collectors/ray_collector.py +0 -0
  68. {agox-3.7.0rc1 → agox-3.8.0}/agox/collectors/standard.py +0 -0
  69. {agox-3.7.0rc1 → agox-3.8.0}/agox/databases/ABC_database.py +0 -0
  70. {agox-3.7.0rc1 → agox-3.8.0}/agox/databases/__init__.py +0 -0
  71. {agox-3.7.0rc1 → agox-3.8.0}/agox/databases/concurrent_ordered.py +0 -0
  72. {agox-3.7.0rc1 → agox-3.8.0}/agox/databases/database.py +0 -0
  73. {agox-3.7.0rc1 → agox-3.8.0}/agox/databases/database_concurrent.py +0 -0
  74. {agox-3.7.0rc1 → agox-3.8.0}/agox/databases/database_utilities.py +0 -0
  75. {agox-3.7.0rc1 → agox-3.8.0}/agox/environments/ABC_environment.py +0 -0
  76. {agox-3.7.0rc1 → agox-3.8.0}/agox/environments/__init__.py +0 -0
  77. {agox-3.7.0rc1 → agox-3.8.0}/agox/environments/environment.py +0 -0
  78. {agox-3.7.0rc1 → agox-3.8.0}/agox/evaluators/ABC_evaluator.py +0 -0
  79. {agox-3.7.0rc1 → agox-3.8.0}/agox/evaluators/__init__.py +0 -0
  80. {agox-3.7.0rc1 → agox-3.8.0}/agox/evaluators/local_optimization.py +0 -0
  81. {agox-3.7.0rc1 → agox-3.8.0}/agox/evaluators/rattle.py +0 -0
  82. {agox-3.7.0rc1 → agox-3.8.0}/agox/evaluators/single_point.py +0 -0
  83. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/ABC_generator.py +0 -0
  84. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/MD.py +0 -0
  85. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/__init__.py +0 -0
  86. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/block_generators/ABC_block.py +0 -0
  87. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/block_generators/__init__.py +0 -0
  88. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/block_generators/random.py +0 -0
  89. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/block_generators/rattle.py +0 -0
  90. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/ce_generator.py +0 -0
  91. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/cog.py +0 -0
  92. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/complementary_energy/__init__.py +0 -0
  93. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/complementary_energy/attractor_methods/ABC_attractors.py +0 -0
  94. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/complementary_energy/attractor_methods/__init__.py +0 -0
  95. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/complementary_energy/attractor_methods/ce_attractors_another_structure.py +0 -0
  96. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/complementary_energy/attractor_methods/ce_attractors_current_structure.py +0 -0
  97. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/complementary_energy/attractor_methods/ce_attractors_interpolation.py +0 -0
  98. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/complementary_energy/attractor_methods/ce_attractors_kmeans.py +0 -0
  99. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/complementary_energy/ce_calculators.py +0 -0
  100. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/permutation.py +0 -0
  101. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/random.py +0 -0
  102. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/rattle.py +0 -0
  103. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/replace.py +0 -0
  104. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/reuse.py +0 -0
  105. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/sampling.py +0 -0
  106. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/steepest_descent.py +0 -0
  107. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/symmetry.py +0 -0
  108. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/symmetry_permutation.py +0 -0
  109. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/symmetry_rattle.py +0 -0
  110. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/symmetry_utils/__init__.py +0 -0
  111. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/symmetry_utils/symmetry_enforcer.py +0 -0
  112. {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/symmetry_utils/symmetry_groups.py +0 -0
  113. {agox-3.7.0rc1 → agox-3.8.0}/agox/helpers/__init__.py +0 -0
  114. {agox-3.7.0rc1 → agox-3.8.0}/agox/helpers/confinement.py +0 -0
  115. {agox-3.7.0rc1 → agox-3.8.0}/agox/helpers/gpaw_io.py +0 -0
  116. {agox-3.7.0rc1 → agox-3.8.0}/agox/helpers/gpaw_subprocess.py +0 -0
  117. {agox-3.7.0rc1 → agox-3.8.0}/agox/main.py +0 -0
  118. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/ABC_model.py +0 -0
  119. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/__init__.py +0 -0
  120. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/kernels/__init__.py +0 -0
  121. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/kernels/kernels.py +0 -0
  122. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/local_mean.py +0 -0
  123. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/priors/__init__.py +0 -0
  124. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/priors/repulsive.pyx +0 -0
  125. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/priors/setup.py +0 -0
  126. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/__init__.py +0 -0
  127. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/datasets/Ag5O3-dataset.traj +0 -0
  128. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/datasets/__init__.py +0 -0
  129. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/datasets/loader.py +0 -0
  130. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/ABC_descriptor.py +0 -0
  131. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/acsf.py +0 -0
  132. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/exponential_density.py +0 -0
  133. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/fingerprint.py +0 -0
  134. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/fingerprint_cython/__init__.py +0 -0
  135. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/fingerprint_cython/angular_fingerprintFeature_cy.pyx +0 -0
  136. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/fingerprint_cython/setup.py +0 -0
  137. {agox-3.7.0rc1/agox/models/schnetpack → agox-3.8.0/agox/models/descriptors/fingerprint_jax}/__init__.py +0 -0
  138. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/scale_select_descriptor.py +0 -0
  139. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/simple_fingerprint.py +0 -0
  140. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/soap.py +0 -0
  141. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/spectral_graph_descriptor.py +0 -0
  142. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/type_descriptor.py +0 -0
  143. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/voronoi.py +0 -0
  144. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/priors/constant.py +0 -0
  145. {agox-3.7.0rc1/agox/test → agox-3.8.0/agox/models/schnetpack}/__init__.py +0 -0
  146. {agox-3.7.0rc1 → agox-3.8.0}/agox/models/schnetpack/schnetpack.py +0 -0
  147. {agox-3.7.0rc1 → agox-3.8.0}/agox/observer.py +0 -0
  148. {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/ABC_postprocess.py +0 -0
  149. {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/centering.py +0 -0
  150. {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/disjoint_filtering.py +0 -0
  151. {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/immunizer.py +0 -0
  152. {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/minimum_dist.py +0 -0
  153. {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/optimizers/__init__.py +0 -0
  154. {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/optimizers/safe_bfgs.py +0 -0
  155. {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/ray_relax.py +0 -0
  156. {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/relax.py +0 -0
  157. {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/wrap.py +0 -0
  158. {agox-3.7.0rc1 → agox-3.8.0}/agox/samplers/ABC_sampler.py +0 -0
  159. {agox-3.7.0rc1 → agox-3.8.0}/agox/samplers/fixed_sampler.py +0 -0
  160. {agox-3.7.0rc1 → agox-3.8.0}/agox/samplers/genetic.py +0 -0
  161. {agox-3.7.0rc1 → agox-3.8.0}/agox/samplers/kernel_similarity.py +0 -0
  162. {agox-3.7.0rc1 → agox-3.8.0}/agox/samplers/kmeans.py +0 -0
  163. {agox-3.7.0rc1 → agox-3.8.0}/agox/samplers/metropolis.py +0 -0
  164. {agox-3.7.0rc1 → agox-3.8.0}/agox/samplers/spectral_graph.py +0 -0
  165. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/.coveragerc +0 -0
  166. {agox-3.7.0rc1/agox/test/model_tests → agox-3.8.0/agox/test}/__init__.py +0 -0
  167. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/acquisitor_test/test_lcb.py +0 -0
  168. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/conftest.py +0 -0
  169. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/database_tests/database_test.py +0 -0
  170. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/datasets/AgO-dataset.traj +0 -0
  171. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/datasets/B12-dataset.traj +0 -0
  172. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/datasets/C30-dataset.traj +0 -0
  173. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/datasets/databases/mos2_databases/db1.db +0 -0
  174. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/datasets/databases/mos2_databases/db2.db +0 -0
  175. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/descriptor_tests/expected_outputs/SOAP_AgO.pckl +0 -0
  176. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/descriptor_tests/expected_outputs/SOAP_B12.pckl +0 -0
  177. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/descriptor_tests/expected_outputs/SOAP_C30.pckl +0 -0
  178. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/descriptor_tests/soap_test.py +0 -0
  179. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/descriptor_tests/spectral_graph_test.py +0 -0
  180. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/empty_cache.py +0 -0
  181. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/environment_tests/environment_test.py +0 -0
  182. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/conftest.py +0 -0
  183. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataAgO_parameter0.pckl +0 -0
  184. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataAgO_parameter1.pckl +0 -0
  185. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataAgO_parameter2.pckl +0 -0
  186. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataB12_parameter0.pckl +0 -0
  187. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataB12_parameter1.pckl +0 -0
  188. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataB12_parameter2.pckl +0 -0
  189. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataC30_parameter0.pckl +0 -0
  190. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataC30_parameter1.pckl +0 -0
  191. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataC30_parameter2.pckl +0 -0
  192. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/PermutationGenerator_dataAgO_parameter0.pckl +0 -0
  193. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/PermutationGenerator_dataAgO_parameter1.pckl +0 -0
  194. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/PermutationGenerator_dataAgO_parameter2.pckl +0 -0
  195. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataAgO_parameter0.pckl +0 -0
  196. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataAgO_parameter1.pckl +0 -0
  197. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataAgO_parameter2.pckl +0 -0
  198. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataB12_parameter0.pckl +0 -0
  199. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataB12_parameter1.pckl +0 -0
  200. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataB12_parameter2.pckl +0 -0
  201. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataC30_parameter0.pckl +0 -0
  202. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataC30_parameter1.pckl +0 -0
  203. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataC30_parameter2.pckl +0 -0
  204. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataAgO_parameter0.pckl +0 -0
  205. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataAgO_parameter1.pckl +0 -0
  206. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataAgO_parameter2.pckl +0 -0
  207. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataB12_parameter0.pckl +0 -0
  208. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataB12_parameter1.pckl +0 -0
  209. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataB12_parameter2.pckl +0 -0
  210. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataC30_parameter0.pckl +0 -0
  211. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataC30_parameter1.pckl +0 -0
  212. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataC30_parameter2.pckl +0 -0
  213. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataAgO_parameter0.pckl +0 -0
  214. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataAgO_parameter1.pckl +0 -0
  215. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataAgO_parameter2.pckl +0 -0
  216. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataB12_parameter0.pckl +0 -0
  217. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataB12_parameter1.pckl +0 -0
  218. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataB12_parameter2.pckl +0 -0
  219. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataC30_parameter0.pckl +0 -0
  220. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataC30_parameter1.pckl +0 -0
  221. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataC30_parameter2.pckl +0 -0
  222. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SamplingGenerator_dataAgO_parameter0.pckl +0 -0
  223. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SamplingGenerator_dataB12_parameter0.pckl +0 -0
  224. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SamplingGenerator_dataC30_parameter0.pckl +0 -0
  225. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SteepestDescentGenerator_dataAgO_parameter0.pckl +0 -0
  226. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SteepestDescentGenerator_dataB12_parameter0.pckl +0 -0
  227. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SteepestDescentGenerator_dataC30_parameter0.pckl +0 -0
  228. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SymmetryGenerator_dataAgO_parameter0.pckl +0 -0
  229. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SymmetryGenerator_dataAgO_parameter1.pckl +0 -0
  230. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SymmetryGenerator_dataB12_parameter0.pckl +0 -0
  231. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SymmetryGenerator_dataB12_parameter1.pckl +0 -0
  232. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/for_docs/nonseeded_script.py +0 -0
  233. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/for_docs/seeded_script.py +0 -0
  234. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/for_docs/test_doc_scripts.py +0 -0
  235. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/generator_test.py +0 -0
  236. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/generator_utils.py +0 -0
  237. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_cog.py +0 -0
  238. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_generators.py +0 -0
  239. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_permutation.py +0 -0
  240. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_random.py +0 -0
  241. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_rattle.py +0 -0
  242. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_replace.py +0 -0
  243. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_sampling.py +0 -0
  244. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_steepest_descent.py +0 -0
  245. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_symmetry.py +0 -0
  246. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_symmetry_2.py +0 -0
  247. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_symmetry_3.py +0 -0
  248. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/descriptors_api.py +0 -0
  249. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/GlobalGPR_dataAgO_parameter0.pckl +0 -0
  250. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/GlobalGPR_dataB12_parameter0.pckl +0 -0
  251. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/GlobalGPR_dataC30_parameter0.pckl +0 -0
  252. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/LocalSparseGPRForces_dataAgO_parameter0.pckl +0 -0
  253. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/LocalSparseGPRForces_dataB12_parameter0.pckl +0 -0
  254. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/LocalSparseGPRForces_dataC30_parameter0.pckl +0 -0
  255. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/LocalSparseGPR_dataAgO_parameter0.pckl +0 -0
  256. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/LocalSparseGPR_dataB12_parameter0.pckl +0 -0
  257. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/LocalSparseGPR_dataC30_parameter0.pckl +0 -0
  258. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/globalSparseGPRForces_dataAgO_parameter0.pckl +0 -0
  259. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/globalSparseGPRForces_dataB12_parameter0.pckl +0 -0
  260. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/globalSparseGPRForces_dataC30_parameter0.pckl +0 -0
  261. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/globalSparseGPR_dataAgO_parameter0.pckl +0 -0
  262. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/globalSparseGPR_dataB12_parameter0.pckl +0 -0
  263. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/globalSparseGPR_dataC30_parameter0.pckl +0 -0
  264. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/gpr_api.py +0 -0
  265. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/load_api.py +0 -0
  266. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/sgpr_api.py +0 -0
  267. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/sgpr_api_forces.py +0 -0
  268. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_api.py +0 -0
  269. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_global_gpr.py +0 -0
  270. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_global_sparse_gpr.py +0 -0
  271. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_global_sparse_gpr_force_training.py +0 -0
  272. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_load.py +0 -0
  273. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_local_gpr.py +0 -0
  274. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_local_gpr_force_training.py +0 -0
  275. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_ray_gpr.py +0 -0
  276. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_ray_sgpr_ensemble_local.py +0 -0
  277. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_ray_sgpr_global.py +0 -0
  278. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_ray_sgpr_local.py +0 -0
  279. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_sgpr_sparse_schedule.py +0 -0
  280. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/modifying_examples/confinement_examples.py +0 -0
  281. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/modifying_examples/plots/cluster_confinement.png +0 -0
  282. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/modifying_examples/plots/surface_cluster_confinement.png +0 -0
  283. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/modifying_examples/plots/surface_film_confinement.png +0 -0
  284. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/modifying_examples/plots/surface_toplayer_unc.png +0 -0
  285. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/modifying_examples/plots/two_d_environment.png +0 -0
  286. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/postprocessor_tests/disjoint_filtering_test.py +0 -0
  287. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/postprocessor_tests/model_results_test.py +0 -0
  288. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/postprocessor_tests/postprocessor_test.py +0 -0
  289. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/postprocessor_tests/test_survive_empty.py +0 -0
  290. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/run_utils.py +0 -0
  291. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/expected_outputs/bh_bulk_emt_test/confinement_plot_RattleGenerator.png +0 -0
  292. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/expected_outputs/bh_bulk_emt_test/db0.db +0 -0
  293. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/expected_outputs/bh_bulk_emt_test/db0_tracker.npz +0 -0
  294. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/expected_outputs/bh_cluster_emt_test/db0.db +0 -0
  295. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/expected_outputs/bh_surface_emt_test/confinement_plot_RattleGenerator.png +0 -0
  296. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/expected_outputs/bh_surface_emt_test/db0.db +0 -0
  297. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/expected_outputs/bh_surface_emt_test/db0_tracker.npz +0 -0
  298. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_bulk_chgnet.py +0 -0
  299. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_bulk_emt.py +0 -0
  300. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_bulk_gpaw.py +0 -0
  301. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_bulk_vasp.py +0 -0
  302. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_cluster_chgnet.py +0 -0
  303. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_cluster_emt.py +0 -0
  304. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_cluster_gpaw.py +0 -0
  305. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_cluster_orca.py +0 -0
  306. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_cluster_vasp.py +0 -0
  307. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_surface_chgnet.py +0 -0
  308. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_surface_emt.py +0 -0
  309. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_surface_gpaw.py +0 -0
  310. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_surface_vasp.py +0 -0
  311. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/test/automagic_analysis.ipynb +0 -0
  312. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/test/confinement_plot_RattleGenerator.png +0 -0
  313. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/test/db0.db +0 -0
  314. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/test/db0_tracker.npz +0 -0
  315. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/test/dbs/db0.db +0 -0
  316. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/test/dbs/db0_tracker.npz +0 -0
  317. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/test_bh.py +0 -0
  318. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_block/expected_outputs/block_bh_test/db0.db +0 -0
  319. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_block/expected_outputs/block_bh_test/db0_tracker.npz +0 -0
  320. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_block/expected_outputs/block_rss_test/db0.db +0 -0
  321. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_block/expected_outputs/block_rss_test/db0_tracker.npz +0 -0
  322. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_block/script_block_bh.py +0 -0
  323. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_block/script_block_rss.py +0 -0
  324. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_block/test_block_bh.py +0 -0
  325. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_block/test_block_rss.py +0 -0
  326. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ce/expected_outputs/ce_default_gofee_test/confinement_plot_ComplementaryEnergyGenerator.png +0 -0
  327. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ce/expected_outputs/ce_default_gofee_test/confinement_plot_RandomGenerator.png +0 -0
  328. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ce/expected_outputs/ce_default_gofee_test/confinement_plot_RattleGenerator.png +0 -0
  329. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ce/expected_outputs/ce_default_gofee_test/db0.db +0 -0
  330. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ce/expected_outputs/ce_gofee_test/db0.db +0 -0
  331. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ce/script_ce_default_gofee.py +0 -0
  332. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ce/script_ce_gofee.py +0 -0
  333. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ce/test_ce_default_gofee.py +0 -0
  334. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ce/test_ce_gofee.py +0 -0
  335. {agox-3.7.0rc1/agox/test/run_tests/tests_pt/expected_outputs/pt_test → agox-3.8.0/agox/test/run_tests/tests_ct/expected_outputs/ct_test}/db0.db +0 -0
  336. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ea/expected_outputs/ea_test/db0.db +0 -0
  337. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ea/expected_outputs/ea_test/population_5.traj +0 -0
  338. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ea/script_ea.py +0 -0
  339. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ea/test_ea.py +0 -0
  340. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/expected_outputs/gofee_bulk_emt_test/confinement_plot_RandomGenerator.png +0 -0
  341. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/expected_outputs/gofee_bulk_emt_test/confinement_plot_RattleGenerator.png +0 -0
  342. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/expected_outputs/gofee_bulk_emt_test/db0.db +0 -0
  343. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/expected_outputs/gofee_bulk_emt_test/db0_tracker.npz +0 -0
  344. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/expected_outputs/gofee_cluster_emt_test/confinement_plot_RandomGenerator.png +0 -0
  345. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/expected_outputs/gofee_cluster_emt_test/confinement_plot_RattleGenerator.png +0 -0
  346. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/expected_outputs/gofee_cluster_emt_test/db0.db +0 -0
  347. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/expected_outputs/gofee_surface_emt_test/confinement_plot_RandomGenerator.png +0 -0
  348. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/expected_outputs/gofee_surface_emt_test/confinement_plot_RattleGenerator.png +0 -0
  349. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/expected_outputs/gofee_surface_emt_test/db0.db +0 -0
  350. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/expected_outputs/gofee_surface_emt_test/db0_tracker.npz +0 -0
  351. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_bulk_chgnet.py +0 -0
  352. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_bulk_emt.py +0 -0
  353. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_bulk_gpaw.py +0 -0
  354. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_bulk_vasp.py +0 -0
  355. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_cluster_chgnet.py +0 -0
  356. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_cluster_emt.py +0 -0
  357. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_cluster_gpaw.py +0 -0
  358. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_cluster_orca.py +0 -0
  359. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_cluster_vasp.py +0 -0
  360. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_surface_chgnet.py +0 -0
  361. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_surface_emt.py +0 -0
  362. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_surface_gpaw.py +0 -0
  363. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_surface_vasp.py +0 -0
  364. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/test_gofee.py +0 -0
  365. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_graph_filt/expected_outputs/graph_filtering_gofee_test/db0.db +0 -0
  366. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_graph_filt/expected_outputs/graph_filtering_gofee_test/db0_tracker.npz +0 -0
  367. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_graph_filt/script_graph_filtering_gofee.py +0 -0
  368. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_graph_filt/test_graph_filtering_gofee.py +0 -0
  369. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_lgpr_bh/expected_outputs/lgpr_bh_test/db0.db +0 -0
  370. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_lgpr_bh/script_lgpr_bh.py +0 -0
  371. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_lgpr_bh/test_lgpr_bh.py +0 -0
  372. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_md/expected_outputs/md_bh_test/confinement_plot_MDgenerator.png +0 -0
  373. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_md/expected_outputs/md_bh_test/db0.db +0 -0
  374. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_md/expected_outputs/md_bh_test/db0_tracker.npz +0 -0
  375. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_md/script_md_bh.py +0 -0
  376. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_md/test_md_bh.py +0 -0
  377. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/expected_outputs/rss_2d_test/confinement_plot_RandomGenerator.png +0 -0
  378. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/expected_outputs/rss_2d_test/db0.db +0 -0
  379. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/expected_outputs/rss_bulk_emt_test/confinement_plot_RandomGenerator.png +0 -0
  380. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/expected_outputs/rss_bulk_emt_test/db0.db +0 -0
  381. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/expected_outputs/rss_bulk_emt_test/db0_tracker.npz +0 -0
  382. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/expected_outputs/rss_cluster_emt_test/confinement_plot_RandomGenerator.png +0 -0
  383. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/expected_outputs/rss_cluster_emt_test/db0.db +0 -0
  384. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/expected_outputs/rss_cluster_emt_test/db0_tracker.npz +0 -0
  385. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/expected_outputs/rss_surface_emt_test/confinement_plot_RandomGenerator.png +0 -0
  386. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/expected_outputs/rss_surface_emt_test/db0.db +0 -0
  387. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/expected_outputs/rss_surface_emt_test/db0_tracker.npz +0 -0
  388. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_2d.py +0 -0
  389. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_bulk_chgnet.py +0 -0
  390. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_bulk_emt.py +0 -0
  391. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_bulk_gpaw.py +0 -0
  392. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_bulk_vasp.py +0 -0
  393. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_cluster_chgnet.py +0 -0
  394. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_cluster_emt.py +0 -0
  395. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_cluster_gpaw.py +0 -0
  396. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_cluster_orca.py +0 -0
  397. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_cluster_vasp.py +0 -0
  398. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_surface_chgnet.py +0 -0
  399. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_surface_emt.py +0 -0
  400. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_surface_gpaw.py +0 -0
  401. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_surface_vasp.py +0 -0
  402. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/test.py +0 -0
  403. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/test_rss.py +0 -0
  404. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_schnet/script_schnet_bh.py +0 -0
  405. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_schnet/test_schnet_bh.py +0 -0
  406. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_cluster_symmetry_test/confinement_plot_RattleGeneratorSym.png +0 -0
  407. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_cluster_symmetry_test/confinement_plot_SymmetryGenerator.png +0 -0
  408. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_cluster_symmetry_test/db0.db +0 -0
  409. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_cluster_symmetry_test/db0_tracker.npz +0 -0
  410. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_slab_symmetry_test/confinement_plot_RattleGeneratorSym.png +0 -0
  411. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_slab_symmetry_test/confinement_plot_SymmetryGenerator.png +0 -0
  412. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_slab_symmetry_test/db0.db +0 -0
  413. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_slab_symmetry_test/db0_tracker.npz +0 -0
  414. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/expected_outputs/rss_cluster_symmetry_test/confinement_plot_SymmetryGenerator.png +0 -0
  415. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/expected_outputs/rss_cluster_symmetry_test/db0.db +0 -0
  416. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/expected_outputs/rss_cluster_symmetry_test/db0_tracker.npz +0 -0
  417. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/script_gofee_cluster_symmetry.py +0 -0
  418. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/script_gofee_slab_symmetry.py +0 -0
  419. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/script_rss_cluster_symmetry.py +0 -0
  420. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/test_gofee_cluster_symmetry.py +0 -0
  421. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/test_gofee_slab_symmetry.py +0 -0
  422. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/test_rss_cluster_symmetry.py +0 -0
  423. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/sampler_tests/sampler_test.py +0 -0
  424. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/test_utils.py +0 -0
  425. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/analysis_test.py +0 -0
  426. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/cache_test.py +0 -0
  427. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/plot_tests/colors_test.py +0 -0
  428. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/plot_tests/plot_atoms_test.py +0 -0
  429. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/plot_tests/plot_cell_test.py +0 -0
  430. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/plot_tests/utils_test.py +0 -0
  431. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/test_feature_dist_filter.py +0 -0
  432. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/test_filters.py +0 -0
  433. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/test_sparsifiers.py +0 -0
  434. {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/tracker_test.py +0 -0
  435. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/__init__.py +0 -0
  436. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/batch_analysis.py +0 -0
  437. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/cache.py +0 -0
  438. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/constraints/__init__.py +0 -0
  439. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/constraints/box_constraint.py +0 -0
  440. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/convert_database.py +0 -0
  441. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/data_selection.py +0 -0
  442. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/decorators.py +0 -0
  443. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/ABC_filter.py +0 -0
  444. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/__init__.py +0 -0
  445. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/all.py +0 -0
  446. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/energy.py +0 -0
  447. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/feature_distance.py +0 -0
  448. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/filter.py +0 -0
  449. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/kmeans_energy.py +0 -0
  450. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/none.py +0 -0
  451. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/random.py +0 -0
  452. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/sparse_filter.py +0 -0
  453. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/voronoi.py +0 -0
  454. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/graph_sorting.py +0 -0
  455. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/jupyter_interactive.py +0 -0
  456. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/matplotlib_utils.py +0 -0
  457. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/metrics/__init__.py +0 -0
  458. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/metrics/metrics.py +0 -0
  459. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/numerical_derivative.py +0 -0
  460. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/plot/__init__.py +0 -0
  461. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/plot/colors.py +0 -0
  462. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/plot/plot_atoms.py +0 -0
  463. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/plot/plot_cell.py +0 -0
  464. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/plot/utils.py +0 -0
  465. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/__init__.py +0 -0
  466. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/actor.py +0 -0
  467. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/pool.py +0 -0
  468. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/pool_startup.py +0 -0
  469. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/pool_user.py +0 -0
  470. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/startup.py +0 -0
  471. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/testing/__init__.py +0 -0
  472. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/testing/log_reader.py +0 -0
  473. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/testing/slurm_test_functions.py +0 -0
  474. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/sparsifiers/ABC_sparsifier.py +0 -0
  475. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/sparsifiers/CUR.py +0 -0
  476. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/sparsifiers/CUR_old.py +0 -0
  477. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/sparsifiers/MBkmeans.py +0 -0
  478. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/sparsifiers/__init__.py +0 -0
  479. {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/sparsifiers/random.py +0 -0
  480. {agox-3.7.0rc1 → agox-3.8.0}/agox.egg-info/dependency_links.txt +0 -0
  481. {agox-3.7.0rc1 → agox-3.8.0}/agox.egg-info/entry_points.txt +0 -0
  482. {agox-3.7.0rc1 → agox-3.8.0}/agox.egg-info/top_level.txt +0 -0
  483. {agox-3.7.0rc1 → agox-3.8.0}/setup.cfg +0 -0
  484. {agox-3.7.0rc1 → agox-3.8.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: agox
3
- Version: 3.7.0rc1
3
+ Version: 3.8.0
4
4
  Summary: Atomistic Global Optimziation X is a framework for structure optimization in materials science.
5
5
  Author: AGOX Developers
6
6
  Author-email: "Mads-Peter V. Christiansen" <machri@phys.au.dk>, Nikolaj Rønne <nronne@phys.au.dk>, Bjørk Hammer <hammer@phys.au.dk>
@@ -29,6 +29,8 @@ Requires-Dist: importlib-resources>1.3; python_version < "3.9"
29
29
  Requires-Dist: dscribe>=2.0.0
30
30
  Requires-Dist: nbformat
31
31
  Requires-Dist: typing_extensions
32
+ Requires-Dist: jax
33
+ Requires-Dist: jaxlib
32
34
  Requires-Dist: ray
33
35
  Provides-Extra: test
34
36
  Requires-Dist: pytest; extra == "test"
@@ -43,6 +45,9 @@ Requires-Dist: agox[docs,test]; extra == "all"
43
45
 
44
46
  # Atomistic Global Optimization X (AGOX)
45
47
 
48
+ ![logo](docs/source/logos/logo-carbon.gif)
49
+
50
+
46
51
  AGOX is a package for global optimization of atomic system using e.g. the energy
47
52
  calculated from density functional theory as the objective function. AGOX interfaces
48
53
  with the Atomistic Simulation Environment (ASE) and as such supports any of
@@ -1,5 +1,8 @@
1
1
  # Atomistic Global Optimization X (AGOX)
2
2
 
3
+ ![logo](docs/source/logos/logo-carbon.gif)
4
+
5
+
3
6
  AGOX is a package for global optimization of atomic system using e.g. the energy
4
7
  calculated from density functional theory as the objective function. AGOX interfaces
5
8
  with the Atomistic Simulation Environment (ASE) and as such supports any of
@@ -1,7 +1,7 @@
1
1
  import os
2
2
 
3
3
  # Versioning
4
- __version_info__ = (3, 7, 0)
4
+ __version_info__ = (3, 8, 0)
5
5
  __version__ = '{}.{}.{}'.format(*__version_info__)
6
6
 
7
7
  # Extra versioning - Mainly for managing Pypi releases.
@@ -30,6 +30,7 @@ class AcquisitorBaseClass(ABC, Observer, Writer):
30
30
  use_counter=True,
31
31
  prefix="",
32
32
  surname="",
33
+ skip_chance=0.0,
33
34
  ):
34
35
  Observer.__init__(self, gets=gets, sets=sets, order=order, surname=surname)
35
36
  Writer.__init__(self, verbose=verbose, use_counter=use_counter, prefix=prefix)
@@ -42,6 +43,8 @@ class AcquisitorBaseClass(ABC, Observer, Writer):
42
43
  handler_identifier="AGOX",
43
44
  )
44
45
 
46
+ self.skip_chance = skip_chance
47
+
45
48
  @abstractmethod
46
49
  def calculate_acquisition_function(self, candidates):
47
50
  """
@@ -79,6 +82,10 @@ class AcquisitorBaseClass(ABC, Observer, Writer):
79
82
  State object that contains the iteration data.
80
83
  """
81
84
 
85
+ if self.skip_chance > 0 and np.random.rand() < self.skip_chance:
86
+ state.add_to_cache(self, self.set_key, [], mode="a")
87
+ return
88
+
82
89
  # Get data from the iteration data dict.
83
90
  candidate_list = state.get_from_cache(self, self.get_key)
84
91
  candidate_list = list(filter(None, candidate_list))
@@ -0,0 +1,135 @@
1
+ from collections import Counter
2
+ from collections.abc import Hashable
3
+ from typing import List
4
+
5
+ import numpy as np
6
+ from numpy.typing import NDArray
7
+
8
+ from agox.acquisitors.LCB import LowerConfidenceBoundAcquisitor
9
+ from agox.candidates.standard import StandardCandidate
10
+ from agox.databases.ABC_database import DatabaseBaseClass
11
+ from agox.models.ABC_model import ModelBaseClass
12
+ from agox.models.descriptors import SpectralGraphDescriptor, Voronoi
13
+ from agox.models.descriptors.ABC_descriptor import DescriptorBaseClass
14
+ from agox.observer import Observer
15
+ from agox.writer import agox_writer
16
+
17
+
18
+ class LCBPenaltyAcquisitor(LowerConfidenceBoundAcquisitor):
19
+
20
+ """Lower confidence bound acquisitor with a penalty term for repeated
21
+ descriptor values.
22
+
23
+ The acquisition function for selecting candidates is given by
24
+
25
+ .. math::
26
+
27
+ F(x) = E(x) - \kappa \sigma(x) + \alpha n_D(x),
28
+
29
+ where :math:`n_D` is the number of times the descriptor value already
30
+ exists for the candidates in the database, and :math:`\alpha` is the
31
+ penalty scale value.
32
+
33
+ The acquisition function for relaxing candidates is equivalent to that of
34
+ regular LCB, as the :math:`\alpha n_D(x)` term is discontinuous.
35
+
36
+ Parameters
37
+ ----------
38
+ model : ModelBaseClass
39
+ Model to obtain energy and uncertainty predictions from.
40
+ descriptor : DescriptorBaseClass
41
+ Descriptor to evaluate descriptor values from.
42
+ penalty_scale : float, optional
43
+ Scale value for penalty (in eV), by default 1.0
44
+ """
45
+
46
+ def __init__(self,
47
+ model: ModelBaseClass,
48
+ descriptor: DescriptorBaseClass,
49
+ penalty_scale: float = 1.0,
50
+ **kwargs):
51
+ super().__init__(model, **kwargs)
52
+
53
+ if not isinstance(descriptor, (SpectralGraphDescriptor, Voronoi)):
54
+ raise ValueError('Descriptor can currently only be graph-type descriptor')
55
+
56
+ self.descriptor = descriptor
57
+ self.penalty_scale = penalty_scale
58
+
59
+ self.descriptor_value_counts = Counter()
60
+
61
+ self.add_observer_method(self.update_descriptor_values,
62
+ gets={}, sets={}, order=self.order[0],
63
+ handler_identifier='database')
64
+
65
+ def calculate_acquisition_function(self, candidates: List[StandardCandidate]) -> NDArray:
66
+ fitness = np.zeros(len(candidates))
67
+
68
+ for i, candidate in enumerate(candidates):
69
+ E, sigma = self.model.predict_energy_and_uncertainty(candidate)
70
+
71
+ descriptor_value = self._get_descriptor_value(candidate)
72
+ count = self.descriptor_value_counts[descriptor_value]
73
+ penalty = count * self.penalty_scale
74
+
75
+ fitness[i] = self.acquisition_function(E, sigma) + penalty
76
+
77
+ candidate.add_meta_information('model_energy', E)
78
+ candidate.add_meta_information('uncertainty', sigma)
79
+ candidate.add_meta_information('penalty', penalty)
80
+
81
+ return fitness
82
+
83
+ def print_information(self, candidates: List[StandardCandidate], acquisition_values: List[float]) -> None:
84
+ if self.model.ready_state:
85
+ for i, candidate in enumerate(candidates):
86
+ fitness = acquisition_values[i]
87
+ Emodel = candidate.get_meta_information('model_energy')
88
+ sigma = candidate.get_meta_information('uncertainty')
89
+ penalty = candidate.get_meta_information('penalty')
90
+ self.writer('Candidate: E={:8.3f}, s={:8.3f}, p={:7.2f}, F={:8.3f}'.format(
91
+ Emodel, sigma, penalty, fitness))
92
+
93
+ def attach_to_database(self, database: DatabaseBaseClass) -> None:
94
+ if not isinstance(database, DatabaseBaseClass):
95
+ raise TypeError(f'{database} is not a DatabaseBaseClass object')
96
+
97
+ print(f'{self.name}: Attaching to database: {database}')
98
+ self.attach(database)
99
+
100
+ @agox_writer
101
+ @Observer.observer_method
102
+ def update_descriptor_values(self, database: DatabaseBaseClass, _) -> None:
103
+ """Update the internal counter of descriptor values present in the
104
+ database.
105
+ """
106
+ candidates = database.get_all_candidates()
107
+ new_candidates = candidates[sum(self.descriptor_value_counts):]
108
+
109
+ for candidate in new_candidates:
110
+ descriptor_value = self._get_descriptor_value(candidate)
111
+ self.descriptor_value_counts[descriptor_value] += 1
112
+
113
+ s = 's' if len(new_candidates) != 1 else ''
114
+ self.writer(f'Added {len(new_candidates)} structure{s} to the descriptor list')
115
+
116
+ def _get_descriptor_value(self, candidate: StandardCandidate) -> Hashable:
117
+ """Obtain a hashable descriptor value to store in the internal counter.
118
+
119
+ Parameters
120
+ ----------
121
+ candidate : StandardCandidate
122
+ Candidate to evaluate the descriptor for.
123
+
124
+ Returns
125
+ -------
126
+ Hashable
127
+ Hashable descriptor value.
128
+ """
129
+ descriptor_value = self.descriptor.get_features(candidate)
130
+
131
+ # convert to hashable object
132
+ if isinstance(descriptor_value, np.ndarray):
133
+ descriptor_value = descriptor_value.data.tobytes()
134
+
135
+ return descriptor_value
@@ -1,28 +1,31 @@
1
1
  """
2
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.
3
+ candidates, usually by sorting according to some metric.
4
+ The concept of acquisitors comes from Bayesian search algorithms.
5
5
 
6
- A common acquisitor is the Lower Confidence Bound (LCB) acquisitor, which
6
+ A common acquisitor is the Lower Confidence Bound (LCB) acquisitor, which
7
7
  selects according to the expression
8
8
 
9
9
  .. math::
10
10
  LCB(x) = E(x) - \kappa \sigma(x).
11
11
 
12
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
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
16
  does require the generation of multiple candidates to choose from.
17
17
  """
18
18
 
19
- from .ABC_acquisitor import AcquisitorBaseClass, AcquisitonCalculatorBaseClass
19
+ from .ABC_acquisitor import AcquisitonCalculatorBaseClass, AcquisitorBaseClass
20
20
  from .LCB import LowerConfidenceBoundAcquisitor
21
+ from .LCB_penalty import LCBPenaltyAcquisitor
21
22
  from .LCB_power import PowerLowerConfidenceBoundAcquisitor
23
+ from .meta_acquisitor import MetaInformationAcquisitor
22
24
 
23
- __all__ = ['AcquisitorBaseClass',
24
- 'LowerConfidenceBoundAcquisitor',
25
+ __all__ = ['AcquisitorBaseClass',
26
+ 'LowerConfidenceBoundAcquisitor',
27
+ 'LCBPenaltyAcquisitor',
25
28
  'PowerLowerConfidenceBoundAcquisitor'
26
29
  'AcquisitonCalculatorBaseClass',
30
+ 'MetaInformationAcquisitor',
27
31
  ]
28
-
@@ -0,0 +1,28 @@
1
+ import numpy as np
2
+ from agox.acquisitors.ABC_acquisitor import AcquisitorBaseClass
3
+
4
+ class MetaInformationAcquisitor(AcquisitorBaseClass):
5
+
6
+ name = 'MetaInformationAcquisitor'
7
+
8
+ def __init__(self, meta_key, mode='min', **kwargs):
9
+ super().__init__(**kwargs)
10
+ self.meta_key = meta_key
11
+ self.mode = mode
12
+
13
+ assert mode in ['max', 'min'] # Either maximize or minimize according to the meta key.
14
+
15
+ def calculate_acquisition_function(self, candidates):
16
+ sign = 1 if self.mode == 'min' else -1
17
+ fitness = np.zeros(len(candidates))
18
+
19
+ for i, candidate in enumerate(candidates):
20
+ fitness[i] = sign * candidate.get_meta_information(self.meta_key)
21
+
22
+ return fitness
23
+
24
+
25
+
26
+
27
+
28
+
@@ -5,7 +5,6 @@ and this is done using parallelization from Ray.
5
5
  """
6
6
  from agox.collectors.standard import StandardCollector
7
7
  from agox.collectors.ray_collector import ParallelCollector
8
+ from agox.collectors.parallel_tempering import ParallelTemperingCollector
8
9
 
9
- # __all__ = ['StandardCollector', 'ParallelCollector']
10
-
11
- __all__ = ['StandardCollector', 'ParallelCollector']
10
+ __all__ = ['StandardCollector', 'ParallelCollector', 'ParallelTemperingCollector']
@@ -0,0 +1,165 @@
1
+ import numpy as np
2
+ import ray
3
+
4
+ from agox.collectors.ABC_collector import CollectorBaseClass
5
+ from agox.samplers.fixed_sampler import FixedSampler
6
+ from agox.utils.ray import RayPoolUser
7
+
8
+
9
+ def remote_generate(generator, sampler, environment):
10
+ return generator(sampler, environment)
11
+
12
+
13
+ class ParallelTemperingCollector(CollectorBaseClass, RayPoolUser):
14
+ name = "ParallelTemperingCollector"
15
+
16
+ """
17
+ Parameters
18
+ ----------
19
+ num_candidates : dict or list
20
+ If dict, it must have the form {0: [], 500: []} where the keys are the iteration numbers
21
+ and the values are the number of candidates to generate for that iteration.
22
+ If a list it must provide the number of candidates for each generator used.
23
+ """
24
+
25
+ def __init__(self, generator_dict, dynamic=True, **kwargs):
26
+ # Get the kwargs that are relevant for RayPoolUser
27
+ RayPoolUser.__init__(self)
28
+ self.dynamic = dynamic
29
+
30
+ # Get all the generators from the generator_dict
31
+ unique_generators = []
32
+ for generator in generator_dict.values():
33
+ if generator not in unique_generators:
34
+ unique_generators.append(generator)
35
+
36
+ # Figure out which unique generator each generator in the generator_dict corresponds to.
37
+ self.mapping = {}
38
+ for key, generator in generator_dict.items():
39
+ self.mapping[key] = unique_generators.index(generator)
40
+
41
+ # Give the rest to the CollectorBaseClass.
42
+ CollectorBaseClass.__init__(self, unique_generators, **kwargs)
43
+
44
+ self.generator_keys = []
45
+ for generator in self.generators:
46
+ key = self.pool_add_module(generator)
47
+ self.generator_keys.append(key)
48
+
49
+ def make_candidates(self):
50
+
51
+ if self.dynamic:
52
+ self.update_generators()
53
+ # We need to build the args and kwargs sent to the actors.
54
+
55
+ # If sampler is empty and initialized, then use fallback generator
56
+ if len(self.sampler) == 0 and self.sampler.initialized:
57
+ number_of_candidates = self.get_number_of_candidates()
58
+ fallback_generator = self.get_fallback_generator()
59
+ generator_id = self.pool_add_module(fallback_generator)
60
+ modules = [[generator_id]] * np.sum(number_of_candidates)
61
+ else:
62
+ if self.get_iteration_counter() == 1 or self.get_iteration_counter() is None:
63
+ random_key = self.mapping['random']
64
+ modules = [[self.generator_keys[random_key]]] * self.sampler.sample_size
65
+ else:
66
+ # This specifies which module each actor of the pool will use.
67
+ modules = []
68
+ for temperature in self.sampler.temperatures:
69
+ modules += [[self.get_generator_key(temperature)]]
70
+
71
+ environment_id = ray.put(self.environment)
72
+ fixed_samplers = self.get_dummy_samplers()
73
+ if len(fixed_samplers) == 0:
74
+ sampler_ids = [ray.put(self.sampler)] * self.sampler.sample_size
75
+ else:
76
+ sampler_ids = [ray.put(sampler) for sampler in fixed_samplers]
77
+
78
+ # The args and kwargs passed to the function - in this case the remote_generate
79
+ # function defined above.
80
+ args = [[sampler_id, environment_id] for sampler_id in sampler_ids]
81
+ # kwargs = [{}] * np.sum(number_of_candidates)
82
+ kwargs = [{} for _ in range(np.sum(self.sampler.sample_size))]
83
+
84
+ # Generate in parallel using the pool.
85
+ candidates = self.pool_map(remote_generate, modules, args, kwargs)
86
+
87
+ # Flatten the output which is a list of lists.
88
+ flat_candidates = []
89
+ for cand_list in candidates:
90
+ for cand in cand_list:
91
+ flat_candidates.append(cand.copy())
92
+
93
+ for i, cand in enumerate(flat_candidates):
94
+ cand.add_meta_information("walker_index", i)
95
+
96
+ return flat_candidates
97
+
98
+ def get_dummy_samplers(self):
99
+ sample = self.sampler.get_all_members()
100
+ samplers = []
101
+ for member in sample:
102
+ sampler = FixedSampler(member)
103
+ samplers.append(sampler)
104
+ return samplers
105
+
106
+ def get_number_of_candidates(self):
107
+ return [self.sampler.sample_size]
108
+
109
+ @classmethod
110
+ def from_sampler(cls, sampler, environment, amplitudes, random_generator_kwargs=None, **kwargs):
111
+ from agox.generators import RandomGenerator, RattleGenerator
112
+
113
+ # Generators to produce candidates structures
114
+ if random_generator_kwargs is None:
115
+ random_generator_kwargs = {}
116
+ random_generator = RandomGenerator(**environment.get_confinement(), **random_generator_kwargs)
117
+
118
+ if not len(amplitudes) == len(sampler.temperatures):
119
+ raise ValueError(
120
+ "The number of amplitudes must match the number of temperatures in the sampler."
121
+ )
122
+
123
+ # Dict specificies how many candidates are created with and the dict-keys are iterations.
124
+ generator_dict = {}
125
+ generator_dict["random"] = random_generator
126
+
127
+ N_atoms = len(environment.get_missing_indices())
128
+
129
+ for i, t in enumerate(sampler.temperatures):
130
+ generator_dict[t] = RattleGenerator(
131
+ **environment.get_confinement(),
132
+ rattle_amplitude=amplitudes[i],
133
+ n_rattle=N_atoms,
134
+ )
135
+ generator_dict[t].add_dynamic_attribute("rattle_amplitude") # The rattle amplitude is dynamic.
136
+
137
+ # Collector creates a number of structures in each iteration.
138
+ return cls(
139
+ generator_dict,
140
+ sampler=sampler,
141
+ environment=environment,
142
+ order=1,
143
+ **kwargs
144
+ )
145
+
146
+ def update_generators(self):
147
+ for i, temperature in enumerate(self.sampler.temperatures):
148
+ generator = self.get_generator(temperature)
149
+ acceptance = self.sampler.get_acceptance_rate(i, start=-10) # Acceptance rate over the last 10 iterations.
150
+
151
+ if acceptance.size == 0:
152
+ continue
153
+
154
+ # Rattle update amplitude
155
+ if hasattr(generator, 'rattle_amplitude'):
156
+ if acceptance < 0.5:
157
+ generator.rattle_amplitude *= 0.99
158
+ else:
159
+ generator.rattle_amplitude = min(5, generator.rattle_amplitude * 1.01)
160
+
161
+ def get_generator(self, temperature):
162
+ return self.generators[self.mapping[temperature]]
163
+
164
+ def get_generator_key(self, temperature):
165
+ return self.generator_keys[self.mapping[temperature]]
@@ -48,7 +48,6 @@ class GPR(ModelBaseClass, RayPoolUser):
48
48
 
49
49
  supported_descriptor_types = ["global"]
50
50
  implemented_properties = ["energy", "forces", "uncertainty", "forces_uncertainty"]
51
- dynamic_attributes = ["alpha", "K_inv", "X", "K", "kernel", "Y", "mean_energy", "_ready_state"]
52
51
 
53
52
  def __init__(
54
53
  self,
@@ -85,6 +84,9 @@ class GPR(ModelBaseClass, RayPoolUser):
85
84
  descriptor.descriptor_type in self.supported_descriptor_types
86
85
  ), "Only global descriptors are supported, use SparseGPR for local descriptors instead."
87
86
 
87
+ for attr in ["alpha", "K_inv", "X", "K", "kernel", "Y", "mean_energy", "_ready_state"]:
88
+ self.add_dynamic_attribute(attr)
89
+
88
90
  self.descriptor = descriptor
89
91
  self.kernel = kernel
90
92
  self.prior = prior