agox 3.10.0rc1__tar.gz → 3.10.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agox-3.10.0rc1/agox.egg-info → agox-3.10.1}/PKG-INFO +2 -3
- {agox-3.10.0rc1 → agox-3.10.1}/agox/__init__.py +1 -1
- agox-3.10.1/agox/acquisitors/ABC_acquisitor.py +214 -0
- agox-3.10.1/agox/acquisitors/EI.py +51 -0
- agox-3.10.1/agox/acquisitors/LCB.py +101 -0
- agox-3.10.1/agox/acquisitors/LCB_penalty.py +130 -0
- agox-3.10.1/agox/acquisitors/LCB_power.py +16 -0
- agox-3.10.1/agox/acquisitors/__init__.py +38 -0
- agox-3.10.1/agox/acquisitors/meta_acquisitor.py +23 -0
- agox-3.10.1/agox/acquisitors/replica_exchange/__init__.py +5 -0
- agox-3.10.1/agox/acquisitors/replica_exchange/default.py +88 -0
- agox-3.10.1/agox/analysis/__init__.py +26 -0
- agox-3.10.1/agox/analysis/criterion/__init__.py +5 -0
- agox-3.10.1/agox/analysis/criterion/base_criterion/__init__.py +1 -0
- agox-3.10.1/agox/analysis/criterion/base_criterion/base_criterion.py +20 -0
- agox-3.10.1/agox/analysis/criterion/base_criterion/discrete_distribution.py +51 -0
- agox-3.10.1/agox/analysis/criterion/distance.py +64 -0
- agox-3.10.1/agox/analysis/criterion/threshold.py +44 -0
- agox-3.10.1/agox/analysis/plot/__init__.py +8 -0
- agox-3.10.1/agox/analysis/plot/property_plot.py +55 -0
- agox-3.10.1/agox/analysis/plot/success_plot.py +42 -0
- agox-3.10.1/agox/analysis/property/__init__.py +4 -0
- agox-3.10.1/agox/analysis/property/descriptor_property.py +41 -0
- agox-3.10.1/agox/analysis/property/energy.py +25 -0
- agox-3.10.1/agox/analysis/property/free_energy.py +48 -0
- agox-3.10.1/agox/analysis/property/property.py +118 -0
- agox-3.10.1/agox/analysis/search_analysis.py +222 -0
- agox-3.10.1/agox/analysis/search_data.py +276 -0
- agox-3.10.1/agox/candidates/ABC_candidate.py +355 -0
- agox-3.10.1/agox/candidates/__init__.py +16 -0
- agox-3.10.1/agox/candidates/standard.py +27 -0
- agox-3.10.1/agox/cli/cli_analysis.py +220 -0
- agox-3.10.1/agox/cli/cli_convert.py +89 -0
- agox-3.10.1/agox/cli/cli_graph_sorting.py +238 -0
- agox-3.10.1/agox/cli/cli_notebook.py +108 -0
- agox-3.10.1/agox/cli/cli_plot.py +153 -0
- agox-3.10.1/agox/cli/main.py +22 -0
- agox-3.10.1/agox/collectors/ABC_collector.py +159 -0
- agox-3.10.1/agox/collectors/__init__.py +22 -0
- agox-3.10.1/agox/collectors/ray_collector.py +93 -0
- agox-3.10.1/agox/collectors/replica_exchange.py +223 -0
- agox-3.10.1/agox/collectors/standard.py +74 -0
- agox-3.10.1/agox/databases/ABC_database.py +115 -0
- agox-3.10.1/agox/databases/__init__.py +14 -0
- agox-3.10.1/agox/databases/concurrent_ordered.py +41 -0
- agox-3.10.1/agox/databases/database.py +460 -0
- agox-3.10.1/agox/databases/database_concurrent.py +213 -0
- agox-3.10.1/agox/databases/database_utilities.py +143 -0
- agox-3.10.1/agox/environments/ABC_environment.py +164 -0
- agox-3.10.1/agox/environments/__init__.py +16 -0
- agox-3.10.1/agox/environments/environment.py +145 -0
- agox-3.10.1/agox/evaluators/ABC_evaluator.py +173 -0
- agox-3.10.1/agox/evaluators/__init__.py +24 -0
- agox-3.10.1/agox/evaluators/local_optimization.py +145 -0
- agox-3.10.1/agox/evaluators/rattle.py +24 -0
- agox-3.10.1/agox/evaluators/single_point.py +19 -0
- agox-3.10.1/agox/generators/ABC_generator.py +312 -0
- agox-3.10.1/agox/generators/MD.py +147 -0
- agox-3.10.1/agox/generators/__init__.py +55 -0
- agox-3.10.1/agox/generators/block_generators/ABC_block.py +209 -0
- agox-3.10.1/agox/generators/block_generators/__init__.py +2 -0
- agox-3.10.1/agox/generators/block_generators/block_potential.py +109 -0
- agox-3.10.1/agox/generators/block_generators/random.py +69 -0
- agox-3.10.1/agox/generators/block_generators/rattle.py +82 -0
- agox-3.10.1/agox/generators/ce_generator.py +138 -0
- agox-3.10.1/agox/generators/cog.py +58 -0
- agox-3.10.1/agox/generators/complementary_energy/attractor_methods/ABC_attractors.py +31 -0
- agox-3.10.1/agox/generators/complementary_energy/attractor_methods/ce_attractors_another_structure.py +67 -0
- agox-3.10.1/agox/generators/complementary_energy/attractor_methods/ce_attractors_current_structure.py +63 -0
- agox-3.10.1/agox/generators/complementary_energy/attractor_methods/ce_attractors_interpolation.py +71 -0
- agox-3.10.1/agox/generators/complementary_energy/attractor_methods/ce_attractors_kmeans.py +83 -0
- agox-3.10.1/agox/generators/complementary_energy/ce_calculators.py +235 -0
- agox-3.10.1/agox/generators/permutation.py +145 -0
- agox-3.10.1/agox/generators/random.py +74 -0
- agox-3.10.1/agox/generators/rattle.py +70 -0
- agox-3.10.1/agox/generators/replace.py +71 -0
- agox-3.10.1/agox/generators/reuse.py +62 -0
- agox-3.10.1/agox/generators/sampling.py +26 -0
- agox-3.10.1/agox/generators/steepest_descent.py +46 -0
- agox-3.10.1/agox/generators/symmetry.py +302 -0
- agox-3.10.1/agox/generators/symmetry_permutation.py +197 -0
- agox-3.10.1/agox/generators/symmetry_rattle.py +386 -0
- agox-3.10.1/agox/generators/symmetry_utils/__init__.py +0 -0
- agox-3.10.1/agox/generators/symmetry_utils/symmetry_enforcer.py +1611 -0
- agox-3.10.1/agox/generators/symmetry_utils/symmetry_groups.py +933 -0
- agox-3.10.1/agox/helpers/__init__.py +5 -0
- agox-3.10.1/agox/helpers/confinement.py +92 -0
- agox-3.10.1/agox/helpers/gpaw_io.py +179 -0
- agox-3.10.1/agox/helpers/gpaw_subprocess.py +59 -0
- agox-3.10.1/agox/main/__init__.py +5 -0
- agox-3.10.1/agox/main/agox.py +228 -0
- agox-3.10.1/agox/main/state.py +153 -0
- agox-3.10.1/agox/models/ABC_model.py +598 -0
- agox-3.10.1/agox/models/GPR/GPR.py +846 -0
- agox-3.10.1/agox/models/GPR/__init__.py +5 -0
- agox-3.10.1/agox/models/GPR/kernels/__init__.py +1 -0
- agox-3.10.1/agox/models/GPR/kernels/kernels.py +141 -0
- agox-3.10.1/agox/models/GPR/local_mean.py +50 -0
- agox-3.10.1/agox/models/GPR/priors/__init__.py +1 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/models/GPR/priors/repulsive.c +97 -97
- agox-3.10.1/agox/models/GPR/priors/setup.py +6 -0
- agox-3.10.1/agox/models/GPR/sGPR.py +785 -0
- agox-3.10.1/agox/models/GPR/sGPR_ensemble.py +106 -0
- agox-3.10.1/agox/models/__init__.py +17 -0
- agox-3.10.1/agox/models/ase_model.py +58 -0
- agox-3.10.1/agox/models/composition_model.py +41 -0
- agox-3.10.1/agox/models/datasets/__init__.py +1 -0
- agox-3.10.1/agox/models/datasets/loader.py +11 -0
- agox-3.10.1/agox/models/descriptors/ABC_descriptor.py +156 -0
- agox-3.10.1/agox/models/descriptors/__init__.py +7 -0
- agox-3.10.1/agox/models/descriptors/acsf.py +198 -0
- agox-3.10.1/agox/models/descriptors/exponential_density.py +131 -0
- agox-3.10.1/agox/models/descriptors/fingerprint.py +126 -0
- agox-3.10.1/agox/models/descriptors/fingerprint_cython/__init__.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/models/descriptors/fingerprint_cython/angular_fingerprintFeature_cy.c +97 -97
- agox-3.10.1/agox/models/descriptors/fingerprint_cython/setup.py +6 -0
- agox-3.10.1/agox/models/descriptors/fingerprint_jax/__init__.py +0 -0
- agox-3.10.1/agox/models/descriptors/fingerprint_jax/fingerprint_jax.py +346 -0
- agox-3.10.1/agox/models/descriptors/fingerprint_jax/utils.py +337 -0
- agox-3.10.1/agox/models/descriptors/scale_select_descriptor.py +78 -0
- agox-3.10.1/agox/models/descriptors/simple_fingerprint.py +67 -0
- agox-3.10.1/agox/models/descriptors/soap.py +166 -0
- agox-3.10.1/agox/models/descriptors/spectral_graph_descriptor.py +84 -0
- agox-3.10.1/agox/models/descriptors/type_descriptor.py +49 -0
- agox-3.10.1/agox/models/descriptors/voronoi.py +270 -0
- agox-3.10.1/agox/models/descriptors/voronoi_site.py +118 -0
- agox-3.10.1/agox/models/priors/constant.py +12 -0
- agox-3.10.1/agox/models/schnetpack/__init__.py +0 -0
- agox-3.10.1/agox/models/schnetpack/schnetpack.py +381 -0
- agox-3.10.1/agox/observer/__init__.py +6 -0
- agox-3.10.1/agox/observer/finalization_handler.py +52 -0
- agox-3.10.1/agox/observer/observer.py +212 -0
- agox-3.10.1/agox/observer/observer_handler.py +187 -0
- agox-3.10.1/agox/observer/observer_method.py +123 -0
- agox-3.10.1/agox/postprocessors/ABC_postprocess.py +110 -0
- agox-3.10.1/agox/postprocessors/__init__.py +35 -0
- agox-3.10.1/agox/postprocessors/centering.py +58 -0
- agox-3.10.1/agox/postprocessors/disjoint_filtering.py +82 -0
- agox-3.10.1/agox/postprocessors/minimum_dist.py +88 -0
- agox-3.10.1/agox/postprocessors/ray_relax/__init__.py +3 -0
- agox-3.10.1/agox/postprocessors/ray_relax/ray_relax.py +275 -0
- agox-3.10.1/agox/postprocessors/ray_relax/remote_relax.py +118 -0
- agox-3.10.1/agox/postprocessors/relax.py +100 -0
- agox-3.10.1/agox/postprocessors/surface_centering.py +92 -0
- agox-3.10.1/agox/postprocessors/wrap.py +17 -0
- agox-3.10.1/agox/samplers/ABC_sampler.py +226 -0
- agox-3.10.1/agox/samplers/__init__.py +36 -0
- agox-3.10.1/agox/samplers/concurrent_tempering.py +179 -0
- agox-3.10.1/agox/samplers/fixed_sampler.py +42 -0
- agox-3.10.1/agox/samplers/genetic.py +215 -0
- agox-3.10.1/agox/samplers/kernel_similarity.py +150 -0
- agox-3.10.1/agox/samplers/kmeans.py +203 -0
- agox-3.10.1/agox/samplers/metropolis.py +95 -0
- agox-3.10.1/agox/samplers/replica_exchange/__init__.py +5 -0
- agox-3.10.1/agox/samplers/replica_exchange/rate_tracker.py +51 -0
- agox-3.10.1/agox/samplers/replica_exchange/replica_exchange.py +340 -0
- agox-3.10.1/agox/samplers/replica_exchange/sample.py +81 -0
- agox-3.10.1/agox/samplers/spectral_graph.py +158 -0
- agox-3.10.1/agox/test/__init__.py +0 -0
- agox-3.10.1/agox/test/model_tests/__init__.py +0 -0
- agox-3.10.1/agox/test/run_tests/tests_rss/test.py +0 -0
- agox-3.10.1/agox/utils/__init__.py +1 -0
- agox-3.10.1/agox/utils/cache.py +70 -0
- agox-3.10.1/agox/utils/constraints/__init__.py +1 -0
- agox-3.10.1/agox/utils/constraints/box_constraint.py +165 -0
- agox-3.10.1/agox/utils/convert_database.py +101 -0
- agox-3.10.1/agox/utils/decorators.py +22 -0
- agox-3.10.1/agox/utils/filters/ABC_filter.py +102 -0
- agox-3.10.1/agox/utils/filters/__init__.py +25 -0
- agox-3.10.1/agox/utils/filters/all.py +25 -0
- agox-3.10.1/agox/utils/filters/energy.py +34 -0
- agox-3.10.1/agox/utils/filters/feature_distance.py +95 -0
- agox-3.10.1/agox/utils/filters/filter.py +57 -0
- agox-3.10.1/agox/utils/filters/kmeans_energy.py +57 -0
- agox-3.10.1/agox/utils/filters/none.py +25 -0
- agox-3.10.1/agox/utils/filters/random.py +29 -0
- agox-3.10.1/agox/utils/filters/sparse_filter.py +72 -0
- agox-3.10.1/agox/utils/filters/voronoi.py +118 -0
- agox-3.10.1/agox/utils/graph_sorting.py +145 -0
- agox-3.10.1/agox/utils/jupyter_interactive.py +383 -0
- agox-3.10.1/agox/utils/matplotlib_utils.py +18 -0
- agox-3.10.1/agox/utils/metrics/__init__.py +17 -0
- agox-3.10.1/agox/utils/metrics/calibration.py +270 -0
- agox-3.10.1/agox/utils/metrics/metrics.py +21 -0
- agox-3.10.1/agox/utils/numerical_derivative.py +22 -0
- agox-3.10.1/agox/utils/plot/__init__.py +4 -0
- agox-3.10.1/agox/utils/plot/colors.py +255 -0
- agox-3.10.1/agox/utils/plot/plot_atoms.py +159 -0
- agox-3.10.1/agox/utils/plot/plot_cell.py +82 -0
- agox-3.10.1/agox/utils/plot/plot_parity.py +187 -0
- agox-3.10.1/agox/utils/plot/utils.py +60 -0
- agox-3.10.1/agox/utils/ray/__init__.py +4 -0
- agox-3.10.1/agox/utils/ray/actor.py +71 -0
- agox-3.10.1/agox/utils/ray/pool.py +522 -0
- agox-3.10.1/agox/utils/ray/pool_startup.py +89 -0
- agox-3.10.1/agox/utils/ray/pool_user.py +184 -0
- agox-3.10.1/agox/utils/ray/startup.py +159 -0
- agox-3.10.1/agox/utils/sparsifiers/ABC_sparsifier.py +124 -0
- agox-3.10.1/agox/utils/sparsifiers/CUR.py +24 -0
- agox-3.10.1/agox/utils/sparsifiers/CUR_old.py +26 -0
- agox-3.10.1/agox/utils/sparsifiers/MBkmeans.py +69 -0
- agox-3.10.1/agox/utils/sparsifiers/__init__.py +11 -0
- agox-3.10.1/agox/utils/sparsifiers/random.py +18 -0
- agox-3.10.1/agox/utils/thermodynamics/__init__.py +4 -0
- agox-3.10.1/agox/utils/thermodynamics/gibbs.py +28 -0
- agox-3.10.1/agox/utils/thermodynamics/thermodynamics_data.py +69 -0
- agox-3.10.1/agox/writer/__init__.py +2 -0
- agox-3.10.1/agox/writer/utils.py +48 -0
- agox-3.10.1/agox/writer/writer.py +104 -0
- {agox-3.10.0rc1 → agox-3.10.1/agox.egg-info}/PKG-INFO +2 -3
- agox-3.10.1/agox.egg-info/SOURCES.txt +382 -0
- {agox-3.10.0rc1 → agox-3.10.1}/pyproject.toml +1 -15
- agox-3.10.0rc1/MANIFEST.in +0 -4
- agox-3.10.0rc1/agox/models/GPR/priors/repulsive.pyx +0 -230
- agox-3.10.0rc1/agox/models/datasets/Ag5O3-dataset.traj +0 -0
- agox-3.10.0rc1/agox/models/descriptors/fingerprint_cython/angular_fingerprintFeature_cy.pyx +0 -738
- agox-3.10.0rc1/agox/test/.coveragerc +0 -36
- agox-3.10.0rc1/agox/test/datasets/AgO-dataset.traj +0 -0
- agox-3.10.0rc1/agox/test/datasets/B12-dataset.traj +0 -0
- agox-3.10.0rc1/agox/test/datasets/C30-dataset.traj +0 -0
- agox-3.10.0rc1/agox/test/datasets/databases/bh_test_databases/db1.db +0 -0
- agox-3.10.0rc1/agox/test/datasets/databases/bh_test_databases/db2.db +0 -0
- agox-3.10.0rc1/agox/test/datasets/databases/bh_test_databases/db3.db +0 -0
- agox-3.10.0rc1/agox/test/datasets/databases/bh_test_databases/db4.db +0 -0
- agox-3.10.0rc1/agox/test/datasets/databases/bh_test_databases/db5.db +0 -0
- agox-3.10.0rc1/agox/test/datasets/databases/bh_test_databases/experiment.pckl +0 -0
- agox-3.10.0rc1/agox/test/datasets/databases/mos2_databases/db1.db +0 -0
- agox-3.10.0rc1/agox/test/datasets/databases/mos2_databases/db2.db +0 -0
- agox-3.10.0rc1/agox/test/datasets/databases/rss_test_databases/db1.db +0 -0
- agox-3.10.0rc1/agox/test/datasets/databases/rss_test_databases/db2.db +0 -0
- agox-3.10.0rc1/agox/test/datasets/databases/rss_test_databases/db3.db +0 -0
- agox-3.10.0rc1/agox/test/datasets/databases/rss_test_databases/db4.db +0 -0
- agox-3.10.0rc1/agox/test/datasets/databases/rss_test_databases/experiment.pckl +0 -0
- agox-3.10.0rc1/agox/test/descriptor_tests/expected_outputs/SOAP_AgO.pckl +0 -0
- agox-3.10.0rc1/agox/test/descriptor_tests/expected_outputs/SOAP_B12.pckl +0 -0
- agox-3.10.0rc1/agox/test/descriptor_tests/expected_outputs/SOAP_C30.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataAgO_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataAgO_parameter1.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataAgO_parameter2.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataB12_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataB12_parameter1.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataB12_parameter2.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataC30_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataC30_parameter1.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/CenterOfGeometryGenerator_dataC30_parameter2.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/PermutationGenerator_dataAgO_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/PermutationGenerator_dataAgO_parameter1.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/PermutationGenerator_dataAgO_parameter2.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RandomGenerator_dataAgO_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RandomGenerator_dataAgO_parameter1.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RandomGenerator_dataAgO_parameter2.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RandomGenerator_dataB12_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RandomGenerator_dataB12_parameter1.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RandomGenerator_dataB12_parameter2.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RandomGenerator_dataC30_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RandomGenerator_dataC30_parameter1.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RandomGenerator_dataC30_parameter2.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RattleGenerator_dataAgO_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RattleGenerator_dataAgO_parameter1.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RattleGenerator_dataAgO_parameter2.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RattleGenerator_dataB12_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RattleGenerator_dataB12_parameter1.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RattleGenerator_dataB12_parameter2.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RattleGenerator_dataC30_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RattleGenerator_dataC30_parameter1.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/RattleGenerator_dataC30_parameter2.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataAgO_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataAgO_parameter1.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataAgO_parameter2.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataB12_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataB12_parameter1.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataB12_parameter2.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataC30_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataC30_parameter1.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/ReplaceGenerator_dataC30_parameter2.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/SamplingGenerator_dataAgO_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/SamplingGenerator_dataB12_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/SamplingGenerator_dataC30_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/SteepestDescentGenerator_dataAgO_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/SteepestDescentGenerator_dataB12_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/SteepestDescentGenerator_dataC30_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/SymmetryGenerator_dataAgO_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/SymmetryGenerator_dataAgO_parameter1.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/SymmetryGenerator_dataB12_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/generator_tests/expected_outputs/SymmetryGenerator_dataB12_parameter1.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/GlobalGPRJax_dataAgO_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/GlobalGPRJax_dataB12_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/GlobalGPRJax_dataC30_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/GlobalGPR_dataAgO_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/GlobalGPR_dataB12_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/GlobalGPR_dataC30_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/LocalSparseGPRForces_dataAgO_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/LocalSparseGPRForces_dataB12_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/LocalSparseGPRForces_dataC30_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/LocalSparseGPR_dataAgO_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/LocalSparseGPR_dataB12_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/LocalSparseGPR_dataC30_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/globalSparseGPRForces_dataAgO_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/globalSparseGPRForces_dataB12_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/globalSparseGPRForces_dataC30_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/globalSparseGPR_dataAgO_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/globalSparseGPR_dataB12_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/model_tests/expected_outputs/globalSparseGPR_dataC30_parameter0.pckl +0 -0
- agox-3.10.0rc1/agox/test/modifying_examples/plots/cluster_confinement.png +0 -0
- agox-3.10.0rc1/agox/test/modifying_examples/plots/surface_cluster_confinement.png +0 -0
- agox-3.10.0rc1/agox/test/modifying_examples/plots/surface_film_confinement.png +0 -0
- agox-3.10.0rc1/agox/test/modifying_examples/plots/surface_toplayer_unc.png +0 -0
- agox-3.10.0rc1/agox/test/modifying_examples/plots/two_d_environment.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_bh/expected_outputs/bh_bulk_emt_test/confinement_plot_RattleGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_bh/expected_outputs/bh_bulk_emt_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_bh/expected_outputs/bh_bulk_emt_test/db0_tracker.npz +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_bh/expected_outputs/bh_cluster_emt_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_bh/expected_outputs/bh_surface_emt_test/confinement_plot_RattleGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_bh/expected_outputs/bh_surface_emt_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_bh/expected_outputs/bh_surface_emt_test/db0_tracker.npz +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_bh/test/automagic_analysis.ipynb +0 -203
- agox-3.10.0rc1/agox/test/run_tests/tests_bh/test/confinement_plot_RattleGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_bh/test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_bh/test/db0_tracker.npz +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_bh/test/dbs/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_bh/test/dbs/db0_tracker.npz +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_block/expected_outputs/block_bh_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_block/expected_outputs/block_bh_test/db0_tracker.npz +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_block/expected_outputs/block_rss_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_block/expected_outputs/block_rss_test/db0_tracker.npz +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_ce/expected_outputs/ce_default_gofee_test/confinement_plot_ComplementaryEnergyGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_ce/expected_outputs/ce_default_gofee_test/confinement_plot_RandomGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_ce/expected_outputs/ce_default_gofee_test/confinement_plot_RattleGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_ce/expected_outputs/ce_default_gofee_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_ce/expected_outputs/ce_gofee_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_ct/expected_outputs/ct_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_ea/expected_outputs/ea_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_ea/expected_outputs/ea_test/population_5.traj +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_gofee/expected_outputs/gofee_bulk_emt_test/confinement_plot_RandomGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_gofee/expected_outputs/gofee_bulk_emt_test/confinement_plot_RattleGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_gofee/expected_outputs/gofee_bulk_emt_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_gofee/expected_outputs/gofee_bulk_emt_test/db0_tracker.npz +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_gofee/expected_outputs/gofee_cluster_emt_test/confinement_plot_RandomGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_gofee/expected_outputs/gofee_cluster_emt_test/confinement_plot_RattleGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_gofee/expected_outputs/gofee_cluster_emt_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_gofee/expected_outputs/gofee_surface_emt_test/confinement_plot_RandomGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_gofee/expected_outputs/gofee_surface_emt_test/confinement_plot_RattleGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_gofee/expected_outputs/gofee_surface_emt_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_gofee/expected_outputs/gofee_surface_emt_test/db0_tracker.npz +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_graph_filt/expected_outputs/graph_filtering_gofee_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_graph_filt/expected_outputs/graph_filtering_gofee_test/db0_tracker.npz +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_lgpr_bh/expected_outputs/lgpr_bh_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_md/expected_outputs/md_bh_test/confinement_plot_MDgenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_md/expected_outputs/md_bh_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_md/expected_outputs/md_bh_test/db0_tracker.npz +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_pt/expected_outputs/rex_test/confinement_plot_RandomGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_pt/expected_outputs/rex_test/confinement_plot_RattleGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_pt/expected_outputs/rex_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_rex/expected_outputs/rex_emt_test/confinement_plot_RandomGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_rex/expected_outputs/rex_emt_test/confinement_plot_RattleGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_rex/expected_outputs/rex_emt_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_rss/expected_outputs/rss_2d_test/confinement_plot_RandomGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_rss/expected_outputs/rss_2d_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_rss/expected_outputs/rss_bulk_emt_test/confinement_plot_RandomGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_rss/expected_outputs/rss_bulk_emt_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_rss/expected_outputs/rss_bulk_emt_test/db0_tracker.npz +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_rss/expected_outputs/rss_cluster_emt_test/confinement_plot_RandomGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_rss/expected_outputs/rss_cluster_emt_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_rss/expected_outputs/rss_cluster_emt_test/db0_tracker.npz +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_rss/expected_outputs/rss_surface_emt_test/confinement_plot_RandomGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_rss/expected_outputs/rss_surface_emt_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_rss/expected_outputs/rss_surface_emt_test/db0_tracker.npz +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_cluster_symmetry_test/confinement_plot_RattleGeneratorSym.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_cluster_symmetry_test/confinement_plot_SymmetryGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_cluster_symmetry_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_cluster_symmetry_test/db0_tracker.npz +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_slab_symmetry_test/confinement_plot_RattleGeneratorSym.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_slab_symmetry_test/confinement_plot_SymmetryGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_slab_symmetry_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_symmetry/expected_outputs/gofee_slab_symmetry_test/db0_tracker.npz +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_symmetry/expected_outputs/rss_cluster_symmetry_test/confinement_plot_SymmetryGenerator.png +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_symmetry/expected_outputs/rss_cluster_symmetry_test/db0.db +0 -0
- agox-3.10.0rc1/agox/test/run_tests/tests_symmetry/expected_outputs/rss_cluster_symmetry_test/db0_tracker.npz +0 -0
- agox-3.10.0rc1/agox.egg-info/SOURCES.txt +0 -343
- {agox-3.10.0rc1 → agox-3.10.1}/LICENSE.txt +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/README.md +0 -0
- {agox-3.10.0rc1/agox/test → agox-3.10.1/agox/cli}/__init__.py +0 -0
- {agox-3.10.0rc1/agox/test/model_tests → agox-3.10.1/agox/generators/complementary_energy}/__init__.py +0 -0
- /agox-3.10.0rc1/agox/test/run_tests/tests_rss/test.py → /agox-3.10.1/agox/generators/complementary_energy/attractor_methods/__init__.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/module.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/acquisitor_test/test_lcb.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/analysis_tests/conftest.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/analysis_tests/test_criterion.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/analysis_tests/test_descriptor_property.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/analysis_tests/test_energy_property.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/analysis_tests/test_property_plot.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/analysis_tests/test_restart_data.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/analysis_tests/test_search_collection.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/analysis_tests/test_search_data.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/analysis_tests/test_succces_plot.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/cli_tests/conftest.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/cli_tests/test_analysis_cli.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/cli_tests/test_convert_cli.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/cli_tests/test_graph_sort_cli.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/cli_tests/test_main_cli.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/cli_tests/test_plot_cli.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/conftest.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/database_tests/conftest.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/database_tests/database_test.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/database_tests/database_test_memory.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/database_tests/database_test_written.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/descriptor_tests/soap_test.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/descriptor_tests/spectral_graph_test.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/empty_cache.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/environment_tests/environment_test.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/evaluator_tests/check_callback_test.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/generator_tests/conftest.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/generator_tests/for_docs/nonseeded_script.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/generator_tests/for_docs/seeded_script.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/generator_tests/for_docs/test_doc_scripts.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/generator_tests/generator_test.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/generator_tests/generator_utils.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/generator_tests/test_cog.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/generator_tests/test_generators.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/generator_tests/test_permutation.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/generator_tests/test_random.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/generator_tests/test_rattle.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/generator_tests/test_replace.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/generator_tests/test_sampling.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/generator_tests/test_steepest_descent.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/generator_tests/test_symmetry.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/generator_tests/test_symmetry_2.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/generator_tests/test_symmetry_3.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/descriptors_api.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/gpr_api.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/load_api.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/model_utils.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/sgpr_api.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/sgpr_api_forces.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/test_api.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/test_calculator_model.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/test_composition_model.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/test_global_gpr.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/test_global_gpr_jax.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/test_global_sparse_gpr.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/test_global_sparse_gpr_force_training.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/test_load.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/test_local_gpr.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/test_local_gpr_force_training.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/test_ray_gpr.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/test_ray_sgpr_ensemble_local.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/test_ray_sgpr_global.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/test_ray_sgpr_local.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/model_tests/test_sgpr_sparse_schedule.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/modifying_examples/confinement_examples.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/postprocessor_tests/disjoint_filtering_test.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/postprocessor_tests/model_results_test.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/postprocessor_tests/postprocessor_test.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/postprocessor_tests/ray_relax.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/postprocessor_tests/surface_centering_test.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/postprocessor_tests/test_survive_empty.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/replica_exchange/conftest.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/replica_exchange/test_sample.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/replica_exchange/test_sampler.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/run_utils.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_bh/script_bh_bulk_chgnet.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_bh/script_bh_bulk_emt.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_bh/script_bh_bulk_gpaw.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_bh/script_bh_bulk_vasp.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_bh/script_bh_cluster_chgnet.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_bh/script_bh_cluster_emt.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_bh/script_bh_cluster_gpaw.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_bh/script_bh_cluster_orca.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_bh/script_bh_cluster_vasp.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_bh/script_bh_surface_chgnet.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_bh/script_bh_surface_emt.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_bh/script_bh_surface_gpaw.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_bh/script_bh_surface_vasp.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_bh/test_bh.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_block/script_block_bh.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_block/script_block_rss.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_block/test_block_bh.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_block/test_block_rss.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_ce/script_ce_default_gofee.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_ce/script_ce_gofee.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_ce/test_ce_default_gofee.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_ce/test_ce_gofee.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_ct/script_ct.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_ct/test_ct.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_ea/script_ea.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_ea/test_ea.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_gofee/script_gofee_bulk_chgnet.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_gofee/script_gofee_bulk_emt.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_gofee/script_gofee_bulk_gpaw.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_gofee/script_gofee_bulk_vasp.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_gofee/script_gofee_cluster_chgnet.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_gofee/script_gofee_cluster_emt.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_gofee/script_gofee_cluster_gpaw.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_gofee/script_gofee_cluster_orca.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_gofee/script_gofee_cluster_vasp.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_gofee/script_gofee_surface_chgnet.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_gofee/script_gofee_surface_emt.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_gofee/script_gofee_surface_gpaw.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_gofee/script_gofee_surface_vasp.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_gofee/test_gofee.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_graph_filt/script_graph_filtering_gofee.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_graph_filt/test_graph_filtering_gofee.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_lgpr_bh/script_lgpr_bh.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_lgpr_bh/test_lgpr_bh.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_md/script_md_bh.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_md/test_md_bh.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_pt/script_rex.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_pt/test_rex.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rex/script_rex_dft.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rex/script_rex_emt.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rex/test_replica.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rss/script_rss_2d.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rss/script_rss_bulk_chgnet.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rss/script_rss_bulk_emt.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rss/script_rss_bulk_gpaw.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rss/script_rss_bulk_vasp.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rss/script_rss_cluster_chgnet.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rss/script_rss_cluster_emt.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rss/script_rss_cluster_gpaw.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rss/script_rss_cluster_orca.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rss/script_rss_cluster_vasp.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rss/script_rss_surface_chgnet.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rss/script_rss_surface_emt.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rss/script_rss_surface_gpaw.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rss/script_rss_surface_vasp.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_rss/test_rss.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_schnet/script_schnet_bh.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_schnet/test_schnet_bh.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_symmetry/script_gofee_cluster_symmetry.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_symmetry/script_gofee_slab_symmetry.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_symmetry/script_rss_cluster_symmetry.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_symmetry/test_gofee_cluster_symmetry.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_symmetry/test_gofee_slab_symmetry.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/run_tests/tests_symmetry/test_rss_cluster_symmetry.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/sampler_tests/sampler_test.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/test_fixtures.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/test_utils.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/utils_tests/cache_test.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/utils_tests/plot_tests/colors_test.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/utils_tests/plot_tests/plot_atoms_test.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/utils_tests/plot_tests/plot_cell_test.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/utils_tests/plot_tests/utils_test.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/utils_tests/test_feature_dist_filter.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/utils_tests/test_filters.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox/test/utils_tests/test_sparsifiers.py +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox.egg-info/dependency_links.txt +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox.egg-info/entry_points.txt +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox.egg-info/requires.txt +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/agox.egg-info/top_level.txt +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/setup.cfg +0 -0
- {agox-3.10.0rc1 → agox-3.10.1}/setup.py +0 -0
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agox
|
|
3
|
-
Version: 3.10.
|
|
3
|
+
Version: 3.10.1
|
|
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>
|
|
7
|
-
License:
|
|
7
|
+
License-Expression: GPL-3.0-only
|
|
8
8
|
Project-URL: homepage, https://agox.gitlab.io/agox/
|
|
9
9
|
Project-URL: Repository, https://gitlab.com/agox/agox
|
|
10
10
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
-
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
12
11
|
Classifier: Intended Audience :: Science/Research
|
|
13
12
|
Classifier: Operating System :: OS Independent
|
|
14
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
from abc import ABC, abstractmethod
|
|
2
|
+
from typing import Callable
|
|
3
|
+
|
|
4
|
+
import numpy as np
|
|
5
|
+
|
|
6
|
+
from agox.observer import Observer
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class AcquisitorBaseClass(ABC, Observer):
|
|
10
|
+
"""
|
|
11
|
+
Base-class for acquisitors.
|
|
12
|
+
|
|
13
|
+
Parameters
|
|
14
|
+
-----------
|
|
15
|
+
order : int
|
|
16
|
+
Order of the observer.
|
|
17
|
+
gets : dict
|
|
18
|
+
Dictionary of gets, passed to the agox.observer.Observer.
|
|
19
|
+
sets : dict
|
|
20
|
+
Dictionary of sets, passed to the agox.observer.Observer.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
def __init__(
|
|
24
|
+
self,
|
|
25
|
+
order: int | float = 4,
|
|
26
|
+
gets: dict[str, str] | None = None,
|
|
27
|
+
sets: dict[str, str] | None = None,
|
|
28
|
+
surname: str | None = None,
|
|
29
|
+
skip_function: Callable = None,
|
|
30
|
+
**kwargs,
|
|
31
|
+
) -> None:
|
|
32
|
+
if gets is None:
|
|
33
|
+
gets = {"get_key": "candidates"}
|
|
34
|
+
if sets is None:
|
|
35
|
+
sets = {"set_key": "prioritized_candidates"}
|
|
36
|
+
|
|
37
|
+
Observer.__init__(self, gets=gets, sets=sets, order=order, surname=surname, **kwargs)
|
|
38
|
+
self.skip_function = skip_function
|
|
39
|
+
|
|
40
|
+
self.add_observer_method(
|
|
41
|
+
self.prioritize_candidates,
|
|
42
|
+
sets=self.sets[0],
|
|
43
|
+
gets=self.gets[0],
|
|
44
|
+
order=self.order[0],
|
|
45
|
+
handler_identifier="AGOX",
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
def _skip_function(self, candidate_list):
|
|
49
|
+
"""
|
|
50
|
+
Default function defining probablility acquisitor returns nothing.
|
|
51
|
+
|
|
52
|
+
"""
|
|
53
|
+
if self.skip_function is not None:
|
|
54
|
+
return self.skip_function(self, candidate_list)
|
|
55
|
+
else:
|
|
56
|
+
return False
|
|
57
|
+
|
|
58
|
+
@abstractmethod
|
|
59
|
+
def calculate_acquisition_function(self, candidates): # pragma: no cover
|
|
60
|
+
"""
|
|
61
|
+
Implements the acquisition function.
|
|
62
|
+
|
|
63
|
+
Parameters
|
|
64
|
+
-----------
|
|
65
|
+
candidates : list
|
|
66
|
+
List of candidates that the acquisition function will be evaluated for.
|
|
67
|
+
|
|
68
|
+
Returns
|
|
69
|
+
--------
|
|
70
|
+
np.array
|
|
71
|
+
Numpy array of acquisition function values.
|
|
72
|
+
|
|
73
|
+
"""
|
|
74
|
+
return acquisition_values
|
|
75
|
+
|
|
76
|
+
@Observer.observer_method
|
|
77
|
+
def prioritize_candidates(self, state):
|
|
78
|
+
"""
|
|
79
|
+
Method that is attached to the AGOX iteration loop as an observer - not intended for use outside of that loop.
|
|
80
|
+
|
|
81
|
+
The method does the following:
|
|
82
|
+
1. Gets candidates from the cache using 'get_key'.
|
|
83
|
+
2. Removes 'None' from the candidate list.
|
|
84
|
+
3. Calculates and sorts according to acquisition function.
|
|
85
|
+
4. Adds the sorted candidates to cache with 'set_key'
|
|
86
|
+
5. Prints information.
|
|
87
|
+
|
|
88
|
+
Parameters
|
|
89
|
+
-----------
|
|
90
|
+
state: agox.main.State
|
|
91
|
+
State object that contains the iteration data.
|
|
92
|
+
"""
|
|
93
|
+
|
|
94
|
+
# Get data from the iteration data dict.
|
|
95
|
+
candidate_list = state.get_from_cache(self, self.get_key)
|
|
96
|
+
candidate_list = list(filter(None, candidate_list))
|
|
97
|
+
|
|
98
|
+
if len(candidate_list) > 0:
|
|
99
|
+
if self._skip_function(candidate_list):
|
|
100
|
+
state.add_to_cache(self, self.set_key, [], mode="a")
|
|
101
|
+
return
|
|
102
|
+
|
|
103
|
+
# Calculate acquisition function values and sort:
|
|
104
|
+
if self.do_check():
|
|
105
|
+
candidate_list, acquisition_values = self.sort_according_to_acquisition_function(candidate_list)
|
|
106
|
+
else:
|
|
107
|
+
acquisition_values = np.zeros(len(candidate_list))
|
|
108
|
+
# Add the prioritized candidates to the iteration data in append mode!
|
|
109
|
+
state.add_to_cache(self, self.set_key, candidate_list, mode="a")
|
|
110
|
+
|
|
111
|
+
self.print_information(candidate_list, acquisition_values)
|
|
112
|
+
|
|
113
|
+
########################################################################################
|
|
114
|
+
# Default methods
|
|
115
|
+
########################################################################################
|
|
116
|
+
|
|
117
|
+
def sort_according_to_acquisition_function(self, candidates):
|
|
118
|
+
"""
|
|
119
|
+
Calculates acquisiton-function based on the implemeneted version calculate_acquisition_function.
|
|
120
|
+
|
|
121
|
+
Note: Sorted so that the candidate with the LOWEST acquisition function value is first.
|
|
122
|
+
|
|
123
|
+
Parameters
|
|
124
|
+
------------
|
|
125
|
+
candidates: list
|
|
126
|
+
List of candidate objects.
|
|
127
|
+
|
|
128
|
+
Returns:
|
|
129
|
+
-----------
|
|
130
|
+
list
|
|
131
|
+
List of candidates sorted according to increasing acquisition value (lowest first).
|
|
132
|
+
np.array
|
|
133
|
+
Array of acquisition function values in the same order as the sorted list, i.e. increasing.
|
|
134
|
+
|
|
135
|
+
"""
|
|
136
|
+
acquisition_values = self.calculate_acquisition_function(candidates)
|
|
137
|
+
sort_idx = np.argsort(acquisition_values)
|
|
138
|
+
sorted_candidates = [candidates[i] for i in sort_idx]
|
|
139
|
+
acquisition_values = acquisition_values[sort_idx]
|
|
140
|
+
[
|
|
141
|
+
candidate.add_meta_information("acquisition_value", acquisition_value)
|
|
142
|
+
for candidate, acquisition_value in zip(sorted_candidates, acquisition_values)
|
|
143
|
+
]
|
|
144
|
+
return sorted_candidates, acquisition_values
|
|
145
|
+
|
|
146
|
+
def get_random_candidate(self):
|
|
147
|
+
DeprecationWarning("Will be removed in the future. Please use collector.get_random_candidate")
|
|
148
|
+
return self.collector.get_random_candidate()
|
|
149
|
+
|
|
150
|
+
def print_information(self, candidates, acquisition_values):
|
|
151
|
+
"""
|
|
152
|
+
Printing function for analysis/debugging/sanity checking.
|
|
153
|
+
|
|
154
|
+
Parameters
|
|
155
|
+
-----------
|
|
156
|
+
candidates: list
|
|
157
|
+
List of candidate objects.
|
|
158
|
+
acquisition_values: np.array
|
|
159
|
+
Acquisition function value for each candidate in 'candidates'.
|
|
160
|
+
"""
|
|
161
|
+
|
|
162
|
+
def get_acquisition_calculator(self):
|
|
163
|
+
"""
|
|
164
|
+
Creates a calculator for the acquisiton function that can be used for e.g. relaxation.
|
|
165
|
+
|
|
166
|
+
Returns
|
|
167
|
+
--------
|
|
168
|
+
ASE Calculator
|
|
169
|
+
ASE calculator where the energy is the acquisition function and forces are the forces of the acquisition forces.
|
|
170
|
+
"""
|
|
171
|
+
raise NotImplementedError("'get_acqusition_calculator' is not implemented for this acquisitor")
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
from ase.calculators.calculator import Calculator
|
|
175
|
+
|
|
176
|
+
from agox.module import Module
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
class AcquisitonCalculatorBaseClass(Calculator, Module):
|
|
180
|
+
name = "AcqusitionCalculator"
|
|
181
|
+
|
|
182
|
+
"""
|
|
183
|
+
Base-class for calculators that are used for acquisition functions.
|
|
184
|
+
|
|
185
|
+
Parameters
|
|
186
|
+
-----------
|
|
187
|
+
model: agox.models.ABC_model.ModelBaseClass
|
|
188
|
+
A model that is used for the acquisition function.
|
|
189
|
+
kwargs: dict
|
|
190
|
+
Dictionary of keyword arguments passed to the Calculator-class.
|
|
191
|
+
|
|
192
|
+
"""
|
|
193
|
+
|
|
194
|
+
def __init__(self, model, **kwargs):
|
|
195
|
+
Calculator.__init__(self, **kwargs)
|
|
196
|
+
Module.__init__(self)
|
|
197
|
+
self.model = model
|
|
198
|
+
|
|
199
|
+
def get_model_parameters(self):
|
|
200
|
+
parameters = self.model.get_model_parameters()
|
|
201
|
+
return parameters
|
|
202
|
+
|
|
203
|
+
def set_model_parameters(self, parameters):
|
|
204
|
+
self.model.set_model_parameters(parameters)
|
|
205
|
+
|
|
206
|
+
def get_iteration_number(self):
|
|
207
|
+
if hasattr(self, "get_iteration_counter"):
|
|
208
|
+
return self.get_iteration_counter()
|
|
209
|
+
else:
|
|
210
|
+
return self.iteration
|
|
211
|
+
|
|
212
|
+
@property
|
|
213
|
+
def ready_state(self):
|
|
214
|
+
return self.model.ready_state
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
from scipy.stats import norm
|
|
3
|
+
|
|
4
|
+
from agox.acquisitors import AcquisitorBaseClass
|
|
5
|
+
from agox.observer import Observer
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ExpectedImprovementAcquisitor(AcquisitorBaseClass):
|
|
9
|
+
name = "EIAcquisitor"
|
|
10
|
+
|
|
11
|
+
def __init__(self, model, database, xi=0.01, **kwargs):
|
|
12
|
+
super().__init__(maximize=True, **kwargs)
|
|
13
|
+
self.model = model
|
|
14
|
+
self.xi = xi
|
|
15
|
+
self.lowest_energy = 10e10
|
|
16
|
+
self.add_observer_method(self.update, sets={}, gets={}, order=0, handler_identifier="database")
|
|
17
|
+
self.attach(database)
|
|
18
|
+
|
|
19
|
+
def calculate_acquisition_function(self, candidates):
|
|
20
|
+
fitness = np.zeros(len(candidates))
|
|
21
|
+
for i, candidate in enumerate(candidates):
|
|
22
|
+
E, sigma = self.model.predict_energy_and_uncertainty(candidate)
|
|
23
|
+
fitness[i] = self.acquisition_function(E, sigma)
|
|
24
|
+
candidate.add_meta_information("model_energy", E)
|
|
25
|
+
candidate.add_meta_information("uncertainty", sigma)
|
|
26
|
+
return fitness
|
|
27
|
+
|
|
28
|
+
def acquisition_function(self, E, sigma):
|
|
29
|
+
mu = E
|
|
30
|
+
mu_opt = self.lowest_energy
|
|
31
|
+
with np.errstate(divide="warn"):
|
|
32
|
+
imp = mu_opt - mu - self.xi
|
|
33
|
+
Z = imp / sigma
|
|
34
|
+
ei = imp * norm.cdf(Z) + sigma * norm.pdf(Z)
|
|
35
|
+
return ei
|
|
36
|
+
|
|
37
|
+
def print_information(self, candidates, acquisition_values):
|
|
38
|
+
if self.do_check():
|
|
39
|
+
for i, candidate in enumerate(candidates):
|
|
40
|
+
fitness = acquisition_values[i]
|
|
41
|
+
E = candidate.get_meta_information("model_energy")
|
|
42
|
+
sigma = candidate.get_meta_information("uncertainty")
|
|
43
|
+
self.writer(f"Candidate {i}: E = {E:8.3f}, s = {sigma:8.3f}, EI = {fitness:8.6f}")
|
|
44
|
+
|
|
45
|
+
@Observer.observer_method
|
|
46
|
+
def update(self, database, state):
|
|
47
|
+
self.lowest_energy = database.get_best_energy()
|
|
48
|
+
self.writer("Lowest energy: {}".format(self.lowest_energy))
|
|
49
|
+
|
|
50
|
+
def do_check(self, **kwargs):
|
|
51
|
+
return self.model.ready_state
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
from ase.calculators.calculator import all_changes
|
|
3
|
+
|
|
4
|
+
from agox.acquisitors.ABC_acquisitor import AcquisitonCalculatorBaseClass, AcquisitorBaseClass
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class LowerConfidenceBoundAcquisitor(AcquisitorBaseClass):
|
|
8
|
+
"""
|
|
9
|
+
Lower Confidence Bound Acquisitor, using predictions and uncertainties from a model.
|
|
10
|
+
|
|
11
|
+
The acquisition function is given by
|
|
12
|
+
|
|
13
|
+
.. math::
|
|
14
|
+
|
|
15
|
+
F(x) = E(x) - \kappa \sigma(x)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
Parameters
|
|
19
|
+
-----------
|
|
20
|
+
|
|
21
|
+
model: agox.models.ABC_model.ModelBaseClass
|
|
22
|
+
Model that is used for the acquisition function.
|
|
23
|
+
kappa: float
|
|
24
|
+
Constant that is multiplied with the uncertainty.
|
|
25
|
+
kwargs: dict
|
|
26
|
+
Dictionary of keyword arguments passed to the AcquisitorBaseClass.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
name = "LCBAcquisitor"
|
|
30
|
+
|
|
31
|
+
def __init__(self, model, kappa=1, **kwargs):
|
|
32
|
+
super().__init__(**kwargs)
|
|
33
|
+
self.kappa = kappa
|
|
34
|
+
self.model = model
|
|
35
|
+
|
|
36
|
+
def calculate_acquisition_function(self, candidates):
|
|
37
|
+
fitness = np.zeros(len(candidates))
|
|
38
|
+
|
|
39
|
+
# Attach calculator and get model_energy
|
|
40
|
+
for i, candidate in enumerate(candidates):
|
|
41
|
+
E, sigma = self.model.predict_energy_and_uncertainty(candidate)
|
|
42
|
+
fitness[i] = self.acquisition_function(E, sigma)
|
|
43
|
+
|
|
44
|
+
# For printing:
|
|
45
|
+
candidate.add_meta_information("model_energy", E)
|
|
46
|
+
candidate.add_meta_information("uncertainty", sigma)
|
|
47
|
+
|
|
48
|
+
return fitness
|
|
49
|
+
|
|
50
|
+
def print_information(self, candidates, acquisition_values):
|
|
51
|
+
|
|
52
|
+
format_float = lambda f: f"{f:.3f}"
|
|
53
|
+
|
|
54
|
+
columns = ['Candidate', 'Energy', 'Uncertainty', 'Fitness', 'Generator']
|
|
55
|
+
rows = []
|
|
56
|
+
if self.model.ready_state:
|
|
57
|
+
for i, candidate in enumerate(candidates):
|
|
58
|
+
fitness = format_float(acquisition_values[i])
|
|
59
|
+
Emodel = format_float(candidate.get_meta_information("model_energy"))
|
|
60
|
+
sigma = format_float(candidate.get_meta_information("uncertainty"))
|
|
61
|
+
generator = candidate.get_meta_information("generator")
|
|
62
|
+
rows.append([str(i), Emodel, sigma, fitness, generator])
|
|
63
|
+
|
|
64
|
+
self.writer.write_table(columns, rows, show_lines=False, show_edge=False)
|
|
65
|
+
|
|
66
|
+
def get_acquisition_calculator(self):
|
|
67
|
+
return LowerConfidenceBoundCalculator(self.model, self.acquisition_function, self.acquisition_force)
|
|
68
|
+
|
|
69
|
+
def acquisition_function(self, E, sigma):
|
|
70
|
+
return E - self.kappa * sigma
|
|
71
|
+
|
|
72
|
+
def acquisition_force(self, E, F, sigma, sigma_force):
|
|
73
|
+
return F - self.kappa * sigma_force
|
|
74
|
+
|
|
75
|
+
def do_check(self, **kwargs):
|
|
76
|
+
return self.model.ready_state
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
class LowerConfidenceBoundCalculator(AcquisitonCalculatorBaseClass):
|
|
80
|
+
implemented_properties = ["energy", "forces"]
|
|
81
|
+
|
|
82
|
+
def __init__(self, model, acquisition_function, acquisition_force, **kwargs):
|
|
83
|
+
super().__init__(model, **kwargs)
|
|
84
|
+
self.acquisition_function = acquisition_function
|
|
85
|
+
self.acquisition_force = acquisition_force
|
|
86
|
+
|
|
87
|
+
def calculate(self, atoms=None, properties=["energy"], system_changes=all_changes):
|
|
88
|
+
super().calculate(atoms, properties, system_changes)
|
|
89
|
+
|
|
90
|
+
derivatives = "forces" in properties
|
|
91
|
+
model_data = self.model.converter(atoms, derivatives=derivatives)
|
|
92
|
+
|
|
93
|
+
E = self.model.predict_energy(atoms, **model_data)
|
|
94
|
+
sigma = self.model.predict_uncertainty(atoms, **model_data)
|
|
95
|
+
self.results["energy"] = self.acquisition_function(E, sigma)
|
|
96
|
+
|
|
97
|
+
if derivatives:
|
|
98
|
+
F = self.model.predict_forces(atoms, **model_data)
|
|
99
|
+
sigma_force = self.model.predict_uncertainty_forces(atoms, **model_data)
|
|
100
|
+
|
|
101
|
+
self.results["forces"] = self.acquisition_force(E, F, sigma, sigma_force)
|
|
@@ -0,0 +1,130 @@
|
|
|
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.main import State
|
|
12
|
+
from agox.models.ABC_model import ModelBaseClass
|
|
13
|
+
from agox.models.descriptors import SpectralGraphDescriptor, Voronoi
|
|
14
|
+
from agox.models.descriptors.ABC_descriptor import DescriptorBaseClass
|
|
15
|
+
from agox.observer import Observer
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class LCBPenaltyAcquisitor(LowerConfidenceBoundAcquisitor):
|
|
19
|
+
"""Lower confidence bound acquisitor with a penalty term for repeated
|
|
20
|
+
descriptor values.
|
|
21
|
+
|
|
22
|
+
The acquisition function for selecting candidates is given by
|
|
23
|
+
|
|
24
|
+
.. math::
|
|
25
|
+
|
|
26
|
+
F(x) = E(x) - \kappa \sigma(x) + \alpha n_D(x),
|
|
27
|
+
|
|
28
|
+
where :math:`n_D` is the number of times the descriptor value already
|
|
29
|
+
exists for the candidates in the database, and :math:`\alpha` is the
|
|
30
|
+
penalty scale value.
|
|
31
|
+
|
|
32
|
+
The acquisition function for relaxing candidates is equivalent to that of
|
|
33
|
+
regular LCB, as the :math:`\alpha n_D(x)` term is discontinuous.
|
|
34
|
+
|
|
35
|
+
Parameters
|
|
36
|
+
----------
|
|
37
|
+
model : ModelBaseClass
|
|
38
|
+
Model to obtain energy and uncertainty predictions from.
|
|
39
|
+
descriptor : DescriptorBaseClass
|
|
40
|
+
Descriptor to evaluate descriptor values from.
|
|
41
|
+
penalty_scale : float, optional
|
|
42
|
+
Scale value for penalty (in eV), by default 1.0
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
def __init__(self, model: ModelBaseClass, descriptor: DescriptorBaseClass, penalty_scale: float = 1.0, **kwargs):
|
|
46
|
+
super().__init__(model, **kwargs)
|
|
47
|
+
|
|
48
|
+
if not isinstance(descriptor, (SpectralGraphDescriptor, Voronoi)):
|
|
49
|
+
raise ValueError("Descriptor can currently only be graph-type descriptor")
|
|
50
|
+
|
|
51
|
+
self.descriptor = descriptor
|
|
52
|
+
self.penalty_scale = penalty_scale
|
|
53
|
+
|
|
54
|
+
self.descriptor_value_counts = Counter()
|
|
55
|
+
|
|
56
|
+
self.add_observer_method(
|
|
57
|
+
self.update_descriptor_values, gets={}, sets={}, order=self.order[0], handler_identifier="database"
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
def calculate_acquisition_function(self, candidates: List[StandardCandidate]) -> NDArray:
|
|
61
|
+
fitness = np.zeros(len(candidates))
|
|
62
|
+
|
|
63
|
+
for i, candidate in enumerate(candidates):
|
|
64
|
+
E, sigma = self.model.predict_energy_and_uncertainty(candidate)
|
|
65
|
+
|
|
66
|
+
descriptor_value = self._get_descriptor_value(candidate)
|
|
67
|
+
count = self.descriptor_value_counts[descriptor_value]
|
|
68
|
+
penalty = count * self.penalty_scale
|
|
69
|
+
|
|
70
|
+
fitness[i] = self.acquisition_function(E, sigma) + penalty
|
|
71
|
+
|
|
72
|
+
candidate.add_meta_information("model_energy", E)
|
|
73
|
+
candidate.add_meta_information("uncertainty", sigma)
|
|
74
|
+
candidate.add_meta_information("penalty", penalty)
|
|
75
|
+
|
|
76
|
+
return fitness
|
|
77
|
+
|
|
78
|
+
def print_information(self, candidates: List[StandardCandidate], acquisition_values: List[float]) -> None:
|
|
79
|
+
if self.model.ready_state:
|
|
80
|
+
for i, candidate in enumerate(candidates):
|
|
81
|
+
fitness = acquisition_values[i]
|
|
82
|
+
Emodel = candidate.get_meta_information("model_energy")
|
|
83
|
+
sigma = candidate.get_meta_information("uncertainty")
|
|
84
|
+
penalty = candidate.get_meta_information("penalty")
|
|
85
|
+
self.writer(
|
|
86
|
+
"Candidate: E={:8.3f}, s={:8.3f}, p={:7.2f}, F={:8.3f}".format(Emodel, sigma, penalty, fitness)
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
def attach_to_database(self, database: DatabaseBaseClass) -> None:
|
|
90
|
+
if not isinstance(database, DatabaseBaseClass):
|
|
91
|
+
raise TypeError(f"{database} is not a DatabaseBaseClass object")
|
|
92
|
+
|
|
93
|
+
print(f"{self.name}: Attaching to database: {database}")
|
|
94
|
+
self.attach(database)
|
|
95
|
+
|
|
96
|
+
@Observer.observer_method
|
|
97
|
+
def update_descriptor_values(self, database: DatabaseBaseClass, state: State) -> None:
|
|
98
|
+
"""Update the internal counter of descriptor values present in the
|
|
99
|
+
database.
|
|
100
|
+
"""
|
|
101
|
+
candidates = database.get_all_candidates()
|
|
102
|
+
new_candidates = candidates[sum(self.descriptor_value_counts.values()):]
|
|
103
|
+
|
|
104
|
+
for candidate in new_candidates:
|
|
105
|
+
descriptor_value = self._get_descriptor_value(candidate)
|
|
106
|
+
self.descriptor_value_counts[descriptor_value] += 1
|
|
107
|
+
|
|
108
|
+
s = "s" if len(new_candidates) != 1 else ""
|
|
109
|
+
self.writer(f"Added {len(new_candidates)} structure{s} to the descriptor list")
|
|
110
|
+
|
|
111
|
+
def _get_descriptor_value(self, candidate: StandardCandidate) -> Hashable:
|
|
112
|
+
"""Obtain a hashable descriptor value to store in the internal counter.
|
|
113
|
+
|
|
114
|
+
Parameters
|
|
115
|
+
----------
|
|
116
|
+
candidate : StandardCandidate
|
|
117
|
+
Candidate to evaluate the descriptor for.
|
|
118
|
+
|
|
119
|
+
Returns
|
|
120
|
+
-------
|
|
121
|
+
Hashable
|
|
122
|
+
Hashable descriptor value.
|
|
123
|
+
"""
|
|
124
|
+
descriptor_value = self.descriptor.get_features(candidate)
|
|
125
|
+
|
|
126
|
+
# convert to hashable object
|
|
127
|
+
if isinstance(descriptor_value, np.ndarray):
|
|
128
|
+
descriptor_value = descriptor_value.data.tobytes()
|
|
129
|
+
|
|
130
|
+
return descriptor_value
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
from agox.acquisitors.LCB import LowerConfidenceBoundAcquisitor
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class PowerLowerConfidenceBoundAcquisitor(LowerConfidenceBoundAcquisitor):
|
|
6
|
+
name = "PowerLowerConfindenceBoundAcquisitor"
|
|
7
|
+
|
|
8
|
+
def __init__(self, power=0, *args, **kwargs):
|
|
9
|
+
super().__init__(*args, **kwargs)
|
|
10
|
+
self.power = power
|
|
11
|
+
|
|
12
|
+
def acquisition_function(self, E, sigma):
|
|
13
|
+
return E - self.kappa * sigma**self.power
|
|
14
|
+
|
|
15
|
+
def acquisition_force(self, E, F, sigma, sigma_force):
|
|
16
|
+
return F - self.kappa * self.power * sigma ** (self.power - 1) * sigma_force
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
r"""
|
|
2
|
+
Acquisitors are used to select the next candidate to evaluate among a number of
|
|
3
|
+
candidates, usually by sorting according to some metric.
|
|
4
|
+
The concept of acquisitors comes from Bayesian search algorithms.
|
|
5
|
+
|
|
6
|
+
A common acquisitor is the Lower Confidence Bound (LCB) acquisitor, which
|
|
7
|
+
selects according to the expression
|
|
8
|
+
|
|
9
|
+
.. math::
|
|
10
|
+
LCB(x) = E(x) - \kappa \sigma(x).
|
|
11
|
+
|
|
12
|
+
Where E(x) is a prediction of the objective function at x, and :math:`\sigma(x)`
|
|
13
|
+
is the uncertainty of the prediction. :math:`\kappa` is a parameter that
|
|
14
|
+
controls the trade-off between exploration and exploitation.
|
|
15
|
+
This lets an algorithm choose which candidates to evaluate, but
|
|
16
|
+
does require the generation of multiple candidates to choose from.
|
|
17
|
+
"""
|
|
18
|
+
# ruff: noqa: I001, E402
|
|
19
|
+
from typing import TypeAlias
|
|
20
|
+
from .ABC_acquisitor import AcquisitonCalculatorBaseClass, AcquisitorBaseClass
|
|
21
|
+
Acquisitor: TypeAlias = AcquisitorBaseClass
|
|
22
|
+
|
|
23
|
+
from .LCB import LowerConfidenceBoundAcquisitor
|
|
24
|
+
from .LCB_penalty import LCBPenaltyAcquisitor
|
|
25
|
+
from .LCB_power import PowerLowerConfidenceBoundAcquisitor
|
|
26
|
+
from .meta_acquisitor import MetaInformationAcquisitor
|
|
27
|
+
from .replica_exchange.default import ReplicaExchangeAcquisitor
|
|
28
|
+
|
|
29
|
+
__all__ = [
|
|
30
|
+
"AcquisitorBaseClass",
|
|
31
|
+
"Acquisitor",
|
|
32
|
+
"LowerConfidenceBoundAcquisitor",
|
|
33
|
+
"LCBPenaltyAcquisitor",
|
|
34
|
+
"PowerLowerConfidenceBoundAcquisitor",
|
|
35
|
+
"AcquisitonCalculatorBaseClass",
|
|
36
|
+
"MetaInformationAcquisitor",
|
|
37
|
+
"ReplicaExchangeAcquisitor",
|
|
38
|
+
]
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
|
|
3
|
+
from agox.acquisitors.ABC_acquisitor import AcquisitorBaseClass
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class MetaInformationAcquisitor(AcquisitorBaseClass):
|
|
7
|
+
name = "MetaInformationAcquisitor"
|
|
8
|
+
|
|
9
|
+
def __init__(self, meta_key, mode="min", **kwargs):
|
|
10
|
+
super().__init__(**kwargs)
|
|
11
|
+
self.meta_key = meta_key
|
|
12
|
+
self.mode = mode
|
|
13
|
+
|
|
14
|
+
assert mode in ["max", "min"] # Either maximize or minimize according to the meta key.
|
|
15
|
+
|
|
16
|
+
def calculate_acquisition_function(self, candidates):
|
|
17
|
+
sign = 1 if self.mode == "min" else -1
|
|
18
|
+
fitness = np.zeros(len(candidates))
|
|
19
|
+
|
|
20
|
+
for i, candidate in enumerate(candidates):
|
|
21
|
+
fitness[i] = sign * candidate.get_meta_information(self.meta_key)
|
|
22
|
+
|
|
23
|
+
return fitness
|