dpdata-minimizer
SkillAI & modelsMinimize geometries with dpdata minimizer plugins via System.minimize(), including how minimizers relate to drivers (ASEMinimizer needs a dpdata Driver) and how to list supported minimizers (ase/sqm). Use when doing geometry optimization/minimization through dpdata Python API.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the dpdata-minimizer skill
What this skill tells your AI
The instructions your AI receives, as published by jinzhezenggroup/computational-chemistry-agent-skills in tools/dpdata-minimizer/SKILL.md and read by ahel’s review.
Use dpdata “minimizer plugins” to optimize/minimize geometry and return a dpdata.LabeledSystem.
Key idea
- A Minimizer performs geometry optimization (updates coordinates) and returns labeled results.
- dpdata exposes this as:
System.minimize(*args, minimizer: str|Minimizer, **kwargs) -> LabeledSystem
List supported minimizer keys (runtime)
from dpdata.driver import Minimizer
print(sorted(Minimizer.get_minimizers().keys()))
In the current dpdata repo, minimizer keys include:
asesqm
Relationship to drivers (important)
Some minimizers require a dpdata Driver object.
Example: ASEMinimizer takes a dpdata Driver in its constructor:
minimizer="ase"requiresdriver=<dpdata Driver>(e.g. the ASE driver wrapping an ASE calculator).
So you generally do:
- Construct a driver
- Construct a minimizer (or let dpdata do it by passing the right kwargs)
- Call
System.minimize(...)
Runnable example: ASE minimizer with an ASE calculator
Use uv inline script metadata so the example runs reproducibly with uv run.
# /// script
# requires-python = ">=3.12"
# dependencies = [
# "dpdata",
# "numpy",
# "ase",
# ]
# ///
import numpy as np
from ase.calculators.emt import EMT
from dpdata.driver import Driver
from dpdata.system import System
open("tmp.xyz", "w").write("""2\n\nH 0 0 0\nH 0 0 0.74\n""")
sys = System("tmp.xyz", fmt="xyz")
# Build a dpdata driver that can provide energies/forces to ASE optimizers.
ase_driver = Driver.get_driver("ase")(calculator=EMT())
# Minimize using the ASE minimizer plugin.
# NOTE: ASEMinimizer expects `driver` (not `calculator`) as input.
ls = sys.minimize(minimizer="ase", driver=ase_driver, fmax=0.05, max_steps=5)
print("coords", np.array(ls.data["coords"]).shape)
print("energies", np.array(ls.data["energies"]))
print("forces", np.array(ls.data["forces"]).shape)
Notes / gotchas
System.minimize(...)accepts either a minimizer key string or a Minimizer object.- If you previously used
System.predict(driver="ase", calculator=...), be aware that minimization is different: you need to pass a driver into the minimizer (ASEMinimizer does not acceptcalculator=). sqmminimizer requires AmberToolssqmexecutable and typically won’t be runnable in CI.
Signals
- GitHub stars
- 138
- Forks
- 26
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
dpdata-minimizer- Source
- github.com/jinzhezenggroup/computational-chemistry-agent-skills