Releases: quantumlib/Cirq
Cirq v0.14.1
Patch release to fix vendor issue #5210.
No other changes introduced.
Cirq v0.14.0
Cirq v0.14.0 release
Highlights
Transformers
Revamped and deprecated many of the old and buggy optimizers found in cirq.optimizers with new cirq.transformer implementations. New transformers have well defined functionality with CircuitOperations and should be easier to use overall.
Classical Control
Cirq now has support for classical control in NiSQ relevant regimes. Classically controlled operations and measurement feedforward operations are supported. Extension into arbitrary classical logic on top of this is not on the immediate roadmap.
Devices
Devices have undergone a rework. Functionality to: attach a device to a circuit, use a device as a means to decompose a circuit, and exploration related functions have been removed. Devices now validate circuits and carry a DeviceMetaData property if more description of the device is needed.
Misc
In addition to the larger changes mentioned above, this release also includes new experiment utilities for characterizing device readout errors with cirq.measure_confusion_matrix. The cirq.decompose function contract has now been tightened to return a circuit containing just X,Y,Z,C*Z gates (assuming a decomposition is possible). Repeated measurement keys will now store temporal measurements (where previously they would be disallowed). New simulation techniques based on (https://arxiv.org/abs/2112.08499) and more.
Breaking changes
c20c99b Add cirq.eject_phased_paulis transformer to replace cirq.EjectPhasedPaulis (#4958)
bfa2602 Make PauliMeasurementGate respect sign of the pauli observable. (#4836)
89f88b0 Remove use of .device in contrib. (#4821)
b0519b3 Convert cirq.Result to ABC and add ResultDict implementation (#4806)
6937e41 Add ClassicalDataStore class to keep track of qubits measured (#4781)
1d8d2f3 Implement PauliStringPhasorGate (#4696)
4985a51 Remove EngineTimeSlot (#4608)
Changes to top level objects
cirq-core
New top level objects
DeviceMetadataGridDeviceMetadataNoiseModelFromNoisePropertiesNoisePropertiesOpIdentifierSuperconductingQubitsNoisePropertiesTensoredConfusionMatricesmeasure_confusion_matrixdensity_matrix_kronecker_productstate_vector_kronecker_productBooleanHamiltonianGateClassicallyControlledOperationCliffordGateGlobalPhaseGateglobal_phase_operationPauliStringPhasorGateSynchronizeTerminalMeasurements
New or renamed top level objects from cirq.transformers
align_leftalign_rightCompilationTargetGatesetCZTargetGatesetcompute_cphase_exponents_for_fsim_decompositiondecompose_clifford_tableau_to_operationsdecompose_cphase_into_two_fsimdecompose_multi_controlled_xdecompose_multi_controlled_rotationdecompose_two_qubit_interaction_into_four_fsim_gatesdefer_measurementsdephase_measurementsdrop_empty_momentsdrop_negligible_operationseject_phased_pauliseject_zexpand_compositeis_negligible_turnmap_momentsmap_operationsmap_operations_and_unrollmerge_k_qubit_unitariesmerge_k_qubit_unitaries_to_circuit_opmerge_momentsmerge_operationsmerge_operations_to_circuit_opmerge_single_qubit_gates_to_phased_x_and_zmerge_single_qubit_gates_to_phxzmerge_single_qubit_moments_to_phxzoptimize_for_target_gatesetparameterized_2q_op_to_sqrt_iswap_operationsprepare_two_qubit_state_using_czprepare_two_qubit_state_using_sqrt_iswapSqrtIswapTargetGatesetTRANSFORMERTransformerContextTransformerLoggerthree_qubit_matrix_to_operationstransformertwo_qubit_matrix_to_cz_operationstwo_qubit_matrix_to_diagonal_and_cz_operationstwo_qubit_matrix_to_operationstwo_qubit_gate_product_tabulationTwoQubitCompilationTargetGatesetTwoQubitGateTabulationTwoQubitGateTabulationResulttoggle_tagsunroll_circuit_opunroll_circuit_op_greedy_earliestunroll_circuit_op_greedy_frontierStabilizerStateActOnStabilizerArgsSimulationTrialResultBaseResultDictClassicalDataDictionaryStoreClassicalDataStoreClassicalDataStoreReaderConditionKeyConditionMeasurementTypeSympyConditioncirq_type_from_jsoncontrol_keysHasJSONNamespacejson_cirq_typejson_namespaceLabelEntitymeasurement_keys_touchedSupportsControlKeywith_key_path_prefixwith_rescoped_keys
Pre-existing optimizers with the same names as the given transformers have also been deprecated in favor of these newer implementations.
Objects or parameters that are marked as deprecated and will be removed in coming releases (too long to list all individual deprecations)
- Attaching devices to circuits via
Circuit(...)orcircuit.with_device. device.{qubit_set, decompose_operation, qid_pairs, can_add_operation_into_moment}SymmetricalQidPair- The above changes impact all vendor packages as well as contrib.
- All old optimizer implementations have been replaced/updated with new transformer implementations.
ActOnDensityMatrixArgs(multiple parameters)ActOnStateVectorArgs(multiple parameters)ActOnStabilizerCHFormArgs(multiple parameters)
cirq-google
New top level objects
ValidatingSamplerFSimGateFamilyknown_2q_op_to_sycamore_operationstwo_qubit_matrix_to_sycamore_operationsSycamoreTargetGatesetCIRCUIT_SERIALIZERExecutableGroupResultFilesystemRecordexecuteQubitPlacerCouldNotPlaceErrorNaiveQubitPlacerRandomDevicePlacerProcessorRecordEngineProcessorRecordSimulatedProcessorRecordSimulatedProcessorWithLocalDeviceRecord
Objects or parameters that are marked as deprecated and will be removed in coming releases
BristleconeFoxtailXmonDeviceEngineProcessor.list_calibrations(latest_timestamp_seconds->latest_timestamp)EngineProcessor.list_calibrations(earliest_timestamp_seconds->earliest_timestamp)Engine.sampler(useget_samplerinstead)optimized_for_sycamore(new_device is going away)optimized_for_xmon(new_device is going away)ConvertToSycamoreGates(use cirq.optimize_for_target_gateset instead)ConvertToSqrtIswapGates(use cirq.optimize_for_target_gateset instead)TwoQubitGateCompilation(moved tocirq.TwoQubitGateTabulationResult)GateTabulation(moved tocirq.TwoQubitGateTabulation)gate_product_tabulation(moved tocirq.two_qubit_gate_product_tabulation)SerializableDevice.qubit_set(use device.metadata property where applicable)deserialize(removed support for device attachment to circuit)
A Huge Thank You
Thank you to all our contributors for this release:
Abraham Asfaw, Adam Zalcman, Aleksandr Pak, Alex McNamara, Animesh Sinha, Anna Nachesa, Antoine (Tony) Bruguier, augustehirth, Bicheng Ying, Cheng Xing, Dave Bacon, Dax Fohl, dependabot[bot], Doug Strain, Evan Peters, Freyam Mehta, Hosseinberg, Ilja Livenson, Jintao YU, Jon Donovan, Matthew Harrigan, Matthew Neeley, Michael A. Perlin, Michael Broughton, Nathanael Thompson, Orion Martin, Pavol Juhas, Tanuj Khattar, Victory Omole, Zachary Crockett
Full change list
33580bb Rename TestDevice -> FakeDevice to avoid pytest confusion (#5066)
45624ff Add support for deep=True flag in cg.optimized_for_sycamore and cg.SycamoreTargetGateset transformers (#5126)
cdd3f8c DeviceSpecification proto updates (#5056)
091582e Bugfix in handling of deep=True flag in cirq.merge_k_qubit_unitaries transformer (#5125)
89e7210 Add support for deep=True to cirq.optimize_for_target_gateset transformer (#5124)
518d828 Add support for deep=True to merge_single_qubit_gates* transformers (#5123)
92d19f6 Add support for deep=True to cirq.merge_k_qubit_unitaries transformer (#5122)
64a6723 Add support for deep=True to cirq.eject_z transformer (#5115)
04d58c4 Add support for deep=True to cirq.align_left and cirq.align_right transformers (#5112)
ca4bb72 Add support for deep=True to cirq.eject_phased_paulis transformer (#5116)
d2f284d Add support for deep=True to cirq.expand_composite transformer (#5119)
b45e63d Add support for deep=True to cirq.synchronize_terminal_measurements transformer (#5118)
155f607 Add support for deep=True to cirq.stratified_circuit transformer (#5117)
869d83b Add support for deep=True to cirq.drop_negligible_operations transformer (#5114)
fade070 Add support for deep=True to cirq.drop_empty_moments transformer (#5113)
cfa255a Add add_deep_support flag to @cirq.transformer decorator (#5108)
aed4eb8 Bugfixes in handling nested tags_to_ignore + deep=True in cirq.map_moments and cirq.map_operations transformer primitives (#5109)
e0a64dd Extract BufferedDM/SV/MPS from ActOnDM/SV/MPSArgs (#4979)
d3c4853 Add assert_decompose_ends_at_default_gateset to consistent protocols test to ensure all cirq gates decompose to default gateset (#5107)
6af5387 Add support for deep=True flag to remaining transformer primitives (#5106)
2693951 Improve support for recursively applying transformer primitives on circuit operations using deep=True (#5103)
caadb0c Deprectate log_of_measurement_result input (#5100)
848bfde Add default decomposition for cirq.QubitPermutationGate in terms of adjacent swaps (#5093)
e0f7432 Deprecate `cir...
Cirq v0.13.1
v0.13.0
Cirq v0.13.0 release
Highlights
ProjectorString + ProjectorSum
Added cirq.ProjectorString and cirq.ProjectorSum for compact representations and calculations involving projection operations.
Gatesets
Construct cirq.GateFamily and cirq.Gateset to test gates and operations for membership in well-defined groups.
NamedTopologies
Basic circuit to device placement routines (get_placements, draw_placements) have been added to Cirq, powered by NamedTopology.
Simulator performance improvements
Cirq's built-in simulators now dynamically factorize the simulated state into non-entangled subsets of qubits (when possible). This dramatically improves performance for circuits consisting of disconnected subsystems, and permits simulation of larger numbers of qubits for such circuits.
Clifford Tableau Decomposition
Upgraded existing clifford operations and circuits to make use of Tableau representation where appropriate and implemented baseline tableau to circuit decomposition using methods outlined in this paper.
Breaking changes
- Retain log_of_measurement_results throughout simulation (#4465):
- Step results will include all measurements from previous moments in the simulation.
- Exponent should be drawn on target qubit in CX and CCX gates (#4462):
- Tests depending upon diagrams of CX and CCX can now fail.
- Replace isinstance(op, GateOperation) checks in cirq_google optimizers to support other operation types (#4459):
- Note that TaggedOperations which were earlier ignored by the optimizers would now be considered, and hence this is potentially a breaking change if people were implicitly relying on TaggedOperations not getting compiled by the optimizers.
- Resolve inconsistencies in using controlled gates & controlled operations (#4167):
gate_operation.controlled_by()can now return acirq.GateOperationinstead ofcirq.ControlledOperationin cases where the underlying gates have specializedgate.controlled()implementations.- This also leads to a change in diagram of the controlled gates with specialized controlled implementations. For eg: Controlled S gate is now plotted as
CZPowGate(@ --- @ ** 0.5) instead ofControlledOperationwith Z ** 0.5 as subgate(@ ---- S) op.controlled_byfor 3Q gates likeCCX,CCZ,CSWAPwill now returnControlledOperationwithsub_operation = <underlying non-controlled gate>. Eg:CCCX(i.e.sub_gate = X) instead ofCTOFFOLI(i.e.sub_gate = TOFFOLI) etc.- Diagrams for
ControlledOperationswill now always have the exponent drawn on the target qubit (in case of multi qubitsub_operation, the exponent will always be on the first qubit if not the underlying gate does not explicitly specify a target index).
Changes to top level objects
cirq-core
New top level objects
NamedTopologydraw_gridlikeLineTopologyTiltedSquareLatticeget_placementsdraw_placementsestimate_parallel_single_qubit_readout_errorsAnyIntegerPowerGateFamilyAnyUnitaryGateFamilyGateFamilyGatesetmeasure_paulistring_termsmeasure_single_paulistringParallelGateParallelGateFamilyparallel_gate_opPauliMeasurementGateStatePreparationChannelProjectorSumdecompose_clifford_tableau_to_operationschoi_to_krauschoi_to_superoperatorkraus_to_superoperatoroperation_to_superoperatorsuperoperator_to_choisuperoperator_to_krausstate_vector_to_probabilitiesdataclass_json_dictmeasurement_key_namemeasurement_key_objmeasurement_key_namesmeasurement_key_objsSupportsKraus
Objects or parameters that are marked as deprecated and will be removed in coming releases
- cirq.SupportsOnEachGate
- cirq.TwoQubitGate -> Define num_qubits manually
- cirq.ThreeQubitGate -> Define num_qubits manually
- cirq.ParallelGateOperation -> Use cirq.ParallelGate(gate, num_copies).on(qubits)
- cirq.measurement_key_names -> parameter allow_decompose removed
- cirq.is_measurement -> parameter allow_decompose removed
- cirq.kraus_to_channel_matrix -> Use cirq.kraus_to_superoperator instead
- cirq.operation_to_channel_matrix -> Use cirq.operation_to_superoperator instead
- cirq.CompletionOrderedAsyncWorkPool -> Use duet.AsyncCollector instead
- cirq.SerializableGateSet.gate_set_name -> Use name instead
cirq-google
New top-level objects
SerializerExecutableSpecKeyValueExecutableSpecQuantumExecutableQuantumExecutableGroupBitstringsMeasurementSharedRuntimeInfoRuntimeInfoExecutableResult
A Huge Thank You
Thank you to all our contributors for this release:
Adam Zalcman, Alapan Chaudhuri, Ali Panahi, Ana Sofia Uzsoy, Animesh Sinha, Antoine (Tony) Bruguier, Balint Pato, Bicheng Ying, cognigami, Dave Bacon, Dax Fohl, Doug Strain, Eric Hulburd, Guen Prawiroatmodjo, ishmum123, Ishmum Jawad Khan, Mark Daoust, Matthew Harrigan, Matthew Neeley, melonwater211, MichaelBroughton, Nathanael Thompson, Orion Martin, Pieter Eendebak, Ryan LaRose, Shrill Shrestha, Smit Sanghavi, Tanuj Khattar, twojno, Victory Omole, Zeeshan Ahmed
Full change list
8a7d6f8 Removing 0.13.0.dev -> 0.13.0
50271af Made the Density Matrix Plotter (#4493)
aaf969d Allow any qubit type in quimb density matrix (#4547)
e4e9019 GateFamily & Gatesets cleanups and bugfixes (#4569)
686e6b1 Removes sections related to experimental features. (#4573)
5aca52d Roll forward "Enable CircuitOp serialization" (#4511)
1f14edf Fix "tex" -> "text" (#4571)
888aeb7 Make Instance GateFamily check for equality ignoring global phase (#4542)
66c694a [cirqflow] Quantum runtime skeleton - part 1 (#4565)
033c604 Remove v0.13 deprecations. (#4567)
9f3034c Replace isinstance(op, GateOperation) checks in cirq_google optimizers to support other operation types. (#4459)
bd2e63c Boolean Hamiltonian gate yields fewer gates (#4386)
3d50921 [cirqflow] Provide concrete ExecutableSpec (#4559)
978dbac Add measurement_key_obj and measurement_key_objs protocols. (#4497)
f11846e Add copyright notices to conftests (#4561)
e66ac53 Document conversion tools between channel representations (#4554)
09da391 Fix variational algorithm tutorial (#4541)
eaa7f33 [cirqflow] QuantumExecutableGroup (#4551)
7e0d5d2 Add Azure Quantum docs and tutorials (#4530)
0d9eb4e More channel representation conversion tools (#4553)
02b4658 Compute a Kraus representation from the Choi matrix (#4549)
241695a Acctually assert in kraus_protocol_test.py (#4546)
f48efe0 Resolve inconsistencies in using controlled gates & controlled operations (#4167)
9d0ac9c Add Clifford Tableau decomposition function (#4183)
e6dc1e0 Use Gatesets in cirq/neutral_atoms (#4525)
bd1cdbc [cirqflow] Quantum Executable (#4527)
da63524 Fixed test_clifford_circuit_3 (#4534)
5daaec6 Fix resolving integer divisions (#4521)
88be1ef Fix broken path instructions in setting up a dev environment (#4519)
004eed1 Add separators argument to to_json function. (#4537)
6d9bbac Re-add all_measurement_keys and deprecate it (#4540)
34d0f8b Replace the underlying representation of SingleCliffordGate by CliffordTableau (#4165)
44e063b Code Quality Fixes in StatePreparationChannel (#4503)
e256423 [Named Topologies] LineTopology nodes_as_linequbits (#4536)
9591615 Idiomatic use of "segments" in floquet calibration tutorial (#4528)
3a287c2 Use Gatesets in cirq/optimizers/* (#4526)
2868382 Use Gatesets in cirq_ionq/* (#4524)
dfc33a1 Use Gatesets in cirq_pasqal/* (#4523)
61718ca Use Gatesets in cirq/ion (#4522)
4d1b9c0 Add common gate families as part of adopting gatesets across Cirq. (#4517)
f8ffbea Fix docstring for fsim gate (#4520)
f1964e5 Explicitly throw TimeoutError when job times out (#4514)
9f6c359 Exponent should be drawn on target qubit in CX and CCX gates (#4462)
9f371b0 Consolidate SQRT_ISWAP gate defs (#4229)
cf5b45d Little json things (#4506)
7759c05 Add type annotation on FrozenCircuit.to_op (#4505)
0041657 Add cirq.GateFamily and cirq.Gateset (#4491)
464ef04 Fix broken tutorials depending on cirq pre-release (#4504)
f1e676f Fix incorrect index in intro.ipynb (#4502)
3725c6a Implemented State Preparation Gate (#4482)
b80c265 Fix broken Floquet tutorial (#4496)
91bfb5c [Docs] Add calibration FAQ (#4442)
b3fa1bf Abstract out auth+device+sampler boilerplate from cirq_google tutorials (#4286)
578c956 Bump the proto requirements to match the generated data. (#4473)
eb3d84c Replace decomposition in measurement_key_protocol with explicit implementations (#4471)
676431d Adds PauliMeasurementGate (#4444)
9349802 Append list of wrapped finders in sys.meta_path with list of non-wrapped finders (#4467)
3b6ddfb Refactor ActOnArgs.kron/factor/transpose to reduce code duplication (#4463)
7951f84 Deprecate Two/ThreeQubitGate (#4207)
0dce2c1 [Obs] 4.5 - High-level API (#4392)
2988803 Retain log_of_measurement_results throughout simulation (#4465)
9130e2a cirq-google: Export Serializer on top-level cirq_google namespace (#4474)
d8004c6 Enable missing-param-doc pylint rule. (#4457)
6ce9a06 Upgrade notebook (#4468)
b44387a Bring back nest-asyncio to allow running notebooks with latest release (#4472)
de31ee9 Use duet for asynchrony, in particular for Collector (#4009)
58cda7a Serialize SingleQubitCliffordGate (#4421)
932f065 Added r(theta, phi) gate (#4455)
886fc51 dataclass_json_dict (#4391)
6ecaf07 Named Topologies (#4370)
1c2eafb Add missing code for ProjectorSum serialization in TFQ (#4456)
454c1a3 Allow initialization of Measuremen...
v0.12.0
Cirq v0.12.0 release
Highlights
All Cirq vendor modules have been extracted
Following the example of cirq-google now we have cirq.aqt, cirq.pasqal and cirq.ionq extracted to their corresponding new cirq modules. These are standalone packages that can be installed on their own with pip install cirq-<module>.
Rigetti support
In collaboration with Rigetti, the cirq-rigetti module is now avaiable to access the Rigetti QVM and Rigetti Quantum Computing Service runtimes.
Two-qubit unitary decomposition for (inverse) sqrt-iSWAP
Arbitrary two-qubit unitaries can be now decomposed to single and two-qubit gates using only 3 sqrt-iSWAP gates, compared to the previous 6 sqrt-iSWAP gates. This is an exact analytical compiler based on https://arxiv.org/abs/2105.06074
Typescript development and 3D Circuits
The cirq-web module adds the framework to develop new, interactive, Typescript based widgets for notebook environments. Two new widgets are added as an example: BlochSphere visualization and 3D Circuits.
Python 3.9 support
We now officially support python 3.9, it is included in our testing suite.
Performance boost for low entanglement circuits
Starting with #4100 all simulators now dynamically allocate/deallocate memory when entangling between qubits or measuring/resetting qubits. This allows users to simulate larger number of qubits than otherwise would have been possible, with the requirement that not too much entanglement between qubits exist at any given moment in the circuit.
Breaking changes
cirq.MergeInteractionsbehavior change (#4288):- MergeInteractions skips merging CZ gates if there are already equal or fewer in a sequence than the synthesized result (to prevent increasing the gate count). Previously, a tagged partial CZ gate could slip through and not be optimized even if allow_partial_czs=False.
- changes in mutability of
step_result.get_state(copy=False)(#4110):- Manual changes made to a
step_result.get_state(copy=False)array are no longer preserved by default. If this behavior is required, it will continue to work ifsplit_untangled_qubits=False, but this PR setssplit_untangled_qubits=True.
- Manual changes made to a
Changes to top level objects
cirq-core
New top level objects
SymmetricalQidPairis_cptpBooleanHamiltonianKrausChannelMixedUnitaryChannelProjectorStringreset_eachSQRT_ISWAPSQRT_ISWAP_INVMergeInteractionsToSqrtIswaptwo_qubit_matrix_to_sqrt_iswap_operationsentanglement_fidelitykraus_to_channel_matrixkraus_to_choioperation_to_channel_matrixoperation_to_choiActOnArgsContainerOperationTargetStepResultBaseGenericMetaImplementAnyOneOfMEASUREMENT_KEY_SEPARATORhas_krauskrausSupportsActOnQubits
Objects or parameters that are marked as deprecated and will be removed in coming releases
- cirq.aqt, deadline v0.14
- cirq.pasqal, deadline v0.14
- cirq.ionq, deadline v0.14
- cirq.channel -> cirq.kraus, deadline v0.13
- cirq.has_channel -> cirq.has_kraus, deadline v0.13
- cirq.SupportChannel -> cirq.SupportKraus, deadline v0.13
- cirq.ActOnArgs.axes will be removed, use
protocols.act_oninstead, deadline v0.13 - cirq_google.GateOpDeserializer.serialized_gate_id -> serialized_id
- cirq_google.SerializableGateSet.serialize parameter use_constants_table_for_tokens -> use_constants, deadline v0.13
- cirq_google.SerializableGateSet.with_added_gates -> with_added_types, deadline v0.13
- cirq_google.SerializableGateSet.supported_gate_types -> supported_interal_types, deadline v0.13
cirq-google
No changes to top level objects.
New modules
- cirq-aqt
- cirq-pasqal
- cirq-ionq
- cirq-rigetti
- cirq-web
A Huge Thank You
Thank you to all our contributors for this release:
Adam Zalcman, Ana Sofia Uzsoy, Antoine (Tony) Bruguier, Balint Pato, Bicheng Ying, Casey Duckering, Craig Gidney, Dax Fohl, Dmytro Fedoriaka, Doug Strain, Eric Hulburd, Jannes Stubbemann, Laurent AJDNIK, madcpf, Malice, Mark Daoust, Martin Leib, Matthew Harrigan, Matthew Neeley, Michael Broughton, MichaelBroughton, Nathanael Thompson, Niko Savola, Noureldin, Orion Martin, Ryan LaRose, Seun Omonije, Smit Sanghavi, Tanuj Khattar, Victory Omole, Wojciech Mruczkiewicz
Full change list
8cba324 Update serialization.md to include deprecation of serializable values (#4411)
1168164 Fix link on jupyter notebook (#4409)
abc7159 Revert "Simultaneous readout" (#4406)
66fd247 implement aspen qubits and devices (#4378)
0d4a31b 3D circuit visualization using Typescript dev environment (#4334)
10c78c9 Add print_version and replace_version to module.py (#4399)
eb72fb5 Simultaneous readout (#4307)
10b15e0 Fix cirq-core dependencies (#4369)
8c505fb update json serialization docs + add module docs (#4397)
9d695c5 Fix BooleanHamiltonian.with_qubits() to work with not only NamedQubits (#4396)
3810349 Reorganize serializers (#4385)
78db102 Add missing import cirq (#4387)
c3f9a5d T1 decay for simulator (#4326)
e56e15d Boolean Hamiltonian gate (#4309)
2466bc3 Throw TypeError around any call in if hasattr(obj, '__iter__') and not isinstance(obj, str): to deal with a numpy special case (#4382)
120eb87 [Obs] 4.4 - Checkpointing (#4352)
b1dc973 Proto serialization v25 (#4333)
fb91578 GeneralizedAmplitudeDampingChannel docstring (#4374)
f7b882c Measureable channels and mixtures (#4194)
409a412 Disallow empty measurement keys and fix tests using empty keys (#4060)
9c23053 Lazily create TrialResult.final_simulator_state (#4317)
9467ad3 Add is_cptp predicate (#4365)
2b1e407 Updated calls to np.prod to use dtype=np.int64. (#4363)
9a38c2d Projectors for TensorFlow quantum (#4331)
2467e39 IdentityGate optimizations for act_on and independent states (S) (#4340)
0f9fa3f Optimize swap gates (#4169)
fb43b84 Fix floquet quirk url (#4347)
bae702c Revert "Enable CircuitOp serialization." (#4355)
809fe66 Revert "Allow CircuitOperations in cirq.optimized_for_sycamore" (#4356)
ecb0202 [Obs] 4.4 - Readout error mitigation (#4323)
187915d Allow CircuitOperations in cirq.optimized_for_sycamore (#4336)
0209c65 Complete implementation of the permit_mixed_moments option (#4342)
4d956c5 Enable CircuitOp serialization. (#4344)
055db68 Allow intercepting decomposer while preserving structure. (#4343)
912110f Adds cirq-rigetti (#4302)
7a27917 Floquet notebook missed review nits (#4341)
093c171 Fix citation and explanation in Floquet calibration example (#4335)
b92f379 Make (cirq.X, cirq.Y, cirq.Z)**1 returned type as _Pauli{X,Y,Z} instead of {X,Y,Z}PowGate (#4330)
dc01372 Attempt to Fix PauliSumCollector.collect_async warning under notebook(short-term solution) (#4004)
16dd1bb better error messaging when deprecated module can't be imported (#4324)
c629c38 Re-alias TrialResult to Result in json. (#4319)
b8e0587 Fix cirq_web README from large Typescript development PR merge (#4314)
a3109a7 pauli_sum_collector.estimate_energy() should return float when energy.imag == 0 (#4313)
0d8bf31 Add missing quote in circuits.ipynb (#4320)
68f7698 T1 constant calculation (#4290)
d9e1f93 Fix NameError in visualizing calibration metrics tutorial (#4316)
d624a55 Add docstyle rule to the linter and subsequent refactor. (#4311)
7407a28 Test deserializer on infinite recursion. (#4315)
c28646f Sample independent qubit sets without merging state space (#4110)
5ca4ab6 Move on_each to Gate, and deprecate SupportsOnEachGate (#4303)
4852c46 Fix automerge checks (#4308)
ada1b09 Add an option to build a PauliSum from a Sympy Boolean expression (#4282)
b1a35bf Revert "Switch to using the incremental pylint. Turn on documentation linters. (#4267)" (#4306)
52aba59 Switch to using the incremental pylint. Turn on documentation linters. (#4267)
cea9eec Return self in Operation.with_tags if adding no tags (#4301)
c8be206 Add reset_each function by analogy with measure_each (#4294)
418d067 Remove bazel from repo (#4297)
4ec906d Allow on_each for multi-qubit gates (#4281)
e2b4477 Use partial_trace to factor density matrix (#4300)
6cfdda7 [XEB] Cycle depths during analysis (#4278)
5c3125e Add py39 testing to CI test matrix. (#4296)
d850bd0 Add Circuit Optimizer for sqrt-iSWAP (#4224)
504bdbb Fix behavior of MergeInteractions for tagged partial CZ gates (#4288)
c80e463 Add two-qubit unitary decomposition for (inverse) sqrt-iSWAP (#4213)
24bac55 Typescript development in Cirq and prototype Bloch sphere implementation (#4171)
6282c06 SimulatorBase independent qubits optimization (#4100)
6b6fc98 fix for issue #4087 (#4103)
680f897 Revert "Support qubits in MeasurementKey and update JSON serialization of keys" (#4277)
1433621 Fix docker (#4230)
55417ee Extract cirq-pasqal (#4241)
608e678 Remove cirq.IonDevice.can_add_operation_into_moment (#4271)
534b951 Add qubits as a param of PauliSum.matrix() (#4203)
d379571 Refactor private static methods to module functions. (#4231)
b1801ab Add coupler pulse gate (#4130)
6d2cd16 No DeprecationWarning deduping during testing (#4239)
ff230df Update tutorials on calibration (#4258)
36e5f60 Add method to get "mapped_circuit" from CircuitOperations (#4188)
09a2ea5 Support sqrt(iSWAP) and Sycamore gates in Floquet calibration (#4248)
aba9fa9 [Docs] Fix dev group link on support page (#4259)
2f07cc9 Fix the CZ ops on the Clifford Tableau Implementation (#4182)
700a6c0 add cancel workflow (#4256)
418e08d Propagate channel from GateOperation to its Gate (...
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 cirqwill not suffice to upgrade cirq - please runpip uninstall cirqbefore 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_PARAMETERSgot renamed tocirq_google.SQRT_ISWAP_INV_PARAMETERScirq.Heatmap.plot()now takes all valid heatmap config arguments as**kwargsinstead 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_histogramintegrated_histogramActOnArgsActOnDensityMatrixArgsCliffordTableauDiagonalGateSimulatesExpectationValuesSimulatorBaseMeasurementKeyRx,Ry,Rz
Removed objects that were deprecated
- Removed support for the
funcparameter inCircuit.transform_qubits(), you now must usequbit_mapinstead TrialResultis now officially unsupported, usecirq.Resultinstead. If you have old JSONs lying around, you can just search and replaceTrialResulttoResult- If you have old gate implementations with
_resolve_parameterthat doesn't support therecursiveparameter, 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:boolparameter - Removed support for the
density_matrixparameter incirq.von_neumann_entropyyou now must usestateinstead stabilizersanddestabilizersmethods are now removed from theCliffordSimulatorclass, you can find these on theCliffordTableauinsteadperform_measurementis now renamed toapply_measurementinCliffordSimulator- When implementing a subclass of the
Simulatorclass,_simulator_iteratorwon't work, you will have to use_base_iterator cirq.vis.heatmap.relative_luminanceis 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_histogramwas moved tocirq.vis.plot_state_histogramcirq.google, deadline v0.14cirq.sim.clifford.CliffordTableaumoved to a different package, you should usecirq.CliffordTableauinsteadcirq.contrib.routing.xmon_device_to_graphis deprecated, usecirq.contrib.grid_qubits_to_graph_deviceinsteadcirq.contrib.quantum_volumeparameterdevice_or_qubitsis deprecated, usedevice_graphinstead.
cirq-google
New top level objects
PhasedFSimCalibrationErrorPhasedFSimCalibrationOptionsXEBPhasedFSimCalibrationOptionsXEBPhasedFSimCalibrationRequestLocalXEBPhasedFSimCalibrationOptionsLocalXEBPhasedFSimCalibrationRequestprepare_characterization_for_momentsprepare_characterization_for_momentprepare_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 qubitHeatmapsare 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
Heatmapis redesigned and configuration parameters are now passed via**kwargsinstead of setter/getter functions.cirq.experimentschanges: the default value of the parametertwo_qubit_op_factoryinrandom_rotations_between_grid_interaction_layers_circuitandrandom_rotations_between_two_qubit_circuitchanged tocirq.CZinstead ofcirq.google.SYCcirq.google.api.v2.results.MeasureInfois now a dataclass which also contains tags corresponding to the circuit passed tocirq.google.api.v2.find_measurements.cirq.CliffordSimulatorbehavior 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_keysprotocol now returnsAbstractSet[str]instead ofTuple[str, ...]cirq.resolve_parameterschanges - 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
RecursionErrorwhen encountering a loop in parameter resolution - Resolver is more zealous in its conversion of
inttofloat
cirq.protocols.json_serialization.RESOLVER_CACHEgoes away -- you should not see a change in most cases is it was not a part of the public API.
New protocols
read_json_gzipresolve_parameters_onceSerializableByKeyto_json_gzip
Changes to top level objects
New top level objects
AbstractCircuitAlignmentCircuitOperationionqFrozenCircuitPauliSumExponentialPhasedFSimGatewaitAlignLeftAlignRighttwo_qubit_matrix_to_diagonal_and_operationsthree_qubit_matrix_to_operationsdensity_matrixQUANTUM_STATE_LIKEQuantumStatequantum_statevalidate_density_matrixread_json_gzipresolve_parameters_onceSerializableByKeyto_json_gzipwith_measurement_key_mappingTwoQubitInteractionHeatmap
Removed top level objects that were deprecated
subwavefunctionwavefunction_partial_trace_as_mixtureQFTdecompose_two_qubit_interaction_into_four_fsim_gates_via_bvalidate_normalized_statefinal_wavefunctionSimulatesIntermediateWaveFunctionWaveFunctionSimulatorStateWaveFunctionStepResultWaveFunctionTrialResulthas_mixture_channelmixture_channel
Top level objects or parameters that are marked as deprecated and will be removed in coming releases
- parameter deprecation:
cirq.Circuit.transform_qubitsUsequbit_mapinstead offunc - parameter deprecation:
cirq.Moment.transform_qubitsUsequbit_mapinstead offunc - parameter deprecation:
cirq.Operation.transform_qubitsUsequbit_mapinstead offunc - parameter deprecation:
cirq.von_neumann_entropyUsestateinstead ofdensity_matrix cirq.CliffordState.perform_measurementcirq.SimulatesIntermediateState._simulator_iteratorcirq.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_symbolsto 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_vectoris consistently used instead
Breaking changes:
cirq.approx_eqnow raises anAttributeErrorif the symbolic evaluation can't unambiguously decide the equality, before it returnedFalse#3195cirq.google.Enginemethodsrun,run_sweepandcreate_programnow raise ValueError ifgate_setis not specified #3138cirq.google.Engineconstructor signature change:contextis 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_resultsare now removed, they are still accessible but through the deprecatedcirq.google.api.v1.programsmodule #3204circuit + gatebehavior 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.QuilOutputcirq.least_squares_xeb_fidelity_from_expectationscirq.least_squares_xeb_fidelity_from_probabilitiescirq.deconstruct_single_qubit_matrix_into_anglescirq.matrix_commutescirq.num_cnots_requiredcirq.partial_trace_of_state_vector_as_mixturecirq.subwavefunctioncirq.sub_state_vectorcirq.to_specialcirq.cphasecirq.MutablePauliStringcirq.NamedQidcirq.RandomGateChannelcirq.qftcirq.QubitPermutationGatecirq.TwoQubitDiagonalGatecirq.VirtualTagcirq.compute_cphase_exponents_for_fsim_decompositioncirq.decompose_cphase_into_two_fsimcirq.validate_indicescirq.validate_normalized_state_vectorcirq.validate_qid_shapecirq.ActOnCliffordTableauArgscirq.ActOnStabilizerCHFormArgscirq.ActOnStateVectorArgscirq.final_state_vectorcirq.SimulatesIntermediateStateVectorcirq.StabilizerSamplercirq.StateVectorSimulatorStatecirq.StateVectorStepResultcirq.StateVectorTrialResultcirq.dict_to_product_sweepcirq.dict_to_zip_sweepcirq.to_sweepscirq.Resultcirq.TParamKeycirq.KET_PLUScirq.KET_MINUScirq.KET_IMAGcirq.KET_MINUS_IMAGcirq.KET_ZEROcirq.KET_ONEcirq.PAULI_STATEScirq.ProductStatecirq.act_oncirq.JsonResolvercirq.measurement_keyscirq.parameter_namescirq.parameter_symbolscirq.quilcirq.QuilFormattercirq.SupportsActOncirq.SupportsConsistentApplyUnitarycirq.SupportsPauliExpansioncirq.trace_distance_from_angle_listcirq.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...

