Skip to main content

Quantum Simulation Toolkit - Error bounds and Trotterization tools

Project description

Qsimkit - Quantum Simulation Toolkit

License PyPI version Release

⚠️ Disclaimer: This package is still under active development. APIs may change, and features are being continuously improved. Use in production with caution.

A Python package for quantum simulation with error bounds and Trotterization tools. Built on Qiskit and OpenFermion.

Features

  • Hamiltonians: Spin lattice models (nearest-neighbor, power-law, IQP) and fermionic systems
  • Trotter Formulas: First, second, and high-order product formulas with JAX acceleration
  • Error Bounds: Analytical and numerical bounds for Trotter error analysis
  • States: Entangled states (GHZ, W) and random states
  • Channels: Quantum noise channels and transformations
  • Utilities: Binary search for optimal Trotter steps, plotting tools

Installation

From PyPI

pip install qsimkit

From source (for development)

git clone https://github.com/Jue-Xu/Qsimkit.git
cd Qsimkit
pip install -e .

Requirements

  • Python >= 3.10
  • Core: numpy, scipy, qiskit, matplotlib
  • Optional: jax/jaxlib (GPU acceleration), openfermion (fermionic systems)

Note: The package includes heavy dependencies (qiskit, openfermion). Installation may take a few minutes.

Quick Start

import qsimkit
from qsimkit.spin import Nearest_Neighbour_1d
from qsimkit.trotter import pf
from qsimkit.bounds import tight_bound

# Create a spin Hamiltonian
H = Nearest_Neighbour_1d(n=4, Jx=1.0, Jy=1.0, Jz=1.0, hx=0.5)
h_list = H.ham  # Get Hamiltonian terms

# Compute Trotter approximation
t = 1.0  # Evolution time
r = 100  # Number of Trotter steps
U_approx = pf(h_list, t, r, order=2)

# Estimate error bound
error = tight_bound(h_list, order=2, t=t, r=r, type='spectral')
print(f"Error bound: {error}")

Usage Examples

1. Hamiltonian Models

from qsimkit import spin, fermion

# Nearest-neighbor 1D spin chain
nn_chain = spin.Nearest_Neighbour_1d(
    n=10,           # 10 qubits
    Jx=1.0,         # X coupling
    Jy=1.0,         # Y coupling
    Jz=1.0,         # Z coupling
    hx=0.5,         # X field
    pbc=False       # Open boundary
)

# Get Hamiltonian in different groupings
h_parity = nn_chain.ham_par  # Parity grouping
h_xyz = nn_chain.ham_xyz      # XYZ grouping

# 2D lattice
lattice_2d = spin.Nearest_Neighbour_2d(nx=4, ny=4, Jx=1.0, Jy=1.0, Jz=1.0)

# Cluster Ising model
cluster = spin.Cluster_Ising(n=8, J=1.0, g=0.5)

2. Trotter Methods

from qsimkit.trotter import pf, pf_high

# First-order Trotter
U1 = pf(h_list, t=1.0, r=50, order=1)

# Second-order Trotter (symmetric)
U2 = pf(h_list, t=1.0, r=50, order=2)

# High-order Trotter (4th, 6th, 8th order)
U4 = pf_high(h_list, t=1.0, r=50, order=4)
U6 = pf_high(h_list, t=1.0, r=50, order=6)

# With JAX acceleration (if available)
U2_jax = pf(h_list, t=1.0, r=50, order=2, use_jax=True)

3. Error Bounds

from qsimkit.bounds import (
    tight_bound,
    analytic_bound,
    interference_bound,
    lc_tail_bound
)

# Tight commutator-based bound
error = tight_bound(h_list, order=2, t=1.0, r=100, type='spectral')

# Analytical bound
error_analytic = analytic_bound(H=h_list, k=1, t=1.0, r=100)

# Two-term interference bound (Layden 2022)
if len(h_list) == 2:
    bound, e1, e2, e3 = interference_bound(h_list, t=1.0, r=100)

4. Finding Optimal Trotter Steps

todo

Package Structure

qsimkit/
├── spin.py           # Spin Hamiltonian models
├── fermion.py        # Fermionic Hamiltonians
├── states.py         # Quantum states (GHZ, W, random)
├── trotter.py        # Trotter-Suzuki product formulas
├── bounds.py         # Error bound calculations
├── measure.py        # Operators (commutator, norm, etc.)
├── channel.py        # Quantum channels
├── utils.py          # Utility functions
└── plot_config.py    # Plotting configuration

Documentation

More examples and tutorials: https://jue-xu.github.io/cookbook-quantum-simulation

Citation

todo

Development

Running Tests

pytest tests/

Contributing

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

License

Apache License 2.0 - see LICENSE file for details.

Contact

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

qsimkit-0.1.14.tar.gz (969.1 kB view details)

Uploaded Source

Built Distribution

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

qsimkit-0.1.14-py3-none-any.whl (844.0 kB view details)

Uploaded Python 3

File details

Details for the file qsimkit-0.1.14.tar.gz.

File metadata

  • Download URL: qsimkit-0.1.14.tar.gz
  • Upload date:
  • Size: 969.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for qsimkit-0.1.14.tar.gz
Algorithm Hash digest
SHA256 e532acf3bb3181ef0b9293527908d0742775627d068853d92f4dbe4b70c7b410
MD5 7dd2cb461ba9dfe6b8b03e86fcbb5faf
BLAKE2b-256 72aaef7fc5770249b067f5667129f92f7ef2a640b9778aad5da010b2f68b89a2

See more details on using hashes here.

File details

Details for the file qsimkit-0.1.14-py3-none-any.whl.

File metadata

  • Download URL: qsimkit-0.1.14-py3-none-any.whl
  • Upload date:
  • Size: 844.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for qsimkit-0.1.14-py3-none-any.whl
Algorithm Hash digest
SHA256 7ade67146ccccb4c214b62dfa2116415d342bb4f49f74407bad3f0e831c95f8d
MD5 1807ac2ec07a3fc3eb13218b46adf4e1
BLAKE2b-256 c632feb1ab9b6cb7f8daa6e9d1ab730b0781a593f1a0761e1bead834594bdfe3

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