Quantum annealing sampler using QuTiP sesolve
Project description
qutip-sampler
A dimod-compatible quantum annealing sampler backed by QuTiP sesolve.
It maps an Ising / QUBO problem onto a transverse-field Ising Hamiltonian, evolves the ground state via a linear annealing schedule, and draws bitstring samples from the final quantum state.
Installation
pip install qutip-sampler
Quick start
import dimod
from qutip_sampler import QuTipSampler
# SPIN (Ising) problem
bqm = dimod.BinaryQuadraticModel({'a': -1.0, 'b': -1.0}, {('a', 'b'): 0.5}, 0.0, 'SPIN')
result = QuTipSampler().sample(bqm, num_reads=100, seed=42)
print(result.first.sample) # e.g. {'a': 1, 'b': 1}
# Ising directly
result = QuTipSampler().sample_ising({'a': -1.0}, {('a', 'b'): 0.5}, num_reads=50)
# QUBO
Q = {('x', 'x'): -1.0, ('y', 'y'): -1.0, ('x', 'y'): 0.5}
result = QuTipSampler().sample_qubo(Q, num_reads=50, seed=0)
print(result.first.sample) # e.g. {'x': 1, 'y': 1}
Parameters
| Parameter | Default | Description |
|---|---|---|
anneal_time |
10.0 |
Total annealing time T passed to sesolve |
n_steps |
200 |
Number of time steps in the annealing schedule |
num_reads |
100 |
Number of bitstring samples drawn from the final state |
seed |
None |
RNG seed for reproducible sampling |
anneal_time and n_steps can be set at construction time or overridden per call.
How it works
- Collect all variables from the problem and sort them.
- Build the Ising Hamiltonian
H_ising = Σ hᵢ σᵢᶻ + Σ Jᵢⱼ σᵢᶻ σⱼᶻ. - Build the transverse-field Hamiltonian
H_T = −Σ σᵢˣ, whose ground state is|+⟩⊗ⁿ. - Evolve
H(t) = (1 − t/T) H_T + (t/T) H_isingfromt=0tot=Tusing QuTiPsesolve. - Sample bitstrings from the probability distribution
|ψ(T)|².
Release flow
Releases are fully automated via GitHub Actions:
- Every push / PR — the Tests workflow runs the test suite and uploads coverage to Codecov.
- On a version tag — the Publish workflow runs tests first, then builds and publishes to PyPI if they pass.
To cut a release:
uvx bump-my-version bump patch # or minor / major
git push && git push --tags
bump-my-version updates the version in pyproject.toml, commits, and creates the tag. Pushing the tag triggers the publish workflow.
License
MIT
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
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 qutip_sampler-0.2.1.tar.gz.
File metadata
- Download URL: qutip_sampler-0.2.1.tar.gz
- Upload date:
- Size: 76.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27e71929e4d0c72af2955a7655b727c38a5aa1a50a8af8c148f1c67dbff635c1
|
|
| MD5 |
7aa6e0d44635438213585f071f28a1e5
|
|
| BLAKE2b-256 |
76d91aa2cbd2f15f7e4456822221115d32cf2b6f16346968d989df75474e51d7
|
File details
Details for the file qutip_sampler-0.2.1-py3-none-any.whl.
File metadata
- Download URL: qutip_sampler-0.2.1-py3-none-any.whl
- Upload date:
- Size: 5.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8494a323f564a208b20f497716bd0fd7aa0dee08853b7c229e5d2205c1eaee86
|
|
| MD5 |
60d91d67ac799a1a6c910821078207ee
|
|
| BLAKE2b-256 |
d0fc3665f6b335461b4f765da7278c5db84cedd91c45d1de4993f52fa4aa7371
|