Skip to content

Releases: sandialabs/pyGSTi

Version 0.9.12.2

16 Apr 19:53
Compare
Choose a tag to compare

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

  • Increased the speed of unit/integration tests in GitHub Actions (#380, #403)

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

07 Feb 23:16
Compare
Choose a tag to compare

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

29 Nov 03:05
Compare
Choose a tag to compare

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 in pygsti.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

11 Aug 20:16
Compare
Choose a tag to compare

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

26 May 17:57
Compare
Choose a tag to compare

Hotfix for 0.9.11 when installing without report-optional components

Fixed

  • Guarded an optional markupsafe import for report generation

Version 0.9.11

17 May 06:33
Compare
Choose a tag to compare

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

16 Mar 16:00
Compare
Choose a tag to compare

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.

Version 0.9.10

04 Oct 04:39
Compare
Choose a tag to compare

A significant update, which primarily updates the package’s API to become more consistent, uniform, and following PEP8 style guidance. This unfortunately breaks backward compatibility with previous releases, but brings the package substantially closer to the future version 1.0 when the API will be stabilized. Most of the changes needed to update existing scripts should be straightforward, as names themselves are similar (though their location within the package may have changed) and now conform, for the most part, to the PEP8 style. Updated documentation and tutorials can also provide help to users seeking to update code that uses version 0.9.9.3 and lower. Note that pickle files are not compatible between any prior version of pyGSTi and this one (though most dataset files are). In addition to the many name and sub-package location updates, additional functionality has been added. The major updates are:

  • Enhancements to model creation routines. ProcessorSpec objects now play a central role, as they define the API of a quantum processor. Processor specification objects are used to construct models and experiment designs. Model construction routines have been revamped, and allow noise to be more easily added to models. The construction of different model types (explicit, local, or cloud-noise) is much more unified by construction routines having similar argument lists and behaviors. The use of “implied idle” gates in models and circuits cleaner and simpler to understand.

  • Model parameterization is more transparent. Known how a model is parameterized is easier thanks to the ability to label parameters and print them out more straightforwardly. More sophisticated parameterization is possible by “collecting” parameters or by constructing models from the ground up. The parameter allocation framework is updated to be more robust. (For example model members don’t need to be added to models before their number of parameters can be queried.) When testing models, the number of parameters of the model can be specified manually, using the new num_modeltest_params attribute.

  • Adds a new interface for external circuit simulators. This should allow pyGSTi to provide access to more powerful circuit simulation algorithms in the future. In this release, the interface has been used to incorporate the CHP Clifford-circuit simulator as an option. This update was made possible through an extensive refactoring and development “evolution types” in pyGSTi, which are also simpler to use now.

  • Improves randomized and volumetric benchmarks. Increased incorporation of Pandas dataframes makes analysis of data from multiple benchmarking experiments possible.

  • Adds support for distributed and shared memory.. This more efficiently splits many computations among multiple processors, avoiding the need to gather memory to a single processor and thereby reducing the memory requirement by a factor of up to the processor count. This update also allows pyGSTi to take advantage of the fact that multiple cores on a single machine (node) can share memory. The new implementation automatically detects when processors can share memory and utilizes this feature by default, avoiding copying in favor of access to shared memory.

  • Adds ability to serialize (read from & write to disk) most of pyGSTi’s object types using a robust and JSON-compatible format. Most objects now possess read and write methods for this purpose. This, by design, largely obviates the need to store data in Python pickle files, which are both fragile and pose security risks.

  • Adds a new flexible type of data set (FreeformDataset) and simulator (FreeformSimulator) objects that allow arbitrary data to be computed for and associated with circuits.

  • Adds a means of directly running experiments on IBMQ hardware when provided with proper credentials (see the pygsti.extras.ibmq package).

  • Improves and expands the interface with Google’s Cirq package. The new DataSet.add_cirq_trial_result method can be used to import Cirq.TrialResult objects, and supports using cirq.WaitGate within the conversion method Circuit.convert_to_cirq.

  • Adds initial support interpolating the results of computationally intensive physics simulations to create and optimize “physical models”. This functionality exists in pygsti.extras.interpygate.

  • Add the ability to place simple bounds on a model’s parameters when it is optimized. This is particularly relevant for restricting the aforementioned “physical models” to the region where their interpolation is valid.

  • Updates wildcard error computations, adding options and more robust optimization methods.

  • Adds additional support for fitting data to time-dependent models (time dependent gate set tomography).

  • Fixes many bugs and addresses or resolves many issues.

Last but not least, the package’s deployment process has updated from providing only a source distribution (requiring users to compile the C-extensions on their own if they wanted to use them) to building wheels for several common platforms and python versions. This update should save many users time and effort installing pyGSTi.

Version 0.9.9.3

23 Sep 21:31
Compare
Choose a tag to compare

Fixes a bug affecting the generation of drift reports.

The creation of drift reports, via pygsti.report.construct_drift_report, previously failed when the preparation and measurement fiducials were different. This minor version remedies this issue.

Version 0.9.9.2

02 Jun 23:16
Compare
Choose a tag to compare

A minor update. Makes a number of changes to extras targets in setup.py:

  • Adds no_mpi target, which installs all extras except for mpi4py
  • Fixes a number of other (rarely used) install target names.