ase

Use when working with ASE (Atomic Simulation Environment) for atomistic simulations. Covers structure building, geometry optimization, molecular dynamics, NEB/transition states, vibrational analysis, and calculator interfaces (ORCA, xTB, GPAW, LAMMPS).

ASE — Atomic Simulation Environment

ASE 3.24.0 (December 2024). Central object: Atoms. Calculators are decoupled — swap between EMT, xTB, ORCA, GPAW without changing workflow.

When to Use This Skill

  • Building and manipulating atomic structures (molecules, surfaces, bulk, slabs)
  • Geometry optimization (DFT, semi-empirical, force fields)
  • Molecular dynamics: NVE, NVT (Langevin, Berendsen), NPT
  • Transition state search: NEB, climbing image, AutoNEB
  • Vibrational analysis, IR spectra, zero-point energy, thermochemistry
  • Interfacing with ORCA, GPAW, xTB, VASP, LAMMPS, Quantum ESPRESSO
  • Reading/writing structure files: CIF, XYZ, TRAJ, SDF, PDB, VASP POSCAR

Quick Start

from ase import Atoms
from ase.build import molecule
from ase.calculators.emt import EMT
from ase.optimize import BFGS

# Build water molecule
atoms = molecule('H2O')
atoms.calc = EMT()  # fast toy calculator

# Geometry optimization
opt = BFGS(atoms, trajectory='h2o.traj', logfile='opt.log')
opt.run(fmax=0.05)  # eV/Å convergence criterion

print(atoms.get_potential_energy())  # eV
print(atoms.get_forces())            # eV/Å

Router — What to Read

TaskReference
Atoms object, cell, PBC, building molecules/surfaces/bulkreferences/atoms-structures.md
Calculators: EMT, ORCA, xTB, GPAW, LAMMPS, configreferences/calculators.md
Geometry optimization, constraints, filters, unit cellsreferences/optimization.md
Molecular dynamics: NVE/NVT/NPT, thermostats, trajectoriesreferences/molecular-dynamics.md
NEB, climbing image, IDPP, AutoNEB, barrier extractionreferences/neb-transitions.md
Vibrations, phonons, IR, ZPE, thermochemistryreferences/vibrations-analysis.md

Key Modules

ModuleImportRole
Atomsfrom ase import AtomsCore structure object
unitsfrom ase import unitsUnit conversions (eV, Å, fs…)
iofrom ase import ioRead/write all formats
buildfrom ase.build import …molecule, bulk, surface, slab
optimizefrom ase.optimize import BFGS, FIRE, LBFGSGeometry optimizers
mdfrom ase.md.verlet import VelocityVerletMolecular dynamics
mepfrom ase.mep import NEB, DyNEBMinimum energy paths
vibrationsfrom ase.vibrations import VibrationsNormal modes
phononsfrom ase.phonons import PhononsPhonon dispersion
constraintsfrom ase.constraints import FixAtoms, FixBondLengthConstraints
filtersfrom ase.filters import ExpCellFilter, FrechetCellFilterCell optimization
dbfrom ase.db import connectASE database

Installation

pip install ase          # latest (3.24.0+)
conda install -c conda-forge ase

# Verify
python -c "import ase; print(ase.__version__)"

Unit Conversions

from ase import units

units.eV           # 1.0 (internal unit)
units.Hartree      # 27.2114 eV
units.kcal / units.mol  # 0.04336 eV
units.fs           # femtosecond in ASE time units
units.bar          # pressure
units.Bohr         # 0.529177 Å

Related Skills

  • ase + scientific-skills:rowan — cloud QM (DFT, pKa) for heavy calculations
  • ase + scientific-skills:pymatgen — materials/crystallography workflows
  • scripts: chem_qm.py — ORCA/Gaussian input gen + output parsing
  • scientific-skills:biopython — PDB structure loading for biomolecular systems