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