JAQSI
Just another quantum simulator.
📜 About
JAQSI is a gate- and pulse-level quantum circuit simulator built on JAX.
Circuits are plain Python functions that record operations onto a tape; the Script class compiles and executes them, routing between statevector and density-matrix simulation automatically depending on whether noise channels are present.
Everything is pure JAX, so circuits are differentiable, jit-able and vmap-able out of the box.
Beyond gate-level simulation, JAQSI simulates circuits at the pulse level by integrating the time-dependent Hamiltonian of each gate, and ships a quantum optimal control module to tune pulse parameters against target unitaries.
🚀 Getting Started
pip install jaqsi
to install our package from PyPI.
import jaqsi
def circuit(theta):
jaqsi.Gates.RX(theta[0], wires=0)
jaqsi.Gates.CX(wires=[0, 1])
script = jaqsi.Script(circuit, n_qubits=2)
script.execute(type="expval", obs=[jaqsi.PauliZ(wires=0)], args=(theta,))
You can find details on how to use it and further documentation on the corresponding Github Page.
Looking for quantum Fourier model tooling (ansaetze, expressibility, entangling capability, Fourier analysis) built on top of this simulator? See qml-essentials.
📦 Package Structure
The following diagram provides an overview on how the different components within this package depend on each other.
Gates is the entry point for applying gates to a circuit and Script the one for executing it; everything below them is the machinery they dispatch to.
flowchart LR
jaqsi([JAQSI])
jaqsi --> jaqsi.gates([Gates])
jaqsi --> jaqsi.script([Script])
jaqsi --> jaqsi.qoc([Quantum Optimal Control])
jaqsi --> jaqsi.math([Math])
jaqsi --> jaqsi.paulis([Paulis])
jaqsi.gates --> jaqsi.unitary([UnitaryGates])
jaqsi.gates --> jaqsi.pulse([PulseGates])
jaqsi.qoc --> jaqsi.gates
jaqsi.script --> jaqsi.simulation([Simulation])
jaqsi.script --> jaqsi.memory([Memory])
jaqsi.script --> jaqsi.drawing([Drawing])
jaqsi.pulse --> jaqsi.evolution([Evolution])
jaqsi.pulse --> jaqsi.envelope([PulseEnvelope])
jaqsi.pulse --> jaqsi.pparams([PulseParams])
jaqsi.unitary --> jaqsi.gateset([Gateset])
jaqsi.unitary --> jaqsi.noise([Noise])
jaqsi.simulation --> jaqsi.gateset
jaqsi.simulation --> jaqsi.noise
jaqsi.paulis --> jaqsi.gateset
jaqsi.evolution --> jaqsi.ops([Operations])
jaqsi.math --> jaqsi.ops
jaqsi.gateset --> jaqsi.ops
jaqsi.noise --> jaqsi.ops
jaqsi.ops --> jaqsi.tape([Tape])
classDef l1 fill:#1f8f5a,stroke:#1f8f5a,color:#d4f7e8
classDef l2 fill:#2fb170,stroke:#2fb170,color:#d4f7e8
classDef l3 fill:#58e3a6,stroke:#58e3a6,color:#272a35
classDef l4 fill:#a8f0d1,stroke:#a8f0d1,color:#272a35
linkStyle default stroke-width:2px
class jaqsi l1
class jaqsi.gates,jaqsi.script,jaqsi.qoc,jaqsi.math,jaqsi.paulis l2
class jaqsi.unitary,jaqsi.pulse,jaqsi.simulation,jaqsi.memory,jaqsi.drawing l3
class jaqsi.gateset,jaqsi.noise,jaqsi.ops,jaqsi.tape,jaqsi.evolution,jaqsi.envelope,jaqsi.pparams l4
🚧 Contributing
Contributions are highly welcome! 🤗 Take a look at our Contribution Guidelines.
See our coverage report if you would like to contribute with further tests.
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 jaqsi-0.1.0.tar.gz.
File metadata
- Download URL: jaqsi-0.1.0.tar.gz
- Upload date:
- Size: 4.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","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 |
45dcda134869e8234dc6dea4295dbd0441d1644e2dea7f9310bf767ecd7e2d30
|
|
| MD5 |
e6f30fcd1d145e385006b9bc159da603
|
|
| BLAKE2b-256 |
8a8279fa09e4ec0ac2928f7ce48c4364bfeb38a6e4b0a57626c8e04b846d0d2f
|
File details
Details for the file jaqsi-0.1.0-py3-none-any.whl.
File metadata
- Download URL: jaqsi-0.1.0-py3-none-any.whl
- Upload date:
- Size: 126.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","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 |
c72244a5abda450f88efb8f8d24bf67359c6325e714d464ec50ee6df56181a25
|
|
| MD5 |
3530207c1ecdd2822d12dc4ef4d24b65
|
|
| BLAKE2b-256 |
d4fe3ce05ad7d9e248a2487a1022befb0a366345798d5b5d1467eff6494a51b8
|