Cirq v0.6.0
Major usability changes:
- Pandas.
cirq.TrialResultnow has adataproperty that returns results as apandas.DataFrame, providing access to all of pandas' convenience methods for working with data. - Qudit support. Added
cirq.Qid.dimensionandcirq.Operation._qid_shape_, as well as validation and simulator support. - Packaging. Package variant
cirq[contrib]with requirements forcirq.contrib. Unstable packagecirq-unstabletracking master. - Serialization.
cirq.to_jsonandcirq.from_jsonmethods can serialize (..almost) any cirq object. - Deterministic randomness. Almost all methods with random behavior now take a seed or
numpy.Randominstance. - 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.ResetChannelcirq.WaitGatecirq.FSimGatecirq.GlobalPhasedOperation(the first operation with no qubits)cirq.ThreeQubitDiagonalGatecirq.DensePauliStringcirq.MutableDensePauliStringcirq.ArithmeticOperation(helper class for defining arithmetic operations)cirq.CCNOT = cirq.TOFFOLIaliascirq.CX = cirq.CNOTaliascirq.final_wavefunctioncirq.subwavefunctioncirq.wavefunction_partial_tracecirq.von_neumann_entropycirq.apply_mixturecirq.one_hotcirq.axis_angle/cirq.AxisAngleDecompositioncirq.apply_unitariescirq.approx_pauli_string_expectationcirq.flatten[/_with_params/_with_sweep]for inlining complicated sympy expressions into sweepscirq.LinearCombinationOfOperationscirq.PauliSumcirq.SampleCollectorcirq.op_gate_of_typecirq.op_gate_isinstancecirq.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.SimulatesAmplitudesinterfacecirq.DepolarizingNoiseModelcirq.DepolarizingWithReadoutNoiseModelcirq.DepolarizingWithDampedReadoutNoiseModelcirq.pow_pauli_combination
New sub package objects:
- Added
cirq.aqtpackage, which contains code to run cirq circuits on AQT's service. cirq.experiments.cross_entropy_benchmarkingcirq.experiments.linear_xeb_fidelitycirq.experiments.log_xeb_fidelitycirq.experiments.log_xeb_fidelity_from_probabilitiescirq.experiments.t1_decaycirq.experiments.xeb_fidelitycirq.contrib.qasm_import.circuit_from_qasmcirq.contrib.quirk.quirk_url_to_circuitcirq.contrib.quirk.quirk_json_to_circuitcirq.contrib.SVGCircuitcirq.contrib.circuit_to_svg
Other changes (partial list):
- Deprecated
cirq.Circuit.from_opsin favor ofcirq.Circuit.__init__ - Deprecated
cirq.Circuit.to_unitary_matrixin favor ofcirq.Circuit.unitary - Deprecated
cirq.Circuit.apply_unitary_effect_to_statein favor ofcirq.Circuit.final_wavefunction - Deleted
cirq.google.XmonSimulator(usecirq.Simulatorinstead) cirq.approx_eqnow recursively compares the items of iterablescirq.resolve_parametersnow recursively resolves the items of iterablescirq.is_parameterizednow recursively checks the items of iterables- Added
cirq.TrialResult.datamethod - Added
cirq.Sampler.samplemethod which returns apandas.DataFrame cirq.ControlledGate.onnow returns acirq.ControlledOperationinstead of acirq.GateOperationsimulator_statemethod on simulators is now private_simulator_statecirq.QasmUGate.__init__now takes operations in the same order as defined in QASM speccirq.PhasedXPowGatenow longer auto-transforms itself intocirq.XPowGateorcirq.YPowGateat special phase angles- Attempting to sample a circuit with no measurements now raises an error
- Fixed
cirq.kak_canonicalize_vectornot ensuring z>=0 when x=pi/4. - Added
cirq.PauliString.__add__/__sub__methods - Added
cirq.PauliString.conjugated_bymethod - Added
cirq.PauliString.densemethod - 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.typedfile tellingmypyit 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.squarestatic method - Added
cirq.GridQubit.rectstatic method - Added
cirq.GridQubit.from_picstatic method - Added
cirq.Circuit.__iadd__ - Added
cirq.PauliString.__bool__ - Density matrix simulator now uses
apply_channelwhen possible - Fixed
cirq.AsymmetricDepolarizingChannel._circuit_diagram_info_ignoring precision argument cirq.SingleQubitGate.on_eachmethod now takes any tree of qids- Added
cirq.SimulationTrialResult.qubit_mapmethod - 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_noisemethod - Added
cirq.Moment.__pow__ - Added
cirq.Sweep.__getitem__with slice support - Added
cirq.SynchronizeTerminalMeasurements. cirq.experiments.RabiResult.plotnow sets y axis range to [0, 1].- Fixed backwards qubit ordering in
cirq.experiments.two_qubit_state_tomography - Fixed
Circuit.findall_operations_until_blockeddouble 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.EjectZoptimizer can now commute Z gates through swap-like gates- Continued development on
cirq.google.QuantumEnginerelated classes, e.g. defined more flexible v2 proto serialization format - Fixed several instances of checking for
sympy.Symbolinstead ofsympy.Basic - Added
cirq.vis.Heatmap cirq.EjectZoptimizer copes better in the presence of symbolic parameterscirq.EjectPhasedPaulisoptimizer copes better in the presence of symbolic parameters- Fixed several cases of simulators ignoring
cirq.MeasurementGate.invert_mask - Fixed
cirq.CSwapGatenow supporting equality comparisons cirq.Sweepabletype union now allows dictionaries and lists of dictionaries- Added
cirq.scatter_plot_normalized_kak_interaction_coefficientsmethod 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_qubitsmethod - Fixed
cirq.approx_eqhanging when given strings - Added
cirq.kak_vectormethod for quickly computing many kak coefficients cirq.Duration.__init__now acceptstimedeltaandsympy.Basicvalues- Added
ConstantQubitNoiseModel.__eq__ - Added
ConstantQubitNoiseModel.__repr__ - Re-arranged some files within the
cirq.opspackage - Fixed
cirq.SWAPandcirq.ISWAPdecompositions 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-devon 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.ABCMetaImplementAnyOneOfmetaclass withcirq.value.alternativedecorator - We have started adding doctest-ed
Examplessection to some doc strings - Added
--actually_quietparameter to the pytest check script _compat.proper_reprnow also works on pandas data frames.- Deleted
continuous-integration/in favor ofcheck/scripts