Skip to main content

HamiltonIO

A library for reading and analyzing Hamiltonian files from various DFT codes (ABACUS, SIESTA, EPW/Quantum ESPRESSO, Wannier90).

Features

  • Multi-code support: ABACUS, SIESTA, EPW, Wannier90
  • Spin configurations: Non-polarized, collinear, non-collinear, spin-orbit coupling
  • Real and k-space analysis: Band structures, DOS, Hamiltonian decomposition
  • Command-line tools: Easy-to-use CLI for common analysis tasks
  • Python API: Full programmatic access for custom workflows

Installation

pip install hamiltonIO

Or install from source:

git clone https://github.com/mailhexu/HamiltonIO.git
cd HamiltonIO
pip install .

Quick Start

Command Line Tools

HamiltonIO provides CLI tools for quick analysis:

# Convert EPW files to NetCDF
hamiltonio-epw epw_to_nc --path ./data --prefix material --output epmat.nc

# Analyze ABACUS intra-atomic Hamiltonians
hamiltonio-abacus intra-atomic --outpath OUT.ABACUS

# Analyze SIESTA intra-atomic Hamiltonians  
hamiltonio-siesta intra-atomic siesta.fdf

For detailed CLI usage, see CLI Documentation.

Python Library

# ABACUS
from HamiltonIO.abacus import AbacusParser
parser = AbacusParser(outpath="./OUT.material/")
model = parser.get_models()
evals, evecs = model.solve([0, 0, 0])  # Solve at Gamma point

# SIESTA
from HamiltonIO.siesta import SiestaHam
model = SiestaHam("siesta.fdf")
evals, evecs = model.solve([0, 0, 0])

# EPW
from HamiltonIO.epw import Epmat
epmat = Epmat()
epmat.read(path="./", prefix="material", epmat_ncfile="epmat.nc")

# Wannier90
from HamiltonIO.wannier import Wannier90Hamiltonian
model = Wannier90Hamiltonian("wannier90_hr.dat")
evals, evecs = model.solve([0, 0, 0])

Documentation

Detailed documentation for each interface:

Key Features by Code

ABACUS

  • Automatic spin detection (non-polarized, collinear, noncollinear)
  • Binary and text CSR format support
  • Split-SOC analysis via finite difference
  • Intra-atomic Hamiltonian decomposition

SIESTA

  • NetCDF and HSX format support
  • Split-SOC from native SIESTA output
  • Collinear and non-collinear calculations
  • Integration with sisl library

EPW (Quantum ESPRESSO)

  • Binary to NetCDF conversion
  • Wigner-Seitz grid handling
  • Electron-phonon coupling matrices
  • Crystal structure from EPW data

Wannier90

  • HR format parsing
  • Distance-resolved hopping analysis
  • Band interpolation
  • Orbital projections

Common Workflows

Intra-Atomic Analysis

# ABACUS: Analyze atoms 0, 1, 2 with full matrices
hamiltonio-abacus intra-atomic --outpath OUT.Fe \
    --atoms 0,1,2 --show-matrix -o analysis.txt

# SIESTA: Split-SOC analysis
hamiltonio-siesta intra-atomic siesta.fdf \
    --split-soc --show-matrix -o soc_analysis.txt

File Conversion

# EPW: Convert binary to NetCDF (faster I/O)
hamiltonio-epw epw_to_nc --path ./epw_data \
    --prefix material --output epmat.nc

Band Structure

from ase.io import read
from HamiltonIO.abacus import AbacusParser
from HamiltonIO import plot_band_structure

parser = AbacusParser(outpath="./OUT.material/")
model = parser.get_models()
atoms = read("structure.cif")

# Automatic ASE high-symmetry path and Matplotlib plot
bands, ax = plot_band_structure(
    model,
    atoms,
    path=None,          # or e.g. path="GXMG"
    npoints=300,
    fermi_energy=5.2,   # optional; shifts plotted energies only
    filename="bands.png",
)

# Reuse the raw band data programmatically
print(bands.kpoints.shape, bands.energies.shape)

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the terms specified in the LICENSE file.

Citation

If you use HamiltonIO in your research, please cite:

@software{hamiltonIO,
  author = {Xu, He},
  title = {HamiltonIO: A Library for DFT Hamiltonian I/O},
  url = {https://github.com/mailhexu/HamiltonIO},
  year = {2024}
}

Contact

For questions, bug reports, or feature requests:

Acknowledgments

HamiltonIO builds upon and integrates with:

  • sisl - SIESTA interface
  • ASE - Atomic simulation environment
  • NumPy - Numerical computing

Download files

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

Source Distribution

hamiltonio-0.3.7.tar.gz (133.4 kB view details)

Uploaded Source

Built Distribution

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

hamiltonio-0.3.7-py3-none-any.whl (140.6 kB view details)

Uploaded Python 3

File details

Details for the file hamiltonio-0.3.7.tar.gz.

File metadata

  • Download URL: hamiltonio-0.3.7.tar.gz
  • Upload date:
  • Size: 133.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.11

File hashes

Hashes for hamiltonio-0.3.7.tar.gz
Algorithm Hash digest
SHA256 81074c0f9ef58d2a5630fd1a55d73a6c4737e18e2460ba98c7a0895601e69392
MD5 d6cf02ea4c2893c7d0a6b2af89822976
BLAKE2b-256 516df13ef916c5e10d217be368eb3e8fdbc2922a5625d128b4a99441f2cb4fb0

See more details on using hashes here.

File details

Details for the file hamiltonio-0.3.7-py3-none-any.whl.

File metadata

  • Download URL: hamiltonio-0.3.7-py3-none-any.whl
  • Upload date:
  • Size: 140.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.11

File hashes

Hashes for hamiltonio-0.3.7-py3-none-any.whl
Algorithm Hash digest
SHA256 fc65315302c41c514a241c48ff0ce3bd65d481cb470f8fbfe3151b1712ad166c
MD5 1efaed718b5f914c1db3f1a106e3681e
BLAKE2b-256 d5360e7a3fcd68725a0b65bab1a2fd3267ede02385f1ead4d7705f68ac02d91a

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.8

2 files

This release

0.3.7 This release

2 files

0.3.6

2 files

0.3.5

2 files

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.9

2 files

0.2.8

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

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