atomqc
Project description
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 mapsH(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 viaget_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 olderqiskit.aquaAPI, while the AtomGPT web app (see below) uses the modernqiskit>=1.2/qiskit-algorithmsprimitives. 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
- 📄 Paper: J. Phys.: Condens. Matter 33, 385501 (2021)
- 📄 Related: J. Comput. Chem. (2025), doi:10.1002/jcc.70202
- 🌐 Web app: atomgpt.org/quantum
- 📓 Colab notebook: Qiskit-based electronic bandstructure
- 🧰 JARVIS-Tools: github.com/atomgptlab/jarvis
- ⚛️ Qiskit: qiskit.org
License
Distributed under the terms of the LICENSE included in this repository.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file atomqc-2025.10.12.tar.gz.
File metadata
- Download URL: atomqc-2025.10.12.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
165a279e8f8dfcc3eded9ea7ea570111662ec84a785a4c4b3a811c58fc739a69
|
|
| MD5 |
a689c093237656218256a932a858f8a5
|
|
| BLAKE2b-256 |
4ffa1bb9f786ef496340b36642ab44e642ae611a26f09b658c7abbbe833f3d21
|
File details
Details for the file atomqc-2025.10.12-py2.py3-none-any.whl.
File metadata
- Download URL: atomqc-2025.10.12-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07b55222d399dc27366020b2137be81375ce20d5fe909c1073ede24f5172bd8f
|
|
| MD5 |
66ed73ef12b17d601771e2c72226b3f7
|
|
| BLAKE2b-256 |
eb9d79238d7867c88ac1273a7a4a14cc413241347960e28a6f503ca9cacabc91
|