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.15.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.15-py3-none-any.whl (844.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qsimkit-0.1.15.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.15.tar.gz
Algorithm Hash digest
SHA256 41f10119a4a1a8f3e2a71f25c3fbe2b554a87965c0349dd8ab16bda48368152f
MD5 eb163b59182865d6547cf8d5138c8e60
BLAKE2b-256 2ec72b3f188168fa75f749f064753dec57cea4b72e90f4df232428f6c93abf05

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qsimkit-0.1.15-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.15-py3-none-any.whl
Algorithm Hash digest
SHA256 5974693761f2d543fb2984e4a5c35a18358caba323302547e8bfa709b4f6b04d
MD5 e4bf7824f34c2d345b7cbd40c975a6dc
BLAKE2b-256 e2ab34b77f834e85fea287560bfd9220df38104a2fe5ce574b1c26262681b1b6

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