¶
Welcome to squint, a differentiable framework for the study and design of quantum metrology & sensing protocols!
What can it do?¶
- Differentiable quantum dynamics for qubit, qudit, and Fock/photon-number systems
- Built on the JAX ecosystem for automatic differentiation and GPU hardware acceleration
- Compute Fisher information and other fundamental metrics in quantum metrology with ease
- Benchmark realistic protocols with noise and loss channels relevant to diverse device architectures
A quick example¶
from squint.circuit import Circuit
from squint.ops.dv import DiscreteVariableState, HGate, RZGate
from squint.utils import print_nonzero_entries, partition_op
# Create a simple one-qubit phase estimation circuit
# |0⟩ --- H --- Rz(φ) --- H --- |⟩
circuit = Circuit(backend="pure")
circuit.add(DiscreteVariableState(wires=(0,), n=(0,))) # |0⟩ state
circuit.add(HGate(wires=(0,))) # Hadamard gate
circuit.add(RZGate(wires=(0,), phi=0.0 * jnp.pi), "phase") # Phase rotation
circuit.add(HGate(wires=(0,))) # Second Hadamard
# Compile the circuit for simulation
dim = 2 # qubit dimension
params, static = partition_op(circuit, "phase")
sim = circuit.compile(static, dim, params, optimize="greedy").jit()
# Calculate metrics important to quantum metrology & sensing protocols
# the quantum state and its gradient
psi = circuit.amplitudes.forward(params) # |ψ(φ)⟩
dpsi = circuit.amplitudes.grad(params) # ∂|ψ(φ)⟩/∂φ
# Probabilities and their gradients
p = circuit.probabilities.forward(params) # p(s|φ)
dp = circuit.probabilities.grad(params) # ∂p(s|φ)/∂φ
qfi = sim.amplitudes.qfim(params) # Quantum Fisher Information
cfi = sim.probabilities.cfim(params) # Classical Fisher Information
Installation¶
Install from Git with,
Acknowledgments¶
The authors of squint
acknowledge the kind support of
Ki3 Photonics Technologies,
the Perimeter Institute Quantum Intelligence Lab,
the Institute for Quantum Computing,
and the NSERC Vanier Program.
Citing¶
If you found this package useful, please consider citing our work!