bloqade-circuit 0.2.2__tar.gz → 0.2.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of bloqade-circuit might be problematic. Click here for more details.
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/PKG-INFO +1 -1
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/pyproject.toml +1 -1
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/analysis/fidelity/analysis.py +27 -2
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/device.py +108 -18
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/passes/noise.py +28 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/uv.lock +3 -3
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/.github/dependabot.yml +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/.github/workflows/ci.yml +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/.github/workflows/isort.yml +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/.github/workflows/lint.yml +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/.github/workflows/release.yml +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/.gitignore +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/.pre-commit-config.yaml +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/LICENSE +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/README.md +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/_typos.toml +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/justfile +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/analysis/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/analysis/address/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/analysis/address/analysis.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/analysis/address/impls.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/analysis/address/lattice.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/analysis/fidelity/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/device.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/noise/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/noise/fidelity.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/noise/native/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/noise/native/_dialect.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/noise/native/_wrappers.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/noise/native/model.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/noise/native/rewrite.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/noise/native/stmts.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/base.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/noise/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/noise/native.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/qasm2/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/qasm2/core.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/qasm2/glob.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/qasm2/parallel.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/qasm2/uop.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/reg.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/squin/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/squin/op.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/squin/qubit.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/squin/runtime.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/squin/wire.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/target.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/pyqrack/task.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/_wrappers.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/core/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/core/_dialect.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/core/_emit.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/core/_typeinfer.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/core/address.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/core/stmts.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/expr/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/expr/_dialect.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/expr/_emit.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/expr/_from_python.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/expr/_interp.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/expr/stmts.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/glob.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/indexing.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/inline.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/noise.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/parallel.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/uop/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/uop/_dialect.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/uop/_emit.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/uop/schedule.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/uop/stmts.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/emit/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/emit/base.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/emit/gate.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/emit/main.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/emit/target.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/glob.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/groups.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parallel.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/ast.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/build.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/lowering.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/parser.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/print.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/qasm2.lark +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/visitor.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/parse/visitor.pyi +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/passes/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/passes/fold.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/passes/glob.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/passes/lift_qubits.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/passes/parallel.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/passes/py2qasm.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/passes/qasm2py.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/desugar.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/glob.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/heuristic_noise.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/insert_qubits.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/native_gates.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/parallel_to_uop.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/register.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/uop_to_parallel.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/types.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qbraid/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qbraid/lowering.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qbraid/schema.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qbraid/simulation_result.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qbraid/target.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/analysis/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/analysis/nsites/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/analysis/nsites/analysis.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/analysis/nsites/impls.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/analysis/nsites/lattice.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/analysis/schedule.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/groups.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/noise/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/noise/_dialect.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/noise/stmts.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/op/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/op/_dialect.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/op/number.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/op/rewrite.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/op/stmts.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/op/traits.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/op/types.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/qubit.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/rewrite/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/rewrite/measure_desugar.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/wire.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/_wrappers.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/_dialect.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/emit.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/interp.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/lowering.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/stmts/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/stmts/annotate.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/stmts/const.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/aux/types.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/collapse/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/collapse/_dialect.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/collapse/emit.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/collapse/stmts/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/collapse/stmts/measure.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/collapse/stmts/pp_measure.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/collapse/stmts/reset.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/_dialect.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/emit.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/stmts/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/stmts/base.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/stmts/clifford_1q.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/stmts/clifford_2q.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/stmts/control_2q.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/gate/stmts/pp.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/noise/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/noise/_dialect.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/noise/emit.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/dialects/noise/stmts.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/emit/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/emit/stim.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/stim/groups.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/task.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/test_utils.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/types.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/animate.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/base.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/gate_event.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/runtime/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/runtime/aod.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/runtime/atoms.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/runtime/ppoly.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/runtime/qpustate.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/visual/animation/runtime/utils.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/analysis/address/test_analysis.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/analysis/address/test_lattice.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/analysis/fidelity/test_fidelity.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/runtime/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/runtime/noise/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/runtime/noise/native/test_loss.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/runtime/noise/native/test_pauli.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/runtime/test_dyn_memory.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/runtime/test_qrack.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/test_squin.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/pyqrack/test_target.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/analysis/test_dag.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/emit/test_extended.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/emit/test_qasm2.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/emit/test_qasm2_emit.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/README.md +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/global.qasm +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/iqft1.qasm +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/main.qasm +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/noise.qasm +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/para.qasm +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/process_tomo.qasm +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/qelib1.inc +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/qft.qasm +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/qft2.qasm +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/rb.qasm +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/rep_code.qasm +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/ripple_carry_adder.qasm +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/programs/tele.qasm +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/test_ast.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/parse/test_roundtrip.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/passes/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/passes/test_global_to_parallel.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/passes/test_global_to_uop.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/passes/test_heuristic_noise.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/passes/test_parallel_to_uop.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/passes/test_qasm2py.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/passes/test_uop_to_parallel.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/test_count.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/test_inline.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/test_lowering.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/test_native.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qasm2/test_two2one.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qbraid/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qbraid/test_clean_circuit.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qbraid/test_lowering.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/qbraid/test_target.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/sample/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/sample/test_noise_model.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/squin/analysis/test_nsites_analysis.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/squin/test_constprop.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/squin/test_measure_sugar.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/squin/test_mult_rewrite.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/base.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/test_stim_1q.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/test_stim_ctrl.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/test_stim_detector.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/test_stim_meas.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/test_stim_noise.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/test_stim_obs_inc.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/test_stim_ppmeas.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/emit/test_stim_spp.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/test_stim_circuits.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/dialects/stim/test_stim_const.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/wrapper/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/stim/wrapper/test_wrapper.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/test_serialization.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/test_zone_model.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/visual/__init__.py +0 -0
- {bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/test/visual/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bloqade-circuit
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: The software development toolkit for neutral atom arrays.
|
|
5
5
|
Author-email: Roger-luo <rluo@quera.com>, kaihsin <khwu@quera.com>, weinbe58 <pweinberg@quera.com>, johnzl-777 <jlong@quera.com>
|
|
6
6
|
License-File: LICENSE
|
|
@@ -13,22 +13,47 @@ from ..address import AddressAnalysis
|
|
|
13
13
|
class FidelityAnalysis(Forward):
|
|
14
14
|
"""
|
|
15
15
|
This analysis pass can be used to track the global addresses of qubits and wires.
|
|
16
|
+
|
|
17
|
+
## Usage examples
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
from bloqade import qasm2
|
|
21
|
+
from bloqade.noise import native
|
|
22
|
+
from bloqade.analysis.fidelity import FidelityAnalysis
|
|
23
|
+
from bloqade.qasm2.passes.noise import NoisePass
|
|
24
|
+
|
|
25
|
+
noise_main = qasm2.extended.add(native.dialect)
|
|
26
|
+
|
|
27
|
+
@noise_main
|
|
28
|
+
def main():
|
|
29
|
+
q = qasm2.qreg(2)
|
|
30
|
+
qasm2.x(q[0])
|
|
31
|
+
return q
|
|
32
|
+
|
|
33
|
+
NoisePass(main.dialects)(main)
|
|
34
|
+
|
|
35
|
+
fid_analysis = FidelityAnalysis(main.dialects)
|
|
36
|
+
fid_analysis.run_analysis(main, no_raise=False)
|
|
37
|
+
|
|
38
|
+
gate_fidelity = fid_analysis.gate_fidelity
|
|
39
|
+
atom_survival_probs = fid_analysis.atom_survival_probability
|
|
40
|
+
```
|
|
16
41
|
"""
|
|
17
42
|
|
|
18
43
|
keys = ["circuit.fidelity"]
|
|
19
44
|
lattice = EmptyLattice
|
|
20
45
|
|
|
46
|
+
gate_fidelity: float = 1.0
|
|
21
47
|
"""
|
|
22
48
|
The fidelity of the gate set described by the analysed program. It reduces whenever a noise channel is encountered.
|
|
23
49
|
"""
|
|
24
|
-
gate_fidelity: float = 1.0
|
|
25
50
|
|
|
26
51
|
_current_gate_fidelity: float = field(init=False)
|
|
27
52
|
|
|
53
|
+
atom_survival_probability: list[float] = field(init=False)
|
|
28
54
|
"""
|
|
29
55
|
The probabilities that each of the atoms in the register survive the duration of the analysed program. The order of the list follows the order they are in the register.
|
|
30
56
|
"""
|
|
31
|
-
atom_survival_probability: list[float] = field(init=False)
|
|
32
57
|
|
|
33
58
|
_current_atom_survival_probability: list[float] = field(init=False)
|
|
34
59
|
|
|
@@ -25,7 +25,11 @@ Params = ParamSpec("Params")
|
|
|
25
25
|
|
|
26
26
|
@dataclass
|
|
27
27
|
class PyQrackSimulatorBase(AbstractSimulatorDevice[PyQrackSimulatorTask]):
|
|
28
|
+
"""PyQrack simulation device base class."""
|
|
29
|
+
|
|
28
30
|
options: PyQrackOptions = field(default_factory=_default_pyqrack_args)
|
|
31
|
+
"""options (PyQrackOptions): options passed into the pyqrack simulator."""
|
|
32
|
+
|
|
29
33
|
loss_m_result: Measurement = field(default=Measurement.One, kw_only=True)
|
|
30
34
|
rng_state: np.random.Generator = field(
|
|
31
35
|
default_factory=np.random.default_rng, kw_only=True
|
|
@@ -96,12 +100,48 @@ class PyQrackSimulatorBase(AbstractSimulatorDevice[PyQrackSimulatorTask]):
|
|
|
96
100
|
if len(qubit_ids) != len(set(qubit_ids)):
|
|
97
101
|
raise ValueError("Qubits must be unique.")
|
|
98
102
|
|
|
99
|
-
return sim_reg.pauli_expectation(
|
|
103
|
+
return sim_reg.pauli_expectation(qubit_ids, pauli)
|
|
100
104
|
|
|
101
105
|
|
|
102
106
|
@dataclass
|
|
103
107
|
class StackMemorySimulator(PyQrackSimulatorBase):
|
|
104
|
-
"""
|
|
108
|
+
"""
|
|
109
|
+
PyQrack simulator device with preallocated stack of qubits.
|
|
110
|
+
|
|
111
|
+
This can be used to simulate kernels where the number of qubits is known
|
|
112
|
+
ahead of time.
|
|
113
|
+
|
|
114
|
+
## Usage examples
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
# Define a kernel
|
|
118
|
+
@qasm2.main
|
|
119
|
+
def main():
|
|
120
|
+
q = qasm2.qreg(2)
|
|
121
|
+
c = qasm2.creg(2)
|
|
122
|
+
|
|
123
|
+
qasm2.h(q[0])
|
|
124
|
+
qasm2.cx(q[0], q[1])
|
|
125
|
+
|
|
126
|
+
qasm2.measure(q, c)
|
|
127
|
+
return q
|
|
128
|
+
|
|
129
|
+
# Create the simulator object
|
|
130
|
+
sim = StackMemorySimulator(min_qubits=2)
|
|
131
|
+
|
|
132
|
+
# Execute the kernel
|
|
133
|
+
qubits = sim.run(main)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
You can also obtain other information from it, such as the state vector:
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
ket = sim.state_vector(main)
|
|
140
|
+
|
|
141
|
+
from pyqrack.pauli import Pauli
|
|
142
|
+
expectation_vals = sim.pauli_expectation([Pauli.PauliX, Pauli.PauliI], qubits)
|
|
143
|
+
```
|
|
144
|
+
"""
|
|
105
145
|
|
|
106
146
|
min_qubits: int = field(default=0, kw_only=True)
|
|
107
147
|
|
|
@@ -111,6 +151,20 @@ class StackMemorySimulator(PyQrackSimulatorBase):
|
|
|
111
151
|
args: tuple[Any, ...] = (),
|
|
112
152
|
kwargs: dict[str, Any] | None = None,
|
|
113
153
|
):
|
|
154
|
+
"""
|
|
155
|
+
Args:
|
|
156
|
+
kernel (ir.Method):
|
|
157
|
+
The kernel method to run.
|
|
158
|
+
args (tuple[Any, ...]):
|
|
159
|
+
Positional arguments to pass to the kernel method.
|
|
160
|
+
kwargs (dict[str, Any] | None):
|
|
161
|
+
Keyword arguments to pass to the kernel method.
|
|
162
|
+
|
|
163
|
+
Returns:
|
|
164
|
+
PyQrackSimulatorTask:
|
|
165
|
+
The task object used to track execution.
|
|
166
|
+
|
|
167
|
+
"""
|
|
114
168
|
if kwargs is None:
|
|
115
169
|
kwargs = {}
|
|
116
170
|
|
|
@@ -136,7 +190,44 @@ class StackMemorySimulator(PyQrackSimulatorBase):
|
|
|
136
190
|
|
|
137
191
|
@dataclass
|
|
138
192
|
class DynamicMemorySimulator(PyQrackSimulatorBase):
|
|
139
|
-
"""
|
|
193
|
+
"""
|
|
194
|
+
|
|
195
|
+
PyQrack simulator device with dynamic qubit allocation.
|
|
196
|
+
|
|
197
|
+
This can be used to simulate kernels where the number of qubits is not known
|
|
198
|
+
ahead of time.
|
|
199
|
+
|
|
200
|
+
## Usage examples
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
# Define a kernel
|
|
204
|
+
@qasm2.main
|
|
205
|
+
def main():
|
|
206
|
+
q = qasm2.qreg(2)
|
|
207
|
+
c = qasm2.creg(2)
|
|
208
|
+
|
|
209
|
+
qasm2.h(q[0])
|
|
210
|
+
qasm2.cx(q[0], q[1])
|
|
211
|
+
|
|
212
|
+
qasm2.measure(q, c)
|
|
213
|
+
return q
|
|
214
|
+
|
|
215
|
+
# Create the simulator object
|
|
216
|
+
sim = DynamicMemorySimulator()
|
|
217
|
+
|
|
218
|
+
# Execute the kernel
|
|
219
|
+
qubits = sim.run(main)
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
You can also obtain other information from it, such as the state vector:
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
ket = sim.state_vector(main)
|
|
226
|
+
|
|
227
|
+
from pyqrack.pauli import Pauli
|
|
228
|
+
expectation_vals = sim.pauli_expectation([Pauli.PauliX, Pauli.PauliI], qubits)
|
|
229
|
+
|
|
230
|
+
"""
|
|
140
231
|
|
|
141
232
|
def task(
|
|
142
233
|
self,
|
|
@@ -144,23 +235,22 @@ class DynamicMemorySimulator(PyQrackSimulatorBase):
|
|
|
144
235
|
args: tuple[Any, ...] = (),
|
|
145
236
|
kwargs: dict[str, Any] | None = None,
|
|
146
237
|
):
|
|
238
|
+
"""
|
|
239
|
+
Args:
|
|
240
|
+
kernel (ir.Method):
|
|
241
|
+
The kernel method to run.
|
|
242
|
+
args (tuple[Any, ...]):
|
|
243
|
+
Positional arguments to pass to the kernel method.
|
|
244
|
+
kwargs (dict[str, Any] | None):
|
|
245
|
+
Keyword arguments to pass to the kernel method.
|
|
246
|
+
|
|
247
|
+
Returns:
|
|
248
|
+
PyQrackSimulatorTask:
|
|
249
|
+
The task object used to track execution.
|
|
250
|
+
|
|
251
|
+
"""
|
|
147
252
|
if kwargs is None:
|
|
148
253
|
kwargs = {}
|
|
149
254
|
|
|
150
255
|
memory = DynamicMemory(self.options.copy())
|
|
151
256
|
return self.new_task(kernel, args, kwargs, memory)
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
def test():
|
|
155
|
-
from bloqade.qasm2 import extended
|
|
156
|
-
|
|
157
|
-
@extended
|
|
158
|
-
def main():
|
|
159
|
-
return 1
|
|
160
|
-
|
|
161
|
-
@extended
|
|
162
|
-
def obs(result: int) -> int:
|
|
163
|
-
return result
|
|
164
|
-
|
|
165
|
-
res = DynamicMemorySimulator().task(main)
|
|
166
|
-
return res.run()
|
|
@@ -21,6 +21,34 @@ class NoisePass(Pass):
|
|
|
21
21
|
NOTE: This pass is not guaranteed to be supported long-term in bloqade. We will be
|
|
22
22
|
moving towards a more general approach to noise modeling in the future.
|
|
23
23
|
|
|
24
|
+
## Usage examples
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
from bloqade import qasm2
|
|
28
|
+
from bloqade.noise import native
|
|
29
|
+
from bloqade.qasm2.passes.noise import NoisePass
|
|
30
|
+
|
|
31
|
+
noise_main = qasm2.extended.add(native.dialect)
|
|
32
|
+
|
|
33
|
+
@noise_main
|
|
34
|
+
def main():
|
|
35
|
+
q = qasm2.qreg(2)
|
|
36
|
+
qasm2.h(q[0])
|
|
37
|
+
qasm2.cx(q[0], q[1])
|
|
38
|
+
return q
|
|
39
|
+
|
|
40
|
+
# simple IR without any nosie
|
|
41
|
+
main.print()
|
|
42
|
+
|
|
43
|
+
noise_pass = NoisePass(noise_main)
|
|
44
|
+
|
|
45
|
+
# rewrite stuff in-place
|
|
46
|
+
noise_pass.unsafe_run(main)
|
|
47
|
+
|
|
48
|
+
# now, we do have noise channels in the IR
|
|
49
|
+
main.print()
|
|
50
|
+
```
|
|
51
|
+
|
|
24
52
|
"""
|
|
25
53
|
|
|
26
54
|
noise_model: native.MoveNoiseModelABC = field(
|
|
@@ -96,7 +96,7 @@ wheels = [
|
|
|
96
96
|
|
|
97
97
|
[[package]]
|
|
98
98
|
name = "bloqade-circuit"
|
|
99
|
-
version = "0.2.
|
|
99
|
+
version = "0.2.3"
|
|
100
100
|
source = { editable = "." }
|
|
101
101
|
dependencies = [
|
|
102
102
|
{ name = "kirin-toolchain" },
|
|
@@ -1551,9 +1551,9 @@ wheels = [
|
|
|
1551
1551
|
|
|
1552
1552
|
[[package]]
|
|
1553
1553
|
name = "pyqrack-cuda"
|
|
1554
|
-
version = "1.
|
|
1554
|
+
version = "1.42.2"
|
|
1555
1555
|
source = { registry = "https://pypi.org/simple" }
|
|
1556
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1556
|
+
sdist = { url = "https://files.pythonhosted.org/packages/bd/3f/2581c3d74f944f38c2b22723c75abfee775e9766f45bd191463abdcbd08e/pyqrack_cuda-1.42.2.tar.gz", hash = "sha256:2033f6f47d23e567045ada8a979bdbf7f95bd46cda856077f61e39af5fa9b2a8", size = 38222 }
|
|
1557
1557
|
|
|
1558
1558
|
[[package]]
|
|
1559
1559
|
name = "pyqt5"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/core/_typeinfer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/dialects/expr/_from_python.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/heuristic_noise.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/parallel_to_uop.py
RENAMED
|
File without changes
|
|
File without changes
|
{bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/qasm2/rewrite/uop_to_parallel.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/analysis/nsites/__init__.py
RENAMED
|
File without changes
|
{bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/analysis/nsites/analysis.py
RENAMED
|
File without changes
|
|
File without changes
|
{bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/analysis/nsites/lattice.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bloqade_circuit-0.2.2 → bloqade_circuit-0.2.3}/src/bloqade/squin/rewrite/measure_desugar.py
RENAMED
|
File without changes
|
|
File without changes
|