True-Q™ Changelog¶
All notable changes to True-Q™ will be documented in this file.
[2.8.4] - 2021-01-12¶
Added¶
Added the method
trueq.KeySet.table()
for organizing keys.Added
trueq.Compiler.from_config()
.Added
trueq.Compiler.basic()
.
Changed¶
Made
trueq.compilation.Compiler
accessible attrueq.Compiler
.Moved
trueq.compilation.DEFAULT_PASSES
totrueq.Compiler.DEFAULT_PASSES
.Compiler passes no longer accept
Config
objects, and instead accept lists ofGateFactory
s.trueq.compilation.Native1Q
andtrueq.compilation.Native1QMode
now accept the kwargmode
.Cycles
loaded fromtrueq<=2.8.0
will have theirimmutable
flag converted to anint
and assigned tomarker
.Slices of
trueq.CircuitCollection
will return new circuit collections rather than lists.
Fixed¶
Fixed an edge case in KAK decomposition caused by numerical instabilities.
[2.8.3] - 2021-01-06¶
Fixed¶
Fixed an edge case in
trueq.randomly_compile()
that occurs when using a non-Pauli twirl and a circuit containing more than one consecutive cycle with equal markers.Fixed a bug in the Qiskit
Executor
interface enabling support for the new IBMQ hardware gateset.
[2.8.2] - 2021-01-05¶
Added¶
Added
Match
and child classes which define rules for conditional simulator noise.Added
NoiseSource
and child classes, which abstract the notion of a noise source during simulation.Added
trueq.CircuitCollection.shuffle()
.Added several
trueq.visualization.Graph.ibmq_*()
methods for creating predefined graphs based on IBMQ devices.Added
trueq.math.Superop.*_subsys()
methods for subsystem-wise row-stacking.Added support for glob wildcards in
trueq.load()
.Added support for Qiskit version
0.23.2
.
Fixed¶
Fixed a bug in
trueq.Circuit()
andtrueq.Circuit.results
that allowed adding results to empty circuits.
Changed¶
Updated the minimum required
Microsoft Visual C++ 2015-2019 Redistributable (x64)
version for Windows to14.27.29334
.Replaced
noisy_gates
andnoisy_labels
arguments in thetrueq.Simulator.add_*
methods with thematch
argument.
[2.8.1] - 2020-12-09¶
Changed¶
The
Pattern
class was renamed toPass
with specializationsMarkerPass
andNCyclePass
.Randomized Compiling now supports twirling sets of cycles at once, in addition to individual cycles.
OperationPattern
was renamed toOperationReplacement
.
Fixed¶
NativeGates
whose parameters appear to be integer-like are now rounded.
Removed¶
Removed support for reverse traversal and repeated traversal by the compiler and its passes.
[2.8.0] - 2020-11-17¶
Added¶
Added a twirling group,
"C1"
, to conveniently initializetrueq.Twirl
with single-qubit Cliffords, regardless whether or not the cycle or labels contain multi-qubit gates.Added
trueq.visualization.Graph.sycamore()
for making diagonal grid layouts.Added
mapping
argument totrueq.visualization.Graph
along with the methodsto_label()
andfrom_label()
for converting and displaying different label systems by a new allowed value to the optionshow_labels
.Added
trueq.utils.multiply_pauli_str()
function.Added
trueq.compilation.RCCycle
andtrueq.compilation.CompilePaulis
compiler passes.Added
marker
totrueq.Cycle
, and themarker
kwarg to its constructor.Added
MarkCycles
compiler pattern that marks cycles which contain multi-qubit gates if all of the existing cycles in the circuit have the default marker0
.Added
Gate.rx()
,Gate.ry()
,Gate.rz()
, andGate.rp()
for creating gates which are Pauli rotations.Added
trueq.math.QubitMode.ZYZYZ
to the set of known single qubit decompositions.Added string representations of
EstimateCollection
andEstimate
subtypes,NormalEstimate
andRCalEstimate
.Added
trueq.utils.parallel_map()
.Added
max_workers
argument totrueq.Simulator.run()
for parallelization over circuits.
Changed¶
Renamed
"SU"
twirling group to"U"
intrueq.Twirl
.Changed the kwarg of
trueq.Results.plot()
fromsparse
tosparse_cutoff
.Moved
trueq.config.rotation
totrueq.math.rotation
.Bumped the required NumPy version to
1.18.0
.Changed
trueq.Cycle
so that instances are always immutableCompilation tools may only recompile a list of cycles with equal markers.
The compiler passes
RemoveEmptyCycle
,RemoveId
,Merge
,Justify
had their kwargs modified to use themarker
keyword.Removed
name
from theConfig
object, along with all references to it inGateFactory
andNativeGate
.Renamed several methods of
Config
, specificallyConfig.__init__
becameConfig.from_yaml
,Config.from_params
is nowConfig.__init__
, andConfig.make_config
is nowConfig.from_parameterized
. Deprecation warnings have been added to the old functions and they will be removed after version2.9.0
.Methods that generate benchmarking circuits will no longer throw an error when
propagate_correction=True
and the last cycle cannot be factored. Beware that this can result circuits whose last cycle has gates acting on more than two qubits.Improved speed of the simulator.
Improved speed of the compiler.
Deprecated¶
Deprecated
Config.from_params()
andConfig.make_config()
; they will be removed after version2.9.0
.
Fixed¶
Fixed an edge-case bug in
trueq.compiler.PhaseTrack
.Fixed overlapping plot labels in
trueq.Results.plot()
.Improved the default cutoff of
trueq.Results.plot()
when shown in sparse mode.Adjusted
Native2QKAK
numerical precision so that certain gates are correctly identified as identical. Before, in very specific instances, this lead to additional unnecessary two-qubit gates.Fixed a bug in
trueq.compiler.Merge
which would result in a sub-optimal gate count in rare scenarios.
Removed¶
The
compress
kwarg was removed fromtrueq.randomly_compile()
.Removed
add()
,immutable
, andpop()
fromtrueq.Cycle
, along with the constructor’s immutable kwarg (replaced bymarker
).Removed
trueq.math.QubitMode.frame_change
.Removed deprecated
trueq.Circuit.add_cycle()
, which was renamed totrueq.Circuit.append()
.Removed deprecated
trueq.make_readout_calibration()
, which was renamed totrueq.make_rcal()
.
[2.7.6] - 2020-10-21¶
Added¶
Added the following attributes and methods to
trueq.math.Superop
:adj
,avg_gate_fidelity
,avg_gate_infidelity
,coherent_infidelity
,fidelity
,infidelity
,norm
,dnorm
,stochastic_infidelity
,unitary_fraction
, andunitarity
.Added a new
compiled_pauli
flag to control or specify which Paulis are compiled at the end of the circuits generated by benchmarking protocols (default isTrue
).
Changed¶
Changed the default
rank
oftrueq.math.random_bcsz()
todim ** 2
.
Fixed¶
Fixed the plotting extents in
raw()
plotter.Qiskit version
0.23
is now supported. Due to upstream changes, conversion to thecz
gate is only supported from Qiskit version0.23
or greater, versions below this will raise a warning on import.
[2.7.5] - 2020-10-15¶
Added¶
Added a
BadModule
class that raises anImportError
when an optional module that is called is either outdated or not installed.Added the option
include_final_virtual
to thePhaseTrack
compiler pattern.Added
ZYZ
to knowntrueq.math.QubitMode
single qubit decompositions.Added a new
Twirl
class to streamline management of twirling groups in generation and analysis.Added
trueq.math.random_bcsz()
function to generate random CPTP superoperators.Added
trueq.estimates.RCalEstimate.apply_correction()
for directly correcting bitstring distributions by readout calibration matrices.Added
Simulator.predict_*()
methods to estimate the outcomes of protocols without simulating their circuit collections.Added
labels
option to thetrueq.math.Tensor.mat()
method.Added the method
trueq.math.Tensor.apply_to_all()
.
Changed¶
Updated the minimum required
Microsoft Visual C++ 2015-2019 Redistributable (x64)
version for Windows to14.27.29112
.Renamed the
twirling_group
argument ofmake_*()
andrandomly_compile_qiskit()
functions totwirl
.Moved
random_density()
andrandom_unitary()
fromtrueq.math.general
to new moduletrueq.math.random
.trueq.math.Tensor.marginalize()
now accepts the labels to keep, rather than those to remove.Switched to a slightly more accurate estimate of
e_S
in XRB.Updated documentation.
Fixed¶
Fixed a bug in
trueq.math.Superop.is_tp
.Fixed a transpose bug in the HTML display of
trueq.Gate
.
Removed¶
Removed
trueq.utils.auto_twirl()
,trueq.utils.pretty_twirl()
, andtrueq.utils.twirls_equal()
.
[2.7.4] - 2020-09-11¶
Added¶
Added conversion functions to/from
true.math.Superop
from/toqutip.Qobj
.
Changed¶
GateFactory
was refactored to be represented as a sequence of static and single-parameter rotations called layers. The abstract classLayer
was added with childrenRotation
(fast matrix exponentiation of a generator matrix times a free parameter) andFixedRotation
(a fixed unitary).Renamed
GateFactory.dim
toGateFactory.width
for consistency withGate.width
.Renamed
GateFactory.get_gate()
toGateFactory.make_gate()
.
Removed¶
trueq.math.QubitMode.validate_factories
was removed and its logic moved directly into decomposition patterns in the compiler.Removed
GateFactory.find_closest()
.
Fixed¶
Native2QKAK
now correctly decomposes tensor products of single qubit gates.Circuit.draw()
now displays parameters inNativeGate
popups.
[2.7.3] - 2020-08-25¶
Added¶
Updated documentation.
Changed¶
The process infidelity estimate name was renamed from
e_P
toe_F
.QASM and Cirq conversion now use gate labels as they appear in circuits, instead of mapping ordered labels to
0, 1, ..., n_qubits-1
.
[2.7.2] - 2020-08-18¶
Added¶
Added a number of new compiler patterns,
Parallel
,TryInOrder
,RemoveEmptyCycle
,NativeExact
,Native1QUGates
,Native1QRRZ
,Native1QMode
,Native2QCX
,Native2QFastDecomp
,Native2QKAK
. Many of these are the result of splitting the previousNative1Q
, andNative2Q
into individual components.Added
trueq.compilation.base.OperationPattern
which is essentially aPattern
which only performs calculations on individual operations, not full cycles.Added a fallback method to grab versions of optional imports.
Changed¶
Significant refactor of one and two qubit compilation tools, increasing the customizability of the compiler. Specifically one and two qubit decompositions were broken up into a number of separate compiler patterns. Default compiler options should result in identical outcomes to the previous defaults in the majority of cases.
Contents of
trueq.compilation.compiler
moved totrueq.compilation.base
.
Fixed¶
Fixed an edge case in compilation where circuits may have been over-simplified in rare instances for some diagnostic protocols.
Updated
trueq.interface.qiskit.Executor
to work with Qiskit version0.20.0
.Fixed
trueq.Circuit.results
setter to maintainlast_modified
attribute.
[2.7.1] - 2020-08-07¶
Added¶
Added the method
trueq.EstimateCollection.update_keys()
.Added the method
trueq.EstimateCollection.values()
for extracting values of the same name across estimates.Added subplot titles to
compare()
plotter.
Changed¶
Simplified and unified arguments of
trueq.Key.copy()
,trueq.KeySet.copy()
,trueq.CircuitCollection.update_keys()
.
Fixed¶
Fixed bug in
trueq.KeySet.similar_keys()
wheninvert=True
and not all keys have all names in common.Fixed a bug in
raw()
plotter when data are ragged.Removed empty subplots that sometimes occur in
compare()
plotter.Fixed a bug in the calculation of upper and lower bounds of
e_P
in IRB.Fixed a bug in the variance calculation for
e_S
in XRB.
[2.7.0] - 2020-07-23¶
Added¶
Added Python dependency
mako>=1.1.2
to the requirements.Added
trueq.Circuit.draw()
function which generates an interactive SVG representation of the circuit which has been tested in all major browsers.Calling
trueq.CircuitCollection.fit()
on circuit collections with readout calibration circuits now returns the estimated single qubit confusion matrix for each qubit. These are automatically applied in fits of protocols to correct for readout errors in a scalable manner.Added
trueq.Descriptions
which provides text descriptions of all parameters returned from fitting the various protocols which True-Q™ provides.Added
trueq.Simulator.sample
to sample from the output distribution without updating the results of the circuit.Added
trueq.Circuit.to_qasm
to convert a circuit into an openQASM 2.0 representation. Non-standard QASM may also be used, and additional documentation may be found intrueq.interface.QASM
.Added a new plotter
compare_pauli_infidelities()
.Added an optional
targeted_errors
parameter totrueq.make_cb()
that replaces the functionality oftrueq.make_tnr()
.
Changed¶
Analysis underwent a significant re-write, which dramatically decreased analysis times. As a part of this rewrite
trueq.parameters
and all subclasses were removed, and in their placetrueq.estimate
and all subclasses will be used to return information from fits. The interface for fitting has changed slightly, with an emphasis now placed on subsetting circuit collections before calling fit. Analysis and plotting of KNR data now correctly handles degeneracies present in some fits.Increased IPython HTML support with more interactivity in both Jupyter or Colab.
Plotting of KNR data was changed,
nr_cmap
andnr_bar
were removed in favor ofknr_heatmap
which has improved functionality overnr_cmap
.Updated and improved the documentation.
Moved
trueq.config.make_config()
to be a static method oftrueq.Config
.Improved the fitting technique for XRB data.
Merged
trueq.assessments
intotrueq.protocols
and added the functions within into the main namespace for convenience.Reduced arguments to
make_crosstalk_diagnostics
for simplicity.trueq.Config
andtrueq.config.GateFactory
now preserve capitalization of names.Order of parameters can now be optionally specified in
trueq.config.GateFactory
.trueq.CircuitCollection.update_keys()
now returns itself for convenience.Changed
trueq.Cycle.operators
totrueq.Cycle.operations
andtruq.Cycle.n_operators
totruq.Cycle.n_operations
for consistency.Changed
trueq.utils.load()
to optionally accept a list of saved True-Q™ object files and combine them into a single collection.Renamed
trueq.make_readout_calibration()
totrueq.make_rcal()
.Renamed
trueq.Circuit.add_cycle()
totrueq.Circuit.append()
with additional functionality.The
append()
method oftrueq.Circuit
,trueq.CircuitCollection
, andtrueq.EstimateCollection
are all now aliased to+=
.Split
comparison()
plotter intocompare()
andcompare_twirl()
.Renamed
infidelity_comparison()
plotter tocompare_rb()
.
Fixed¶
trueq.Simulator.run
no longer fails when asked to measure a strict subset of the qubits addressed by a circuit.Fixed bugs in
trueq.Gate.is_identity
andtrueq.Gate.is_unitary
for non-unitary matrices.Fixed a bug in
setup.py
that broke the installer on a machine without Git.Updated
trueq.interface.cirq
to match upstream changes when converting measurements.
Removed¶
trueq.Circuit.expectation_values()
was removed.trueq.CircuitCollection.plot.incoherence()
was removed.trueq.Gate
no longer accepts dictionary instantiation.trueq.KeyMap
was removed.trueq.make_tnr()
was removed and its functionality was incorporated intotrueq.make_cb()
.trueq.parameters
and all subclasses were removed.trueq.protocols.CircuitAggregator
was removed.trueq.protocols.QueueBackend
was removed.
[2.6.13] - 2020-06-05¶
Added¶
Added
trueq.Config.basic
as a way to construct a simpleConfig
object.Added
trueq.Simulator.add_relaxation
as a way to add relaxation errors to the simulator.Added helper functions
trueq.utils.auto_twirl()
andtrueq.backend.api.random_twirl()
.
Fixed¶
trueq.utils.optional_import
now handles edge cases wheresetup.py
of a package is incorrectly configured.Fixed a bug in
Simulator.run()
in the case where a measurement error is defined (e.g. viaSimulator.add_readout_error()
) on a qubit not appearing in a circuit.Added
trueq.Results
to API documentation.Fixed a shape bug in
trueq.math.tensor.OperatorTensor.upgrade()
.
Removed¶
Removed
get_cur_mem()
,get_max_mem()
, andset_max_mem()
fromtrueq.backend.api
.
[2.6.12] - 2020-05-08¶
Added¶
Added
trueq.visualization.Graph
for embedding device topology graphs in figures.
Changed¶
Bumped required Cirq version to
0.7.0
and made compatible with version0.8.0
.
[2.6.11] - 2020-05-01¶
Added¶
Updated documentation.
Changed¶
Changed the sort order of cycles; gate count at each size is now most important.
trueq.compilation.Merge
no longer removes identity gates.Changed Qiskit required version to
>=0.19
due to upstream changes.
Fixed¶
Fixed a bug in conversion to the Cirq
PhasedXPow
gate.
[2.6.10] - 2020-04-28¶
Added¶
Added
abs_max
option totrueq.visualization.plot_mat()
(and other functions which call this plotter) which sets the opacity scale of colors.Added
trueq.compilation.DecomposeRRZ
, a compilation pattern to decompose single qubit gates into 2R(a) = Z(a)X(90)Z(-a)
gates and 1 finalZ(t)
gate.Added support for the
PhasedXPow
gate to the Cirq interface.
[2.6.9] - 2020-04-13¶
Added¶
Added
trueq.compilation.InvolvingRestrictions
pattern which enforces involving restrictions as defined in a config through a greedy algorithm.
Fixed¶
Fixed a bug in
trueq.Cycle.__getitem__()
in the presence of a single-qubit block.
[2.6.8] - 2020-04-09¶
Added¶
Added an inequality comparison operator to
trueq.Cycle
.Updated documentation.
Fixed¶
Switched deprecated SciPy functions to their NumPy equivalents.
[2.6.7] - 2020-04-06¶
Added¶
Added the method
trueq.Results.plot()
that makes a bar plot of the results.Added the compiler pattern
trueq.compilation.PhaseTrack
to accumulate virtual phases through a circuit and use them to parameterize native gates.Updated documentation.
Changed¶
Renamed
trueq.math.Tensor.dag()
totrueq.math.Tensor.adj()
.Dimension on
trueq.Result
will now increase if new ditstrings contain higher numbers than the existing stored dimension; previously this raised an exception.
Fixed¶
Fixed an ordering bug in
trueq.results.merge_results()
.Fixed a bug that occurred while averaging CB results.
[2.6.6] - 2020-03-27¶
Fixed¶
Fixed a bug in
trueq.compilation.Relabel
, where relabeling would only work on permutations, it now works for any valid arbitrary labels.
[2.6.5] - 2020-03-17¶
Added¶
Added interface support for Qiskit based gates which do not define a
.to_matrix()
.
Changed¶
Custom keys are now preserved when the circuits which contain them are passed to analysis or randomized compiling.
Changed default priority list for the Qiskit interface.
[2.6.4] - 2020-03-09¶
Added¶
Added the
trueq.math.Superop
class for representing superoperators.Added the function
trueq.math.random_density()
to generate random density matrices.
Changed¶
trueq.compilation.RemoveId
can now optionally remove the identity gate from immutable cycles.trueq.compilation.DEFAULT_PATTERNS
finalRemoveId
now removes all identities, even in immutable cycles.
[2.6.2] - 2020-02-26¶
Added¶
Added
axis_size
option to thenr_bar()
plotting function.Added support to
trueq.Simulator
for subsystem dimensions greater than 2, thereby adding support for leakage noise models.Added
dim
attribute totrueq.Circuit
.Added function
trueq.math.embed_unitary()
.Added support for pip and wheel installations.
Updated documentation.
Changed¶
Changed the internals of
trueq.Cycle
to reduce memory usage (this should not change any behaviour).
[2.6.1] - 2020-02-20¶
Changed¶
trueq.compilation.Native1Q
andNative2Q
have been optimized slightly for speed.trueq.CircuitCollection.append()
now returns itself after appending.Improved the performance of protocol generation functions, e.g.
trueq.make_knr()
.
Fixed¶
Fixed a backwards compatibility bug with
trueq.load()
.Made
trueq.save()
more robust by first saving to a temporary location.Fixed issue with
set_priority_list
where it could result in an empty list.
[2.6.0] - 2020-02-14¶
Added¶
Added
labels
option to theinfidelity_comparison()
plotting function.
Changed¶
Significant refactor of
trueq.interface
interfaces, which fixes ambiguities in the gate conversion process (runhelp(trueq.interface)
for details).Moved
trueq.circuits.Cycle
to a new module,trueq.cycle.Cycle
.Moved
trueq.math.NUM_PRECISION
constant totrueq.utils.NUM_PRECISION
.trueq.make_readout_calibration()
now flattens input labels to avoid confusion.Default compiler patterns tweaked slightly; the final
Justify
step has been removed. Seetrueq.compilation.DEFAULT_PATTERNS
for the default compiler steps.Reduced default value of
n_bodies
argument intrueq.make_knr()
to1
.Improved internal logic of
trueq.config.GateFactory
for future changes in compilation and interface code.Updated documentation.
Fixed¶
Fixed
trueq.math.find_kak_equivalent
and added tests.
[2.5.0] - 2020-02-11¶
Added¶
Added
trueq.math.Frame.plot_arr()
andtrueq.math.Frame.plot_superoperator()
for plotting matrices expressed in different bases.Added
trueq.Gate.is_identity
for checking if a gate is identity.Added
trueq.Cycle.is_equivalent
for checking if two cycles are equivalent.Added options
ignore_imm
andignore_id
totrueq.compilation.CycleSandwich
.
Changed¶
trueq.config.fsim_factory
fSim definition now matches Cirq definition.circuits.plot.nr_bar()
now shows error contributions in the legend instead of below the x-labels.
Fixed¶
Fixed a bug in
trueq.Circuit.update_keys()
.Fixed rich display of
trueq.Operation
,trueq.Gate
,trueq.NativeGate
,trueq.Cycle
, andtrueq.Circuit
in Colab.Fixed the efficiency of
trueq.make_tnr()
for many input targeted errors.Fixed rare conversion error in PyQuil interface where single qubit identity gates could have potentially failed to convert after altering default behavior.
[2.4.5] - 2020-02-06¶
Added¶
Added more caching to portions of
trueq.interface
to speed up conversion.Added
trueq.Cycle.to_dict()
andtrueq.Cycle.from_dict()
.Added
trueq.Results.to_dict()
andtrueq.Results.from_dict()
.
Fixed¶
Cycles and results in circuits are now properly serialized.
[2.4.4] - 2020-02-05¶
Added¶
Added compatibility with Python 3.8.
Fixed¶
Fixed minor CSS bugs in
_repr_html_()
.Fixed a rare DLL loading bug.
[2.4.3] - 2020-02-04¶
Added¶
Added
assets
toMANIFEST.in
.
Fixed¶
Fixed a bug in
trueq.Circuit.to_dict()
.
[2.4.2] - 2020-02-04¶
Added¶
Added
trueq.Gate.random(dim)
, which creates a random unitary gate of sizedim
.Added
trueq.Gate.adj
, which returns the adjoint of the existing Gate as a new Gate.Added
trueq.Gate.plot()
, which plots the matrix representation of a Gate.Added
trueq.math.random_unitary
which generates Haar random unitary matrix.Added
_repr_html_()
totrueq.Operation
,trueq.Gate
,trueq.NativeGate
,trueq.Cycle
, andtrueq.Circuit
for rich display in Jupyter notebooks.
Changed¶
Simplified
trueq.visualization.plotters.PlottingSuite
mechanics.Added a flag,
join_meas=True
, to Cirq conversion so parallel measurements can optionally be combined into single Cirq measurement object inside of a moment.Changed the way
trueq.Cycle
is serialized bytrueq.Key.to_dict()
.
Removed¶
Removed unused function
trueq.utils.cycle_to_str
.
Fixed¶
Fixed ordering of subplots in
CircuitCollection.plot.nr_bar()
.Solved division by zero error when no data present in plotters.
Fixed behavior of
trueq.Gate.generators
when called on identity gates.Cirq conversion now casts angles to real values, where previously complex 0.0 were potentially being passed.
Cirq conversion now assigns qubits to a device consistently.
Fixed a bug in
troubleshoot.py
.
[2.4.1] - 2020-01-23¶
Added¶
Added
trueq.compilation.CycleSandwich
compiler pattern.Added the convenience attributes
Cycle.gates_single
andCycle.gates_multi
.
Changed¶
trueq.inteface.qiskit.Executor
now addsbackend=backendname
to each circuit key.trueq.inteface.qiskit.Executor
now has defaultn_shots=128
(previously1024
).
Fixed¶
Fixed bug in
Gate.is_unitary
.Fixed superfluous
CircuitCollection.fit()
warnings.
[2.4.0] - 2020-01-17¶
Added¶
Added
trueq.compilation.Relabel
pattern that relabels qubits in a circuit.Added
trueq.compile()
, which enables simple standard compilation and transpilation.Added the option to select noisy labels and gates in many of the simulator’s noise models, e.g.
Simulator().add_depolarizing(0.1, noisy_labels=[0, 3, 5])
.Added
trueq.Circuit.n_meas
property, equal tolen(circuit.meas_locs)
.Added support to
Cycle.add()
for inserting multiple like 1-qubit gates.Added
trueq.Config.connectivity
property which gives the connectivity graph associated with the factories in the config.Added
trueq.Results.decompiled_results()
to undo the effect of a compiled pauli.Added the convenience function
trueq.CircuitCollection.sum_results()
.Added the convenience function
trueq.CircuitCollection.update_keys()
.Added
clip=False
option totrueq.math.Tensor.to_results()
.Added
xlabels
andylabels
options totrueq.visualization.plot_mat()
.Added
trueq.math.int_base()
for integer solutions tob ** n == x
forb
.Added the
trueq.Cycle.dim
attribute.Added
common_ylim=True
option toCircuit.plot.nr_bar()
.
Changed¶
make_readout_calibration()
now makes mutable instead of immutable cycles.Refactored some portions of the interface code for Qiskit, Cirq, and PyQuil for simplicity and improved customization.
Renamed
trueq.compilation.SubstitutionCompiler
totrueq.compilation.Compiler
Generalized allowed input type to
Results.marginal()
.Updated documentation.
Changed underlying datatype of
trueq.Gate
fromdict
tonp.ndarray
.Qiskit Executor now has a default
max_submissions=5
down from 25, to match upstream changes from IBM.Modified
trueq.math.int_log()
to be faster, to have no default value, and to returnNone
rather than error when no solution is found.Removed attributes
trueq.Gate.n_sys
andtrueq.Gate.dim
; a major step toward gates containing no label information whatsoever.
Fixed¶
Fixed ordering bug in
Tensor.to_results()
andTensor.sample()
.Fixed return type bug for void backend functions.
Fixed PyQuil interface for
pyquil>=2.16.0
.
[2.3.0] - 2019-12-10¶
Changed¶
Removed
nr_cmap()
andnr_bar()
plotting for circuits withkey.protocol="TNR"
.Added input validation to
nr_cmap()
andnr_bar()
.Compiler speed improvements.
Various improvements to the documentation and examples.
Bumped qiskit-terra optional dependency to
>=0.11
.
Fixed¶
Fixed simulator probability clipping issue.
Fixed compiler to accept lists of cycles.
[2.2.3] - 2019-11-19¶
Changed¶
Simulator.run
acceptsn_shots=float("inf")
as a possible input.Speed improvements to
Simulator.run()
for many shots.
[2.2.1] - 2019-11-01¶
Added¶
Added aliases for single qubit clifford gates, available through e.g.
Gate.cliff0
.Added
make_qcap()
andqcap_bound()
for Quantum Capacity (QCAP) assessment.Added
Tensor.to_results()
which returns aResults
object.Added
Results.tvd()
to compute total variation distance (TVD) between results.Added
circuits.plot.timestamps()
plotter showingResults.last_modified
.Added case to
trueq.compilation.Native1Q
that will now directly compile into a fixed angle gate if there is one present in the config file.Added
TotalTime
for estimating experiment time based on gate lengths, etc.
Changed¶
Moved
make_crosstalk_diagnostics()
totrueq.assessments
.Modified the arguments of
CircuitCollection.batch()
.
Fixed¶
Fixed an exponential blowup in the analysis of
make_knr()
circuits.Fixed a bug in readout calibration.
Fixed a memory reporting bug in macOS (enterprise version only).
[2.2.0] - 2019-10-21¶
Added¶
Added
make_knr()
for K-body noise reconstruction (KNR).Added
make_tnr()
for Targeted noise reconstruction (TNR).Added
interface.qiskit.Executor
for submission of circuits to a Qiskit backend.Added convenient specification of twirling groups using
P
,C
,SU
, etc.Added
CircuitAggregator
context to build circuit collections from multiple protocols using only one call to the backend.
Changed¶
Changed return type of
randomly_compile()
to a circuit collection of randomizations, and removed its ability to accept circuit collections as input.Improved plotting and saving functions.
Updated documentation.
Removed¶
Removed
make_nr()
.Removed
reconstruct_pauli_errors()
(its functionality was intergrated intofit()
).
Fixed¶
Fixed bugs in Cirq and Qiskit interfaces.