JAQSI
Just another quantum simulator.
📜 About
JAQSI is a JAX-based quantum circuit simulator for gates and pulses. Write a circuit as a Python function, then let JAQSI take care of the simulation.
The function records operations; Script executes them with statevector or density-matrix simulation, depending on whether they contain noise.
Circuits support JAX differentiation, jit, and vmap.
At the pulse level, JAQSI integrates each gate's time-dependent Hamiltonian. Its quantum optimal control module tunes pulse parameters against target unitaries.
🚀 Getting Started
pip install jaqsi
For NVIDIA GPUs, install the appropriate CUDA extra:
pip install "jaqsi[cuda13]" # use cuda12 if needed
The pulse guide has a few device tips for GPU runs.
import jaqsi
import jax.numpy as jnp
def circuit(theta):
jaqsi.Gates.RX(theta[0], wires=0)
jaqsi.Gates.CX(wires=[0, 1])
script = jaqsi.Script(circuit, n_qubits=2)
theta = jnp.array([0.5])
script.execute(type="expval", obs=[jaqsi.PauliZ(wires=0)], args=(theta,))
That is a complete circuit. The documentation has more examples to try.
For quantum Fourier models, qml-essentials builds on JAQSI and provides ansätze, expressibility, entangling capability, and Fourier analysis tools.
📦 Package Structure
Here is how the pieces fit together. Gates applies gates; Script executes circuits.
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.evolution([Evolution])
jaqsi.script --> jaqsi.drawing([Drawing])
jaqsi.pulse --> jaqsi.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.simulation --> jaqsi.evolution
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 welcome! See the contribution guidelines to get involved.
The coverage report is a handy place to look for tests to add.
Metadata
Release files for jaqsi 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jaqsi-0.1.1.tar.gz | 4.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jaqsi-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 4.3 MB
Release files / jaqsi-0.1.1.tar.gz
| Download URL | jaqsi-0.1.1.tar.gz |
|---|---|
| Size | 4.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
51ad6cf68f490c8c06253392eb79b121940d81004efa37fa39a47015e444ad61
|
|
BLAKE2b-256 checksum How to use checksums |
3fe6509ea78059396d323eab996814d46bfacf71b398e4725f29dbba6b418355
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","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}
|
Release files / jaqsi-0.1.1-py3-none-any.whl
| Download URL | jaqsi-0.1.1-py3-none-any.whl |
|---|---|
| Size | 141.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
072b693728706d3f8045c3a919b975ba8206d6ec93693c329aed10fdac422d10
|
|
BLAKE2b-256 checksum How to use checksums |
937ed168ec2c7a29b5e232b4fd6b28d03f1017ddb298e44600a597a6e4b217cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.21 {"installer":{"name":"uv","version":"0.12.21","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}
|