Skip to main content

aiida-eon

AiiDA 2 plugin for eOn. The scheduled executable is eonclient. The Python server (job = akmc) is not launched from this plugin; use WorkflowFactory("eon.akmc") for a provenance-tracked process-search campaign, or run the server yourself.

This replaces the 2021 cookiecutter stubs (DiffCalculation wrapping diff). The reserved registry name aiida-eonclient stays unused so the entry-point prefix stays eon.

File I/O is not reimplemented here. config.ini is rgpycrumbs.eon.helpers.write_eon_config / eon_schema.config.write_ini. results.dat is eon_schema.jobs.results_dat_to_dict. Saddle codes are chemparseplot.parse.eon.saddle_search.EONSaddleStatus. CON to ASE is chemparseplot.parse.eon.con_io.

Install

pip install aiida-eon
verdi plugin list aiida.calculations eon
verdi plugin list aiida.workflows
verdi devel validate-plugins

Register the binary on a laptop:

verdi code create core.code.installed \
  --label eonclient \
  --computer localhost \
  --filepath-executable "$(command -v eonclient)" \
  --default-calc-job-plugin eon

On Elja (login-node AiiDA + Slurm) see docs/elja.md.

Usage

from aiida import orm
from aiida.engine import run
from aiida.plugins import CalculationFactory, DataFactory, WorkflowFactory

ConData = DataFactory("eon.con")
EonCalculation = CalculationFactory("eon")
result = run(
    EonCalculation,
    code=orm.load_code("eonclient@localhost"),
    parameters=orm.Dict(
        dict={
            "Main": {"job": "minimization"},
            "Potential": {"potential": "lj"},
            "Optimizer": {"opt_method": "lbfgs", "converged_force": 0.01},
        }
    ),
    structure=ConData.from_path("pos.con"),
)
print(result["results"].get_dict()["potential_energy"])
print(result["scalars"].get_dict()["force_calls"])

Workchains pin Main.job and expose the CalcJob ports under calc:

Minimize = WorkflowFactory("eon.minimize")
Neb = WorkflowFactory("eon.neb")
Saddle = WorkflowFactory("eon.saddle")
Process = WorkflowFactory("eon.process_search")
Prefactor = WorkflowFactory("eon.prefactor")
Akmc = WorkflowFactory("eon.akmc")

Job surface

parameters["Main"]["job"] must be a client job. Aliases: neb -> nudged_elastic_band, finite_differences -> finite_difference, molecular_dynamics -> dynamics.

Token Inputs Outputs
minimization pos.con min.con
point pos.con Energy / Max_Force
saddle_search pos.con, optional displacement.con / direction.dat saddle.con, mode.dat
process_search pos.con, optional displacement reactant.con, saddle.con, product.con
nudged_elastic_band reactant.con + product.con neb.con, sp.con, neb.dat
prefactor reactant + saddle + product freq.dat
hessian pos.con hessian.dat
finite_difference pos.con curvature table
dynamics pos.con final.con
monte_carlo pos.con energy
basin_hopping pos.con min.con, bh.dat
global_optimization pos.con monitoring.dat
parallel_replica / tad / safe_hyperdynamics pos.con reactant / product
replica_exchange pos.con pos_out.con
gp_surrogate reactant + product neb.con (needs WITH_GP_SURROGATE)
oh_tst pos.con + product.con oh_tst_progression.dat
structure_comparison matter1.con (stub)

Not CalcJobs:

  • akmc / escape_rate / server PR wrappers: WorkChain or the Python server
  • eonclient --serve-*: long-lived potential RPC
  • forceBatch: engine path used by NEB and dimer (metatomic implements a true batch)
  • geometric NEB: there is no such job. Use nudged_elastic_band with [Nudged Elastic Band] elastic_band or a geometric path init (linear, idpp, idpp_collective, sidpp, sidpp_zbl, file)

Potentials are INI sections, not jobs: lj, emt, vasp, lammps, metatomic, xtb, rgpot ([RgpotPot] backends nwchemc, cpmdc, metatomic, xtb). Copy potfiles through the potfiles FolderData port.

verdi data eon jobs prints the catalog. Extra workdir files go in extra_files.

Registry

Package name aiida-eon, import aiida_eon, prefix eon. The aiida-registry key already exists; after a PyPI upload the listing needs pip_url: aiida-eon and a plugin_info URL. See docs/registry.md.

Tests

pip install -e ".[tests]"
pytest

tests/test_io.py and tests/test_jobs.py do not need a profile. Entry-point tests need aiida-core.

License

MIT. Contact: rog32@hi.is

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiida_eon-0.3.0.tar.gz (23.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aiida_eon-0.3.0-py3-none-any.whl (25.1 kB view details)

Uploaded Python 3

File details

Details for the file aiida_eon-0.3.0.tar.gz.

File metadata

  • Download URL: aiida_eon-0.3.0.tar.gz
  • Upload date:
  • Size: 23.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for aiida_eon-0.3.0.tar.gz
Algorithm Hash digest
SHA256 e1a34f48ca9975f768a9b6f904807b9eda55bf6066c2d56804e6cceeac619741
MD5 0bdd9f377b71eb940ed574965a732785
BLAKE2b-256 a2ca0723fa1b26bdb2d911d225770a18b4d1504a2e705a961b5b9e98bc322fce

See more details on using hashes here.

File details

Details for the file aiida_eon-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: aiida_eon-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 25.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for aiida_eon-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 256896ea486c398c693637f4f9467f93bb2a4dc59c4e78e72b386353819e3d68
MD5 a168752a596ca3c1cd9ef8c6b3d33902
BLAKE2b-256 547d36a7b5b5c7124e60aa866c16992c2b26d8593bd9372cace385b81ff28b36

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page