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.
- {agox-3.7.0rc1/agox.egg-info → agox-3.8.0}/PKG-INFO +6 -1
- {agox-3.7.0rc1 → agox-3.8.0}/README.md +3 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/__init__.py +1 -1
- {agox-3.7.0rc1 → agox-3.8.0}/agox/acquisitors/ABC_acquisitor.py +7 -0
- agox-3.8.0/agox/acquisitors/LCB_penalty.py +135 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/acquisitors/__init__.py +13 -10
- agox-3.8.0/agox/acquisitors/meta_acquisitor.py +28 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/collectors/__init__.py +2 -3
- agox-3.8.0/agox/collectors/parallel_tempering.py +165 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/GPR.py +3 -1
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/priors/repulsive.c +133 -133
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/sGPR.py +3 -2
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/sGPR_ensemble.py +2 -2
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/__init__.py +6 -2
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/fingerprint_cython/angular_fingerprintFeature_cy.c +133 -133
- agox-3.8.0/agox/models/descriptors/fingerprint_jax/compare_fingerprint.py +114 -0
- agox-3.8.0/agox/models/descriptors/fingerprint_jax/fingerprint_jax.py +357 -0
- agox-3.8.0/agox/models/descriptors/fingerprint_jax/utils.py +355 -0
- agox-3.8.0/agox/models/descriptors/voronoi_site.py +124 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/module.py +1 -3
- {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/__init__.py +14 -11
- agox-3.8.0/agox/postprocessors/surface_centering.py +90 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/samplers/__init__.py +3 -1
- agox-3.7.0rc1/agox/samplers/parallel_tempering_sampler.py → agox-3.8.0/agox/samplers/concurrent_tempering.py +1 -1
- agox-3.8.0/agox/samplers/parallel_tempering.py +316 -0
- agox-3.8.0/agox/test/model_tests/__init__.py +0 -0
- agox-3.8.0/agox/test/model_tests/expected_outputs/GlobalGPRJax_dataAgO_parameter0.pckl +0 -0
- agox-3.8.0/agox/test/model_tests/expected_outputs/GlobalGPRJax_dataB12_parameter0.pckl +0 -0
- agox-3.8.0/agox/test/model_tests/expected_outputs/GlobalGPRJax_dataC30_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/model_utils.py +6 -2
- agox-3.8.0/agox/test/model_tests/test_global_gpr_jax.py +74 -0
- agox-3.8.0/agox/test/postprocessor_tests/surface_centering_test.py +40 -0
- 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
- agox-3.8.0/agox/test/run_tests/tests_ct/test_ct.py +5 -0
- agox-3.8.0/agox/test/run_tests/tests_pt/expected_outputs/pt_test/confinement_plot_RandomGenerator.png +0 -0
- agox-3.8.0/agox/test/run_tests/tests_pt/expected_outputs/pt_test/confinement_plot_RattleGenerator.png +0 -0
- agox-3.8.0/agox/test/run_tests/tests_pt/expected_outputs/pt_test/db0.db +0 -0
- agox-3.8.0/agox/test/run_tests/tests_pt/expected_outputs/pt_test/db0_tracker.npz +0 -0
- agox-3.8.0/agox/test/run_tests/tests_pt/script_pt.py +112 -0
- agox-3.8.0/agox/test/run_tests/tests_pt/test_pt.py +7 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/tracker.py +1 -1
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/metrics/calibration.py +1 -1
- agox-3.8.0/agox/utils/plot/plot_parity.py +188 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/writer.py +1 -1
- {agox-3.7.0rc1 → agox-3.8.0/agox.egg-info}/PKG-INFO +6 -1
- {agox-3.7.0rc1 → agox-3.8.0}/agox.egg-info/SOURCES.txt +22 -1
- {agox-3.7.0rc1 → agox-3.8.0}/agox.egg-info/requires.txt +2 -0
- {agox-3.7.0rc1 → agox-3.8.0}/pyproject.toml +2 -0
- agox-3.7.0rc1/agox/test/run_tests/tests_pt/test_pt.py +0 -5
- agox-3.7.0rc1/agox/utils/plot/plot_parity.py +0 -167
- {agox-3.7.0rc1 → agox-3.8.0}/LICENSE.txt +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/MANIFEST.in +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/acquisitors/EI.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/acquisitors/LCB.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/acquisitors/LCB_power.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/candidates/ABC_candidate.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/candidates/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/candidates/standard.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/cli/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/cli/cli_analysis.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/cli/cli_convert.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/cli/cli_example.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/cli/cli_graph_sorting.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/cli/cli_notebook.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/cli/main.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/collectors/ABC_collector.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/collectors/ray_collector.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/collectors/standard.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/databases/ABC_database.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/databases/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/databases/concurrent_ordered.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/databases/database.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/databases/database_concurrent.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/databases/database_utilities.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/environments/ABC_environment.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/environments/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/environments/environment.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/evaluators/ABC_evaluator.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/evaluators/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/evaluators/local_optimization.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/evaluators/rattle.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/evaluators/single_point.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/ABC_generator.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/MD.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/block_generators/ABC_block.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/block_generators/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/block_generators/random.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/block_generators/rattle.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/ce_generator.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/cog.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/complementary_energy/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/complementary_energy/attractor_methods/ABC_attractors.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/complementary_energy/attractor_methods/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/complementary_energy/attractor_methods/ce_attractors_another_structure.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/complementary_energy/attractor_methods/ce_attractors_current_structure.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/complementary_energy/attractor_methods/ce_attractors_interpolation.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/complementary_energy/attractor_methods/ce_attractors_kmeans.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/complementary_energy/ce_calculators.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/permutation.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/random.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/rattle.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/replace.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/reuse.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/sampling.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/steepest_descent.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/symmetry.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/symmetry_permutation.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/symmetry_rattle.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/symmetry_utils/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/symmetry_utils/symmetry_enforcer.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/generators/symmetry_utils/symmetry_groups.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/helpers/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/helpers/confinement.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/helpers/gpaw_io.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/helpers/gpaw_subprocess.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/main.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/ABC_model.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/kernels/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/kernels/kernels.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/local_mean.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/priors/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/priors/repulsive.pyx +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/GPR/priors/setup.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/datasets/Ag5O3-dataset.traj +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/datasets/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/datasets/loader.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/ABC_descriptor.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/acsf.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/exponential_density.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/fingerprint.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/fingerprint_cython/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/fingerprint_cython/angular_fingerprintFeature_cy.pyx +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/fingerprint_cython/setup.py +0 -0
- {agox-3.7.0rc1/agox/models/schnetpack → agox-3.8.0/agox/models/descriptors/fingerprint_jax}/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/scale_select_descriptor.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/simple_fingerprint.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/soap.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/spectral_graph_descriptor.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/type_descriptor.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/descriptors/voronoi.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/priors/constant.py +0 -0
- {agox-3.7.0rc1/agox/test → agox-3.8.0/agox/models/schnetpack}/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/models/schnetpack/schnetpack.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/observer.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/ABC_postprocess.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/centering.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/disjoint_filtering.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/immunizer.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/minimum_dist.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/optimizers/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/optimizers/safe_bfgs.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/ray_relax.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/relax.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/postprocessors/wrap.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/samplers/ABC_sampler.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/samplers/fixed_sampler.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/samplers/genetic.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/samplers/kernel_similarity.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/samplers/kmeans.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/samplers/metropolis.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/samplers/spectral_graph.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/.coveragerc +0 -0
- {agox-3.7.0rc1/agox/test/model_tests → agox-3.8.0/agox/test}/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/acquisitor_test/test_lcb.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/conftest.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/database_tests/database_test.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/datasets/AgO-dataset.traj +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/datasets/B12-dataset.traj +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/datasets/C30-dataset.traj +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/datasets/databases/mos2_databases/db1.db +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/datasets/databases/mos2_databases/db2.db +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/descriptor_tests/expected_outputs/SOAP_AgO.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/descriptor_tests/expected_outputs/SOAP_B12.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/descriptor_tests/expected_outputs/SOAP_C30.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/descriptor_tests/soap_test.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/descriptor_tests/spectral_graph_test.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/empty_cache.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/environment_tests/environment_test.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/conftest.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataAgO_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataAgO_parameter1.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataAgO_parameter2.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataB12_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataB12_parameter1.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataB12_parameter2.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataC30_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataC30_parameter1.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataC30_parameter2.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/PermutationGenerator_dataAgO_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/PermutationGenerator_dataAgO_parameter1.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/PermutationGenerator_dataAgO_parameter2.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataAgO_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataAgO_parameter1.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataAgO_parameter2.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataB12_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataB12_parameter1.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataB12_parameter2.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataC30_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataC30_parameter1.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RandomGenerator_dataC30_parameter2.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataAgO_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataAgO_parameter1.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataAgO_parameter2.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataB12_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataB12_parameter1.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataB12_parameter2.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataC30_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataC30_parameter1.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/RattleGenerator_dataC30_parameter2.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataAgO_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataAgO_parameter1.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataAgO_parameter2.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataB12_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataB12_parameter1.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataB12_parameter2.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataC30_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataC30_parameter1.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataC30_parameter2.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SamplingGenerator_dataAgO_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SamplingGenerator_dataB12_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SamplingGenerator_dataC30_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SteepestDescentGenerator_dataAgO_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SteepestDescentGenerator_dataB12_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SteepestDescentGenerator_dataC30_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SymmetryGenerator_dataAgO_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SymmetryGenerator_dataAgO_parameter1.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SymmetryGenerator_dataB12_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/expected_outputs/SymmetryGenerator_dataB12_parameter1.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/for_docs/nonseeded_script.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/for_docs/seeded_script.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/for_docs/test_doc_scripts.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/generator_test.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/generator_utils.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_cog.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_generators.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_permutation.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_random.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_rattle.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_replace.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_sampling.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_steepest_descent.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_symmetry.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_symmetry_2.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/generator_tests/test_symmetry_3.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/descriptors_api.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/GlobalGPR_dataAgO_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/GlobalGPR_dataB12_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/GlobalGPR_dataC30_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/LocalSparseGPRForces_dataAgO_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/LocalSparseGPRForces_dataB12_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/LocalSparseGPRForces_dataC30_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/LocalSparseGPR_dataAgO_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/LocalSparseGPR_dataB12_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/LocalSparseGPR_dataC30_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/globalSparseGPRForces_dataAgO_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/globalSparseGPRForces_dataB12_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/globalSparseGPRForces_dataC30_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/globalSparseGPR_dataAgO_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/globalSparseGPR_dataB12_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/expected_outputs/globalSparseGPR_dataC30_parameter0.pckl +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/gpr_api.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/load_api.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/sgpr_api.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/sgpr_api_forces.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_api.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_global_gpr.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_global_sparse_gpr.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_global_sparse_gpr_force_training.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_load.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_local_gpr.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_local_gpr_force_training.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_ray_gpr.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_ray_sgpr_ensemble_local.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_ray_sgpr_global.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_ray_sgpr_local.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/model_tests/test_sgpr_sparse_schedule.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/modifying_examples/confinement_examples.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/modifying_examples/plots/cluster_confinement.png +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/modifying_examples/plots/surface_cluster_confinement.png +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/modifying_examples/plots/surface_film_confinement.png +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/modifying_examples/plots/surface_toplayer_unc.png +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/modifying_examples/plots/two_d_environment.png +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/postprocessor_tests/disjoint_filtering_test.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/postprocessor_tests/model_results_test.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/postprocessor_tests/postprocessor_test.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/postprocessor_tests/test_survive_empty.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/run_utils.py +0 -0
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/expected_outputs/bh_bulk_emt_test/db0.db +0 -0
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/expected_outputs/bh_cluster_emt_test/db0.db +0 -0
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/expected_outputs/bh_surface_emt_test/db0.db +0 -0
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_bulk_chgnet.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_bulk_emt.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_bulk_gpaw.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_bulk_vasp.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_cluster_chgnet.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_cluster_emt.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_cluster_gpaw.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_cluster_orca.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_cluster_vasp.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_surface_chgnet.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_surface_emt.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_surface_gpaw.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/script_bh_surface_vasp.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/test/automagic_analysis.ipynb +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/test/confinement_plot_RattleGenerator.png +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/test/db0.db +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/test/db0_tracker.npz +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/test/dbs/db0.db +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/test/dbs/db0_tracker.npz +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_bh/test_bh.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_block/expected_outputs/block_bh_test/db0.db +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_block/expected_outputs/block_bh_test/db0_tracker.npz +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_block/expected_outputs/block_rss_test/db0.db +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_block/expected_outputs/block_rss_test/db0_tracker.npz +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_block/script_block_bh.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_block/script_block_rss.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_block/test_block_bh.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_block/test_block_rss.py +0 -0
- {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
- {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
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ce/expected_outputs/ce_default_gofee_test/db0.db +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ce/expected_outputs/ce_gofee_test/db0.db +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ce/script_ce_default_gofee.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ce/script_ce_gofee.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ce/test_ce_default_gofee.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ce/test_ce_gofee.py +0 -0
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ea/expected_outputs/ea_test/db0.db +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ea/expected_outputs/ea_test/population_5.traj +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ea/script_ea.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_ea/test_ea.py +0 -0
- {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
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/expected_outputs/gofee_bulk_emt_test/db0.db +0 -0
- {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
- {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
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/expected_outputs/gofee_cluster_emt_test/db0.db +0 -0
- {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
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/expected_outputs/gofee_surface_emt_test/db0.db +0 -0
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_bulk_chgnet.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_bulk_emt.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_bulk_gpaw.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_bulk_vasp.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_cluster_chgnet.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_cluster_emt.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_cluster_gpaw.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_cluster_orca.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_cluster_vasp.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_surface_chgnet.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_surface_emt.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_surface_gpaw.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/script_gofee_surface_vasp.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_gofee/test_gofee.py +0 -0
- {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
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_graph_filt/script_graph_filtering_gofee.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_graph_filt/test_graph_filtering_gofee.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_lgpr_bh/expected_outputs/lgpr_bh_test/db0.db +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_lgpr_bh/script_lgpr_bh.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_lgpr_bh/test_lgpr_bh.py +0 -0
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_md/expected_outputs/md_bh_test/db0.db +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_md/expected_outputs/md_bh_test/db0_tracker.npz +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_md/script_md_bh.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_md/test_md_bh.py +0 -0
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/expected_outputs/rss_2d_test/db0.db +0 -0
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/expected_outputs/rss_bulk_emt_test/db0.db +0 -0
- {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
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/expected_outputs/rss_cluster_emt_test/db0.db +0 -0
- {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
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/expected_outputs/rss_surface_emt_test/db0.db +0 -0
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_2d.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_bulk_chgnet.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_bulk_emt.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_bulk_gpaw.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_bulk_vasp.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_cluster_chgnet.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_cluster_emt.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_cluster_gpaw.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_cluster_orca.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_cluster_vasp.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_surface_chgnet.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_surface_emt.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_surface_gpaw.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/script_rss_surface_vasp.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/test.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_rss/test_rss.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_schnet/script_schnet_bh.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_schnet/test_schnet_bh.py +0 -0
- {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
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_cluster_symmetry_test/db0.db +0 -0
- {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
- {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
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_slab_symmetry_test/db0.db +0 -0
- {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
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/expected_outputs/rss_cluster_symmetry_test/db0.db +0 -0
- {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
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/script_gofee_cluster_symmetry.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/script_gofee_slab_symmetry.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/script_rss_cluster_symmetry.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/test_gofee_cluster_symmetry.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/test_gofee_slab_symmetry.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/run_tests/tests_symmetry/test_rss_cluster_symmetry.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/sampler_tests/sampler_test.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/test_utils.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/analysis_test.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/cache_test.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/plot_tests/colors_test.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/plot_tests/plot_atoms_test.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/plot_tests/plot_cell_test.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/plot_tests/utils_test.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/test_feature_dist_filter.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/test_filters.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/test_sparsifiers.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/test/utils_tests/tracker_test.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/batch_analysis.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/cache.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/constraints/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/constraints/box_constraint.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/convert_database.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/data_selection.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/decorators.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/ABC_filter.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/all.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/energy.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/feature_distance.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/filter.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/kmeans_energy.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/none.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/random.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/sparse_filter.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/filters/voronoi.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/graph_sorting.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/jupyter_interactive.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/matplotlib_utils.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/metrics/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/metrics/metrics.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/numerical_derivative.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/plot/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/plot/colors.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/plot/plot_atoms.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/plot/plot_cell.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/plot/utils.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/actor.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/pool.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/pool_startup.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/pool_user.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/startup.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/testing/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/testing/log_reader.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/ray/testing/slurm_test_functions.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/sparsifiers/ABC_sparsifier.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/sparsifiers/CUR.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/sparsifiers/CUR_old.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/sparsifiers/MBkmeans.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/sparsifiers/__init__.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox/utils/sparsifiers/random.py +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox.egg-info/dependency_links.txt +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox.egg-info/entry_points.txt +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/agox.egg-info/top_level.txt +0 -0
- {agox-3.7.0rc1 → agox-3.8.0}/setup.cfg +0 -0
- {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.
|
|
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
|
+

|
|
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
|
+

|
|
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
|
|
@@ -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
|
|
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
|
-
|
|
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
|