Releases: rigetti/forest-benchmarking
Release list
v0.9.0
v0.8.0
Announcements
- Upgraded pyQuil to v3 (gh-215). As a result, the minimum supported Python version is now 3.7.
Bugfixes
- Fix compiler timeout during test (@jlapeyre) (gh-208)
- Fix type error in pauli coefficient in observable calibration for recent pyquil versions (@kylegulshen) (gh-207)
- Add noise definition only once to quil program (@kylegulshen) (gh-206)
v0.7.0
Breaking Changes
- Major module re-org of superoperator tools into
operator_toolsalso movedrandom_operatorsto the operator tools module. Added type checking in random operators, added new module to check plain old operators are unitary etc (gh-150, 140, 164). - Remove symmetrization functionality from
observable_estimationin favor of pyquil functionality (gh-194). - Methods in
fittingrenamed to be less ambiguousdecay_constant_param_decay->decay_time_param_decayand
fit_decay_constant_param_decay->fit_decay_time_param_decay. Correspondingly, the fit parameter was renamed
decay_constant->decay_time(gh-175) generate_cz_phase_ramsey_experimentwas made plural, consistent with rest ofqubit_spectroscopy(gh-175)acquire_cz_phase_ramsey_dataremoved in favor ofestimate_observablesand all other specificacquire_*methods
inqubit_spectroscopy.pywere removed in favor ofacquire_qubit_spectroscopy_data(gh-175)- argument order standardized, which changed the api of
generate_exhaustive_process_dfe_experiment,
generate_exhaustive_state_dfe_experiment,generate_monte_carlo_state_dfe_experiment,
generate_monte_carlo_process_dfe_experiment,robust_phase_estimate,
and positional arg name ofacquire_dfe_data(gh-182)
Improvements and Changes
- Fixed the years in this Change log file 2018 -> 2019
- Added linear inversion process tomography (gh-142)
- Changed qubit tensor factor ordering of state tomography estimates to match that of process tomography, e.g.
tomographizing the plus eigenstate ofX0 * Z1and passing inqubits = [0,1]will yield the state
estimate corresponding to|+0> = (1, 0, 1, 0)/sqrt(2)rather than|0+>(gh-142) - Improved the
superoperator_toolsnotebook and therandom_operatorsnotebook (gh-98) - Improvements to Ripple carry adder notebook, added tests for non parametric bit string
prep program in utils (gh-98) - Added the ability to project a Choi matrix to the closest unitary (gh-159, 157)
- Reduced local test run time from 11min to 5min (gh-160)
- Major changes and improvements to all notebooks (gh-148, 149, 153, 154, 155, 156, 165, 167, 172, 182(see 183))
- Speedup the tests (gh-158, 161)
- Complete overhaul/addition of documentation in docs folder (gh-170, 174)
- Github PR and bug report templates added (gh-177, 182)
merge_disjoint_experimentsandget_results_by_qubit_groupsadded toobservable_estimation.pyto facilitate
running experiments 'in parallel' on a QPU and analyzing the results separately (gh-182)- various
do_*methods added that wrap various experiments into a single method with sensible defaults (gh-182) - examples notebooks moved to docs/ directory to be rendered within documentation (gh-182)
- tqdm progress bars added to most data acquisition methods (gh-182)
Bugfixes
- Dagger is now implemented in pyquil as a gate-level modifier, but this doesn't play well with noise models on the QVM
so a stop-gap was put into basic_compile to hand compile the dagger modifier (gh-169) - Compiler sometimes failed to find connected subgraphs of qubits (gh-188)
- QPU cannot handle integer parameters (gh-188)
v0.6.0
Breaking Changes
-
operator_estimation.pyis entirely replaced. All changes from (gh-135) except where stated otherwise. -
operator_estimation.py->observable_estimation.py(gh-138) -
pyquil.operator_estimationdependencies replaced withforest.benchmarking.observable_estimation(gh-129,132,133,134,135) -
operator_estimation.TomographyExperiment.out_op->observable_estimation.ObservablesExperiment.out_observable -
operator_estimation.measure_observables->observable_estimation.estimate_observables -
operator_estimation.group_experiments->observable_estimation.group_settings -
utils.all_pauli_terms->utils.all_traceless_pauli_terms -
DFEDataandDFEEstimatedataclasses removed in favor ofExperimentResultand tuple of results respectively (gh-134). -
plotting moved out of
qubit_spectroscopy; instead, usefit_*_results()to get almfit.model.ModelResultand pass this intoanalysis.fitting.make_figure() -
pandas.DataFrameis no longer used inrandomized_benchmarking(gh-133),qubit_spectroscopy(gh-129), androbust_phase_estimation(gh-135). These now make use ofobservable_estimation.ObservablesExperiment, and as such the API has changed substantially. Please refer to example notebooks for new usage. -
pandas.DataFramemethods removed fromquantum_volume. See examples notebook for alternative usage (gh-136). -
utils.determine_simultaneous_grouping()removed in favor of similar functionality inobservable_estimation.group_settings -
SIC state helpers removed from
utils -
default
utils.str_to_pauli_termnow associates left-most character of inputpauli_strwith qubit 0. Ifqubit_labelsare provided then the qubits label the characters in order. -
utils.all_pauli_*_terms->utils.all_traceless_pauli_*_termsto reflect fact that identity term is not included. -
utils.pauli_basis_pauli_basis_measurementsremoved
Improvements and Changes
-
analysis.fittinghas been expanded to hold each fit model used inqubit_spectroscopyandrandomized_benchmarking(gh-133, gh-129) -
RX(angle)for arbitrary angle now supported bybasic_compile -
observable_estimation.estimate_observables(formerlypyquil.operator_estimation.measure_observables) has been decomposed into separate steps:generate_experiment_programs(), which converts and experiment into a list of programs- optional symmetrization, which expands each program into a group of programs that accomplish symmetrization
- data collection and optional
consolidate_symmetrization_outputs()which collects data used for estimates calibrate_observable_estimates()which can be used to update estimates after collecting calibration data
-
plotting.state_process.plot_pauli_transfer_matrix()now automatically casts input tonp.real_if_close(gh-132) -
_state_tomo_settings()no longer includes all-Identity term (gh-132).
Bugfixes
- t2 experiments now implement correct echo sequence (gh-129)
v0.5.0
Improvements and Changes:
- Moved bitstring prep/measure program creation helpers to utils (gh-118)
- Added functoinality to
plottingmodule: two ways to visualize a quantum state in the Pauli basis, plotting of a Pauli Transfer Matrix, plotting a real matrix using a Hinton diagram, the addition of the computational basis as a predefined basis object (gh-119) - Refactor iterative MLE to use ExperimentResults directly (gh-120)
- Combined
graph_stateandbell_statemodules intoentangled_statemodule, added deprecation warnings for the old modules (gh-122) - Made Ipython Notebooks a part of testing (gh-123)
- Resolve test warnings and doc string formatting issues (gh-124)
- Breaking change. Bump version and delete
graph_stateandbell_statemodules (gh-125) - Added the ability to check if the Kraus operators are valid (PR 128)
v0.4.0
Improvements and Changes
- Updated requirements.txt and setup.py files (gh-83)
- Added support for chi superoperator conversion and augmented documentation for
superoperator representations (gh-76) - Renamed
superoperator_conversiontosuperoperator_tools(gh-100) to reflect
new functionality, including helpers to apply a Choi process to a state, compute
the Pauli twirl (gh-101), testing properties (e.g. CP, TP) of channels in the Choi
representation (gh-109), and projecting Choi matrices to nearby processes satisfying
those properties (gh-114) - Following update to pyQuil version 2.7.2, changed stddev to std_err and removed qubits
argument when using pyquilTomographyExperiment(gh-107) - Changed the default input basis from SIC to Pauli for process tomography (gh-105)
- Standardized around use of
pyquil.gate_matricesfor definitions of gate matrices (gh-103) - Added support non-square Kraus operators to superoperator conversion tools (gh-102)
- Renamed
diamond_normtodiamond_norm_distancegh-104 - Made use of superoperator tools wherever possible throughout the repo (gh-111)
- Standardized around use of dim as variable name for dimension (gh-112)
- Added
entanglement_fidelitycalculation in distance_measures.py (gh-116)
Bugfixes
- Fixed keyword argument name
symmetrize_readoutin call to pyQuil's
measure_observables(gh-115)