Releases: quantumlib/Cirq
v0.11.1
Cirq v0.11.0
Cirq v0.11.0 release
Warning: Please make sure to uninstall all older (<0.11) versions of Cirq otherwise pip install cirq
will result in an invalid installation where cirq is an empty namespace package. If you have older versions, run pip uninstall cirq
before upgrading.
Highlights
Modular Cirq
We introduced a new structure, where cirq.google is now extracted to a separate package cirq-google
, cirq itself became cirq-core
and the cirq
metapackage only contains these two subpackages as dependencies. The package extraction was done in a backwards compatible way - existing code that uses cirq.google
will still run! However, you will get a DeprecationWarning
. In order to switch over, ensure that you have cirq-google
installed and change import cirq.google
to import cirq_google
. Everything else should work!
Histograms
- We have support for integrated histograms or CDFs to display characterization metrics from quantum chips
Breaking changes
- as mentioned in the top notice,
pip install --upgrade cirq
will not suffice to upgrade cirq - please runpip uninstall cirq
before upgrading. - cirq.rx, ry and rz are now returning a new class cirq.Rx, Ry and Rz respectively. This should work in most cases, unless your code explicitly depends on the type of the return value.
cirq_google.SQRT_ISWAP_PARAMETERS
got renamed tocirq_google.SQRT_ISWAP_INV_PARAMETERS
cirq.Heatmap.plot()
now takes all valid heatmap config arguments as**kwargs
instead of just**collection_options
, which is now a nested config argument (dict). Please see the tests / tutorials for more details.
Changes to top level objects
cirq-core
New top level objects
get_state_histogram
integrated_histogram
ActOnArgs
ActOnDensityMatrixArgs
CliffordTableau
DiagonalGate
SimulatesExpectationValues
SimulatorBase
MeasurementKey
Rx
,Ry
,Rz
Removed objects that were deprecated
- Removed support for the
func
parameter inCircuit.transform_qubits()
, you now must usequbit_map
instead TrialResult
is now officially unsupported, usecirq.Result
instead. If you have old JSONs lying around, you can just search and replaceTrialResult
toResult
- If you have old gate implementations with
_resolve_parameter
that doesn't support therecursive
parameter, you will get an error message:TypeError: _resolve_parameters_() takes 2 positional arguments but 3 were given
, you will need to add support for therecursive:bool
parameter - Removed support for the
density_matrix
parameter incirq.von_neumann_entropy
you now must usestate
instead stabilizers
anddestabilizers
methods are now removed from theCliffordSimulator
class, you can find these on theCliffordTableau
insteadperform_measurement
is now renamed toapply_measurement
inCliffordSimulator
- When implementing a subclass of the
Simulator
class,_simulator_iterator
won't work, you will have to use_base_iterator
cirq.vis.heatmap.relative_luminance
is now moved tocirq.vis.relative_luminance
Objects or parameters that are marked as deprecated and will be removed in coming releases
cirq.study.visualize.plot_state_histogram
was moved tocirq.vis.plot_state_histogram
cirq.google
, deadline v0.14cirq.sim.clifford.CliffordTableau
moved to a different package, you should usecirq.CliffordTableau
insteadcirq.contrib.routing.xmon_device_to_graph
is deprecated, usecirq.contrib.grid_qubits_to_graph_device
insteadcirq.contrib.quantum_volume
parameterdevice_or_qubits
is deprecated, usedevice_graph
instead.
cirq-google
New top level objects
PhasedFSimCalibrationError
PhasedFSimCalibrationOptions
XEBPhasedFSimCalibrationOptions
XEBPhasedFSimCalibrationRequest
LocalXEBPhasedFSimCalibrationOptions
LocalXEBPhasedFSimCalibrationRequest
prepare_characterization_for_moments
prepare_characterization_for_moment
prepare_characterization_for_operations
A Huge Thank You
Thank you to all our contributors for this release
- Andriy Kushnarov
- Anna Nachesa
- Antoine (Tony) Bruguier
- Bicheng Ying
- Bálint Pató
- Chen Jialin
- Craig Gidney
- Dave Bacon
- Dax Fohl
- Doug Strain
- FallenApart
- Jimmy Yao
- Kevin J. Sung
- Martin Ganahl
- Matthew Harrigan
- Matthew Neeley
- Orion Martin
- Ryan LaRose
- Ryan Levy
- Smit Sanghavi
- Tanuj Khattar
- Unai Corzo
- Victory Omole
- Wojciech Mruczkiewicz
- Zijun "Jimmy" Chen
Full change list:
6f9eedc flush deprecation backlog for v0.11 (#4099)
44114ed format + added fixes to the release process
5ad517f Bump cirq version to 0.12.0
8825c07 fix notebook failure
bd02fb6 flush deprecation backlog for v0.11
2f8326c [XEB] Allow default angles to be inferred from a gate (#4092)
d9baa89 Add tutorial for state histograms (#4024)
ca38fa3 Modify heatmaps tutorials to include demo of config params (#4026)
2337bbf [XEB] Add LocalXEBPhasedFSimCalibration to cirq_google init.py (#4091)
d485de8 Eliminate simulator boilerplate by pushing iteration into base class (#4035)
226ca20 Move CliffordTableau and add unit test (#4085)
30c337f Example of stabilizer code (#3935)
2ce47ae Allow to pass a list of circuits to Floquet preparation method (#4058)
642fc97 Fix tetris_concat docstring align arg and restore FIRST alignment option (#4084)
a41df7f Store job identifiers in calibration results (#4053)
97ce418 Speed up notebook tests by adding extra replacements file (#4077)
8db1515 Update documentation on parallel readout errors (#4076)
97f9f3e import networkx (#4073)
db801bb [XEB] Local wrapper for characterization functionality (#4047)
8e90bd6 A few more numpy warning squashes (#4072)
b8334a1 Fix flakey test in engine_simulator_test (#4069)
dd36446 pylint recognizes cirq_google as known third_party (#4071)
902e737 Narrow pytest execution check in deprecation warning (#4032)
83e0bd3 Add option to manipulate Floquet readout thresholds. (#4052)
9d9eeb3 Raise calibration exception for calibration failures (#4070)
5693c6d Make PhasedFSimCalibrationOptions public (#4061)
fbd9c1e Fix numpy warnings (#4065)
64fa7d4 Implement automatic inference of qid shape for quantum states (#3789)
d448a35 Fix indentation in docs (#3974)
6c99f0b Fix google notebooks (#4056)
7bdf41d Set default remote host for IonQ API (#4062)
ebf8fa3 Speed up MPS simulator test (#4063)
5f51fff Update floquet notebook to the latest changes (#4057)
58bebc8 Allow using plain qubits as keys for single-qubit heatmaps (#4028)
ebce56c Add a MeasurementKey
class and make it the internal representation in MeasurementGate
(#4039)
b2f8d43 Forrelation (#3748)
08bce1e Add IonQ to list of quantum service providers (#4055)
7aeab3b Fix naming of sqrt(iswap) gate constants (#4051)
0df0cdc Use sampler instead of engine as a primary run_calibrations runner (#4054)
b61d1c9 Fix pytest-changed-files-and-incremental-coverage (#4046)
81de725 Speed up cirq import by removing scipy.stats import (#4041)
cafe985 Factorise circuit into parallelizable components (will fix #3409) (#3873)
8fc6a2f Add and cleanup some gate docs (#4044)
18a6604 adding editable installs to development.md (#4043)
336ab46 fix bad import (#4042)
6188c64 [XEB] Generalize cirq.google.calibration for XEB (#3881)
d923a0f Fix omitted coverage (#4036)
3953052 Add multi-module version of build_api_docs.py (#4038)
574652c Fix cirq_google notebooks (#4037)
5919a17 fix versioning of new modules (#4033)
1514cec Split the simulators' creation of ActOnArgs and iteration (#3970)
d995a9c Include py.typed files in cirq-core and cirq-google (#4031)
12530f1 Merge pull request #3957 from balopat/master
5589c31 extracted cirq_google.
0cd59ea cirq.google -> cirq_google renames
a9768d8 creating compatibility tests for cirq_google JSON files
5de9bda new files before moving cirq.google package
fd257e6 in-place changes before actually moving the cirq.google package
51b5628 Add @rmlarose as a maintainer for cirq/docs/* (#4027)
bbaf47a Fix links in calibration visualization tutorial (#4025)
310f579 Add tutorial on qubit picking with Loschmidt echoes (#4021)
40757b8 Support passing config params in heatmap.plot() (#4018)
b47b8b9 Some minor doc reorganizing (#3966)
83238b1 fix networkx / decorator dependency issue (#4019)
4799246 Improve plot_state_histogram configuration options. (#4015)
76edeb1 Better import for sometimes failing mypy test (#4016)
eff9583 [obs] 4.3 - Stopping criteria (#3969)
83d163e Fix DepolarizingChannel documentation (#4011)
9c710fb Fix most numpy type errors in cirq/linalg (#4000)
845836a Fix most numpy errors in cirq/qis and friends (#4002)
259dd91 Fix most numpy type errors in cirq/ops (#3997)
aaa1385 Fix Rounding error while printing solution of "Exercise: Custom Controlled Rx gate" in docs/tutorials/educators/intro.ipynb (#4006)
71c7467 Skip measurement gates in DropNegligible optimizer (#4003)
c9c6d1f minor fixes to cirq intro (#3994)
ff516d0 Fix numpy mypy and add mypy-next (#3995)
e3fc574 Update docstring to fix href to MSGate. (#3992)
e0365e4 patch fixing a serialization issue with rx,ry and rz gates. (#3837)
ff8fb57 Fix qid dimension conflict (#3983)
0a29dc2 minor updates to cirq intro (#3981)
c791db7 Change the remaining format string to f-string (#3973)
eccc219 Fix docstring for wait helper function (#3978)
150f95c Fix and add docstrings to set_state_vector() (#3972)
4bb484a Coefficient fix (#3971)
c162e10 Migrate MPS to act_on protocol (#3961)
24e98fa [obs] 4.2 - Basic sampling loop (#3855)
f12e221 Improve Cirq Intro Tutorial (#3967)
96a639a Updat...
Cirq v0.10.0
Cirq v0.10.0 release
Major usability changes
Cirq core
- We now have support for
TwoQubitHeatmaps
. Single qubitHeatmaps
are also easier to use. - Add PauliSumExponential for commuting Pauli terms (#3427)
- Circuit transformations:
- realign operations:
cirq.AlignLeft
,cirq.AlignRight
- concatenate multiple circuits via
cirq.Circuit.tetris_add
- realign operations:
- You can now decompose arbitrary 3 qubit unitaries with
cirq.three_qubit_matrix_to_operations
- JSON serialization now supports GZIP
- Create more structure in your circuits by using subcircuits with
cirq.CircuitOperation
Platforms
- cirq.ionq (NEW!):
- We proudly announce our IonQ integration - Have a look at the tutorials!
- cirq.google:
- Introduced tools for Floquet Calibration
Contrib
- [new!] We introduced a new matrix product state representation based simulator:
cirq.contrib.quimb.MPSSimulator
Breaking changes
Heatmap
is redesigned and configuration parameters are now passed via**kwargs
instead of setter/getter functions.cirq.experiments
changes: the default value of the parametertwo_qubit_op_factory
inrandom_rotations_between_grid_interaction_layers_circuit
andrandom_rotations_between_two_qubit_circuit
changed tocirq.CZ
instead ofcirq.google.SYC
cirq.google.api.v2.results.MeasureInfo
is now a dataclass which also contains tags corresponding to the circuit passed tocirq.google.api.v2.find_measurements
.cirq.CliffordSimulator
behavior changed: if you relied on the old (incorrect) ability to mutate the simulator state from a step result, your workflow would be broken by this. (see #3664 for details)measurement_keys
protocol now returnsAbstractSet[str]
instead ofTuple[str, ...]
cirq.resolve_parameters
changes - in most cases you should not see a change (see #3546 for details):- Parameter resolution no longer depends on alphabetization of parameters involved - see #3544 for an example
- Cirq will raise a
RecursionError
when encountering a loop in parameter resolution - Resolver is more zealous in its conversion of
int
tofloat
cirq.protocols.json_serialization.RESOLVER_CACHE
goes away -- you should not see a change in most cases is it was not a part of the public API.
New protocols
read_json_gzip
resolve_parameters_once
SerializableByKey
to_json_gzip
Changes to top level objects
New top level objects
AbstractCircuit
Alignment
CircuitOperation
ionq
FrozenCircuit
PauliSumExponential
PhasedFSimGate
wait
AlignLeft
AlignRight
two_qubit_matrix_to_diagonal_and_operations
three_qubit_matrix_to_operations
density_matrix
QUANTUM_STATE_LIKE
QuantumState
quantum_state
validate_density_matrix
read_json_gzip
resolve_parameters_once
SerializableByKey
to_json_gzip
with_measurement_key_mapping
TwoQubitInteractionHeatmap
Removed top level objects that were deprecated
subwavefunction
wavefunction_partial_trace_as_mixture
QFT
decompose_two_qubit_interaction_into_four_fsim_gates_via_b
validate_normalized_state
final_wavefunction
SimulatesIntermediateWaveFunction
WaveFunctionSimulatorState
WaveFunctionStepResult
WaveFunctionTrialResult
has_mixture_channel
mixture_channel
Top level objects or parameters that are marked as deprecated and will be removed in coming releases
- parameter deprecation:
cirq.Circuit.transform_qubits
Usequbit_map
instead offunc
- parameter deprecation:
cirq.Moment.transform_qubits
Usequbit_map
instead offunc
- parameter deprecation:
cirq.Operation.transform_qubits
Usequbit_map
instead offunc
- parameter deprecation:
cirq.von_neumann_entropy
Usestate
instead ofdensity_matrix
cirq.CliffordState.perform_measurement
cirq.SimulatesIntermediateState._simulator_iterator
cirq.vis.heatmap.relative_luminance
A Huge Thank You
Thank you to all our contributors for this release
- Adam Zalcman
- Albert Frisch
- Andriy Kushnarov
- Antoine (Tony) Bruguier
- Balint Pato
- Bao Nguyen
- Billy Lamberta
- Craig Gidney
- Dave Bacon
- Dax Fohl
- Doug Strain
- Henrique Silvério
- Kevin J. Sung
- Matthew Harrigan
- Matthew Neeley
- Orion Martin
- Paweł Pamuła
- Purva Thakre
- Rhea Parekh
- Ryan LaRose
- Sagar Dollin
- Seun Omonije
- Spencer Churchill
- Tanuj Khattar
- Tim Gates
- Victory Omole
- Wojciech Mruczkiewicz
- YBC
- gwhitehawk
- lilies
- m-szalay
- smitsanghavi
- wing
Full change list:
77de283 Bump cirq version to 0.11.0
41fcc6a Add empty results fallback for Result.repetitions (#3875)
3da5fa9 Ensure density matrix doesn't restart at zero between repetitions (#3851)
8d17c73 [Docs] Add support page for issues, requests, and questions (#3835)
3435a2c Add PauliSumExponential for commuting Pauli terms (#3427)
d890784 Exclude names from concise serialization. (#3863)
1a61423 fail cirq's use of deprecated features in tests (#3860)
e937b19 Add two qubit interaction heatmaps (#3861)
59d9e73 Remove unused perform_measurements argument from sparse simulator (#3869)
4ca1c1d Add support for using physical-Z phase matching on 2-qubit gates (#3862)
af0d9f3 Add circuit Alignment and use it for zip and tetris_concat (#3821)
d4a12a2 Update reference link in readme (#3859)
7fe025f Refactor MPS simulator to add noise, after #3829 (#3857)
2105e0c Deprecate 0.9 deprecated items (#3856)
a7f7129 Deprecate 0.10.0 deprecated items (#3854)
3df8aa3 Documentation for accessing the IonQ API (#3755)
9a88acf [obs] 4.1 - Pre-requisites (#3792)
0679a12 fix grpcio-tools version (#3849)
384b9a2 [XEB] Enable characterizing other gates (#3842)
5977bf3 Allow noise on sparse simulator (#3829)
4b068e6 circuit = circuit.freeze() (#3845)
f3d8982 [XEB] Generate calibrations from circuits (#3834)
94724fa Task, design discussion, project health issue templates (#3839)
d7bd940 Airspeed Velocity (asv) performance benchmarks setup: part-1 (#3822)
f2bf60f Expose new calibration methods (#3830)
aa2af6f Fixes for older envs (#3836)
a938495 Fix measurement_keys in repeated CircuitOperation and update the separator (#3823)
9ab0f6d [XEB] Optimize/characterize by pair (#3795)
e3c673f Ensure only measured subcircuits cause full simulator sweeps (#3827)
f9a82f1 Move google noisemodel to cirq.google (#3824)
c0600fb Add option to do per-operation compensation (#3812)
31f44ec Add prepare_floquet_characterization_for_operations function (#3813)
31c3728 [Docs] Move Floquet calibration docs to tutorials/google (#3826)
38a6c98 Allow quantum engine timeslots to handle missing start/end values (#3796)
7b2abd8 Improve type safety with generics on simulators (#3818)
e46f62e Don't serialize GridQubit hash when pickling (#3791)
6ea7c76 Add Floquet calibration docs (#3765)
a616ae8 Add Circuit.tetris_concat and FrozenCircuit.tetris_concat (#3805)
6bad7bf Adding two options for the MPS simulator: max_bond and method (#3793)
6aa46d7 adding standard header to characterization notebooks (#3817)
a276f9f Improve naming and docstrings of characterization methods (#3810)
98d950a pylint print version + verbose mode (#3811)
3f965a4 Fix Result constructing a pandas dataframe to compute repetitions (#3801)
0677d60 Enforce unique serialization keys (#3673)
1e9323c Revert "Drop python 3.6 support" (#3798)
2959dcc Add from_moment to PhasedFSimCalibrationRequest (#3720)
1590ff1 [XEB] Split into three files (#3794)
bbf6245 Notebooks guide (#3781)
e8697de [XEB] Support parallel execution (#3760)
bc108f9 Add key/value type annotations to cirq.PauliString.items() (#3790)
2e5c45b Remove cirq.google references from circuit_test and circuit_dag_test (#3738)
2c904da Add support for WaitGate and inverse of sqrt(iSWAP) to characterization and compilation (#3750)
18e11b3 Add the ability to do hybrid MPS/dense/inbetween simulations by having qubit grouping (#3735)
e882475 Fix DepolarizingChannel.circuit_diagram_info assuming it is a single qubit gate (#3780)
942b2c9 Modular JSON serialization protocol (#3539)
64af70f adding wojtek to the codeowners in cirq.experiments (#3776)
ca65d5d Updated, Multi-Stage Dockerfile (#3553)
2aa20b3 Add ISWAP and its inverse to FSIM_GATESET (#3743)
387ad42 Add and use QuantumState class (#3419)
3882d59 Accept qubit maps in transform_qubits (#3727)
7088690 refactor: move relative luminance (#3757)
90bf207 [XEB] Faster and more extensible simulation (#3753)
e9b802a removing cirq.google references from random circuit generation (#3764)
1958f2e Revert "Updated secretmanager ref to v1 (#3762)" (#3770)
1e49f88 Rename calibration methods (#3752)
f08b344 Avoid run_sweep_sample when subcircuits exist (#3745)
d57fa67 Updated secretmanager ref to v1 (#3762)
451b2f1 Repetition IDs for CircuitOperation (#3741)
d14eb7c Notebook tests against both released Cirq and PRs (#3751)
c24e2b9 [XEB] Optimize two qubit circuits (#3739)
a163a39 Backwards-compatibility behavior for resolve_parameters. (#3719)
abfa2af Add ability to overwrite characterized parameters with a fixed value (#3746)
0f87bb3 Remove unused imports (#3747)
d4a1874 Add functionality that compensate (calibrate out) for a single-qubit phases of the circuit's PhasedFSimGates (#3731)
bbaacd3 update the zenodo metadata + removing confusing bibtex (#3742)
5571b76 Update build status badge (#3744)
03f3a2f Add guide on operators and observables (#3654)
1ed3176 Cross Ent...
Cirq v0.9.1
This point release fixes the deprecation of cirq.TrialResult
to cirq.Result
in a backward compatible way with regards to the JSON parsing as well. There are no changes in any other user-facing functionality.
No other changes to cirq functionality. No protocol changes, top-level changes or other changes.
Complete list of changes:
804c3381 Merge branch 'v0.9.1-dev' of github.com:quantumlib/Cirq into v0.9.1-dev
d58423a remove accidental print (#3384)
a7790f2 remove accidental print
a95a2e3 Fix TrialResult deprecation (#3381) (#3382)
785ffaf Bump cirq version to 0.9.1
Cirq v0.9.0
Major usability changes:
- Batching support in Google's Quantum Engine API as well as in Samplers in general
- Faster parameter resolution for a wider set of types
- You can now use
cirq.parameter_names
,cirq.parameter_symbols
to extract parameter names from your circuit - Default values for Arg serializers are being introduced in two steps: first the deserializer (#3280), later the serializer will be introduced
- Extensive documentation on Pasqal
- Extensive documentation on Google's Quantum Computing Service
- Google Quantum Engine can list jobs and programs
- Python 3.7 and 3.8 are now continuously tested and dependency issues are resolved
- Experimental support for Quimb Tensor Network Simulators (#3129)
- We removed
wavefunction
,wave_function
, orstate
- now,state_vector
is consistently used instead
Breaking changes:
cirq.approx_eq
now raises anAttributeError
if the symbolic evaluation can't unambiguously decide the equality, before it returnedFalse
#3195cirq.google.Engine
methodsrun
,run_sweep
andcreate_program
now raise ValueError ifgate_set
is not specified #3138cirq.google.Engine
constructor signature change:context
is now last to signal that direct usage isn't recommended #3151cirq.google.is_native_xmon_gate
,cirq.google.is_native_xmon_op
,cirq.google.pack_results
,cirq.google.unpack_results
are now removed, they are still accessible but through the deprecatedcirq.google.api.v1.programs
module #3204circuit + gate
behavior changed, it won't create an extra moment, instead packs the new gate efficiently #3364
New protocols:
- cirq.act_on
- cirq.pauli_expansion
New top level objects:
cirq.QuilOutput
cirq.least_squares_xeb_fidelity_from_expectations
cirq.least_squares_xeb_fidelity_from_probabilities
cirq.deconstruct_single_qubit_matrix_into_angles
cirq.matrix_commutes
cirq.num_cnots_required
cirq.partial_trace_of_state_vector_as_mixture
cirq.subwavefunction
cirq.sub_state_vector
cirq.to_special
cirq.cphase
cirq.MutablePauliString
cirq.NamedQid
cirq.RandomGateChannel
cirq.qft
cirq.QubitPermutationGate
cirq.TwoQubitDiagonalGate
cirq.VirtualTag
cirq.compute_cphase_exponents_for_fsim_decomposition
cirq.decompose_cphase_into_two_fsim
cirq.validate_indices
cirq.validate_normalized_state_vector
cirq.validate_qid_shape
cirq.ActOnCliffordTableauArgs
cirq.ActOnStabilizerCHFormArgs
cirq.ActOnStateVectorArgs
cirq.final_state_vector
cirq.SimulatesIntermediateStateVector
cirq.StabilizerSampler
cirq.StateVectorSimulatorState
cirq.StateVectorStepResult
cirq.StateVectorTrialResult
cirq.dict_to_product_sweep
cirq.dict_to_zip_sweep
cirq.to_sweeps
cirq.Result
cirq.TParamKey
cirq.KET_PLUS
cirq.KET_MINUS
cirq.KET_IMAG
cirq.KET_MINUS_IMAG
cirq.KET_ZERO
cirq.KET_ONE
cirq.PAULI_STATES
cirq.ProductState
cirq.act_on
cirq.JsonResolver
cirq.measurement_keys
cirq.parameter_names
cirq.parameter_symbols
cirq.quil
cirq.QuilFormatter
cirq.SupportsActOn
cirq.SupportsConsistentApplyUnitary
cirq.SupportsPauliExpansion
cirq.trace_distance_from_angle_list
cirq.ZerosSampler
Top level objects that are marked as deprecated and will be removed in coming releases:
- cirq.QFT
- cirq.final_wavefunction
- cirq.has_mixture_channel
- cirq.mixture_channel
- cirq.subwavefunction
- cirq.validate_normalized_state
- cirq.wavefunction_partial_trace_as_mixture
- cirq.SimulatesIntermediateWaveFunction
- cirq.TrialResult
- cirq.WaveFunctionSimulatorState
- cirq.WaveFunctionStepResult
- cirq.WaveFunctionTrialResult
- cirq.google.engine_from_environment
A Huge Thank You to all our contributors for this release:
- AJ Hanus
- Abhik Banerjee
- Adam Zalcman
- Alexis Shaw
- Animesh Sinha
- Billy Lamberta
- Bálin...
Cirq v0.8.2
Cirq v0.8.1
This point release fixes method signatures in documentation and does not change any user-facing functionality.
No other changes to cirq functionality. No protocol changes, top-level changes or other changes.
Complete list of changes:
6dd7484 Fix methods missing from doc strings (#3048)
0567d33 Change version to 0.8.1.dev on 0.8.1 release branch
3fded88 Remove dev version on release branch
Cirq v0.8.0
Major usability changes:
- Reorganize and improve documentation and examples
- Standardize CXPowGate, CCXPowGate, CNotPowGate, CCNotPowGate
- Add and improve Clifford Simulator
- Operations can now be "tagged" to support custom functionality.
- Additional compilation methods added to optimizers
- New noise models based on calibration metrics
- Random quantum circuits to experiments
- Moved measures and states to new qis sub-package
- Added Pasqal API integration
- Updates for Google API integration
New protocols:
- SupportsCommutes (polish of cirq.definitely_commutes)
New top level objects:
-
cirq.pasqal sub-package
-
cirq.qis sub-package
-
cirq.CIRCUIT_LIKE
-
cirq.CXPowGate
-
cirq.decompose_multi_controlled_x
-
cirq.decompose_multi_controlled_rotation
-
cirq.final_density_matrix
-
cirq.GridQid
-
cirq.is_normal
-
cirq.json_serializable_dataclass
-
cirq.merge_single_qubit_gates_into_phxz
-
cirq.RANDOM_STATE_OR_SEED_LIKE
-
cirq.single_qubit_matrix_to_phxz
-
cirq.stratified_circuit
Full change list:
a759e41 Add get_device for engine_processor (#2954)
f907314 Update xmon gate times (#2952)
d2d3356 Accept empty list of whitelisted_users when updating reservations. (#2950)
b67ef87 Add Example: Simon's Algorithm (#2649)
33194ad Create qis subpackage and move some existing code to qis.states and qis.measures (#2808)
e9b881a Speed up clifford simulator by short circuiting on known gates (#2919)
71df170 Fix time bugs in EngineProcessor.get_schedule (#2878)
4e86982 Remove deprecated methods and improve reprs (#2717)
b4c4066 Ensure exponent in eigen gate is real. (#2881)
a3af71f Add assert_specifies_has_unitary_if_unitary
to consistency tests (#1759)
d147dda Add all_measurement_keys method to circuit (#2868)
675e4f0 Rename RANDOM_STATE_LIKE to RANDOM_STATE_OR_SEED_LIKE and expose at top level (#2942)
e34f8d1 Add shell:bash
to run bash script on Windows. (#2943)
f2631ac Add more type annotations and f-strings (#2937)
46327bd Check 2x2 unitary in has_stabilizer_effect (#2938)
06f34f8 Allow creating device proto for specified qubits and pairs (#2934)
e08f94a Some more type annotations and format strings (#2935)
10fc655 Make from_json_dict return global Pauli instance so they commute(#2911)
9208613 Remove exponent parameter from _Pauli{X,Y,Z} (#2924)
0b050f7 Move studies to Tutorials (#2931)
23ce11c DFE with exhaustive sampling for exhaustive Clifford Pauli strings (#2918)
d0ec891 Fix pytest for mac by replacing grep with perl (#2930)
aa2a40a Update noise model to new metrics. (#2927)
9208cb3 Fix indentation on markdown (#2929)
67cd74b Add JSON serialization for CliffordState and CliffordTableau (#2894)
3bd420e Add JSON Serialization for GateTabulation. (#2883)
97701b1 More type annotations and format strings (#2914)
86bf42a Add notebook on Hidden Linear Function Problem (#2857)
7ec9e6f Loosen tolerance restrictions in Quantum Engine (#2921)
beaa782 DRY radian formatting (#2907)
3132f97 Actually test zip sweep with duplicate keys (#2913)
68bf299 Replace Travis with Github workflow except for script that performs dev
builds (#2859)
4c0cb2c Remove explicit object superclass (#2910)
110dd4a Add interop docs and optimizers (#2884)
4df6919 Add more missing type annotations (#2908)
1640175 Intermediate examples had the wrong header (#2909)
4792e8f Add some missing type annotations (#2906)
740ef6c Reorganize examples page to better list out examples (#2897)
32a4162 Add function to compute fidelity (#2797)
eef4105 Add ability to do exhaustive Clifford trial (#2837)
11b1433 Add return values to direct_fidelity_estimation() (#2889)
9b8eb8b Shortening titles of tutorials (#2901)
baa718e Fix invalid argument in list_processors. (#2899)
b1b09a0 upgrade pytest to version 5.4.1 (#2895)
ad6b822 Fix examples link (#2893)
1daad39 Fix links in github view (#2890)
4320e52 Fix column axis rename in pandas 1.0 (#2886)
76b2689 Reorder TOC and move development to dev/ (#2882)
230249c Define moment+moment operation to return a combined moment (#2879)
3fee6d5 Fix image links and headers (#2880)
d2a8fa1 Add CXPowGate and CCNotPowGate for completeness and consistency. (#2874)
1e50e4a Refactor DFE to run samplers (#2870)
d1d203e Fix images in cirq docs (#2876)
c769af8 Move notebooks from examples to docs (#2877)
41b8e8b Add new tutorial (#2865)
4521a9b Add CZ to combined FSim gate set (#2875)
3659c7f fix pytest changed files script for mac (#2871)
25e1668 Handle all possible 1-qubit Clifford gates in Clifford simulator (#2803)
0fccaae Add stratified_circuit method (#2852)
459f644 Add has_stabilizer_effect protocol and support native Clifford simulator gates (#2760)
08ee106 Add CZ serializer (#2866)
2a3f7e9 Restore single-Clifford inversion in RB benchmarking. (#2851)
6c57f2e Expand SWEEP_LIKE to work for {'t': [0, 1, 3]} (#2786)
2dd6e2e Add GridQid class (#2861)
eb9b13c Use UTC time for reservation interactions. (#2860)
4d044cf Use random seed in CliffordSimulator (#2845)
5a52d97 Upgraded Gate documentation (#2790)
825aa57 Add Pauli expansion for PhasedXZ (#2856)
ad87c57 Add circuits notebook back in (#2855)
6271cb6 Convert documentation to use nbsphinx (#2850)
2cb9787 Implement filtering by time slot type (#2849)
fa07ce3 Fix typo (#2854)
36f3262 Add preliminary doc on calibration metrics (#2761)
76a07c7 Support readout errors modeling in noise-from-metrics utility. (#2715)
e151dc7 Fix filters to include time slots that do not start within the window. (#2848)
61fd6f1 Pasqal api (#2751)
5c60a58 Reservation Client API for cirq google EngineProcessor (#2838)
afad82b Fix error message from cirq.final_wavefunction to cirq.final_density_matrix #2778 (#2844)
626e16e Added BB84_example (#2395)
61b4259 Fix quantum engine gRPC path (#2833)
4561991 Update google gRPC Client to include reservation calls (#2830)
9b14d2f More gates aqt (#2801)
4efcb74 Issue #2829 - moved Jupyter notebooks into examples/notebooks (#2831)
5d0ac1d Added Quantum Walks Tutorial (#2825)
2e80ac3 Restore deprecated noise models. (#2827)
a8c7ed2 docs: minor spelling tweaks (#2823)
9718bd7 Add symbol capability to LIMITED_FSIM gate set (#2822)
61ce1c3 Add EngineProcessorTimeSlot to cirq.google.engine (#2794)
9422f5c Speed up GridQubit eq (#2815)
4127397 Document external simulators. (#2811)
cdb24ea Slightly speed up comparison and hashes for GridQubit (#2814)
58bdb81 Speed up direct fidelity estimation for Clifford circuits (Issue #2639) (#2709)
86b89fb Fit depolarizing model to XEB result (#2784)
007f858 Add a limited FSIM gateset (#2804)
329765a Convert single-qubit gates to single-gate PhasedXZ for sycamore (#2796)
5da8f0f Add test for non-string tag for TaggedOperation circuit diagrams (#2800)
cc457d3 Add support for indexing circuits and moments by qubits (#2773)
5d9a464 In unitary_eig, check preconditions before performing computing eigenvalues (#2795)
f6b484a Updated Dev Documentation (#2792)
dec7313 Refactor and clean up of engine client and helper objects. (#2720)
3a6ad8d Accept FSim(pi/2, pi/6) in ConvertToSycamoreGates (#2788)
875132c Attempt to fix flaky test by fixing random seed in n_qubit_tomography_test.py (#2758)
c8beade unitary eigenvalue decomposition (#2736)
17d2b05 Apply 'virtual' tag in noise models. (#2734)
d8c8547 Enable optimized_for_sycamore with single qubit MatrixGates (#2766)
736e7ac Make auto_merge script use new update-branch API call (#2782)
343682d Add tags and untagged properties on cirq.Operation (#2783)
0915f94 Make GridInteractionLayer a JSON serializable dataclass (#2779)
5e81be8 Fix density matrix simulation of noise (#2776)
0cefd75 Add function to generate random density matrix (#2780)
9d926d6 Serialization for PhysicalZ gates (#2770)
a1d2fb1 Increase tolerance in n_qubit_tomography_test' (#2774)
82d4fb3 Add tags to circuit diagrams (#2759)
37a222f Improves semantics of Circuit.findall_operations_until_blocked (#1916)
6a4fbfb Added QAOA and Rabi Demo notebooks. (#2768)
645af19 Save repetitions in CrossEntropyResult and make it into a JSON serializable dataclass (#2765)
c0a1b55 Speed up single qubit gate layer generation for random quantum circuit (#2764)
89653aa Add PhysicalZTag (#2753)
ce13a73 Add random quantum circuit generation (#2621)
1b37885 Return unrecognized random state unmodified (#2622)
6ba76b8 Add algorithm for decomposing multi-controlled rotation (#2716)
926751d Make LineQubit and GridQubit immutable (#2756)
68ca843 Make Best Practices its own page (#2754)
1d35492 Remove Google index page and link directly to Google pages (#2752)
2715417 Add Tags and TaggedOperation class (#2670)
1e5bf55 Fix sign error in PhasedXZGate._canonical (#2744)
8a0339b Add documentation for Engine (#2663)
4b91b2c Adding, shifting, and stacking for TextDiagramDrawer (#1236)
e257e31 Add json_serializable_dataclass decorator (#2706)
4dae9b2 Fix n-qubit state tomography (#2739)
8612933 Fix ordering bug in fsim decomposition (#2732)
fa74b05 Turn off --actually-quiet for Windows (#2731)
8179aa2 Add more specialized controlled implementations (#2597)
d5ce404 Draw ket labels for both real and imaginary parts of density matrix (#2722)
db9a9ed requirements: remove sympy pin (#2721)
04e2a1b Pin pandas (#2724)
0882abb Add cirq.final_density_matrix utility method (#2487)
9293779 Use captions in TOC (#2703)
c54066b Unpin networkx (#2718)
e69a1ac Fix slow tests (#2714)
df15b9b Convert documentation in docs/ to jupyter notebooks (new PR) (#2713)
1bda272 Fix special new line characters in a file (#2708)
8f946e3 removing deprecated functions with v0.7 deadline (#2707)
0494323 Update the engine code to use gRPC instead of REST (#2675)
bc858fc Plumb gate tabulation through optimized_for_sycamore (#2697)
d470089 Fix occasional bug...
Cirq v0.7.0
Major usability changes:
- Added new gates: PhasedXZGate, WaitGate, givens, ISwapRotation, IdentityGate, MatrixGate
- cirq.Rx cirq.Ry cirq.Rz cirq.MS changing to cirq.rx, cirq.ry, cirq.rz cirq.ms
- Added commutes protocol
- Added import capability from Quirk
- Improved JSON serialization support
- Many speed up and performance improvements.
- Added Sycamore Devices and optimizers to cirq.google
- Added many engine-related improvements to cirq.google
- Deleted Schedules
New protocols:
- cirq.apply_mixture
- cirq.definitely_commutes
New top level objects:
- cirq.givens
- cirq.quirk_json_to_circuit
- cirq.quirk_url_to_circuit
- cirq.estimate_single_qubit_readout_errors
- cirq.ISwapRotation
- cirq.MatrixGate
- cirq.PAULI_GATE_LIKE
- cirq.PhasedXZGate
- cirq.riswap
- cirq.rx
- cirq.ry
- cirq.rz
- cirq.decompose_two_qubit_interaction_into_four_fsim_gates_via_b
- cirq.STATE_VECTOR_LIKE
Full change list:
f56e6fb Add test_json_data files to package
266491a Create add method for Moment (#2665)
de6ca2d Better decomposition of SWAP into ISWAP ** 0.5 (#2682)
575ae93 Make grid_qubits addable (#2681)
58741a1 Add gate duration for xyz gate (#2680)
91e919a Delete cirq.api.google (#2667)
3469e5c (t2_experiments) Change symbols in phased_iswap_test (#2672)
f306544 Remove code for GCS locations since they are no longer used. (#2668)
02ee285 Add PhasedXZ gate to standard single qubit (de)serializers (#2661)
86e059a Add device_specification to engine code (#2640)
f7f224c Fix typo in SerializableDevice print out (#2660)
2c8914b Quantum Volume: Add the ability to specify the device graph to compile the model circuit onto (#2645)
7fb1a49 Add documentation for cirq.google devices (#2636)
ed6188b Add commutes protocol (#1853)
1017bae Add __tracebackhide__ = True
to several test methods (#2653)
1309e99 Add optional qubit_set property to cirq.Device (#2605)
5968ccd Adds basic PhasedISwapPow gate to Sycamore decomposition function (#2629)
933329b Fix automerge script not seeing PRs on second page (#2654)
b928a87 Fix instability in _decompose_interaction_into_two_b_gates_ignoring_single_qubit_ops (#2609)
9a5a09e Fix serialization breakage due to sympy.Rational now being a numbers.Number (#2655)
c78d345 Add optimized_for_gmon to optimize circuits for Sycamore devices (#2627)
58d7722 Fix documentation and key error in calibration (#2633)
da513ac adds max_num_empty_steps parameter (#2631)
a038bd3 Mark test that sometimes fails on windows as xfail. (#2630)
3217135 Add pretty str for devices with grid qubits (#2616)
6d81ddb fix of router hanging #2282 (#2619)
2b88d34 Add optional tabulation to ConvertToSycamoreGates (#2615)
18a677d Update Alpha Disclaimer (#2611)
31b5436 Fix doc build by removing tensorflow dependency (#2610)
3a32a40 Add support for u1(lambda) gate (#2608)
42f9a37 Add explicit JSON resolver function in contrib (#2559)
07955c5 Detect duplicate mesurement keys. (#2604)
912c82a Add (de)serializer for PhasedXZGate (#2598)
7f8a4ff Add WaitGate to gate sets (#2601)
690b5f7 lengthen randomly generated program id (#2599)
993fa1e Delete things marked as deprecated-until-v0.7 (#2594)
6d986e6 Implement TrialResult JSON serialization (#2576)
55c1590 Make 'async def' tests work (#2583)
d963a02 Add Conversion optimizers to cirq.google init (#2593)
5dcab58 Fix parametrized -> parameterized typos (#2592)
2963285 Initial draft of ConvertToSycamore (#2516)
1c5084a Delete schedules (#2589)
8902820 Use warnings.warn for deprecation warnings (#2586)
ebd0b36 Add cirq.PhasedXPowZPowGate (#2566)
35c64e4 Move deprecated functions to deprecated docs section (#2585)
8beef6d Implement decompose_two_qubit_interaction_into_four_fsim_gates_via_b (#2574)
2920804 Rename Rx, Ry and Rz factories (#2580)
e76e36a Add Sycamore23 device (#2547)
2201aa0 AQT: Improve documentation, Add Z operations and rename AQTRemoteSimulator to AQTSamplerLocalSimulator (#2578)
8408f89 Fix pytest (#2584)
96f5f54 Make pytest-changed-files include api tests when an init file is changed (#2575)
e2446d4 Update ZPow.controlled specialization (#2572)
52b14db Fix radd losing device (#2451)
f14ed20 Support arbitrary exponents when exporting X/Y/ZPowGate to quirk url (#2513)
0682134 Zlib fix (#2573)
837c4e4 Initial draft for convert_to_sqrt_iswap (#2528)
d2f6344 Test gate being added multiple times. (#2560)
907f990 Add CircuitDiagramInfoArgs.format_real (#2569)
ad98557 Add Gate and Operation Guidelines dev docs (#2558)
a8c6ca2 Don't run async methods on other threads by default (#2562)
fab633d Fix several dozen relative type annotations (#2568)
4be5578 Make QuantumEngineSampler engine accessible through property (#2564)
c055eea Fix NoisySingleQubitReadoutSampler test class (#2563)
a90051e Turn off flaky build-protos check (#2571)
e904305 Define cirq.PAULI_GATE_LIKE (#2557)
dac7814 Add single qubit readout calibration (#2532)
bb0afb3 Fixes "Mention the difference between stable docs and latest docs." (#2549)
3a4d8a7 Add optional readout error correction to Quantum Volume (#2522)
26cadfb Implement JSON serialization for ParamResolver (#2555)
2bf4826 Add a special case for WaitGate in known devices (#2545)
8a8696f Fix MatrixGate pow and repr failing for non-qubit shapes (#2556)
a4025d1 Add developer doc explaining serialization (#2548)
781e84c make resolver repr evaluatable (#2554)
d0fc17e Rename givens rotation factory (#2519)
08df3b4 Rename Mølmer–Sørensen gate factory (#2518)
d6f65c2 Deprecate IdentityOperation obsoleted by IdentityGate (#2546)
23ce7ca Fix ParamResolver.param_dict type (#2550)
4ff38cf Refactor json_test's TEST_OBJECTS value into test data files (#2527)
6d5087c Rename iswap rotation (#2526)
7a15f02 Fix typo in contrib noise models (#2529)
c90644e Update path to Cirq_logo_color.png
to make it appear in the README. (#2540)
0a5d3d4 Add check/pytest-changed-files-and-incremental-coverage (#2510)
a167b64 Client change google api (#2530)
d7927cb use RANDOM_STATE_LIKE in simulators (#2531)
15c142d Fix timings for Google devices (#2521)
390cc4a Use sum instead of einsum in QAOA example (#2507)
e2373e6 Make circuit rendering of PhasedISwapPowGate consistent with other gates (#2524)
d60cd5b identity operation -> gate property (#2515)
990be61 Simplify logic in PhasedXPowGate.circuit_diagram_info (#2525)
8f1c30a Add EigenGate.equal_up_to_global_phase (#1840)
5207900 Add support for serializing linear combinations of symbols (#2358)
95a14f2 Move quirk url importing out of contrib into interop (#2512)
a1ba3f9 Add 2-qubit gate decomp based on randomly filling the Weyl chamber to contrib (#2420)
07d8cd2 Specialize ZPow.controlled() to return CZPow for single qubit control. (#2402)
17d94cf Add docstrings for additional methods in #2480 (#2489)
aade1f3 Bump qiskit version used during qasm compatibility test (#2511)
1cdf343 Add support for importing custom gates in Quirk URLS (#2473)
ad490a7 Sycamore Device (#2485)
4670173 Add a documentation coverage test (#2498)
9b51176 Use @DataClass for cirq.google.[De]SerializingArg (#2494)
de2039d Increase prominence of doc links in readme (#2490)
0d08c9f Add logo(s) to the docs (#2491)
4a96e04 use python -m install everywhere in travis.yml (#2500)
94f7fd2 Allow creating new gatesets with added gates (#2458)
58a794f Define cirq.STATE_VECTOR_LIKE (#2376)
efb3afe Fix various protocols and result types not being exported (#2496)
5d9b9bb Various doc improvements in cirq/ops (#2495)
9becde4 Various doc fixes (#2497)
5c13dea ISwapRotation (#2488)
d7fefa8 PointOptimizerSummary option to avoid flattening (#2461)
9c0eb4c Associate docstrings with public constants (#2471)
0df878c Skip install step in misc check (#2483)
cd84155 CliffordTableau stabilizers and destabilizers methods return list of DensePauliString (#2480)
190c41f Extract generic MatrixGate, deprecate SingleQubit/TwoQubitMatrixGate (#2381)
93a9312 SVG circuit drawing updates (#2414)
1df0979 Speed up QAOA example (#2470)
0b48318 use testing assert function for more readable output (#2469)
b221c52 add atol parameter to tests (#2467)
be0615d Gate.controlled(0) return self (#2465)
1ec8a68 Speed up sampling in the case of measuring all qudits (#2463)
e54f0f1 Speed up density matrix sampling (#2462)
ef86e7a Speed up wavefunction sampling (#2460)
c266da8 Add random_state argument to linalg testing functions for seeded randomness (#2459)
d3cfe3f Implement JSON serialization for numpy dtypes (#2456)
dffd4ea Add WaitGate proto serialization (#2437)
Cirq v0.6.0
Major usability changes:
- Pandas.
cirq.TrialResult
now has adata
property that returns results as apandas.DataFrame
, providing access to all of pandas' convenience methods for working with data. - Qudit support. Added
cirq.Qid.dimension
andcirq.Operation._qid_shape_
, as well as validation and simulator support. - Packaging. Package variant
cirq[contrib]
with requirements forcirq.contrib
. Unstable packagecirq-unstable
tracking master. - Serialization.
cirq.to_json
andcirq.from_json
methods can serialize (..almost) any cirq object. - Deterministic randomness. Almost all methods with random behavior now take a seed or
numpy.Random
instance. - Dropped support for python 2.7 and python 3.5.
New protocols:
cirq.equal_up_to_global_phase
/_equal_up_to_global_phase_
cirq.qid_shape
/_qid_shape_
cirq.num_qubits
/_num_qubits_
New top level objects:
cirq.reset
/cirq.ResetChannel
cirq.WaitGate
cirq.FSimGate
cirq.GlobalPhasedOperation
(the first operation with no qubits)cirq.ThreeQubitDiagonalGate
cirq.DensePauliString
cirq.MutableDensePauliString
cirq.ArithmeticOperation
(helper class for defining arithmetic operations)cirq.CCNOT = cirq.TOFFOLI
aliascirq.CX = cirq.CNOT
aliascirq.final_wavefunction
cirq.subwavefunction
cirq.wavefunction_partial_trace
cirq.von_neumann_entropy
cirq.apply_mixture
cirq.one_hot
cirq.axis_angle
/cirq.AxisAngleDecomposition
cirq.apply_unitaries
cirq.approx_pauli_string_expectation
cirq.flatten[/_with_params/_with_sweep]
for inlining complicated sympy expressions into sweepscirq.LinearCombinationOfOperations
cirq.PauliSum
cirq.SampleCollector
cirq.op_gate_of_type
cirq.op_gate_isinstance
cirq.NOISE_MODEL_LIKE
(flexible argument type for specifying noise models)cirq.PAULI_STRING_LIKE
(flexible argument type for specifying pauli string arguments)cirq.CliffordSimulator
,cirq.StabilizerStateChForm
,cirq.CliffordTableau
,cirq.CliffordState
,cirq.CliffordTrialResult
(all still rough)cirq.StabilizerStateChForm
(still rough)cirq.SimulatesAmplitudes
interfacecirq.DepolarizingNoiseModel
cirq.DepolarizingWithReadoutNoiseModel
cirq.DepolarizingWithDampedReadoutNoiseModel
cirq.pow_pauli_combination
New sub package objects:
- Added
cirq.aqt
package, which contains code to run cirq circuits on AQT's service. cirq.experiments.cross_entropy_benchmarking
cirq.experiments.linear_xeb_fidelity
cirq.experiments.log_xeb_fidelity
cirq.experiments.log_xeb_fidelity_from_probabilities
cirq.experiments.t1_decay
cirq.experiments.xeb_fidelity
cirq.contrib.qasm_import.circuit_from_qasm
cirq.contrib.quirk.quirk_url_to_circuit
cirq.contrib.quirk.quirk_json_to_circuit
cirq.contrib.SVGCircuit
cirq.contrib.circuit_to_svg
Other changes (partial list):
- Deprecated
cirq.Circuit.from_ops
in favor ofcirq.Circuit.__init__
- Deprecated
cirq.Circuit.to_unitary_matrix
in favor ofcirq.Circuit.unitary
- Deprecated
cirq.Circuit.apply_unitary_effect_to_state
in favor ofcirq.Circuit.final_wavefunction
- Deleted
cirq.google.XmonSimulator
(usecirq.Simulator
instead) cirq.approx_eq
now recursively compares the items of iterablescirq.resolve_parameters
now recursively resolves the items of iterablescirq.is_parameterized
now recursively checks the items of iterables- Added
cirq.TrialResult.data
method - Added
cirq.Sampler.sample
method which returns apandas.DataFrame
cirq.ControlledGate.on
now returns acirq.ControlledOperation
instead of acirq.GateOperation
simulator_state
method on simulators is now private_simulator_state
cirq.QasmUGate.__init__
now takes operations in the same order as defined in QASM speccirq.PhasedXPowGate
now longer auto-transforms itself intocirq.XPowGate
orcirq.YPowGate
at special phase angles- Attempting to sample a circuit with no measurements now raises an error
- Fixed
cirq.kak_canonicalize_vector
not ensuring z>=0 when x=pi/4. - Added
cirq.PauliString.__add__/__sub__
methods - Added
cirq.PauliString.conjugated_by
method - Added
cirq.PauliString.dense
method - Added
cirq.X/Y/ZPowGate.__add__/__sub__
methods - Generalized
cirq.Circuit.__init__
to take any tree of moments/operations. - Added
cirq.PauliString._unitary_
methods - Added
DensityMatrixTrialResult.__str__
- Added a
py.typed
file tellingmypy
it can use cirq's inline type annotations - Added
cirq.PeriodicValue.__repr__
cirq.GateOperation._pauli_expansion_
- Controlling by nothing (
operation.controlled_by()
) now has no effect instead of unnecessarily wrapping - Added
cirq.PauliString._decompose_
- Added
cirq.GridQubit.square
static method - Added
cirq.GridQubit.rect
static method - Added
cirq.GridQubit.from_pic
static method - Added
cirq.Circuit.__iadd__
- Added
cirq.PauliString.__bool__
- Density matrix simulator now uses
apply_channel
when possible - Fixed
cirq.AsymmetricDepolarizingChannel._circuit_diagram_info_
ignoring precision argument cirq.SingleQubitGate.on_each
method now takes any tree of qids- Added
cirq.SimulationTrialResult.qubit_map
method - Added
cirq.KakDecomposition.__str__
method - Added
cirq.control.UndirectedGraphDevice
- Added
CircuitDag.all_qubits
- Added
CircuitDag.is_topologically_sorted
- Added
CircuitDag.get_logical_operations
- Added
CircuitDag.random_circuit_dag
- Added
CircuitDag.random_topological_sort
- Added
examples/swap_networks.py
- Added
examples/qaoa.py
- Added
cirq.X/Y/ZPowGate.in_su2
- Added
cirq.X/Y/ZPowGate.with_canonical_global_phase
- Added
cirq.GridQubit.__add__/__sub__
- Added
cirq.LineQubit.__add__/__sub__
- Added
Circuit.with_noise
method - Added
cirq.Moment.__pow__
- Added
cirq.Sweep.__getitem__
with slice support - Added
cirq.SynchronizeTerminalMeasurements
. cirq.experiments.RabiResult.plot
now sets y axis range to [0, 1].- Fixed backwards qubit ordering in
cirq.experiments.two_qubit_state_tomography
- Fixed
Circuit.findall_operations_until_blocked
double counting operations - Added
cirq.Sampler.run_sweep_async
- Generalized
cirq.PauliString.__init__
to take any tree of Pauli operations or dictionary from qubit to Pauli operation or complex number cirq.EjectZ
optimizer can now commute Z gates through swap-like gates- Continued development on
cirq.google.QuantumEngine
related classes, e.g. defined more flexible v2 proto serialization format - Fixed several instances of checking for
sympy.Symbol
instead ofsympy.Basic
- Added
cirq.vis.Heatmap
cirq.EjectZ
optimizer copes better in the presence of symbolic parameterscirq.EjectPhasedPaulis
optimizer copes better in the presence of symbolic parameters- Fixed several cases of simulators ignoring
cirq.MeasurementGate.invert_mask
- Fixed
cirq.CSwapGate
now supporting equality comparisons cirq.Sweepable
type union now allows dictionaries and lists of dictionaries- Added
cirq.scatter_plot_normalized_kak_interaction_coefficients
method cirq.Moment.__eq__
no longer cares about operation order- Added
cirq.TrialResult.__add__
method - Renamed
cirq.experiments.generate_supremancy_circuit[...]
tocirq.google.generate_boixo_2018_supremacy_circuits_[...]
- Added
cirq.Circuit.transform_qubits
method - Fixed
cirq.approx_eq
hanging when given strings - Added
cirq.kak_vector
method for quickly computing many kak coefficients cirq.Duration.__init__
now acceptstimedelta
andsympy.Basic
values- Added
ConstantQubitNoiseModel.__eq__
- Added
ConstantQubitNoiseModel.__repr__
- Re-arranged some files within the
cirq.ops
package - Fixed
cirq.SWAP
andcirq.ISWAP
decompositions not preserving global phase
Notable dev changes:
- Defined development package variant
cirq[dev-env]
which includes development environment requirements - We have gradually begun deprecating things instead of simply deleting them.
- Auto deploy to
cirq-dev
on push to master. - Continuous integration on Windows, OSX, and Linux instances instead of just Linux.
- Incremental build tools compare against mergebase master instead of master itself
- Added
cirq.value.ABCMetaImplementAnyOneOf
metaclass withcirq.value.alternative
decorator - We have started adding doctest-ed
Examples
section to some doc strings - Added
--actually_quiet
parameter to the pytest check script _compat.proper_repr
now also works on pandas data frames.- Deleted
continuous-integration/
in favor ofcheck/
scripts