Releases: sandialabs/pyGSTi
Version 0.9.10
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
andwrite
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 importCirq.TrialResult
objects, and supports usingcirq.WaitGate
within the conversion methodCircuit.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
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
A minor update. Makes a number of changes to extras targets in setup.py:
- Adds
no_mpi
target, which installs all extras except formpi4py
- Fixes a number of other (rarely used) install target names.
Version 0.9.9.1
A minor update which fixes some installation and compatibility issues. Namely:
- fixes bugs in setup scripts that resulted in
pip install
failing to copy some essential files and users getting a "missing replib" error when trying toimport pygsti
. - fixes compatibility issues with the more recent Numpy versions that caused
flags.writeable
errors when using MPI (see issue 119). - fixes compatibility issues with the recently released
msgpack
package version 1.0 (and higher).
Version 0.9.9
A significant update that adds, primarily, a high-level API for running protocols on quantum processors. Here's a list of the main changes and enhancements:
- adds a new API which centers around
Protocol
objects, and makes it easier to run one or multiple protocols on a many-qubit quantum processor. See the new00-Protocols.ipynb
tutorial for more details. - more gauge-invariant metrics are available within reports.
- new benchmarking protocols, including volumetric benchmarks and mirror randomized-benchmarking.
- improvements to multi-qubit GST capabilities.
- performance improvements, particularly in the area of working with large data-sets.
- HTML reports have been updated to by default use a new AJAX-free framework that eliminates many of the browser compatibility problems that users experienced in the past.
- Python version 2 support has been dropped. Python 3.5 and higher are now the only python versions pyGSTi officially supports.
- the root package directory has been updated for greater simplicity and standardization with other packages. If you "install" new pyGSTi versions by running "git pull", you'll also need to run
pip -e install .
again or you'll get a warning message the pyGSTi cannot be found.
Version 0.9.8.3
HOTFIX
This patch includes a number of minor bug fixes:
- Fixed the issue of weird
('*',)
line labels in circuit construction routines when used with multi-qubit notation circuits, e.g.(0,)
-labeled circuits getting erroneous('*',0)
-labeled circuits created. - Fixed bug in
optools.fidelity
for special case of trace-reducing rank-1 ops. - Now handling
sqrtm
failure inoptools._hack_sqrt
as a warning instead of assertion error.
Version 0.9.8.2
HOTFIX
This patch adds compensation for a scaling factor in matrixtools.unitary_superoperator_matrix_log
which would cause an assertion to fail in some circumstances.
See #87
Version 0.9.8.1
As of this version, pyGSTi is distributed with the Apache License version 2.0, included in LICENSE
.
Version 0.9.8
A significant update which adds a number of new capabilities making pyGSTi a more general characterization package. The main updates are:
- revamped drift detection code
- expanded
Circuit
objects can include arguments and time durations. - framework for time-dependent models and continuously-parameterized gates.
- expanded ability to create implicit models (local- and cloud-noise models) makes this process easier and more intuitive. Related to this, the error generators of
LindbladOp
objects can more easily be constructed and modified. - added support for simple Pauli-stochastic noise operators.
- more robust support for different bases (adds a new hierarchy of basis objects).
- updated documentation and bug fixes
- new tutorials for:
- idle tomgraphy
- drift characterization
- time-dependent GST
- simulating RB data
- continuously-parameterized gates
- building implicit models (updated with crosstalk-free and cloud-crosstalk constructions)
Version 0.9.7.5
HOTFIX
This version just adds the package pygsti.extras.idletomography
which was missing from setup.py
.
See #68