Skip to main content

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)

Source distribution for jaqsi 0.1.1
File Size Uploaded
jaqsi-0.1.1.tar.gz 4.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for jaqsi 0.1.1
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page