Skip to main content

Unified Python interface for EwaldSolidSolution Guider and ESS

Project description

esspy

Exhaustive enumeration and optimization of solid-solution crystal structures using Ewald summation.

esspy is a Python/C++ framework that automates the generation and energy ranking of solid-solution structures. It is a modern Python interface to the EwaldSolidSolution algorithm, originally implemented in C++.

Citation

If you use esspy in your research, please cite the original algorithm paper:

Jang, S.-H., et al. J. Phys. Chem. A 2023, 127 (48), pp 10200–10212. https://doi.org/10.1021/acs.jpca.3c00076

Authors

Requirements

  • Python 3.9+
  • CMake 3.15+
  • C++17-compatible compiler (GCC, Clang, MSVC)
  • Optional: MPI (for distributed execution)

Installation

From source

git clone https://github.com/soungmin-bae/esspy.git
cd esspy
pip install -e .

This will compile the C++ extension using scikit-build-core and pybind11.

Verify installation

esspy --version
esspy --help

Quick Start

1. Initialize a project from a POSCAR file

esspy init from-poscar POSCAR.vasp -o input.yaml

This generates a YAML configuration template with structure and composition settings.

2. Run the full workflow

esspy run input.yaml --workdir run-output

This performs:

  • Guider: Supercell design and ionic recipe generation
  • Solver: Exhaustive enumeration and energy optimization
  • Outputs energy-ranked structures and summary

3. Guide-only mode (structure design without enumeration)

esspy run input.yaml --guide-only --workdir run-guide

4. Export results

esspy guide export-guider input.yaml
esspy solve export-spec input.yaml

Features

  • Guider: Automated supercell design with ionic recipe generation
  • Solver: Exhaustive enumeration with Monte Carlo swapping optimization
  • Symmetry: Automatic Wyckoff position detection (via spglib)
  • MPI: Distributed parallel enumeration across multiple ranks
  • Progress Reporting: Real-time enumeration progress with ETA and energy tracking
  • Output Management: Auto-increment folder naming to prevent overwrites

Workflow Example

# input.yaml
structure:
  poscar: POSCAR.vasp

composition:
  target_sites:
    - {element: Mn, count: 2}
    - {element: Ni, count: 2}
    - {element: Cr, count: 2}
  n_target_sites: 6

guide:
  options:
    target_cpu_time_sec: 3.0

solve:
  swap: true
  max_swap: 2

output:
  prefix: my_structure
  workdir: run-output
esspy run input.yaml

Development

Install in editable mode:

pip install -e ".[dev]"

Run tests:

pytest tests/ -v

Build without installing:

pip install cmake scikit-build-core pybind11
cmake -B build -S .
cmake --build build

Documentation

  • CLI Help: esspy --help
  • Examples: See examples/ directory
  • Configuration: YAML schema reference in command help

License

[To be determined]


Version: 0.1.0 (Pre-release)
Last updated: 2026-04-30

Project details


Download files

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

Source Distribution

esspy-0.1.0.tar.gz (182.1 kB view details)

Uploaded Source

Built Distribution

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

esspy-0.1.0-cp312-cp312-macosx_15_0_arm64.whl (426.5 kB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

File details

Details for the file esspy-0.1.0.tar.gz.

File metadata

  • Download URL: esspy-0.1.0.tar.gz
  • Upload date:
  • Size: 182.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for esspy-0.1.0.tar.gz
Algorithm Hash digest
SHA256 dd84511033585eec70cb69b1e115a90e6ee8210ee96975e9e8e762c7a55b7a01
MD5 8fb3e201aa86eb39e4b5467ea02054ab
BLAKE2b-256 0e237412267d736b30cde3b83ea140917048093e7557e8161559f10933a3a7b5

See more details on using hashes here.

File details

Details for the file esspy-0.1.0-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for esspy-0.1.0-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 53292ba4616f319f6521cd465ab39fc64d1f8bff1986f0c5277e7bdda8ef3496
MD5 54c806349913b1dbe3f3127c5e41140a
BLAKE2b-256 e10547b895368aec9f351275649168e2877fc26fbf2cb3aacd472ec35c61e201

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 Pingdom Monitoring Sentry Error logging StatusPage Status page