Skip to main content

atomqc

Project description

name

AtomQC

Atomistic Calculations on Quantum Computers

AtomQC is a toolkit for running materials-science electronic-structure and lattice-dynamics calculations on quantum computers and quantum simulators. It maps the Wannier tight-binding Hamiltonians (WTBH) of real materials — taken from the JARVIS-DFT database — onto qubits and solves for their eigenvalues using variational quantum algorithms such as the Variational Quantum Eigensolver (VQE), ADAPT-VQE, and the Variational Quantum Deflation (VQD) method. From these eigenvalues it reconstructs electronic and phonon bandstructures that can be compared directly against classical (NumPy) diagonalization.

The approach is described in:

K. Choudhary, "Quantum computation for predicting electron and phonon properties of solids", J. Phys.: Condens. Matter 33, 385501 (2021). doi:10.1088/1361-648X/ac1154

Note: This project was originally developed under the github.com/usnistgov organization. New updates and developments are now carried out here.


Why quantum computing for materials?

Predicting the electronic and vibrational properties of solids reduces to finding the eigenvalues of a Hamiltonian matrix H(k) at each point k in the Brillouin zone. For a compact basis such as maximally-localized Wannier functions, these matrices are small enough that their qubit-mapped versions can be diagonalized on today's noisy quantum hardware and simulators, making materials a practical testbed for near-term quantum algorithms.

AtomQC provides the glue between:

  • JARVIS-DFT WTBHs (get_wann_electron, get_wann_phonon, get_hk_tb) — the physics inputs,
  • Qiskit quantum algorithms and simulators — the quantum back end, and
  • jarvis-tools HermitianSolver / get_bandstruct — the solver layer that maps H(k) to Pauli operators, runs the variational circuits, and assembles bandstructures.

Features

  • 🔬 Electronic & phonon eigenvalues of real materials from JARVIS-DFT WTBHs.
  • ⚛️ VQE with a library of hardware-efficient ansätze (QuantumCircuitLibrary).
  • ⚙️ ADAPT-VQE — iteratively grows a compact ansatz from a Pauli excitation pool, choosing the operator with the largest energy gradient at each step.
  • 📈 VQD bandstructures along high-symmetry k-paths via get_bandstruct.
  • 🧮 Classical cross-check against exact NumPy diagonalization for every run.
  • 🖥️ Multiple back ends — exact statevector, Qiskit Aer simulators, and real IBM Quantum hardware (with an API token).
  • 🌐 Live web app — interactive VQE / ADAPT-VQE / VQD explorer at atomgpt.org/quantum.

Installation

AtomQC targets Python ≥ 3.8 and builds on jarvis-tools and qiskit.

From source

pip install atomqc

or

git clone https://github.com/atomgptlab/atomqc.git
cd atomqc
pip install -e .

With conda (reproducible environment)

A pinned environment is provided in environment.yml:

conda env create -f environment.yml
conda activate my_atomqc

Core dependencies

jarvis-tools, qiskit, qiskit-aer, qiskit-algorithms, numpy, scipy, pandas, scikit-learn, matplotlib. For real IBM hardware also install qiskit-ibm-runtime.

The Qiskit API has changed substantially over time. The example scripts in atomqc/scripts/ were written against the older qiskit.aqua API, while the AtomGPT web app (see below) uses the modern qiskit>=1.2 / qiskit-algorithms primitives. Match the Qiskit version to the entry point you intend to run.


Quick start

Run a single-k-point VQE on FCC aluminum (JVASP-816) and compare against classical diagonalization:

from jarvis.db.figshare import get_wann_electron, get_hk_tb
from jarvis.io.qiskit.inputs import HermitianSolver

# 1. Fetch the Wannier tight-binding Hamiltonian for Al from JARVIS-DFT
w, ef, atoms = get_wann_electron(jid="JVASP-816")

# 2. Build H(k) at a chosen k-point
hk = get_hk_tb(w=w, k=[0.5, 0.5, 0.0])

# 3. Solve for eigenvalues with VQE and with exact NumPy diagonalization
HS = HermitianSolver(hk)
vqe_energy, vqe_result, vqe = HS.run_vqe()      # min eigenvalue via VQE
classical_vals, classical_vecs = HS.run_numpy() # exact reference

print("VQE ground state:", vqe_energy)
print("Classical minimum:", min(classical_vals.real))

Full bandstructure (VQD)

from jarvis.db.figshare import get_wann_electron
from jarvis.io.qiskit.inputs import get_bandstruct

w, ef, atoms = get_wann_electron(jid="JVASP-816")
out = get_bandstruct(w=w, atoms=atoms, line_density=1, savefig=True)
# out["eigvals_q"]  -> quantum (VQD) eigenvalues along the k-path
# out["eigvals_np"] -> classical reference eigenvalues

Testing

A small, fast test suite covers the core Hamiltonian → qubit → VQE pipeline:

pip install pytest
pytest atomqc/tests/

The tests in atomqc/tests/test_qiskit.py build a small synthetic Hermitian H(k), decompose it into Pauli strings, and check that VQE reproduces the exact NumPy ground state. They run offline in a few seconds (no JARVIS downloads), which is also what CI runs on every push.


Repository layout

atomqc/
├── atomqc/
│   ├── __init__.py                 # version
│   ├── scripts/
│   │   ├── aluminum_example.py     # VQE on Al with several classical optimizers
│   │   ├── circuit_comparison.py   # compare ansätze from QuantumCircuitLibrary
│   │   ├── compare_elect_vqe.py    # batch electron VQE vs NumPy over JARVIS jids
│   │   └── compare_phonons_vqe.py  # batch phonon VQE vs NumPy over JARVIS jids
│   ├── tests/
│   │   └── test_qiskit.py          # fast offline tests: H(k) -> Pauli -> VQE
│   └── data/
│       ├── electron_vqe_np_jid.csv # benchmark: electron VQE vs classical
│       └── phonon_vqe_np_jid.csv   # benchmark: phonon VQE vs classical
├── environment.yml                 # pinned conda environment
├── setup.py
└── README.md

Example scripts

Script What it does
aluminum_example.py Runs VQE on the Al Hamiltonian sweeping COBYLA, L-BFGS-B, SLSQP, CG, SPSA optimizers and plots convergence.
circuit_comparison.py Benchmarks the six ansätze in QuantumCircuitLibrary at several k-points.
compare_elect_vqe.py Loops over JARVIS jids, computes min/max electronic eigenvalues with VQE and NumPy, and dumps JSON.
compare_phonons_vqe.py Same as above for phonon Hamiltonians.

The CSV files under atomqc/data/ hold pre-computed VQE-vs-classical benchmark results referenced in the paper.


AtomGPT.org Quantum Computation Explorer

A hosted, interactive version of these workflows runs at atomgpt.org/quantum. It lets you pick a material, choose a back end, and run VQE / ADAPT-VQE at a single k-point or compute a full VQD bandstructure — all from the browser, with live circuit diagrams, statevector / Bloch-sphere visualizations, and the Hamiltonian matrix shown alongside the results.

SlaKoNet-VQD Coming soon!


Citation

If you use AtomQC in your research, please cite:

@article{choudhary2021quantum,
  title   = {Quantum computation for predicting electron and phonon properties of solids},
  author  = {Choudhary, Kamal},
  journal = {Journal of Physics: Condensed Matter},
  volume  = {33},
  number  = {38},
  pages   = {385501},
  year    = {2021},
  doi     = {10.1088/1361-648X/ac1154}
}

References & links


License

Distributed under the terms of the LICENSE included in this repository.

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

atomqc-2025.10.11.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

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

atomqc-2025.10.11-py2.py3-none-any.whl (6.8 kB view details)

Uploaded Python 2Python 3

File details

Details for the file atomqc-2025.10.11.tar.gz.

File metadata

  • Download URL: atomqc-2025.10.11.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for atomqc-2025.10.11.tar.gz
Algorithm Hash digest
SHA256 0d4ef540d91aba3c818708220b38f9b968d08d095dc5be6834e932b9c1f65e10
MD5 2b2f33185b014ced49eb6cce6addfc49
BLAKE2b-256 3c4a51ff0f7f87e96d92149d5c8a633536def8e2b994450ff3912b22b8487ef0

See more details on using hashes here.

File details

Details for the file atomqc-2025.10.11-py2.py3-none-any.whl.

File metadata

  • Download URL: atomqc-2025.10.11-py2.py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for atomqc-2025.10.11-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 63fb97c320ceea9120935e482697c09fb5cbc72e10b7f1cc6da68db42cd4b21f
MD5 f1326cb717e51c845c8de8b9e446be41
BLAKE2b-256 fd576153b5ba1e28a5f058e1b21fd9af73c1c3b7f32b6231d5294de0e00c766b

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