About pyEPR#

Open Source — BSD-3 Python 3.10+ star this repo fork this repo

Overview#

pyEPR is an open-source Python library for the automated design and quantization of superconducting quantum circuits. It bridges classical distributed microwave simulation and the quantum world, converting HFSS (or equivalent) field solutions into a fully diagonalized quantum Hamiltonian — frequencies, anharmonicities, dispersive shifts, and cross-Kerr couplings — in a single automated pipeline.

pyEPR has two distinct capability layers:

Layer

Description

EPR / quantum analysis

Platform-independent post-processing of eigenmode field data. Works with data from any electromagnetic solver (HFSS, Palace, custom) or from a saved HDF5 file.

Ansys HFSS automation

Python COM/DCOM wrapper for Ansys HFSS on Windows: geometry, boundary conditions, setup, sweep, and field extraction — all scriptable from Python. Originally written before PyAEDT existed; the two tools are complementary.

The energy-participation ratio (EPR) method#

The EPR method, introduced in Minev et al., npj Quantum Information (2021), provides a unified, systematic, and efficient approach for computing the quantum Hamiltonian parameters of superconducting circuits.

The central idea is to characterize each non-linear element (Josephson junction) by a single dimensionless number — the energy participation ratio \(p_{mj}\) — which quantifies what fraction of the electromagnetic energy of mode \(m\) is stored in junction \(j\).

Participation ratio

For eigenmode \(m\) and junction \(j\):

\[p_{mj} \;=\; \frac{\text{inductive energy in junction } j} {\text{total electromagnetic energy of mode } m} \;=\; \frac{\frac{1}{2} L_j^{-1} \langle \hat\phi_j^2 \rangle} {E_m}\]

where \(L_j\) is the Josephson inductance and \(E_m = \hbar\omega_m / 2\) is the zero-point energy of mode \(m\) (with \(\hbar\omega_m\) the mode frequency). The zero-point phase fluctuation across junction \(j\) in mode \(m\) is:

\[\varphi_{mj}^\text{zpf} = \sqrt{p_{mj}\,\frac{\hbar\omega_m}{2E_J}}\]

where \(E_J = \hbar^2 / (4e^2 L_j)\) is the Josephson energy.

Hamiltonian parameters from EPR

Once the participation ratios are extracted from the field simulation, the leading-order quantum Hamiltonian parameters follow analytically (to first order in \(p_{mj}\) with a cosine junction potential expanded to fourth order):

\[\hat H / \hbar \;=\; \sum_m \omega_m \hat a_m^\dagger \hat a_m - \frac{1}{2}\sum_{m} \alpha_m\, \hat a_m^\dagger \hat a_m^\dagger \hat a_m \hat a_m - \sum_{m < m'} \chi_{mm'}\, \hat a_m^\dagger \hat a_m \hat a_{m'}^\dagger \hat a_{m'} + \ldots\]

The self-Kerr (anharmonicity) of mode \(m\) and the cross-Kerr coupling between modes \(m\) and \(m'\) are:

\[\alpha_m = \sum_j p_{mj}^2\, \frac{e^2}{2C_j} \cdot \frac{1}{\hbar} = \sum_j p_{mj}^2\, E_{C,j}/\hbar\]
\[\chi_{mm'} = 2\sum_j p_{mj}\, p_{m'j}\, E_{C,j}/\hbar\]

where \(E_{C,j} = e^2 / (2C_j)\) is the charging energy of junction \(j\). For the full derivation valid beyond the perturbative limit, see arXiv:2010.00620.

Why EPR?

  • Single simulation — all Hamiltonian parameters are extracted from one eigenmode solve; no need for separate simulations per coupling.

  • Simulator-agnostic — only eigenmode frequencies and field integrals are needed; the method works with any electromagnetic solver.

  • Systematic and scalable — straightforwardly extends to many modes and junctions; participation ratios can be read off from standard energy plots.

  • Validated — ten-percent to percent-level agreement with experiment over five orders of magnitude and across dozens of devices (3D cavities, transmons, fluxonium, flip-chip).

What pyEPR is not#

  • It is not a geometry or layout tool — use Qiskit Metal or KLayout for that.

  • It is not a general AEDT scripting library — use PyAEDT for mesh control, geometry parametrization, or driving other AEDT tools.

  • It is not a circuit solver — it post-processes distributed-field solutions, not lumped-element netlists.

Relationship to other tools#

Tool

Relationship to pyEPR

PyAEDT

Ansys’s official cross-platform AEDT Python library. Use for geometry, mesh, and solve scripting; pyEPR handles EPR quantization. The two are complementary.

Qiskit Metal

IBM’s chip-layout design tool. Uses pyEPR internally for EPR analysis and Hamiltonian extraction.

Palace

AWS open-source FEM solver (parallel, GPU-accelerated). Does not yet have a direct pyEPR integration, but pyEPR’s EPR analysis layer is solver-agnostic; see Using pyEPR without Ansys HFSS for how to use pyEPR with non-HFSS field data.

QuTiP

Used internally by pyEPR for numerical Hamiltonian diagonalization (QuantumAnalysis). QuTiP ≥ 5.0 is required.

Citation#

If you use pyEPR in your research, please cite:

  • Method paper: Z. K. Minev, Z. Leghtas, S. O. Mundhada, L. Christakis, I. M. Pop, and M. H. Devoret, “Energy-participation quantization of Josephson circuits,” npj Quantum Information 7, 131 (2021). arXiv:2010.00620

  • Software: Z. K. Minev et al., pyEPR: The energy-participation-ratio (EPR) open-source framework for quantum device design (2021). DOI:10.5281/zenodo.4552482

BibTeX entries are in pyEPR.bib at the root of the repository.

References#

  • Z. K. Minev, Z. Leghtas et al., npj Quantum Information 7, 131 (2021) (arXiv:2010.00620)

  • Z. K. Minev, Ph.D. Dissertation, Yale University (2018), Chapter 4 (arXiv:1902.10355)

  • Z. K. Minev, Z. Leghtas et al., original pyEPR framework (2018) (Zenodo)