Releases: sandialabs/pyGSTi
v0.9.13.1
Minor release with the addition of parity benchmarking, wildcard for instruments, and many bugfixes. This also includes several package configuration and GitHub runner changes; notably, a change in supported Python versions from 3.8 - 3.11 to 3.9 - 3.12, tracking the EOL of Python 3.3.
Added
- Wildcard support for instruments (#463, #527)
- Parity benchmarking protocol (#532)
- RNG seeding for BinaryRBDesign (#546, #547)
Fixed
- Germ selection with ComposedOp (#481)
- Basis cast in report error generator projection (#455)
- Germ selection circuit line labels (#507, #540)
- NumPy 2.2 deprecation fix (#514)
- Various unit test fixes (#519, #530)
- Plotly 0.6 API changes in reports (#533)
- DataSet outcome label misordering with add_count_list (#535, #536)
- Guard for fastcalc causing ImportError (#540, #541)
- Per-germ global FPR simulator properly set (#545)
Changed
- Simplify the TimeIndependentMDCObjectiveFunction class (#515)
- Package configuration updates (#530)
- Name from pyGSTi to pygsti for PEP 625 compliance
- Configuration migrated mostly from setup.py to pyproject.toml
- Python versions bumped from 3.8 - 3.11 to 3.9 - 3.12
- setuptools_scm updates more verbose version names for local/editable installs
Contributors
@sserita, @enielse, @coreyostrove, and @rileyjmurray want to thank @eendebakpt and @pcwysoc for their continued contributions.
Full Changelog: v0.9.13...v0.9.13.1
Version 0.9.13
Notable changes include the implementation of the interleaved RB (IRB) protocol, a new PyTorch forward simulator, minor IBMQ updates, significant performance and code maintenance changes, and more (including the usual bugfixes and minor updates).
BLUF for performance results: Thanks to @coreyostrove's herculean efforts, we expect end-to-end 2Q GST runs to be 6x faster with default settings compared to previous versions of pyGSTi.
Added
- PyTorch-backed forward simulation (#390)
- Support for ECR gates in QASM translation (#440, #457)
- Interleaved RB (#296, #468)
- Pared-down Levenberg-Marquardt for nonlinear least-squares (#500)
- Fisher information for quantum instruments (#464, #503)
- Wildcard and Hessians for non-ExplicitOpModels (#511)
Fixed
- Kraus operator decomposition with degenerate Choi matrix bugfix (#423)
- NumPy improvements and fixes (#430, #431, #451, #458, #470, #518)
- Model parameter desync bugfix (#456, #482)
- FOGI parameter label accumulation bugfix (#486, #488)
- Guarding
signal
to allow PyGSTi usage with Dask (#489) - Docstring escape and mismatch bugfixes (#502, #504)
- CPTP deserialization sign flip bugfix (#341, #509)
- LindbladErrorgen Hessian with dense representation bugfix (#512)
- Test file updates (#510)
- ProcessorSpec state space label bugfix (#474, #521)
Changed
- Circuit primitive performance upgrades (#445)
- Refactors for matrixtools.py and the Basis class (#429, #442, #493)
- Layout and MDCStore creation performance upgrades (#448)
- Major 2Q GST performance improvements (#496, #517)
Deprecated
- We are deprecating the CVXOPT backend for CVXPY in favor of Clarabel (#437). Although pyGSTi will not warn you if you continue to use the CVXOPT backend, this change will occur with no additional warning in a future release.
- We are also deprecating the
DenseOperatorInterface
. This interface previously allowed for interacting with certain classes of densely parameterized states and operations as if they were numpy ndarrays. In a future minor release we will add deprecation warnings indicating the future removal, and we will be targeting full removal in version 0.9.14. See #447 for more.
Removed
- Removed explicit dependency on CVXOPT for wildcard optimization (#444)
- Removed deprecated QIBO interface (#262, #490)
- Large "spring cleaning" of unused/commented out code (#424, #452)
Spring Cleaning Notes
Some of the code removed in the "spring cleaning" were features that we may want to revisit in the future. We flag some of the more likely features that we may want to revive in the future here (potentially even just as unit tests for the current/more sophisticated versions of code with the same functionality):
- Original versions of the RB mirroring, random circuit generation, fitting, and plotting code
- A reference Polynomial class (to be turned into a unit test)
- Tensor product state representations for the CHP evotype
- Dense POVM effect representations
- Non-static marginalized POVMs
- TermForwardSimulator cache generation code for modelpacks
- Experimental optimizer implementations
- Volumetric benchmarking grids
A big thank you to @rileyjmurray for spearheading this effort!
Contributors
@sserita, @enielse, @coreyostrove, and @rileyjmurray want to thank @eendebakpt for their continued bug reporting/fixing efforts and @pcwysoc, @adhumu, @tjproct, and @jordanh6 for their roles as code owners.
Full Changelog: v0.9.12.3...v0.9.13
v0.9.12.3
Hotfix for no Cython installations using the densitymx_slow
evotype and some RB bugfixes/feature updates.
Added
- Deterministic Clifford compilation and native gate count statistics for
CliffordRBDesign
(#314, #315, #443)
Fixed
- Truncation bugfix in
BenchmarkingDesign
objects with "paired" lists tocircuit_list
attribute (#408, #443) - Fixes and efficiency improvements for various linear algebra calls (#432)
densitymx_slow
evotype hotfix (#438, #439)
Contributors
@sserita, @enielse, @coreyostrove, and @rileyjmurray want to thank @tjproct and @pcwysoc for their efforts as code owners.
Full Changelog: v0.9.12.2...v0.9.12.3
Version 0.9.12.2
Minor bugfixes and updates, notably including Cirq integration and increased report capabilities.
Added
- Updated Cirq parsing capabilities (#411)
- Added ability for reports to use CircuitListDesigns and results without gauge optimizations (#412, #415)
- Indicator that figure/title headings can be clicked for expanded details (#416)
Fixed
- Several tutorial updates and fixes (#282, #317, #421)
- Fixed fiducial selection with wrong qubit labels (#396, #418)
- Casting operators to dense matrices to avoid type errors in
pygsti.tools.optools
(#406, #414) - Deprecations for NumPy 2.0 (#413)
- LGST fitting with sparse dataset (#420)
Changed
Contributors
@sserita, @enielse, @coreyostrove, and @rileyjmurray want to thank @eendebakpt and @Timo1104 for their contributions!
Full Changelog: v0.9.12.1...v0.9.12.2
Version 0.9.12.1
Notable changes include a new AffineShiftOp operation, a variety of tutorial updates, minor bugfixes, and new warning messages, and several changes to our GitHub workflows (including code owners and streamlined Actions pipelines).
Added
- Warnings for JupyterLab incompatibility (#328)
- Warning for modifying static DataSets (#340)
- Keyword argument to change ForwardSim types at Protocol runtime (#358)
- Flag to drop new
delay
instructions in QASM2 circuit output (#377) - Warning for non-TP gauge transformations on CPTPLND-parameterized objects (#378)
- Code owner assignments (#384)
- A new AffineShiftOp modelmember (#386)
Fixed
- Several tutorial updates and fixes (#247, #395)
- LGST fitting with various model parameterizations (#366)
- Deprecated convolve import in scipy 1.12 (#391, #392)
Changed
- Stricter enforcement of line labels when using "*" in circuits (#373)
- Reimplementation of ProtectedArray (#386)
- GitHub runner updates for faster runs on development branches (#388)
Contributors
@sserita, @enielse, and @coreyostrove want to thank @eendebakpt and @rileyjmurray for their contributions!
Full Changelog: v0.9.12...v0.9.12.1
Version 0.9.12
Notable changes include the release of the binary randomized benchmarking (BiRB) protocol, the deprecation of Qibo integration, and more (including the usual bugfixes and minor updates).
Notice of API clarifications: One of the goals of the pyGSTi team over the next few releases is to solidify a public/private API with the goal of moving towards a 1.0 release. This will start as simple tagging of the exposure level of different parts of the code and may eventually lead to restructuring/visibility changes for primarily internal parts of the code with minimal exposure. This process will be open to community feedback - if you notice comments in part of the code that indicate "minimal" exposure but you use frequently, please let us know! You can track the discussion on #354 and view current progress on #371.
Added
- Checkpointing for GST experiments (#347)
- Binary randomized benchmarking (BiRB) protocol (#348)
- Utility module for generating UML graphs of pyGSTi class inheritance structure (#353)
- Support for non-standard POVMs and qudits in write_empty_protocol_data (#370)
- Experimental support for updating model state spaces (#375)
Fixed
- Numpy deprecation warnings (#325)
- Updated deprecated code in the README (#325)
- Finish migration of tests to pytest (#344, #362)
- Bugfixes for instruments in pspecs (#349)
- Remove mutable defaults (#357)
- Reparameterize model member dicts with model (#365, #367)
- Compute product of editable circuit (#368)
- Error handling for single-parameter wildcard with no CVXPY (#375)
Changed
- Enhances EmbeddingOpFactory to be used to create target-qubit-dependent operation factories (#338)
- More efficient use of CVXPY when computing the diamond norm (#345)
- Improved (germ-aware) global fiducial pair reduction (#350)
- MPI-enabled Fisher information matrix calculation (#350)
- Report compatibility with the
MapForwardSimulator
(#350) - Introduced new
ExperimentDevice
inpygsti.extras.devices
as a replacement for (now legacy) device config files (#359) - Refactored and improved unit test performance (#372)
- Removed Python 3.7 support and added Python 3.11 support (#374)
Deprecated
- The
pygsti.algorithms.directx
module (as part of API clarifications, see #371) - The
qibo
evotype (#363)
Contributors
@sserita, @enielse, and @coreyostrove want to thank @eendebakpt, @rileyjmurray, @dhothem, and @jordanh6 for their contributions!
Full Changelog: v0.9.11.2...v0.9.12
Version 0.9.11.2
Bugfixes for 0.9.11
Fixed
- Fixed FAQ hyperlinks (#304)
- Removed deprecated functions for NumPy 1.25+ (#335)
- Fixed pickling of TPPOVM objects (#336)
- Updated the ReadTheDocs builds (#331)
- Fixed dataset pickling (#326)
- Removed deprecated functions for notebook 7+ (#337)
Changed
- Slight performance improvements for GST fitting (#305)
Version 0.9.11.1
Hotfix for 0.9.11 when installing without report-optional components
Fixed
- Guarded an optional markupsafe import for report generation
Version 0.9.11
Added
- WeakForwardSimulator class and Kraus operator representation to facilitate weak simulation via "unraveling" (#255)
- Experimental forward simulator interface with the qibo<=0.1.7 package (#257)
- Support for single-parameter wildcard models and serialization of wildcard models (#267)
- MongoDB serialization support (#276, #284)
- Modelpacks for Molmer-Sorenson gates (#281)
- Utility functions for mapping qubit labels and padding ExperimentDesigns (#283, #290)
- CI integration for example and tutorial Jupyter notebooks
Fixed
- Various fixes to enable forward simulation with CHP for many qubits (#241)
- Various fixes in report generation (#242)
- Various circuit mirroring fixes (#243)
- Various RNG seeding fixes (#246, #254)
- Various fixes for fiducial selection, germ selection, and fiducial pair reduction (#261, #292)
- Improved performance of entanglement fidelity calculations (#263)
- Various linear algebra routine exception handling fixes (#268)
- Various wildcard model fixes (#279, #294)
- Various NumPy deprecations and fixes for Windows (#285, #287, #288)
Changed
- Updates to first-order gauge-invariant (FOGI) model parameterizations (#258)
- Moved to jinja2>=3.0 (#259)
- Significant performance enhancements for fiducial selection, germ selection, and fiducial pair reduction (#270, #274, #280)
- Python 3.6 support dropped and 3.10 support added
- Testing framework moved from nose to pytest
Deprecated
- Serialization functions with prefix 'load_' are deprecated for 'read_' versions for consistency
Removed
- CHPForwardSimulator has been removed in favor of WeakForwardSimulator with 'chp' evotype
- install_locally.py script has been removed
Version 0.9.10.1
Adds a number of important updates and bug fixes, including:
- fixes Windows-specific problems related to 32- vs 64-bit integers.
- adds tools to estimating the wall time needed to execute an experiment design on a quantum processor.
- fixes issues with
extras.interpygate
so that germ selection works and the number of gauge parameters can be specified manually. - adds
"pad_1Q"
implicit idle mode, which pads empty space in a circuit with 1-qubit idle operations. - adds SPAM and instrument elements to processor specifications.
- adds
QuditProcessorSpec
object, so that processors containing multiple qudits can be readily modeled. - fixes bugs and adds functionality to first-order-gauge-invariant (FOGI) analysis routines.
- improves circuit simulation performance when using operation factories (e.g., for modeling continuously parameterized gates)
- revamps elementary error generator functionality to closely match arXiv:2103.01928, where there are H, S, C, and A type elementary generators.
- default gauge optimization workflow changed for Lindblad-constrained models: now these models are converted to TP and gauge optimized over the entire TP gauge group (unitary group optimization was seen to be problematic for Lindblad-constrained models).
- fixes a bug in Hessian projection that affects (and corrects) error bar computation.