Cirq is a Python library for writing, manipulating, and optimizing quantum circuits and running them against quantum computers and simulators

Overview
Cirq

Cirq is a Python library for writing, manipulating, and optimizing quantum circuits and running them against quantum computers and simulators.

Build Status Documentation Status

Installation and Documentation

Cirq documentation is available at quantumai.google/cirq.

Documentation for the latest pre-release version of cirq (tracks the repository's master branch; what you get if you pip install --pre cirq), is available at here.

Documentation for the latest stable version of cirq (what you get if you pip install cirq) is available at here.

For a comprehensive list all of the interactive Jupyter Notebooks in our repo (including the ones not yet published to the site) open our repo in Colab.

For the latest news regarding Cirq, sign up to the Cirq-announce email list!

Hello Qubit

A simple example to get you up and running:

import cirq

# Pick a qubit.
qubit = cirq.GridQubit(0, 0)

# Create a circuit
circuit = cirq.Circuit(
    cirq.X(qubit)**0.5,  # Square root of NOT.
    cirq.measure(qubit, key='m')  # Measurement.
)
print("Circuit:")
print(circuit)

# Simulate the circuit several times.
simulator = cirq.Simulator()
result = simulator.run(circuit, repetitions=20)
print("Results:")
print(result)

Example output:

Circuit:
(0, 0): ───X^0.5───M('m')───
Results:
m=11000111111011001000

Feature requests / Bugs / Questions

If you have feature requests or you found a bug, please file them on Github.

For questions about how to use Cirq post to Quantum Computing Stack Exchange with the cirq tag.

How to cite Cirq

Cirq is uploaded to Zenodo automatically. Click on the badge below to see all the citation formats for all versions.

DOI

Cirq Contributors Community

We welcome contributions! Before opening your first PR, a good place to start is to read our guidelines.

We are dedicated to cultivating an open and inclusive community to build software for near term quantum computers. Please read our code of conduct for the rules of engagement within our community.

For real time informal discussions about Cirq, join our cirqdev Gitter channel, come hangout with us!

Cirq Cynque is our weekly meeting for contributors to discuss upcoming features, designs, issues, community and status of different efforts. To get an invitation please join the cirq-dev email list which also serves as yet another platform to discuss contributions and design ideas.

See Also

For those interested in using quantum computers to solve problems in chemistry and materials science, we encourage exploring OpenFermion and its sister library for compiling quantum simulation algorithms in Cirq, OpenFermion-Cirq.

For machine learning enthusiasts, Tensorflow Quantum is a great project to check out!

For a powerful quantum circuit simulator that integrates well with Cirq, we recommend looking at qsim.

Finally, ReCirq contains real world experiments using Cirq.

Alpha Disclaimer

Cirq is currently in alpha. We may change or remove parts of Cirq's API when making new releases. To be informed of deprecations and breaking changes, subscribe to the cirq-announce google group mailing list.

Cirq is not an official Google product. Copyright 2019 The Cirq Developers

Issues
  • Adds cirq-rigetti

    Adds cirq-rigetti

    Adds integrations to the Rigetti QVM and Forest SDK in a new module: cirq-rigetti. Includes integration testing with docker compose jobs and documentation.

    RFC

    cla: yes 
    opened by erichulburd 51
  • instability in kak decomposition

    instability in kak decomposition

    In some cases the kak decomposition appears to have an instability in the sign of the ZZ coefficient. Consider the following example:

    a, b = cirq.LineQubit(0), cirq.LineQubit(1)
    
    theta = 0.3
    circuit_1 = cirq.Circuit()
    circuit_1.append(cirq.ISWAP.on(a, b))
    circuit_1.append(
        cirq.ZZPowGate(exponent=2 * theta / numpy.pi, global_shift=-0.5).on(a, b))
    print(cirq.kak_decomposition(cirq.unitary(circuit_1)).interaction_coefficients)
    
    theta += 0.001
    circuit_2 = cirq.Circuit()
    circuit_2.append(cirq.ISWAP.on(a, b))
    circuit_2.append(
        cirq.ZZPowGate(exponent=2 * theta / numpy.pi, global_shift=-0.5).on(a, b))
    print(cirq.kak_decomposition(cirq.unitary(circuit_2)).interaction_coefficients)
    
    print(numpy.amax(numpy.absolute(cirq.unitary(circuit_1) - cirq.unitary(circuit_2))))
    

    returns

    (0.7853981633974483, 0.7853981633974483, -0.2999999999999998)
    (0.7853981633974482, 0.7853981633974482, 0.30099999999999993)
    0.0009999999583333466
    

    And thus we see that despite the fact the unitaries are very similar, the kak decomposition gives a seemingly random sign on the ZZ interaction coefficient. Is this a bug?

    opened by babbush 48
  • Retain ordering information in conversion.

    Retain ordering information in conversion.

    Previously, when you requested a cirq result with measurement A, and B, we would return a Result object that contained the correct counts for A and B, but which eliminated any correlation information we had (by throwing the results order out in count()). This changes so that count() is derived from another method, ordered_results, which takes a key and returns the list of list of bit-wise results in a consistent way from key to key.

    cla: yes size: M 
    opened by Cynocracy 29
  • [qpolish] dev-site & readthedocs hybrid

    [qpolish] dev-site & readthedocs hybrid

    Adds a hybrid solution where now the docs folder is the source of truth for devsite, our new documentation platform that will go live in a couple of months. This contains the current version of the docs-site branch.

    ReadTheDocs specific files now live in rtd-docs that should be rarely (if ever) modified. After spending a day on researching possible ways to do this I settled with a simple "copy" approach and re-referencing the "new docs" structure from the ReadTheDocs rst files.

    This will make some maintenance tasks like restructuring ReadTheDocs a bit tricky, but the situation is temporary and regular docs updates should be okay.

    cla: yes 
    opened by balopat 29
  • Simulate factorizable circuit

    Simulate factorizable circuit

    Is your feature request related to a use case or problem? Please describe.

    If you're running many "independent" circuits in parallel on a given set of qubits (where independent means there are no entangling gates between them; i.e. you can factorize the circuit (and therefore wavefunction)) you can simulate it much more efficiently than working in the full 2^(all n qubits) space.

    Describe the solution you'd like

    I think it should be possible to transform a circuit into an interaction graph, use a connected components algorithm to figure out how to split it into circuits operating on a subsets of qubits, and return a dictionary of state vectors keyed by the set of qubits.

    What is the urgency from your perspective for this issue? Is it blocking important work?

    Any sort of characterization that you run in parallel and requires simulating the circuit (read: XEB) would benefit from this! There's a version of this hacked into cirq.experiments.parallel_two_qubit_xeb

    good part time project kind/feature-request triage/accepted area/simulation area/performance area/xeb 
    opened by mpharrigan 27
  • Created Quantum Walks Tutorial

    Created Quantum Walks Tutorial

    Sorry for opening another PR, but the CLA in the other request simply won't go through. This takes into account a lot of the changes requested in #1934.

    cla: no 
    opened by Lucaman99 26
  • Replace cirq.Symbol with sympy.Symbol

    Replace cirq.Symbol with sympy.Symbol

    Fixes: https://github.com/quantumlib/Cirq/issues/393

    The first commit of this pull request is me getting familiar with sympy. Looking for some feedback @kevinsung. Thank you!

    cla: yes Ready for Re-Review 
    opened by vtomole 26
  • Notebook test slow tests

    Notebook test slow tests

    Probably worth trying to speed up that notebook test as it is long poll in the CI. Maybe there is a pattern to add something that can "fix" the notebooks to smaller parameters to speed them up?

    63.27s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/cirq/contrib/quimb/Cirq-to-Tensor-Networks.ipynb]
    42.70s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/tutorials/quantum_walks.ipynb]
    33.26s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/tutorials/educators/qaoa_ising.ipynb]
    28.50s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/tutorials/hidden_linear_function.ipynb]
    27.31s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/tutorials/educators/chemistry.ipynb]
    24.82s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/tutorials/qaoa.ipynb]
    21.05s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/tutorials/variational_algorithm.ipynb]
    14.91s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/cirq/contrib/quimb/Contract-a-Grid-Circuit.ipynb]
    11.20s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/tutorials/rabi_oscillations.ipynb]
    10.77s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/interop.ipynb]
    9.48s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/tutorials/educators/intro.ipynb]
    9.44s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/tutorials/educators/textbook_algorithms.ipynb]
    7.76s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/circuits.ipynb]
    7.73s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/tutorials/educators/ion_device.ipynb]
    7.45s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/simulation.ipynb]
    7.29s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/tutorials/basics.ipynb]
    6.34s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/qubits.ipynb]
    6.30s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/transform.ipynb]
    6.26s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/tutorials/educators/neutral_atom.ipynb]
    6.21s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/qudits.ipynb]
    6.19s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/protocols.ipynb]
    6.13s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/custom_gates.ipynb]
    6.04s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/noise.ipynb]
    6.03s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/tutorials/shor.ipynb]
    5.93s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/cirq/contrib/svg/example.ipynb]
    5.84s call     dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/docs/gates.ipynb]
    0.11s setup    dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/cirq/contrib/quimb/Contract-a-Grid-Circuit.ipynb]
    0.06s setup    dev_tools/notebook_test.py::test_notebooks[/Users/bacon/code/github/Cirq/cirq/contrib/svg/example.ipynb]
    
    kind/health triage/accepted area/testing area/performance area/notebook-testing 
    opened by dabacon 25
  • SimulatorBase independent qubits optimization

    SimulatorBase independent qubits optimization

    Add optimization that ensures independent qubit sets are simulated independently. This is done by adding join, extract, and reorder methods to ActOnArgs, and updating SimulatorBase with the logic to merge qubit sets when necessary and split them when possible.

    This optimization is enabled or disabled via a new parameter in the simulator constructors: split_entangled_qubits. Currently the PR has this set to True by default, though perhaps it should be disabled by default lest it breaks anything? The MPS simulator does not yet have extract defined and thus there's no option to enable this feature in MPS simulator's constructor yet, though nothing prevents this from being added later.

    The perf boost of this implementation is limited because each StepResult still requires the full product state. It's still a speedup because full product state calculations will only have to occur once per moment rather than once per operation, but not as nice as avoiding full product state calculations entirely. That optimization will be available in a subsequent PR that never creates the full product state if possible: StepResults will join the product state only on demand, and sampling will sample each substate independently and zip up the results, avoiding the full state join: The WIP is here https://github.com/daxfohl/Cirq/compare/split...daxfohl:sample?expand=1.

    I ramped up the number of qubits in the benchmarks to 25 for sparse and 12 for DM:

    From master:

    (cirq-py3) [email protected]:~/cirq$ time pytest dev_tools/profiling/benchmark_simulators_test.py
    platform linux -- Python 3.8.5, pytest-5.4.3, py-1.10.0, pluggy-0.13.1
    benchmark: 3.2.3 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)
    rootdir: /home/dax/cirq
    plugins: cov-2.5.1, asyncio-0.12.0, benchmark-3.2.3
    collected 5 items
    
    dev_tools/profiling/benchmark_simulators_test.py .....                                                                                                                                                    [100%]
    
    real    0m16.973s
    user    0m15.754s
    sys     0m3.862s
    

    From split branch (the current PR):

    (cirq-py3) [email protected]:~/cirq$ time pytest dev_tools/profiling/benchmark_simulators_test.py
    platform linux -- Python 3.8.5, pytest-5.4.3, py-1.10.0, pluggy-0.13.1
    benchmark: 3.2.3 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)
    rootdir: /home/dax/cirq
    plugins: cov-2.5.1, asyncio-0.12.0, benchmark-3.2.3
    collected 5 items
    
    dev_tools/profiling/benchmark_simulators_test.py .....                                                                                                                                                    [100%]
    
    real    0m10.073s
    user    0m9.082s
    sys     0m3.805s
    

    From sample branch (future iteration mentioned above):

    (cirq-py3) [email protected]:~/cirq$ time pytest dev_tools/profiling/benchmark_simulators_test.py
    platform linux -- Python 3.8.5, pytest-5.4.3, py-1.10.0, pluggy-0.13.1
    benchmark: 3.2.3 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)
    rootdir: /home/dax/cirq
    plugins: cov-2.5.1, asyncio-0.12.0, benchmark-3.2.3
    collected 5 items
    
    dev_tools/profiling/benchmark_simulators_test.py .....                                                                                                                                                    [100%]
    
    real    0m2.885s
    user    0m3.523s
    sys     0m2.597s
    

    Initial PR for #3240 Closes #882

    cla: yes 
    opened by daxfohl 24
  • Define EigenGate to supersede PartialReflectionGate

    Define EigenGate to supersede PartialReflectionGate

    My original motivation for opening #299 was to define a gate for the XX+YY interaction. With that resolved in #320, I wanted to define this gate now as

    class XXYYGate(PartialReflectionGate,
                   cirq.InterchangeableQubitsGate,
                   cirq.TwoQubitGate):
        """XX + YY interaction.
    
        This gate implements the unitary exp(-i pi half_turns (XX + YY) / 2)
        """
    
        def _with_half_turns(self,
                             half_turns: Union[Symbol, float] = 1.0
                             ) -> 'XXYYGate':
            return XXYYGate(half_turns=half_turns)
    
        def _reflection_matrix(self):
            return numpy.array([[1, 0, 0, 0],
                                [0, 0, -1j, 0],
                                [0, -1j, 0, 0],
                                [0, 0, 0, 1]])
    
        def text_diagram_wire_symbols(self):
            return 'XXYY', 'XXYY'
    
        def __repr__(self):
            return 'XXYYGate(half_turns={!r})'.format(self.half_turns)
    

    But reflection_matrix_pow does not work for this:

    import numpy
    from cirq.linalg.transformations import reflection_matrix_pow
    
    A = numpy.array([[1, 0, 0, 0],
                     [0, 0, -1j, 0],
                     [0, -1j, 0, 0],
                     [0, 0, 0, 1]])
    print(numpy.dot(A, A))
    print()
    print(reflection_matrix_pow(A, 2))
    
    [[ 1.+0.j  0.+0.j  0.+0.j  0.+0.j]
     [ 0.+0.j -1.+0.j  0.+0.j  0.+0.j]
     [ 0.+0.j  0.+0.j -1.+0.j  0.+0.j]
     [ 0.+0.j  0.+0.j  0.+0.j  1.+0.j]]
    
    [[1.+0.j 0.+0.j 0.+0.j 0.+0.j]
     [0.+0.j 1.+0.j 0.+0.j 0.+0.j]
     [0.+0.j 0.+0.j 1.+0.j 0.+0.j]
     [0.+0.j 0.+0.j 0.+0.j 1.+0.j]]
    

    The issue is that reflection_matrix_pow does not work for I ⊕ U; it only works for U. It assumes that the input has exactly two eigenvalues, but in my case there is the third constant 1 eigenvalue.

    Note that in this case half_turns=2 does not give the original matrix back. Two half turns (one full turn) flips the sign of U; you need to make 4 half turns (2 full turns) to get back the original matrix.

    opened by kevinsung 24
  • Example of direct fidelity estimation

    Example of direct fidelity estimation

    Adding an example that illustrates the fidelity estimation, as per these two papers

    Direct Fidelity Estimation from Few Pauli Measurements https://arxiv.org/abs/1104.4695

    Practical characterization of quantum devices without tomography https://arxiv.org/abs/1104.3835

    cla: yes 
    opened by tonybruguier-google 23
  • Improve typing in commutes and apply_unitary protocols

    Improve typing in commutes and apply_unitary protocols

    • In commutes_protocol use local marker-only type for raising TypeError. Require the default argument to be either that, bool or None for indeterminate result. Take out np.ndarray from that typing enchilada.

    • Simplify typing in protocols apply_unitary, apply_unitaries Require default argument to be only of np.ndarray type, do not let it be None.

    size: S 
    opened by pavoljuhas 1
  • Change GridDeviceMetadata qubit type to GridQubit

    Change GridDeviceMetadata qubit type to GridQubit

    Proposal to change qubit types in GridDeviceMetadata to GridQubit, per @maffoo 's and @mpharrigan 's suggestion.

    Looks like GridQid is not a superclass of GridQubit.

    Also included a quick docstring fix to disambiguate from cirq_google.GridDevice.

    @MichaelBroughton WDYT?

    size: S 
    opened by verult 3
  • Flaking engine_client_test

    Flaking engine_client_test

    Lately I've been getting a flake on cirq-google/cirq_google/engine/engine_client_test.py

    It has the strange behavior that a different number of the tests in this file fail.

    Here is a typical failure

    _____________________________ test_get_reservation _____________________________
    [gw13] linux -- Python 3.9.12 /usr/local/google/home/dabacon/.virtualenvs/cirq-py3/bin/python
    
    args = (), keywargs = {}
    
        @wraps(func)
        def patched(*args, **keywargs):
    >       with self.decoration_helper(patched,
                                        args,
                                        keywargs) as (newargs, newkeywargs):
    
    /usr/lib/python3.9/unittest/mock.py:1333: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    /usr/lib/python3.9/contextlib.py:119: in __enter__
        return next(self.gen)
    /usr/lib/python3.9/unittest/mock.py:1315: in decoration_helper
        arg = exit_stack.enter_context(patching)
    /usr/lib/python3.9/contextlib.py:448: in enter_context
        result = _cm_type.__enter__(cm)
    /usr/lib/python3.9/unittest/mock.py:1488: in __enter__
        new = create_autospec(autospec, spec_set=spec_set,
    /usr/lib/python3.9/unittest/mock.py:2687: in create_autospec
        _check_signature(original, new, skipfirst=skipfirst)
    /usr/lib/python3.9/unittest/mock.py:120: in _check_signature
        _copy_func_details(func, checksig)
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    func = <AsyncMock name='QuantumEngineServiceAsyncClient.cancel_quantum_job' spec='function' id='140304880977472'>
    funcopy = <function _check_signature.<locals>.checksig at 0x7f9a6edbf3a0>
    
        def _copy_func_details(func, funcopy):
            # we explicitly don't copy func.__dict__ into this copy as it would
            # expose original attributes that should be mocked
            for attribute in (
                '__name__', '__doc__', '__text_signature__',
                '__module__', '__defaults__', '__kwdefaults__',
            ):
                try:
    >               setattr(funcopy, attribute, getattr(func, attribute))
    E               TypeError: __name__ must be set to a string object
    
    /usr/lib/python3.9/unittest/mock.py:133: TypeError
    
    kind/bug-report 
    opened by dabacon 2
Releases(v0.14.1)
  • v0.14.0(Mar 24, 2022)

    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

    c20c99ba Add cirq.eject_phased_paulis transformer to replace cirq.EjectPhasedPaulis (#4958) bfa26028 Make PauliMeasurementGate respect sign of the pauli observable. (#4836) 89f88b01 Remove use of .device in contrib. (#4821) b0519b38 Convert cirq.Result to ABC and add ResultDict implementation (#4806) 6937e417 Add ClassicalDataStore class to keep track of qubits measured (#4781) 1d8d2f38 Implement PauliStringPhasorGate (#4696) 4985a516 Remove EngineTimeSlot (#4608)

    Changes to top level objects

    cirq-core

    New top level objects

    • DeviceMetadata
    • GridDeviceMetadata
    • NoiseModelFromNoiseProperties
    • NoiseProperties
    • OpIdentifier
    • SuperconductingQubitsNoiseProperties
    • TensoredConfusionMatrices
    • measure_confusion_matrix
    • density_matrix_kronecker_product
    • state_vector_kronecker_product
    • BooleanHamiltonianGate
    • ClassicallyControlledOperation
    • CliffordGate
    • GlobalPhaseGate
    • global_phase_operation
    • PauliStringPhasorGate
    • SynchronizeTerminalMeasurements

    New or renamed top level objects from cirq.transformers

    • align_left
    • align_right
    • CompilationTargetGateset
    • CZTargetGateset
    • compute_cphase_exponents_for_fsim_decomposition
    • decompose_clifford_tableau_to_operations
    • decompose_cphase_into_two_fsim
    • decompose_multi_controlled_x
    • decompose_multi_controlled_rotation
    • decompose_two_qubit_interaction_into_four_fsim_gates
    • defer_measurements
    • dephase_measurements
    • drop_empty_moments
    • drop_negligible_operations
    • eject_phased_paulis
    • eject_z
    • expand_composite
    • is_negligible_turn
    • map_moments
    • map_operations
    • map_operations_and_unroll
    • merge_k_qubit_unitaries
    • merge_k_qubit_unitaries_to_circuit_op
    • merge_moments
    • merge_operations
    • merge_operations_to_circuit_op
    • merge_single_qubit_gates_to_phased_x_and_z
    • merge_single_qubit_gates_to_phxz
    • merge_single_qubit_moments_to_phxz
    • optimize_for_target_gateset
    • parameterized_2q_op_to_sqrt_iswap_operations
    • prepare_two_qubit_state_using_cz
    • prepare_two_qubit_state_using_sqrt_iswap
    • SqrtIswapTargetGateset
    • TRANSFORMER
    • TransformerContext
    • TransformerLogger
    • three_qubit_matrix_to_operations
    • transformer
    • two_qubit_matrix_to_cz_operations
    • two_qubit_matrix_to_diagonal_and_cz_operations
    • two_qubit_matrix_to_operations
    • two_qubit_gate_product_tabulation
    • TwoQubitCompilationTargetGateset
    • TwoQubitGateTabulation
    • TwoQubitGateTabulationResult
    • toggle_tags
    • unroll_circuit_op
    • unroll_circuit_op_greedy_earliest
    • unroll_circuit_op_greedy_frontier
    • StabilizerState
    • ActOnStabilizerArgs
    • SimulationTrialResultBase
    • ResultDict
    • ClassicalDataDictionaryStore
    • ClassicalDataStore
    • ClassicalDataStoreReader
    • Condition
    • KeyCondition
    • MeasurementType
    • SympyCondition
    • cirq_type_from_json
    • control_keys
    • HasJSONNamespace
    • json_cirq_type
    • json_namespace
    • LabelEntity
    • measurement_keys_touched
    • SupportsControlKey
    • with_key_path_prefix
    • with_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(...) or circuit.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

    • ValidatingSampler
    • FSimGateFamily
    • known_2q_op_to_sycamore_operations
    • two_qubit_matrix_to_sycamore_operations
    • SycamoreTargetGateset
    • CIRCUIT_SERIALIZER
    • ExecutableGroupResultFilesystemRecord
    • execute
    • QubitPlacer
    • CouldNotPlaceError
    • NaiveQubitPlacer
    • RandomDevicePlacer
    • ProcessorRecord
    • EngineProcessorRecord
    • SimulatedProcessorRecord
    • SimulatedProcessorWithLocalDeviceRecord

    Objects or parameters that are marked as deprecated and will be removed in coming releases

    • Bristlecone
    • Foxtail
    • XmonDevice
    • EngineProcessor.list_calibrations (latest_timestamp_seconds -> latest_timestamp)
    • EngineProcessor.list_calibrations (earliest_timestamp_seconds ->earliest_timestamp)
    • Engine.sampler (use get_sampler instead)
    • 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 to cirq.TwoQubitGateTabulationResult)
    • GateTabulation (moved to cirq.TwoQubitGateTabulation)
    • gate_product_tabulation (moved to cirq.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

    33580bb9 Rename TestDevice -> FakeDevice to avoid pytest confusion (#5066) 45624ff7 Add support for deep=True flag in cg.optimized_for_sycamore and cg.SycamoreTargetGateset transformers (#5126) cdd3f8ce DeviceSpecification proto updates (#5056) 091582ee Bugfix in handling of deep=True flag in cirq.merge_k_qubit_unitaries transformer (#5125) 89e7210e Add support for deep=True to cirq.optimize_for_target_gateset transformer (#5124) 518d828f Add support for deep=True to merge_single_qubit_gates* transformers (#5123) 92d19f66 Add support for deep=True to cirq.merge_k_qubit_unitaries transformer (#5122) 64a6723f Add support for deep=True to cirq.eject_z transformer (#5115) 04d58c4e Add support for deep=True to cirq.align_left and cirq.align_right transformers (#5112) ca4bb722 Add support for deep=True to cirq.eject_phased_paulis transformer (#5116) d2f284d8 Add support for deep=True to cirq.expand_composite transformer (#5119) b45e63d8 Add support for deep=True to cirq.synchronize_terminal_measurements transformer (#5118) 155f6074 Add support for deep=True to cirq.stratified_circuit transformer (#5117) 869d83b8 Add support for deep=True to cirq.drop_negligible_operations transformer (#5114) fade070c Add support for deep=True to cirq.drop_empty_moments transformer (#5113) cfa255a1 Add add_deep_support flag to @cirq.transformer decorator (#5108) aed4eb8a Bugfixes in handling nested tags_to_ignore + deep=True in cirq.map_moments and cirq.map_operations transformer primitives (#5109) e0a64dd2 Extract BufferedDM/SV/MPS from ActOnDM/SV/MPSArgs (#4979) d3c48530 Add assert_decompose_ends_at_default_gateset to consistent protocols test to ensure all cirq gates decompose to default gateset (#5107) 6af53872 Add support for deep=True flag to remaining transformer primitives (#5106) 26939516 Improve support for recursively applying transformer primitives on circuit operations using deep=True (#5103) caadb0c3 Deprectate log_of_measurement_result input (#5100) 848bfde6 Add default decomposition for cirq.QubitPermutationGate in terms of adjacent swaps (#5093) e0f74324 Deprecate cirq_google.ConvertToXmonGates and replace with cirq.CZTargetGateset + cirq.optimize_for_target_gateset (#5096) a7df5790 Replace _PhasedFSimConverter in cirq_google with new transformer primitives (#5095) 1f470826 Extend default decomposition of cirq.ControlledGate and cirq.ControlledOperation to end in X/Y/Z/CZ target gateset (#5091) 90e70c63 Order of keys shouldn't matter when comparing cirq.google.KeyValueExecutableSpec (#5073) b2d8dd96 Add to_dict() to KeyValueExecutableSpec (#5072) c1536646 Serialize QubitPermutationGate. (#5092) 66dd5080 Add support for decompositions of parameterized cirq.CCZPowGate (#5087) ded5d172 Adds default decompositions for cirq.MatrixGate into X/Y/Z/CZ target gateset. (#5088) 098617c5 Add support for decompositions of parameterized cirq.DiagonalGate (#5085) 2fb5651b Add default decomposition for cirq.TwoQubitDiagonalGate (#5084) 28f90b05 Support decomposition of parameterized gates in cirq.PhasedXPowGate (#5083) 765ccfee Add assert_decompose_ends_at_default_gateset consistency test (#5079) 083d2e5d Remove reference to deprecated readthedocs documentation in Contribute page (#4988) 701f62c3 Add return type annotation on MeasurementGate.full_invert_mask (#5080) fa473b44 Allow repetitions to be parameterized (#5043) 7a5c20e4 Allow partial state vector function to handle qudits (#5077) 9ae8f1ee Add SuperconductingQubitsNoiseProperties (#4964) 889e5d22 Add cg.SycamoreTargetGateset and deprecate cg.ConvertToSycamoreGates (#5054) c76bbc70 Fix state vector factorization validation (#5076) bfc04b82 Remove public fields from fsim (#5075) d8652be4 Remove public fields for pauli ops (#5062) 27f92aef Wrap private fields for DensePauliString (#5064) 097544e5 Remove public fields from subop gates and ops (#5074) 120f296d Remove public fields for measurement and controlled ops (#5061) 013498ff Rename two_qubit_matrix related functions (#5070) 2792f384 Call decompose_once in TaggedOperation (#5071) d967317c Update getting started notebook (#5046) 785c5c12 Change ValueError to assertion in clifford_optimize (#5060) 9cefed8c [cg.workflow] Consistent get_sampler() (#5030) 3cdf8963 Pin sympy version to <1.10 (#5059) 557cdeca Adjust runtime estimator for high numbers of qubits (#5049) cff7a8e7 Add type annotations to method overrides in child classes (#5051) d89baa34 Add some types to equals_tester.py (#5053) 4ddcd5f1 Refactors convert_to_sycamore_gates to abstract out analytical decomposition methods in cirq_google.two_qubit_to_sycamore (#5044) 3c1c8022 Add repeat-until functionality to subcircuits (#5018) d90b09c2 Move serialize_program and serialize_run_context into EngineContext (#5034) d5be95ff Recursive subop parameter resolution (#5033) 5ff22ce9 Add functools.cached_property backport (#5031) d2ae1e49 BooleanHamiltonianGate implementation (#4705) 8d658063 Update Sampler.run_async signature to match Sampler.run (#5036) 8bc6915f Fix subcircuits with zero reps (#5038) 305cc7dd Deprecate cirq.ConvertToSqrtIswapGates and cirq.MergeInteractionsToSqrtIswap (#5040) 6c45d9cc Add cirq.SqrtIswapTargetGateset for (parameterized & non-parameterized) compilation to sqrt iswaps. (#5025) 47098b6d Use f-strings consistently in engine_client.py helpers (#5037) d6966352 Add show_error_codes option to mypy config (#5032) 853dde3a Fix run_batch results format for SimulatedLocalProcessor (#5026) a9e6e4e8 Update quantum_run_stream to not prefetch first result (#5024) 741e93ca Deprecate ignore_measurement_results (#4978) 452dbea2 Add missing Arg in SimulatedLocalProcessor (#5027) 2d6c8bd8 Fail fast on measurements in has_unitary (#5020) 43b37fa5 Add better repr for EngineProcessor (#5022) 387187d3 Add cirq.CZTargetGateset to replace cirq.ConvertToCZAndSingleGates and cirq.MergeInteractions (#5007) afb62da0 Use parallel pytest in the CI checks (#5006) 6f9e277d [cg.workflow] Update str(ProcessorRecord) (#5012) 43527c88 Permit 2D _run output for backwards compatibility. (#5014) d3d44cb5 Serialize results with repeated measurements (#5019) 32f319dc Sets tolerance to 1.0e-8 by default in equivalence assertion (#5017) bded331c Allow flattening of subcircuits (#4997) ddefd846 BugFix in cirq.merge_moments to correctly handle new empty moments. (#5013) 31776478 Reject multiplication of cirq.PauliSum inside in cirq.PauliString (#5010) ca4c8e7c Replace fields with properties in ActOnArgs (#5011) 1bbbc9f4 Multiple Qubits Clifford Gate (#4791) 59b72a1e Add cirq.convert_to_target_gateset transformer and cirq.CompilationTargetGateset interface (#5005) 35173066 Add isolated qubit functionality for gridmetadata. (#5001) 6c2b3766 Update bell_inequality.py (#4998) a2f04f19 Add caching to CI. (#4999) a016e527 Add clean_operations flag to cirq.two_qubit_matrix_to_sqrt_iswap_operations (#5002) 7c5ad613 Add cirq.merge_k_qubit_unitaries transformer to replace cirq.MergeSingleQubitGates optimizer (#4986) 02259630 Deprecate qubit_set in cirq-core/devices (#4965) 43955b32 Allow repeated measurement keys (#4899) 72f9a5be Use CIRCUIT_SERIALIZER as default serializer for quantum engine (#4983) 3c89de16 Use google.auth.default() in cirq_google.get_engine (#4985) 7e785269 Bump follow-redirects from 1.14.7 to 1.14.8 in /cirq-web/cirq_ts (#4993) dd55a86d Support repeated measurement keys in cirq.Result (#4555) 872b22a3 Update documentation development instructions and codeowners (#4990) 580575c3 In QCS getting started, only install cirq-google (#4991) 87d36326 Make circuit._prev_moment_available a public method. (#4980) 6dc316d0 Add Cirq 1.0 tab to TP. (#4984) 78950284 Replace AbstractEngineProcessorShim (#4842) aad6c57a Add transformer primitive to merge connected component of operations in a circuit op (#4974) 9ab327a8 Add cirq.toggle_tags helper to apply transformers on specific subsets of operations in a circuit (#4973) 4dc6e25f Rewrite cirq.stratified_circuit following new Transformer API and primitives. (#4944) 169db486 Refactor virtual_engine_factory (#4909) 0bdc9f1e Deferred measurements transformer (#4849) aed19646 Minor formatting fixes (#4971) 92032c1f Revert "Change TaggedOperation's __pow__ from returning Operation to returning TaggedOperation " (#4966) aadc56d6 Deperecate {ion,neutral_atom}.qubit_set. (#4943) eb159072 Deprecate device.qubit_set in cirq_ionq. (#4942) c3b1b22b Deprecate device.qubit_set in cirq_google. (#4940) 5eae221c DeviceMetadata docs update. (#4963) c20c99ba Add cirq.eject_phased_paulis transformer to replace cirq.EjectPhasedPaulis (#4958) 2d2226a8 Refactor [NoiseModelFrom]NoiseProperties (#4866) 5196dff0 Remove ch-form cyclical dependencies (#4948) 6937e417 Add ClassicalDataStore class to keep track of qubits measured (#4781) 467c68d3 Move default implementation of Result.data into base class (#4949) 41312e80 Add cirq.eject_z transformer to replace cirq.EjectZ (#4955) 8b64834b Move cirq/ops/moment.py to cirq/circuits/moment.py (#4932) 6806f6ab Add deep=True flag to recursively apply transformer primitives to subcircuits. (#4934) be0429db Use contextlib.contextmanager for assert_logs and assert_deprecated (#4951) 18eba185 Bump simple-get from 3.1.0 to 3.1.1 in /cirq-web/cirq_ts (#4953) 229a9f28 Add expand_composite transformer to replace ExpandComposite optimizer (#4946) 18d19db0 remove codeowners windows. (#4950) 4042204a deprecate device.qubit_set in cirq_pasqal. (#4938) f18fde4f Use group_interchangeable_qubits for qubit comparison in GateOperation (#4941) a57c5ad8 Missing cirq_google import in command line QCS example (#4939) 84b0a289 Bump @npmcli/arborist from 2.6.2 to 2.10.0 in /cirq-web/cirq_ts (#4937) 8b718904 Fix _compat tests (#4926) ec445753 Deprecate device.decompose_operation in cirq-core. (#4922) 92878fc5 Add tags_to_ignore flag to map_operations and merge_operations transformer primitives (#4933) 57e09200 Rename context.ignore_tags to context.tags_to_ignore (#4931) 2f2c7ca7 Add state conversion logic from _create_partial_act_on_args to the corresponding ActOnArgs (#4847) c8dc720f Deprecate {ion,neutral_atom}.decompose_operation. (#4930) 610b0d4e Deprecate device.decompose_operation in cirq_ionq. (#4925) d3a122b0 Deprecate device.decompose_operation in cirq_pasqal. (#4927) c57d8bf7 Deprecate decompose_operation in cirq_google. (#4924) f0b249f9 Add verult as cirq/google owner (#4929) 4f354ea6 Fix submodule attributes and spec after deprecation (#4920) 9fb7e9c2 Minor cleanup in QCS Getting Started tutorial (#4575) 86c873be Add drop_empty_moments and drop_negligible_operations transformers. (#4915) 35e6d21c Deprecate can_add_operation_into_moment. (#4902) ab61d7fc Add synchronize_terminal_measurements transformer to replace SynchronizeTerminalMeasurements (#4911) 8c8ee432 Add asynchronous ability to simulated engine. (#4811) d7a39063 Change TaggedOperation's __pow__ from returning Operation to returning TaggedOperation (#4916) 275372ed Clean up redundant use of _deprecate_attributes (#4917) 2dc428b3 Deprecate set_state_vector and set_density_matrix (#4906) 38fcc429 Support adding / deleting operations in (#4912) 2b2a6fed Fix commutation of classical controls (#4872) 4d445c41 Add align_left/align_right transformers to replace AlignLeft/AlignRight (#4891) fdf85f0b Support additional **kwargs with default arguments in Transformer API. (#4890) 8c71ac88 Change engine_validator_test to be deterministic. (#4908) fd4e834c Deprecate qid_pairs (#4900) c4dd879d Add Bravyi-Gosset-Liu sampling (#4848) 6d2221f8 Move block_overlapping_deps to _compat.py. (#4904) e0bbfadb Upgrade cirq-web deps. (#4905) 2faba7aa Update Cirq decomposition to use RZ, RX, CNOT only (#4824) 497cd3db Allow clifford simulator to run as product state (#4844) b0519b38 Convert cirq.Result to ABC and add ResultDict implementation (#4806) 2c795d2b Update top level module documentation (#4893) 64e2eac1 Increase atol for sub_state_vector() (#4877) aa9d1846 Bump ipython from 7.22 to 7.31.1 in /dev_tools/requirements/deps (#4898) 37ba2713 revert coverage and notebook packages. (#4896) 12ebe83d Add metadata property for cirq_google devices. (#4869) ee744bd2 Documentation fix for cirq.Circuit.prev_moment_operating_on (#4895) 4600f588 Add missing import in README example (#4875) 693ceedb Use a Protocol for TRANSFORMER to ensure common arg names (#4871) 90679d27 Fix backwards incompatible pandas usage. (#4873) b2fa6428 Add cirq.TensoredConfusionMatrices for readout error mitigation. (#4854) c2b86915 Update "Compare to Calibration" tutorial into "Identifying Hardware Changes" with Simultaneous Readout and additional context (#4552) 39ce4f0e add "https://" to first link (#4604) 61196201 Add Transformer API Interface and @cirq.transformer decorator (#4797) 394b9cf4 Add metadata property to device. (#4868) e29f47c7 Add / improve CircuitOperation memoizing (#4855) 1be94689 Fix type signature of act_on implementations (#4867) ee9bd680 Deprecate XmonDevice, Foxtail and Bristlecone. (#4864) fe80da77 Add default decompositions for XXPowGate and YYPowGate which terminate in CZPowGate. (#4862) 0a0d5f7e Make DensePauliString an iterable (#4861) a2544479 Fix value_equality_values_cls handling in _value_equality_approx_eq (#4860) a22269df Fix act-on specialization for all the Clifford simulators (#4748) 8a78e10a Make gate_sets actually optional (#4850) 745ee1b2 Make order of traversal deterministic in merge_operations primitive (#4764) 7ffc77ca [runtime] QubitPlacer 2 - RandomDevicePlacer (#4719) bce3002d Deprecate ciruit.device everywhere. (#4845) 5e12333c Improve consistency between code and docstrings for XEB (#4853) 4cfa8457 Add link to dev environment page in CONTRIBUTING.md (#4843) 3513d136 Bump follow-redirects from 1.14.1 to 1.14.7 in /cirq-web/cirq_ts (#4846) 20b577c2 Avoid copying unnecessary buffers between simulation iterations (#4789) 972b6d44 Remove use of .device from cirq-aqt (#4812) ca391cac Add GridDeviceMetadata. (#4839) 33a804b9 Update equalstester in DeviceMetadata. (#4840) bfa26028 Make PauliMeasurementGate respect sign of the pauli observable. (#4836) 3a6ad871 Add DeviceMetaData class. (#4832) 89f88b01 Remove use of .device in contrib. (#4821) 0a12c88a Remove use of .device in cirq-google. (#4820) 93bbaa85 Do not separate substates when measurements are ignored (#4816) 778d3179 Move GateTabulation and friends to cirq-core as requested in #4461 (#4602) 16345897 Close matplotlib figures after testing (#4810) bbd965e1 Import transformers/analytical_decompositions/* methods in optimizers/* (#4813) 45e7dddd Make test ordering and parametrization reproducible (#4788) c739edc1 Density Matrix plotting is being fixed (#4805) b00907a7 Remove uses of .device in cirq-pasqal in preparation for larger circuit.device deprecation (#4757) 19c965ba Move two/three qubit decompositions from optimizers/ to transformers/analytical_decompositions (#4809) 979a443f Change Sampler methods to return Sequence instead of List (#4807) 3d111e49 Convert type comments to type annotations (#4808) c1389ce1 Retain ordering information in conversion. (#4384) 8192ae7b Move optimizers/decompositions.py to transformers/analytical_decompositions/single_qubit_decompositions.py (#4799) 3d905011 Fix warning on array creation from ragged sequences (#4801) 09a4667e Upgrade glob-parent to 5.1.2 (#4803) 6bb239f6 Upgrade Ansi-Regex to 5.0.1 (#4802) 58487406 Fix deprecated_submodule conflict with importlib_metadata (#4772) b60b9f8f Return NotImplemented from Moment._kraus_() if self._has_kraus_() is False (#4794) 4201daa3 Add exponent to the labels of web 3D gates (#4777) efa08205 Part-2: Move analytical decompositions from cirq/optimizers/ to cirq/transformers/analytical_decompositions/ (#4785) 1812fdd9 Thermal noise model (#4673) 7d6ba34e Use NotImplemented instead of None as default value for TaggedOperation._unitary_ (#4795) 1d76e50f Adding files for virtual emulation (#4793) 95127231 Speed up simplification of CNOTs in _simplify_commuting_cnots (#4626) 894d49e0 Fix the deprecation warning for ClassicallyControlledOperation (#4780) d58b58ba Fix ResetGate to work with MPS, StabilizerSampler (#4765) 58f6a6f4 Add classes to aid in providing simulated versions of devices (#4747) 01ae51ee Move optimizers/two_qubit_state_preparation.py to transformers/analytical_decompositions/two_qubit_state_preparation.py (#4762) 9581e650 Fix ignore_measurement_results=True for subcircuits (#4760) 9aede582 Sanitize type annotations in cirq.circuits (#4776) ff671ae2 Allow sympy expressions as classical controls (#4740) 65d783ed [cirqflow] Convenience method for loading results (#4720) 5da63350 Unroll circuit_op when validating containment in a gateset (#4770) e9b62583 Sanitize type annotations in cirq.sim (#4773) 1d27a006 Fix str/repr explosion in separated states (#4518) 4ebfb1c8 Scoping for control keys (#4736) e7892c3e Add json resolvers for sympy relational operators (#4767) 1d8d2f38 Implement PauliStringPhasorGate (#4696) 2e60ca1e Add AbstractEngine objects to cirq_google.engine init (#4759) c33bd9bd Add JSON serialization support for QasmUGate (#4750) 645692e6 Ignore deprecation warnings from protobufs (#4751) 11457220 Bump tar from 6.1.0 to 6.1.11 in /cirq-web/cirq_ts (#4755) a7ca3e57 Bump path-parse from 1.0.6 to 1.0.7 in /cirq-web/cirq_ts (#4754) ce1a2422 Fix qasm output for bitmasked measurements (#4756) ac5b7ca5 Move cirq.vis methods to the outer cirq package (#4752) 807a24de Insertion noise model (#4672) ca09f4c2 Upgrade pinned black version (#4753) 3becbbc5 Move optimizers/transformer_primitives.py to transformers/transformer_primitives.py (#4746) 9cf2748c Fix scipy.linalg import in swap_gates_test (#4749) 876bad4f Allow sourcing of dev_tools/pypath from any path (#4739) 132005a2 Utilities for approximate hardware noise (#4671) b7bfb10a QASM parsing for classical controls (#4738) e207415f Implement GlobalPhaseGate (#4697) d419ef5a Add merge_operations and merge_moments transformer primitives (#4708) e97768c6 Classical control (#4631) 45fd829c Add missing _has_*_ methods (#4735) 5ae8a2e4 Circuit superoperator (#4550) 5ee7ff62 Support FrozenCircuit incg.Engine (#4731) a0497a41 Add runtime estimator (#4718) 5cd5662b Change Engine to implement AbstractEngine (#4723) 7bce81da Support serialization of Gatesets (#4724) ec79736b Efficient 2q state preparation methods using CZ and SQRT_ISWAP (#4707) fe7fa122 [runtime] QubitPlacer part 1 (#4700) 9053a272 Support serialization of GateFamilies (#4715) 72599254 format-incremental - store modified files in bash array (#4717) 1bf3f573 Fix operator_spaces.py::kron_bases initial value (#4716) 973b2c7b Simulated Engine Implementation (#4638) 5a30119f Always use bash arrays for changed files and directories (#4703) d7611dc6 Remove non-deterministic hash from circuit diagram. (#4712) 1d57c819 pylint - enable check for f-string-without-interpolation (#4706) 43a32804 Don't invoke json_cirq_type if cirq_type is defined...for now. (#4711) 48397d66 Move "cirq_type" responsibility to protocols (#4704) d42e0583 Named topology reprs (#4701) 42ac9daf Support and test type serialization (#4693) 272350de Add map_operations and map_moments transformer primitives (#4692) e3110590 Rename (qubits+cbits) to labels (#4675) a75b215f Add Local implementation of abstract engine classes (#4645) 5be2a9b8 Clarify runtime of gateset contains (#4694) 80e84744 Add double-line diagrams for control keys (#4627) 1d7436ff Add Abstract Engine Interface (#4644) 3af7e895 Remove op validation when inserting into Circuit (#4669) 46cb62f9 Add a test to ensure reset does not collapse density matrix (#4682) 1ea60617 Enforce LineQubit type for IonDevices (#4690) 1ba60465 Fix remaining documentation lint (#4689) bfe52b50 Unwind some delayed imports using LazyLoader (#4681) c15af92d Add sxdg, now that it is supported by qiskit (#4688) 1360fb68 Reducing documentation lint errors even further (#4687) a1b46ddc Removing 0.14.0.dev -> 0.14.0 33580bb9 Rename TestDevice -> FakeDevice to avoid pytest confusion (#5066) 45624ff7 Add support for deep=True flag in cg.optimized_for_sycamore and cg.SycamoreTargetGateset transformers (#5126) cdd3f8ce DeviceSpecification proto updates (#5056) 091582ee Bugfix in handling of deep=True flag in cirq.merge_k_qubit_unitaries transformer (#5125) 89e7210e Add support for deep=True to cirq.optimize_for_target_gateset transformer (#5124) 518d828f Add support for deep=True to merge_single_qubit_gates* transformers (#5123) 92d19f66 Add support for deep=True to cirq.merge_k_qubit_unitaries transformer (#5122) 64a6723f Add support for deep=True to cirq.eject_z transformer (#5115) 04d58c4e Add support for deep=True to cirq.align_left and cirq.align_right transformers (#5112) ca4bb722 Add support for deep=True to cirq.eject_phased_paulis transformer (#5116) d2f284d8 Add support for deep=True to cirq.expand_composite transformer (#5119) b45e63d8 Add support for deep=True to cirq.synchronize_terminal_measurements transformer (#5118) 155f6074 Add support for deep=True to cirq.stratified_circuit transformer (#5117) 869d83b8 Add support for deep=True to cirq.drop_negligible_operations transformer (#5114) fade070c Add support for deep=True to cirq.drop_empty_moments transformer (#5113) cfa255a1 Add add_deep_support flag to @cirq.transformer decorator (#5108) aed4eb8a Bugfixes in handling nested tags_to_ignore + deep=True in cirq.map_moments and cirq.map_operations transformer primitives (#5109) e0a64dd2 Extract BufferedDM/SV/MPS from ActOnDM/SV/MPSArgs (#4979) d3c48530 Add assert_decompose_ends_at_default_gateset to consistent protocols test to ensure all cirq gates decompose to default gateset (#5107) 6af53872 Add support for deep=True flag to remaining transformer primitives (#5106) 26939516 Improve support for recursively applying transformer primitives on circuit operations using deep=True (#5103) caadb0c3 Deprectate log_of_measurement_result input (#5100) 848bfde6 Add default decomposition for cirq.QubitPermutationGate in terms of adjacent swaps (#5093) e0f74324 Deprecate cirq_google.ConvertToXmonGates and replace with cirq.CZTargetGateset + cirq.optimize_for_target_gateset (#5096) a7df5790 Replace _PhasedFSimConverter in cirq_google with new transformer primitives (#5095) 1f470826 Extend default decomposition of cirq.ControlledGate and cirq.ControlledOperation to end in X/Y/Z/CZ target gateset (#5091) 90e70c63 Order of keys shouldn't matter when comparing cirq.google.KeyValueExecutableSpec (#5073) b2d8dd96 Add to_dict() to KeyValueExecutableSpec (#5072) c1536646 Serialize QubitPermutationGate. (#5092) 66dd5080 Add support for decompositions of parameterized cirq.CCZPowGate (#5087) ded5d172 Adds default decompositions for cirq.MatrixGate into X/Y/Z/CZ target gateset. (#5088) 098617c5 Add support for decompositions of parameterized cirq.DiagonalGate (#5085) 2fb5651b Add default decomposition for cirq.TwoQubitDiagonalGate (#5084) 28f90b05 Support decomposition of parameterized gates in cirq.PhasedXPowGate (#5083) 765ccfee Add assert_decompose_ends_at_default_gateset consistency test (#5079) 083d2e5d Remove reference to deprecated readthedocs documentation in Contribute page (#4988) 701f62c3 Add return type annotation on MeasurementGate.full_invert_mask (#5080) fa473b44 Allow repetitions to be parameterized (#5043) 7a5c20e4 Allow partial state vector function to handle qudits (#5077) 9ae8f1ee Add SuperconductingQubitsNoiseProperties (#4964) 889e5d22 Add cg.SycamoreTargetGateset and deprecate cg.ConvertToSycamoreGates (#5054) c76bbc70 Fix state vector factorization validation (#5076) bfc04b82 Remove public fields from fsim (#5075) d8652be4 Remove public fields for pauli ops (#5062) 27f92aef Wrap private fields for DensePauliString (#5064) 097544e5 Remove public fields from subop gates and ops (#5074) 120f296d Remove public fields for measurement and controlled ops (#5061) 013498ff Rename two_qubit_matrix related functions (#5070) 2792f384 Call decompose_once in TaggedOperation (#5071) d967317c Update getting started notebook (#5046) 785c5c12 Change ValueError to assertion in clifford_optimize (#5060) 9cefed8c [cg.workflow] Consistent get_sampler() (#5030) 3cdf8963 Pin sympy version to <1.10 (#5059) 557cdeca Adjust runtime estimator for high numbers of qubits (#5049) cff7a8e7 Add type annotations to method overrides in child classes (#5051) d89baa34 Add some types to equals_tester.py (#5053) 4ddcd5f1 Refactors convert_to_sycamore_gates to abstract out analytical decomposition methods in cirq_google.two_qubit_to_sycamore (#5044) 3c1c8022 Add repeat-until functionality to subcircuits (#5018) d90b09c2 Move serialize_program and serialize_run_context into EngineContext (#5034) d5be95ff Recursive subop parameter resolution (#5033) 5ff22ce9 Add functools.cached_property backport (#5031) d2ae1e49 BooleanHamiltonianGate implementation (#4705) 8d658063 Update Sampler.run_async signature to match Sampler.run (#5036) 8bc6915f Fix subcircuits with zero reps (#5038) 305cc7dd Deprecate cirq.ConvertToSqrtIswapGates and cirq.MergeInteractionsToSqrtIswap (#5040) 6c45d9cc Add cirq.SqrtIswapTargetGateset for (parameterized & non-parameterized) compilation to sqrt iswaps. (#5025) 47098b6d Use f-strings consistently in engine_client.py helpers (#5037) d6966352 Add show_error_codes option to mypy config (#5032) 853dde3a Fix run_batch results format for SimulatedLocalProcessor (#5026) a9e6e4e8 Update quantum_run_stream to not prefetch first result (#5024) 741e93ca Deprecate ignore_measurement_results (#4978) 452dbea2 Add missing Arg in SimulatedLocalProcessor (#5027) 2d6c8bd8 Fail fast on measurements in has_unitary (#5020) 43b37fa5 Add better repr for EngineProcessor (#5022) 387187d3 Add cirq.CZTargetGateset to replace cirq.ConvertToCZAndSingleGates and cirq.MergeInteractions (#5007) afb62da0 Use parallel pytest in the CI checks (#5006) 6f9e277d [cg.workflow] Update str(ProcessorRecord) (#5012) 43527c88 Permit 2D _run output for backwards compatibility. (#5014) d3d44cb5 Serialize results with repeated measurements (#5019) 32f319dc Sets tolerance to 1.0e-8 by default in equivalence assertion (#5017) bded331c Allow flattening of subcircuits (#4997) ddefd846 BugFix in cirq.merge_moments to correctly handle new empty moments. (#5013) 31776478 Reject multiplication of cirq.PauliSum inside in cirq.PauliString (#5010) ca4c8e7c Replace fields with properties in ActOnArgs (#5011) 1bbbc9f4 Multiple Qubits Clifford Gate (#4791) 59b72a1e Add cirq.convert_to_target_gateset transformer and cirq.CompilationTargetGateset interface (#5005) 35173066 Add isolated qubit functionality for gridmetadata. (#5001) 6c2b3766 Update bell_inequality.py (#4998) a2f04f19 Add caching to CI. (#4999) a016e527 Add clean_operations flag to cirq.two_qubit_matrix_to_sqrt_iswap_operations (#5002) 7c5ad613 Add cirq.merge_k_qubit_unitaries transformer to replace cirq.MergeSingleQubitGates optimizer (#4986) 02259630 Deprecate qubit_set in cirq-core/devices (#4965) 43955b32 Allow repeated measurement keys (#4899) 72f9a5be Use CIRCUIT_SERIALIZER as default serializer for quantum engine (#4983) 3c89de16 Use google.auth.default() in cirq_google.get_engine (#4985) 7e785269 Bump follow-redirects from 1.14.7 to 1.14.8 in /cirq-web/cirq_ts (#4993) dd55a86d Support repeated measurement keys in cirq.Result (#4555) 872b22a3 Update documentation development instructions and codeowners (#4990) 580575c3 In QCS getting started, only install cirq-google (#4991) 87d36326 Make circuit._prev_moment_available a public method. (#4980) 6dc316d0 Add Cirq 1.0 tab to TP. (#4984) 78950284 Replace AbstractEngineProcessorShim (#4842) aad6c57a Add transformer primitive to merge connected component of operations in a circuit op (#4974) 9ab327a8 Add cirq.toggle_tags helper to apply transformers on specific subsets of operations in a circuit (#4973) 4dc6e25f Rewrite cirq.stratified_circuit following new Transformer API and primitives. (#4944) 169db486 Refactor virtual_engine_factory (#4909) 0bdc9f1e Deferred measurements transformer (#4849) aed19646 Minor formatting fixes (#4971) 92032c1f Revert "Change TaggedOperation's __pow__ from returning Operation to returning TaggedOperation " (#4966) aadc56d6 Deperecate {ion,neutral_atom}.qubit_set. (#4943) eb159072 Deprecate device.qubit_set in cirq_ionq. (#4942) c3b1b22b Deprecate device.qubit_set in cirq_google. (#4940) 5eae221c DeviceMetadata docs update. (#4963) c20c99ba Add cirq.eject_phased_paulis transformer to replace cirq.EjectPhasedPaulis (#4958) 2d2226a8 Refactor [NoiseModelFrom]NoiseProperties (#4866) 5196dff0 Remove ch-form cyclical dependencies (#4948) 6937e417 Add ClassicalDataStore class to keep track of qubits measured (#4781) 467c68d3 Move default implementation of Result.data into base class (#4949) 41312e80 Add cirq.eject_z transformer to replace cirq.EjectZ (#4955) 8b64834b Move cirq/ops/moment.py to cirq/circuits/moment.py (#4932) 6806f6ab Add deep=True flag to recursively apply transformer primitives to subcircuits. (#4934) be0429db Use contextlib.contextmanager for assert_logs and assert_deprecated (#4951) 18eba185 Bump simple-get from 3.1.0 to 3.1.1 in /cirq-web/cirq_ts (#4953) 229a9f28 Add expand_composite transformer to replace ExpandComposite optimizer (#4946) 18d19db0 remove codeowners windows. (#4950) 4042204a deprecate device.qubit_set in cirq_pasqal. (#4938) f18fde4f Use group_interchangeable_qubits for qubit comparison in GateOperation (#4941) a57c5ad8 Missing cirq_google import in command line QCS example (#4939) 84b0a289 Bump @npmcli/arborist from 2.6.2 to 2.10.0 in /cirq-web/cirq_ts (#4937) 8b718904 Fix _compat tests (#4926) ec445753 Deprecate device.decompose_operation in cirq-core. (#4922) 92878fc5 Add tags_to_ignore flag to map_operations and merge_operations transformer primitives (#4933) 57e09200 Rename context.ignore_tags to context.tags_to_ignore (#4931) 2f2c7ca7 Add state conversion logic from _create_partial_act_on_args to the corresponding ActOnArgs (#4847) c8dc720f Deprecate {ion,neutral_atom}.decompose_operation. (#4930) 610b0d4e Deprecate device.decompose_operation in cirq_ionq. (#4925) d3a122b0 Deprecate device.decompose_operation in cirq_pasqal. (#4927) c57d8bf7 Deprecate decompose_operation in cirq_google. (#4924) f0b249f9 Add verult as cirq/google owner (#4929) 4f354ea6 Fix submodule attributes and spec after deprecation (#4920) 9fb7e9c2 Minor cleanup in QCS Getting Started tutorial (#4575) 86c873be Add drop_empty_moments and drop_negligible_operations transformers. (#4915) 35e6d21c Deprecate can_add_operation_into_moment. (#4902) ab61d7fc Add synchronize_terminal_measurements transformer to replace SynchronizeTerminalMeasurements (#4911) 8c8ee432 Add asynchronous ability to simulated engine. (#4811) d7a39063 Change TaggedOperation's __pow__ from returning Operation to returning TaggedOperation (#4916) 275372ed Clean up redundant use of _deprecate_attributes (#4917) 2dc428b3 Deprecate set_state_vector and set_density_matrix (#4906) 38fcc429 Support adding / deleting operations in (#4912) 2b2a6fed Fix commutation of classical controls (#4872) 4d445c41 Add align_left/align_right transformers to replace AlignLeft/AlignRight (#4891) fdf85f0b Support additional **kwargs with default arguments in Transformer API. (#4890) 8c71ac88 Change engine_validator_test to be deterministic. (#4908) fd4e834c Deprecate qid_pairs (#4900) c4dd879d Add Bravyi-Gosset-Liu sampling (#4848) 6d2221f8 Move block_overlapping_deps to _compat.py. (#4904) e0bbfadb Upgrade cirq-web deps. (#4905) 2faba7aa Update Cirq decomposition to use RZ, RX, CNOT only (#4824) 497cd3db Allow clifford simulator to run as product state (#4844) b0519b38 Convert cirq.Result to ABC and add ResultDict implementation (#4806) 2c795d2b Update top level module documentation (#4893) 64e2eac1 Increase atol for sub_state_vector() (#4877) aa9d1846 Bump ipython from 7.22 to 7.31.1 in /dev_tools/requirements/deps (#4898) 37ba2713 revert coverage and notebook packages. (#4896) 12ebe83d Add metadata property for cirq_google devices. (#4869) ee744bd2 Documentation fix for cirq.Circuit.prev_moment_operating_on (#4895) 4600f588 Add missing import in README example (#4875) 693ceedb Use a Protocol for TRANSFORMER to ensure common arg names (#4871) 90679d27 Fix backwards incompatible pandas usage. (#4873) b2fa6428 Add cirq.TensoredConfusionMatrices for readout error mitigation. (#4854) c2b86915 Update "Compare to Calibration" tutorial into "Identifying Hardware Changes" with Simultaneous Readout and additional context (#4552) 39ce4f0e add "https://" to first link (#4604) 61196201 Add Transformer API Interface and @cirq.transformer decorator (#4797) 394b9cf4 Add metadata property to device. (#4868) e29f47c7 Add / improve CircuitOperation memoizing (#4855) 1be94689 Fix type signature of act_on implementations (#4867) ee9bd680 Deprecate XmonDevice, Foxtail and Bristlecone. (#4864) fe80da77 Add default decompositions for XXPowGate and YYPowGate which terminate in CZPowGate. (#4862) 0a0d5f7e Make DensePauliString an iterable (#4861) a2544479 Fix value_equality_values_cls handling in _value_equality_approx_eq (#4860) a22269df Fix act-on specialization for all the Clifford simulators (#4748) 8a78e10a Make gate_sets actually optional (#4850) 745ee1b2 Make order of traversal deterministic in merge_operations primitive (#4764) 7ffc77ca [runtime] QubitPlacer 2 - RandomDevicePlacer (#4719) bce3002d Deprecate ciruit.device everywhere. (#4845) 5e12333c Improve consistency between code and docstrings for XEB (#4853) 4cfa8457 Add link to dev environment page in CONTRIBUTING.md (#4843) 3513d136 Bump follow-redirects from 1.14.1 to 1.14.7 in /cirq-web/cirq_ts (#4846) 20b577c2 Avoid copying unnecessary buffers between simulation iterations (#4789) 972b6d44 Remove use of .device from cirq-aqt (#4812) ca391cac Add GridDeviceMetadata. (#4839) 33a804b9 Update equalstester in DeviceMetadata. (#4840) bfa26028 Make PauliMeasurementGate respect sign of the pauli observable. (#4836) 3a6ad871 Add DeviceMetaData class. (#4832) 89f88b01 Remove use of .device in contrib. (#4821) 0a12c88a Remove use of .device in cirq-google. (#4820) 93bbaa85 Do not separate substates when measurements are ignored (#4816) 778d3179 Move GateTabulation and friends to cirq-core as requested in #4461 (#4602) 16345897 Close matplotlib figures after testing (#4810) bbd965e1 Import transformers/analytical_decompositions/* methods in optimizers/* (#4813) 45e7dddd Make test ordering and parametrization reproducible (#4788) c739edc1 Density Matrix plotting is being fixed (#4805) b00907a7 Remove uses of .device in cirq-pasqal in preparation for larger circuit.device deprecation (#4757) 19c965ba Move two/three qubit decompositions from optimizers/ to transformers/analytical_decompositions (#4809) 979a443f Change Sampler methods to return Sequence instead of List (#4807) 3d111e49 Convert type comments to type annotations (#4808) c1389ce1 Retain ordering information in conversion. (#4384) 8192ae7b Move optimizers/decompositions.py to transformers/analytical_decompositions/single_qubit_decompositions.py (#4799) 3d905011 Fix warning on array creation from ragged sequences (#4801) 09a4667e Upgrade glob-parent to 5.1.2 (#4803) 6bb239f6 Upgrade Ansi-Regex to 5.0.1 (#4802) 58487406 Fix deprecated_submodule conflict with importlib_metadata (#4772) b60b9f8f Return NotImplemented from Moment._kraus_() if self._has_kraus_() is False (#4794) 4201daa3 Add exponent to the labels of web 3D gates (#4777) efa08205 Part-2: Move analytical decompositions from cirq/optimizers/ to cirq/transformers/analytical_decompositions/ (#4785) 1812fdd9 Thermal noise model (#4673) 7d6ba34e Use NotImplemented instead of None as default value for TaggedOperation._unitary_ (#4795) 1d76e50f Adding files for virtual emulation (#4793) 95127231 Speed up simplification of CNOTs in _simplify_commuting_cnots (#4626) 894d49e0 Fix the deprecation warning for ClassicallyControlledOperation (#4780) d58b58ba Fix ResetGate to work with MPS, StabilizerSampler (#4765) 58f6a6f4 Add classes to aid in providing simulated versions of devices (#4747) 01ae51ee Move optimizers/two_qubit_state_preparation.py to transformers/analytical_decompositions/two_qubit_state_preparation.py (#4762) 9581e650 Fix ignore_measurement_results=True for subcircuits (#4760) 9aede582 Sanitize type annotations in cirq.circuits (#4776) ff671ae2 Allow sympy expressions as classical controls (#4740) 65d783ed [cirqflow] Convenience method for loading results (#4720) 5da63350 Unroll circuit_op when validating containment in a gateset (#4770) e9b62583 Sanitize type annotations in cirq.sim (#4773) 1d27a006 Fix str/repr explosion in separated states (#4518) 4ebfb1c8 Scoping for control keys (#4736) e7892c3e Add json resolvers for sympy relational operators (#4767) 1d8d2f38 Implement PauliStringPhasorGate (#4696) 2e60ca1e Add AbstractEngine objects to cirq_google.engine init (#4759) c33bd9bd Add JSON serialization support for QasmUGate (#4750) 645692e6 Ignore deprecation warnings from protobufs (#4751) 11457220 Bump tar from 6.1.0 to 6.1.11 in /cirq-web/cirq_ts (#4755) a7ca3e57 Bump path-parse from 1.0.6 to 1.0.7 in /cirq-web/cirq_ts (#4754) ce1a2422 Fix qasm output for bitmasked measurements (#4756) ac5b7ca5 Move cirq.vis methods to the outer cirq package (#4752) 807a24de Insertion noise model (#4672) ca09f4c2 Upgrade pinned black version (#4753) 3becbbc5 Move optimizers/transformer_primitives.py to transformers/transformer_primitives.py (#4746) 9cf2748c Fix scipy.linalg import in swap_gates_test (#4749) 876bad4f Allow sourcing of dev_tools/pypath from any path (#4739) 132005a2 Utilities for approximate hardware noise (#4671) b7bfb10a QASM parsing for classical controls (#4738) e207415f Implement GlobalPhaseGate (#4697) d419ef5a Add merge_operations and merge_moments transformer primitives (#4708) e97768c6 Classical control (#4631) 45fd829c Add missing _has_*_ methods (#4735) 5ae8a2e4 Circuit superoperator (#4550) 5ee7ff62 Support FrozenCircuit incg.Engine (#4731) a0497a41 Add runtime estimator (#4718) 5cd5662b Change Engine to implement AbstractEngine (#4723) 7bce81da Support serialization of Gatesets (#4724) ec79736b Efficient 2q state preparation methods using CZ and SQRT_ISWAP (#4707) fe7fa122 [runtime] QubitPlacer part 1 (#4700) 9053a272 Support serialization of GateFamilies (#4715) 72599254 format-incremental - store modified files in bash array (#4717) 1bf3f573 Fix operator_spaces.py::kron_bases initial value (#4716) 973b2c7b Simulated Engine Implementation (#4638) 5a30119f Always use bash arrays for changed files and directories (#4703) d7611dc6 Remove non-deterministic hash from circuit diagram. (#4712) 1d57c819 pylint - enable check for f-string-without-interpolation (#4706) 43a32804 Don't invoke json_cirq_type if cirq_type is defined...for now. (#4711) 48397d66 Move "cirq_type" responsibility to protocols (#4704) d42e0583 Named topology reprs (#4701) 42ac9daf Support and test type serialization (#4693) 272350de Add map_operations and map_moments transformer primitives (#4692) e3110590 Rename (qubits+cbits) to labels (#4675) a75b215f Add Local implementation of abstract engine classes (#4645) 5be2a9b8 Clarify runtime of gateset contains (#4694) 80e84744 Add double-line diagrams for control keys (#4627) 1d7436ff Add Abstract Engine Interface (#4644) 3af7e895 Remove op validation when inserting into Circuit (#4669) 46cb62f9 Add a test to ensure reset does not collapse density matrix (#4682) 1ea60617 Enforce LineQubit type for IonDevices (#4690) 1ba60465 Fix remaining documentation lint (#4689) bfe52b50 Unwind some delayed imports using LazyLoader (#4681) c15af92d Add sxdg, now that it is supported by qiskit (#4688) 1360fb68 Reducing documentation lint errors even further (#4687) 9fde1b55 Fix check/mypy-next (#4686) 2e3e5f39 Fix mistakes in circuit tutorial and add picture (#4677) ca0401f2 Deprecate from_single_parameter_set on Result (#4680) 8374b716 Removing more documentation lint (#4679) cd4feda2 Documentation fixes continue (#4670) a28d601b Fix test that are failing on aarch64-linux due to precision (#4674) b263acb4 More documentation fixes (#4668) 21ed680f Small clarification in development.md (#4663) c647079b Add cirq_google.FSimGateFamily class. (#4586) dc6f5692 Add pretty repr to devices and result types (#4649) 54286063 Add docker and docker compose to dev install (#4661) 3c0ca4b6 More documentation fixes (#4654) dcaacd6b Even more documentation lint (#4662) ca05b0ec Bump version of qiskit-aer in dev-tools (#4659) 5fdf7643 Add parameter resolution and other utility methods to _InverseCompositeGate (#4656) c5477cb8 Update ecosystem (#4651) e4d0467b Optimize parameter sweeps to cache unparameterized prefixes (#4533) 13e0225c Fix measurement keys in subcircuits with parent_path (#4616) a4f55618 Add LazyLoader for delayed imports of slow modules (#4653) 83c440f0 Ensure subcircuit.mapped_circuit applies parent path if no repetitions (#4619) 2f123fb0 Fix num_qubits property on AsymetricDepolarizing Channel (#4652) 2cfeef07 Remove remaining uses of cirq.google in docs/ . (#4650) 321ce634 Delay import of scipy stats and optimize (#4643) 6fdad5f1 Remove deprecated use of cirq.google in install guide (#4647) 6f71b55f Fix FSim serialization for zeros and ints (#4646) 1f0fc1de More lint documentation fixes. (#4641) 72f831d5 Fix importlib.abc and type madness in _import (#4642) 3b2b2d83 Fixes for documentation (#4635) 017e9a71 [cirqflow] Factor out FilesystemSaver (#4614) cf06adf7 [cirqflow] Factor out PrintLogger (#4613) 7c36cefb Named topologies: support manual placement (#4628) eb1d9031 Fix operator spaces test which fails due to precision (#4636) aaf95a8c Fix lint errors (#4634) ab335e6b Pass shell script arguments without splitting (#4629) d1e7228a pylint - enforce singleton-comparison check (#4625) 00230f0e Add control_keys protocol (simplified) (#4610) d137a7d6 Validating Sampler (#4609) 2f7dfded mixture not matrix in noise notebook (#4621) 18515858 Fix SVGCircuit() for cirq.Circuit with empty moments (#4535) 3df15e3d Fix lint bugs with unused imports (#4622) 64df1fc3 Implement PhasedXZGate.unitary (#4617) 4985a516 Remove EngineTimeSlot (#4608) bb4468c2 [cirqflow] Execution Loop I/O (#4599) 74ed369a Add CODEOWNERS for rigetti (#4543) 1bb75540 Add a copyright checker as a pylint plugin (#4577) 21b9be30 Flush v0.14.0 deprecation backlog. (#4601) c7d420bc Json serialize MSGate (#4605) ec9fc450 Add jobs filtering by executed and scheduled processor IDs (#4589) 009b3dae Flush missed v0.13 backlog items. (#4600) 954a7b61 [cirqflow] Quantum runtime skeleton - part 3 (#4584) ca25c423 Qcircuit exponent (#4593)

    Source code(tar.gz)
    Source code(zip)
    cirq-0.14.0-py3-none-any.whl(7.58 KB)
    cirq_aqt-0.14.0-py3-none-any.whl(18.82 KB)
    cirq_core-0.14.0-py3-none-any.whl(1.70 MB)
    cirq_google-0.14.0-py3-none-any.whl(528.87 KB)
    cirq_ionq-0.14.0-py3-none-any.whl(47.66 KB)
    cirq_pasqal-0.14.0-py3-none-any.whl(29.98 KB)
    cirq_rigetti-0.14.0-py3-none-any.whl(55.05 KB)
    cirq_web-0.14.0-py3-none-any.whl(580.07 KB)
  • v0.13.1(Oct 26, 2021)

    This release removes the measurement_key and measurement_keys protocols. These protocols were supposed to be removed in Cirq 0.13.0, but were missed.

    Complete list of changes:

    7d74e3cff2957ffc165f94020a886ff262d4b55e Flush missed v0.13 backlog items. (#4600)

    Source code(tar.gz)
    Source code(zip)
    cirq-0.13.1-py3-none-any.whl(7.55 KB)
    cirq_aqt-0.13.1-py3-none-any.whl(18.54 KB)
    cirq_core-0.13.1-py3-none-any.whl(1.49 MB)
    cirq_google-0.13.1-py3-none-any.whl(426.87 KB)
    cirq_ionq-0.13.1-py3-none-any.whl(46.42 KB)
    cirq_pasqal-0.13.1-py3-none-any.whl(29.20 KB)
    cirq_rigetti-0.13.1-py3-none-any.whl(54.45 KB)
    cirq_web-0.13.1-py3-none-any.whl(320.56 KB)
  • v0.13.0(Oct 15, 2021)

    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 a cirq.GateOperation instead of cirq.ControlledOperation in cases where the underlying gates have specialized gate.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 of ControlledOperation with Z ** 0.5 as subgate(@ ---- S)
      • op.controlled_by for 3Q gates like CCX, CCZ, CSWAP will now return ControlledOperation with sub_operation = <underlying non-controlled gate>. Eg: CCCX (i.e. sub_gate = X) instead of CTOFFOLI (i.e. sub_gate = TOFFOLI) etc.
      • Diagrams for ControlledOperations will now always have the exponent drawn on the target qubit (in case of multi qubit sub_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

    • NamedTopology
    • draw_gridlike
    • LineTopology
    • TiltedSquareLattice
    • get_placements
    • draw_placements
    • estimate_parallel_single_qubit_readout_errors
    • AnyIntegerPowerGateFamily
    • AnyUnitaryGateFamily
    • GateFamily
    • Gateset
    • measure_paulistring_terms
    • measure_single_paulistring
    • ParallelGate
    • ParallelGateFamily
    • parallel_gate_op
    • PauliMeasurementGate
    • StatePreparationChannel
    • ProjectorSum
    • decompose_clifford_tableau_to_operations
    • choi_to_kraus
    • choi_to_superoperator
    • kraus_to_superoperator
    • operation_to_superoperator
    • superoperator_to_choi
    • superoperator_to_kraus
    • state_vector_to_probabilities
    • dataclass_json_dict
    • measurement_key_name
    • measurement_key_obj
    • measurement_key_names
    • measurement_key_objs
    • SupportsKraus

    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

    • Serializer
    • ExecutableSpec
    • KeyValueExecutableSpec
    • QuantumExecutable
    • QuantumExecutableGroup
    • BitstringsMeasurement
    • SharedRuntimeInfo
    • RuntimeInfo
    • ExecutableResult

    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

    8a7d6f84 Removing 0.13.0.dev -> 0.13.0 50271af8 Made the Density Matrix Plotter (#4493) aaf969d8 Allow any qubit type in quimb density matrix (#4547) e4e90197 GateFamily & Gatesets cleanups and bugfixes (#4569) 686e6b1a Removes sections related to experimental features. (#4573) 5aca52d0 Roll forward "Enable CircuitOp serialization" (#4511) 1f14edf6 Fix "tex" -> "text" (#4571) 888aeb7a Make Instance GateFamily check for equality ignoring global phase (#4542) 66c694a9 [cirqflow] Quantum runtime skeleton - part 1 (#4565) 033c604c Remove v0.13 deprecations. (#4567) 9f3034cb Replace isinstance(op, GateOperation) checks in cirq_google optimizers to support other operation types. (#4459) bd2e63c0 Boolean Hamiltonian gate yields fewer gates (#4386) 3d509219 [cirqflow] Provide concrete ExecutableSpec (#4559) 978dbacf Add measurement_key_obj and measurement_key_objs protocols. (#4497) f11846ec Add copyright notices to conftests (#4561) e66ac537 Document conversion tools between channel representations (#4554) 09da3914 Fix variational algorithm tutorial (#4541) eaa7f333 [cirqflow] QuantumExecutableGroup (#4551) 7e0d5d24 Add Azure Quantum docs and tutorials (#4530) 0d9eb4ef More channel representation conversion tools (#4553) 02b46580 Compute a Kraus representation from the Choi matrix (#4549) 241695a3 Acctually assert in kraus_protocol_test.py (#4546) f48efe0f Resolve inconsistencies in using controlled gates & controlled operations (#4167) 9d0ac9cb Add Clifford Tableau decomposition function (#4183) e6dc1e08 Use Gatesets in cirq/neutral_atoms (#4525) bd1cdbcd [cirqflow] Quantum Executable (#4527) da635241 Fixed test_clifford_circuit_3 (#4534) 5daaec6d Fix resolving integer divisions (#4521) 88be1ef1 Fix broken path instructions in setting up a dev environment (#4519) 004eed10 Add separators argument to to_json function. (#4537) 6d9bbacd Re-add all_measurement_keys and deprecate it (#4540) 34d0f8b5 Replace the underlying representation of SingleCliffordGate by CliffordTableau (#4165) 44e063b9 Code Quality Fixes in StatePreparationChannel (#4503) e2564235 [Named Topologies] LineTopology nodes_as_linequbits (#4536) 95916155 Idiomatic use of "segments" in floquet calibration tutorial (#4528) 3a287c28 Use Gatesets in cirq/optimizers/* (#4526) 2868382e Use Gatesets in cirq_ionq/* (#4524) dfc33a10 Use Gatesets in cirq_pasqal/* (#4523) 61718ca2 Use Gatesets in cirq/ion (#4522) 4d1b9c00 Add common gate families as part of adopting gatesets across Cirq. (#4517) f8ffbea1 Fix docstring for fsim gate (#4520) f1964e5b Explicitly throw TimeoutError when job times out (#4514) 9f6c359e Exponent should be drawn on target qubit in CX and CCX gates (#4462) 9f371b0d Consolidate SQRT_ISWAP gate defs (#4229) cf5b45db Little json things (#4506) 7759c05f Add type annotation on FrozenCircuit.to_op (#4505) 0041657c Add cirq.GateFamily and cirq.Gateset (#4491) 464ef048 Fix broken tutorials depending on cirq pre-release (#4504) f1e676fa Fix incorrect index in intro.ipynb (#4502) 3725c6a2 Implemented State Preparation Gate (#4482) b80c2656 Fix broken Floquet tutorial (#4496) 91bfb5c1 [Docs] Add calibration FAQ (#4442) b3fa1bf5 Abstract out auth+device+sampler boilerplate from cirq_google tutorials (#4286) 578c956b Bump the proto requirements to match the generated data. (#4473) eb3d84c4 Replace decomposition in measurement_key_protocol with explicit implementations (#4471) 676431da Adds PauliMeasurementGate (#4444) 9349802d Append list of wrapped finders in sys.meta_path with list of non-wrapped finders (#4467) 3b6ddfb9 Refactor ActOnArgs.kron/factor/transpose to reduce code duplication (#4463) 7951f84a Deprecate Two/ThreeQubitGate (#4207) 0dce2c1a [Obs] 4.5 - High-level API (#4392) 2988803b Retain log_of_measurement_results throughout simulation (#4465) 9130e2ab cirq-google: Export Serializer on top-level cirq_google namespace (#4474) d8004c67 Enable missing-param-doc pylint rule. (#4457) 6ce9a06d Upgrade notebook (#4468) b44387aa Bring back nest-asyncio to allow running notebooks with latest release (#4472) de31ee92 Use duet for asynchrony, in particular for Collector (#4009) 58cda7a4 Serialize SingleQubitCliffordGate (#4421) 932f0659 Added r(theta, phi) gate (#4455) 886fc516 dataclass_json_dict (#4391) 6ecaf079 Named Topologies (#4370) 1c2eafb3 Add missing code for ProjectorSum serialization in TFQ (#4456) 454c1a3c Allow initialization of MeasurementKeys with empty strings (#4445) 9ad0db17 install pyquil qvm and compiler (#4435) c8dca6bc Noise validate and docs (#4447) 1532975d Fix typing for Google measurements functions (#4450) 82a76988 Rename kraus.py to kraus_protocol.py (#4454) 743c5bad Fix reference to np.random.poisson (#4452) d4717d89 Do not sort qubits by default in pauli_string to fix inconsistencies with pauli_string.gate (#4446) 91f4c765 Fix repr for MeasurementGate so that eval(repr(g)) == g (#4443) 4f881d71 state vector to probability utility method (#4439) 662de03c Replace from numpy.random import poisson with import numpy as np in cirq-core/cirq/contrib/acquaintance/gates_test.py (#4451) 11f751fa Add ParallelGate and deprecate ParallelGateOperation (#4398) a99fef97 Add tutorial on comparing current performance to latest calibration (#4180) b1db3fa7 Fix MeasurementKey repr s.t. eval(repr(k)) == k (#4441) e0c4a8af Add tutorial on circuit optimization, gate alignment, & spin echoes (#4373) d259a8c2 Add name to circuit serializers (#4422) 739808df ProjectorSum object for TFQ (#4364) e6c584b6 Calibration to fidelity (#4431) aa8184c7 Replace existing calls of SupportsChannel to SupportsKraus (#4438) 5ee2288f Add SupportsKraus to cirq/__init__.py (#4437) 8d02bde2 Change definition of rise time for coupler pulse (#4427) 601a9237 Channel matrix -> superoperator (#4433) ac873c6c Metrics to noise (#4389) cad0c336 Allow ActOnArgsContainer to support protocols.act_on (#4371) 9d615c5e Improve speed of random circuit generation (take 2) (#4430) fb4cf437 updated cirq.Circuit to cirq.AbstractCircuit (#4372) 6e5d6844 Add missing-raises-doc rule to the linter and subsequent refactor. (#4345) 04dea0cb Deperecate property test. (#4432) 36904401 Rename measurement_key protocol to measurement_key_str (#4403) 5a248eb6 Revert "Improve speed of random circuit generation" (#4429) 75eccd33 Improve speed of random circuit generation (#4428) 782efcd0 pre-release notebooks -> stable (#4423) 37dfc636 Simultaneous readout (#4415) 28feee1f [Docs] Remove redundant note about cirq pre install in noise guide (#4413) 8e1a08d9 Add modules to book yaml (#4419) e4645d1f Fix XL size labeling everywhere. (#4420) 4aeb719c Size labels (#4402) eb42d4a6 Updates release.md and verification scripts. (#4417) db1b310d Bump dev version to v0.13.0.dev. (#4416)

    Source code(tar.gz)
    Source code(zip)
    cirq-0.13.0-py3-none-any.whl(7.55 KB)
    cirq_aqt-0.13.0-py3-none-any.whl(18.54 KB)
    cirq_core-0.13.0-py3-none-any.whl(1.49 MB)
    cirq_google-0.13.0-py3-none-any.whl(426.87 KB)
    cirq_ionq-0.13.0-py3-none-any.whl(46.41 KB)
    cirq_pasqal-0.13.0-py3-none-any.whl(29.21 KB)
    cirq_rigetti-0.13.0-py3-none-any.whl(54.45 KB)
    cirq_web-0.13.0-py3-none-any.whl(320.56 KB)
  • v0.12.0(Aug 11, 2021)

    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 https://github.com/quantumlib/Cirq/pull/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.MergeInteractions behavior 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 if split_untangled_qubits=False, but this PR sets split_untangled_qubits=True.

    Changes to top level objects

    cirq-core

    New top level objects

    • SymmetricalQidPair
    • is_cptp
    • BooleanHamiltonian
    • KrausChannel
    • MixedUnitaryChannel
    • ProjectorString
    • reset_each
    • SQRT_ISWAP
    • SQRT_ISWAP_INV
    • MergeInteractionsToSqrtIswap
    • two_qubit_matrix_to_sqrt_iswap_operations
    • entanglement_fidelity
    • kraus_to_channel_matrix
    • kraus_to_choi
    • operation_to_channel_matrix
    • operation_to_choi
    • ActOnArgsContainer
    • OperationTarget
    • StepResultBase
    • GenericMetaImplementAnyOneOf
    • MEASUREMENT_KEY_SEPARATOR
    • has_kraus
    • kraus
    • SupportsActOnQubits

    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_on instead, 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

    8cba3246 Update serialization.md to include deprecation of serializable values (#4411) 1168164c Fix link on jupyter notebook (#4409) abc71590 Revert "Simultaneous readout" (#4406) 66fd2473 implement aspen qubits and devices (#4378) 0d4a31bd 3D circuit visualization using Typescript dev environment (#4334) 10c78c92 Add print_version and replace_version to module.py (#4399) eb72fb54 Simultaneous readout (#4307) 10b15e07 Fix cirq-core dependencies (#4369) 8c505fb2 update json serialization docs + add module docs (#4397) 9d695c50 Fix BooleanHamiltonian.with_qubits() to work with not only NamedQubits (#4396) 3810349a Reorganize serializers (#4385) 78db1026 Add missing import cirq (#4387) c3f9a5d6 T1 decay for simulator (#4326) e56e15d2 Boolean Hamiltonian gate (#4309) 2466bc3a Throw TypeError around any call in if hasattr(obj, '__iter__') and not isinstance(obj, str): to deal with a numpy special case (#4382) 120eb873 [Obs] 4.4 - Checkpointing (#4352) b1dc9735 Proto serialization v25 (#4333) fb915780 GeneralizedAmplitudeDampingChannel docstring (#4374) f7b882ce Measureable channels and mixtures (#4194) 409a412d Disallow empty measurement keys and fix tests using empty keys (#4060) 9c230536 Lazily create TrialResult.final_simulator_state (#4317) 9467ad3c Add is_cptp predicate (#4365) 2b1e4070 Updated calls to np.prod to use dtype=np.int64. (#4363) 9a38c2d2 Projectors for TensorFlow quantum (#4331) 2467e390 IdentityGate optimizations for act_on and independent states (S) (#4340) 0f9fa3fa Optimize swap gates (#4169) fb43b84c Fix floquet quirk url (#4347) bae702c3 Revert "Enable CircuitOp serialization." (#4355) 809fe66f Revert "Allow CircuitOperations in cirq.optimized_for_sycamore" (#4356) ecb02021 [Obs] 4.4 - Readout error mitigation (#4323) 187915d4 Allow CircuitOperations in cirq.optimized_for_sycamore (#4336) 0209c651 Complete implementation of the permit_mixed_moments option (#4342) 4d956c57 Enable CircuitOp serialization. (#4344) 055db683 Allow intercepting decomposer while preserving structure. (#4343) 912110f2 Adds cirq-rigetti (#4302) 7a279173 Floquet notebook missed review nits (#4341) 093c1715 Fix citation and explanation in Floquet calibration example (#4335) b92f379f Make (cirq.X, cirq.Y, cirq.Z)**1 returned type as _Pauli{X,Y,Z} instead of {X,Y,Z}PowGate (#4330) dc013726 Attempt to Fix PauliSumCollector.collect_async warning under notebook(short-term solution) (#4004) 16dd1bb2 better error messaging when deprecated module can't be imported (#4324) c629c382 Re-alias TrialResult to Result in json. (#4319) b8e05873 Fix cirq_web README from large Typescript development PR merge (#4314) a3109a77 pauli_sum_collector.estimate_energy() should return float when energy.imag == 0 (#4313) 0d8bf311 Add missing quote in circuits.ipynb (#4320) 68f76980 T1 constant calculation (#4290) d9e1f937 Fix NameError in visualizing calibration metrics tutorial (#4316) d624a55e Add docstyle rule to the linter and subsequent refactor. (#4311) 7407a28b Test deserializer on infinite recursion. (#4315) c28646fe Sample independent qubit sets without merging state space (#4110) 5ca4ab6e Move on_each to Gate, and deprecate SupportsOnEachGate (#4303) 4852c468 Fix automerge checks (#4308) ada1b09c Add an option to build a PauliSum from a Sympy Boolean expression (#4282) b1a35bf5 Revert "Switch to using the incremental pylint. Turn on documentation linters. (#4267)" (#4306) 52aba59a Switch to using the incremental pylint. Turn on documentation linters. (#4267) cea9eece Return self in Operation.with_tags if adding no tags (#4301) c8be2069 Add reset_each function by analogy with measure_each (#4294) 418d0678 Remove bazel from repo (#4297) 4ec906d3 Allow on_each for multi-qubit gates (#4281) e2b44774 Use partial_trace to factor density matrix (#4300) 6cfdda73 [XEB] Cycle depths during analysis (#4278) 5c3125e9 Add py39 testing to CI test matrix. (#4296) d850bd0f Add Circuit Optimizer for sqrt-iSWAP (#4224) 504bdbb9 Fix behavior of MergeInteractions for tagged partial CZ gates (#4288) c80e4637 Add two-qubit unitary decomposition for (inverse) sqrt-iSWAP (#4213) 24bac557 Typescript development in Cirq and prototype Bloch sphere implementation (#4171) 6282c067 SimulatorBase independent qubits optimization (#4100) 6b6fc980 fix for issue #4087 (#4103) 680f8973 Revert "Support qubits in MeasurementKey and update JSON serialization of keys" (#4277) 14336215 Fix docker (#4230) 55417eea Extract cirq-pasqal (#4241) 608e678b Remove cirq.IonDevice.can_add_operation_into_moment (#4271) 534b9518 Add qubits as a param of PauliSum.matrix() (#4203) d3795718 Refactor private static methods to module functions. (#4231) b1801aba Add coupler pulse gate (#4130) 6d2cd169 No DeprecationWarning deduping during testing (#4239) ff230df1 Update tutorials on calibration (#4258) 36e5f60e Add method to get "mapped_circuit" from CircuitOperations (#4188) 09a2ea5f Support sqrt(iSWAP) and Sycamore gates in Floquet calibration (#4248) aba9fa95 [Docs] Fix dev group link on support page (#4259) 2f07cc9e Fix the CZ ops on the Clifford Tableau Implementation (#4182) 700a6c02 add cancel workflow (#4256) 418e08df Propagate channel from GateOperation to its Gate (#4255) 02f39513 add flynt to pytest-minimal (#4250) fb289677 Add Optional name to MatrixGate parameter (#4201) d7a5b9ba Removes direct URL requirements from cirq[dev-env] (#4249) 81d2097d Support decompose protocol on cirq.Moment (#4251) 81436fee Support qubits in MeasurementKey and update JSON serialization of keys (#4123) 7d9e6035 [4173] Add atol/rtol for unitary checks in MatrixGate (#4220) 42782774 update python version to 3.8 (#4245) 4960e177 Fix extras_require for the cirq metapackage setup.py (#4246) a2f107cd Expand Floquet calibration to arbitrary FSim gates (#4164) ba2cd7fd Removing noise model check in Simulator initialization (#4216) 099fc740 Draw zero-target operations below circuit text diagrams as annotations (#4234) ef5ae035 Qasm for pauli X sqrts (#4113) 65711e10 Remove axes from ActOnArgs, pass qubits explicitly to act_on (#4089) 566ce2bc Extracting cirq-ionq (#4205) 59d80187 Fix EjectPhasedPaulis incorrectly treating X0 as X1 (#4219) 87f2961f Add cirq-aqt to pip install command in development.md (#4221) 73359bf8 fix aqt ref (#4212) 72993b50 Density matrix simulator EVs (#3979) 0d7534a8 Update Google Best Practices (#4168) 1f2328f1 fix AQT link + logo (#4206) b5c0f803 Rename channel.py to kraus.py (#4204) 6af64a27 Fixing isolation in isolated notebook tests (#4202) e151a669 Add two-qubit interaction heatmap to parallel xeb tutorial (#4199) 2dafb29a fixing notebook test errors when no tests collected (#4196) 55873b90 Rename cirq.channel to cirq.kraus (#4195) b43eaaa8 Extract cirq_aqt (#4157) 020008b6 sharding isolated notebook tests (#4192) 1d1f3a8e Triage party config and docs (#3740) 2d7641b8 Allow to pass Circuit to single-qubit gates compensation (#4118) 007a3cdc Fix path in __version__ docstring for setup.py in cirq-google (#4174) 3b315cdf Optimize is_measurement protocol (#4140) 8e7e302b GH actions ubuntu 20 04 (#4148) db8baea4 Fix codeowners for docs and modularized folder structure (#4160) 8b5866ff Minor improvements to echoes tutorial (#4128) 66b2102d Fix the typo in clifford_gate_test::test_commutes_pauli (#4149) 06b34df8 Add edges to device (#3993) 074c4e4a Entanglement fidelity of a quantum channel (#4158) 7065c6d8 Channel matrix (#4146) 0311e174 Update cirq_google to import from cirq directly (#4156) bc4123ef Rename _channel_ to _kraus_ (#4139) b95c3657 Fix contrib-requirements (#4155) 3ea9c873 Consistent parameter indentation in README.rst (#4150) 705f37bd Slight speed up to notebook tests (#4147) fec7710b Improve docstring for operation_to_choi (#4143) 836bbda9 Consolidate dependencies (#4131) b28b1633 Choi representation (#4132) 6c72b5b9 Fix pathname in misc check tool (#4133) 71285d21 (De-)serialization of CircuitOperations (#3923) 0c0366b3 Add inverse method for Clifford tableau (#4111) 7d1e1685 Add then method for composing two Clifford tableaux (#4096) edbee2c8 bump cirq to v0.12.0.dev (#4121) 51d68847 Add tutorial on selecting qubits and calibrating for an experiment (#4108) 3e06fdf2 Add to_phased_xz_gate function for SingleQubitCliffordGate (#4050) 38ed9ac2 add binary_paintshop example to ionq (#4101) 83b211b8 floquet.ipynb - idiomatic numpy indexing (#4107) ce58f422 [XEB] Multiprocessing spawn (#4090) 5fdb80d9 [XEB] Theory notebook: fix pauli vs. depol error number (#4097) 115e50ed Remove separate script for nightly devsite diff (#4105) f7c1156c Updating notebook pip installs after v0.11 release (#4102) 849849d5 Provide sweep-iterator API. (#4094) b4c445f3 Use MeasurementKey in CircuitOperation (#4086)

    Source code(tar.gz)
    Source code(zip)
    cirq-0.12.0-py3-none-any.whl(7.55 KB)
    cirq_aqt-0.12.0-py3-none-any.whl(18.03 KB)
    cirq_core-0.12.0-py3-none-any.whl(1.42 MB)
    cirq_google-0.12.0-py3-none-any.whl(400.27 KB)
    cirq_ionq-0.12.0-py3-none-any.whl(45.90 KB)
    cirq_pasqal-0.12.0-py3-none-any.whl(29.05 KB)
    cirq_rigetti-0.12.0-py3-none-any.whl(54.01 KB)
    cirq_web-0.12.0-py3-none-any.whl(320.45 KB)
  • v0.11.1(Jul 26, 2021)

  • v0.11.0(May 11, 2021)

    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

    image

    Breaking changes

    • as mentioned in the top notice, pip install --upgrade cirq will not suffice to upgrade cirq - please run pip 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 to cirq_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 in Circuit.transform_qubits(), you now must use qubit_map instead
    • TrialResult is now officially unsupported, use cirq.Result instead. If you have old JSONs lying around, you can just search and replace TrialResult to Result
    • If you have old gate implementations with _resolve_parameter that doesn't support the recursive 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 the recursive:bool parameter
    • Removed support for the density_matrix parameter in cirq.von_neumann_entropy you now must use state instead
    • stabilizers and destabilizers methods are now removed from the CliffordSimulator class, you can find these on the CliffordTableau instead
    • perform_measurement is now renamed to apply_measurement in CliffordSimulator
    • 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 to cirq.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 to cirq.vis.plot_state_histogram
    • cirq.google, deadline v0.14
    • cirq.sim.clifford.CliffordTableau moved to a different package, you should use cirq.CliffordTableau instead
    • cirq.contrib.routing.xmon_device_to_graph is deprecated, use cirq.contrib.grid_qubits_to_graph_device instead
    • cirq.contrib.quantum_volume parameter device_or_qubits is deprecated, use device_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:

    6f9eedca flush deprecation backlog for v0.11 (#4099) 44114ed5 format + added fixes to the release process 5ad517f2 Bump cirq version to 0.12.0 8825c078 fix notebook failure bd02fb68 flush deprecation backlog for v0.11 2f8326c5 [XEB] Allow default angles to be inferred from a gate (#4092) d9baa897 Add tutorial for state histograms (#4024) ca38fa33 Modify heatmaps tutorials to include demo of config params (#4026) 2337bbf8 [XEB] Add LocalXEBPhasedFSimCalibration to cirq_google init.py (#4091) d485de8d Eliminate simulator boilerplate by pushing iteration into base class (#4035) 226ca20a Move CliffordTableau and add unit test (#4085) 30c337fd Example of stabilizer code (#3935) 2ce47aee Allow to pass a list of circuits to Floquet preparation method (#4058) 642fc97f Fix tetris_concat docstring align arg and restore FIRST alignment option (#4084) a41df7f9 Store job identifiers in calibration results (#4053) 97ce418d Speed up notebook tests by adding extra replacements file (#4077) 8db1515d Update documentation on parallel readout errors (#4076) 97f9f3ef import networkx (#4073) db801bbf [XEB] Local wrapper for characterization functionality (#4047) 8e90bd6d A few more numpy warning squashes (#4072) b8334a19 Fix flakey test in engine_simulator_test (#4069) dd364466 pylint recognizes cirq_google as known third_party (#4071) 902e737d Narrow pytest execution check in deprecation warning (#4032) 83e0bd3a Add option to manipulate Floquet readout thresholds. (#4052) 9d9eeb32 Raise calibration exception for calibration failures (#4070) 5693c6da Make PhasedFSimCalibrationOptions public (#4061) fbd9c1e1 Fix numpy warnings (#4065) 64fa7d44 Implement automatic inference of qid shape for quantum states (#3789) d448a359 Fix indentation in docs (#3974) 6c99f0b2 Fix google notebooks (#4056) 7bdf41d8 Set default remote host for IonQ API (#4062) ebf8fa38 Speed up MPS simulator test (#4063) 5f51fffa Update floquet notebook to the latest changes (#4057) 58bebc82 Allow using plain qubits as keys for single-qubit heatmaps (#4028) ebce56cf Add a MeasurementKey class and make it the internal representation in MeasurementGate (#4039) b2f8d43a Forrelation (#3748) 08bce1e5 Add IonQ to list of quantum service providers (#4055) 7aeab3b1 Fix naming of sqrt(iswap) gate constants (#4051) 0df0cdcc Use sampler instead of engine as a primary run_calibrations runner (#4054) b61d1c90 Fix pytest-changed-files-and-incremental-coverage (#4046) 81de7251 Speed up cirq import by removing scipy.stats import (#4041) cafe985a Factorise circuit into parallelizable components (will fix #3409) (#3873) 8fc6a2f7 Add and cleanup some gate docs (#4044) 18a66048 adding editable installs to development.md (#4043) 336ab46a fix bad import (#4042) 6188c646 [XEB] Generalize cirq.google.calibration for XEB (#3881) d923a0f8 Fix omitted coverage (#4036) 3953052d Add multi-module version of build_api_docs.py (#4038) 574652c9 Fix cirq_google notebooks (#4037) 5919a17b fix versioning of new modules (#4033) 1514cecb Split the simulators' creation of ActOnArgs and iteration (#3970) d995a9c5 Include py.typed files in cirq-core and cirq-google (#4031) 12530f15 Merge pull request #3957 from balopat/master 5589c318 extracted cirq_google. 0cd59ea7 cirq.google -> cirq_google renames a9768d82 creating compatibility tests for cirq_google JSON files 5de9bdad new files before moving cirq.google package fd257e6c in-place changes before actually moving the cirq.google package 51b56288 Add @rmlarose as a maintainer for cirq/docs/* (#4027) bbaf47a1 Fix links in calibration visualization tutorial (#4025) 310f579f Add tutorial on qubit picking with Loschmidt echoes (#4021) 40757b8f Support passing config params in heatmap.plot() (#4018) b47b8b95 Some minor doc reorganizing (#3966) 83238b1f fix networkx / decorator dependency issue (#4019) 4799246c Improve plot_state_histogram configuration options. (#4015) 76edeb13 Better import for sometimes failing mypy test (#4016) eff9583b [obs] 4.3 - Stopping criteria (#3969) 83d163ef Fix DepolarizingChannel documentation (#4011) 9c710fb6 Fix most numpy type errors in cirq/linalg (#4000) 845836ac Fix most numpy errors in cirq/qis and friends (#4002) 259dd91e Fix most numpy type errors in cirq/ops (#3997) aaa13851 Fix Rounding error while printing solution of "Exercise: Custom Controlled Rx gate" in docs/tutorials/educators/intro.ipynb (#4006) 71c7467b Skip measurement gates in DropNegligible optimizer (#4003) c9c6d1f5 minor fixes to cirq intro (#3994) ff516d00 Fix numpy mypy and add mypy-next (#3995) e3fc5743 Update docstring to fix href to MSGate. (#3992) e0365e4c patch fixing a serialization issue with rx,ry and rz gates. (#3837) ff8fb574 Fix qid dimension conflict (#3983) 0a29dc23 minor updates to cirq intro (#3981) c791db7a Change the remaining format string to f-string (#3973) eccc219a Fix docstring for wait helper function (#3978) 150f95c3 Fix and add docstrings to set_state_vector() (#3972) 4bb484ae Coefficient fix (#3971) c162e10c Migrate MPS to act_on protocol (#3961) 24e98fa9 [obs] 4.2 - Basic sampling loop (#3855) f12e221e Improve Cirq Intro Tutorial (#3967) 96a639ab Update visualizing calibration metrics tutorial (#3956) 8fb3efe0 Make EqualsTester notice incorrect delegation (#3809) ce9fde6b Type annotations for optimization_pass (#3962) 966fc02d Remove go/ link from colab.ipynb (#3963) 46efaaef Refactor state histograms (#3953) 40bc8565 Add link to Jupyter Notebooks in README.rst (#3959) 51dc0966 Fix load_module wrapping (#3948) c27dcffc Simulator doc update (#3955) 13908f6a Allow deprecation for freezegun (#3950) f7ccb4ca Fix name collision in program proto (#3949) 985b411c Return type annotations for def _eigen_components() (#3924) 7aff0dd2 Add docstring for cirq.QasmOutput (#3934) b190b40f filter pre-release job for only main repo (#3945) 4f50559e support pytest.skip() in subprocess tests in _compat_test.py (#3947) bee1a448 Add integrated histogram visualizations (#3942) cfb25594 Adds git-blame-ignore-rev and instructions (#3940) 0d371281 Fix a bug in module deprecator (#3937) 0baadeb5 Fix calibration API timestamp (#3931) f49ab35b Removed unused param in DFE example (#3936) 916e3558 Module deprecator (#3917) 06e0f1c8 Pytest without cirq.google (#3894) 2128257e remove cirq.google dependency from three qubit gates test (#3928) fa55cbba Add Rx, Ry, Rz gates (#3920) 3d369a00 Simplify type annotations in mps_simulator.py (#3926) 47f5908b Clean up resolve_parameters method signatures (#3925) 9c7a862d Make SimulatesExpectationValues public (#3927) 584b221e Adds a tutorial for single/two qubit heatmaps (#3880) 2b591a54 decompose_preserving_structure (#3899) d27b9a4c Fix for issue #2777: it makes no sense to call simulator.run when ignore_measurement_results has been set to True (#3618) aa6ec849 Change type signature of cirq.resolve_parameters to preserve types (#3922) 38cb2f27 Allow custom definition for _sympy_pass_through (#3921) 229b2041 CircuitOperation proto (#3891) 06e48928 Density Matrix Simulator ActOn migration (#3841) 8cf78255 Add seconds to engine program id generation (#3906) 9465afcd Make assert_logs levels interval based (#3914) 39faafc4 Pin pandas version to >= 1.1.4 (#3918) 504d4679 assert_deprecated improvements (#3919) 69daec18 [Docs] Fix links in Floquet tutorial (#3911) 08c4b9bd Diagonal gate (#3890) 8301dfcd cleanup _assert_equivalent_op_tree (#3909) 4d46863a cleanup _assert_equivalent_op_tree (#3909) bfb7aa31 make flynt incremental (#3905) 745790e4 Remove cirq.google reference from contrib.quantum_volume and contrib.routing (#3888) 05a499c0 Propagate global phase in diagram from sub circuits (#3892) 3f90c62c [Docs] Patch multiplicative group in Shor tutorial (#3819) 7a335e3e Format automatically covered lines with flynt (#3786) 2b948baa fixing small issues (#3896) 0c2a65c9 Update codeowners test following #3877 (#3878) d4f3fc9e Replace _get_op_circuit with op.untagged (#3893) eab2b489 narrow qiskit dependency (#3889) 2ef656c0 Add approximate equality for all common_channels except ResetChannel (#3887) 8cef3d9d Version bump 0.11.0 (#3882)

    Source code(tar.gz)
    Source code(zip)
    cirq-0.11.0-py3-none-any.whl(7.45 KB)
    cirq_core-0.11.0-py3-none-any.whl(1.41 MB)
    cirq_google-0.11.0-py3-none-any.whl(371.92 KB)
  • v0.10.0(Mar 5, 2021)

    Cirq v0.10.0 release

    Major usability changes

    Cirq core

    • We now have support for TwoQubitHeatmaps. Single qubit Heatmaps 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
    • 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:

    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 parameter two_qubit_op_factory in random_rotations_between_grid_interaction_layers_circuit and random_rotations_between_two_qubit_circuit changed to cirq.CZ instead of cirq.google.SYC
    • cirq.google.api.v2.results.MeasureInfo is now a dataclass which also contains tags corresponding to the circuit passed to cirq.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 returns AbstractSet[str] instead of Tuple[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 to float
    • 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 Use qubit_map instead of func
    • parameter deprecation:cirq.Moment.transform_qubits Use qubit_map instead of func
    • parameter deprecation:cirq.Operation.transform_qubits Use qubit_map instead of func
    • parameter deprecation:cirq.von_neumann_entropy Use state instead of density_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: 77de283b Bump cirq version to 0.11.0 41fcc6a1 Add empty results fallback for Result.repetitions (#3875) 3da5fa92 Ensure density matrix doesn't restart at zero between repetitions (#3851) 8d17c738 [Docs] Add support page for issues, requests, and questions (#3835) 3435a2ce Add PauliSumExponential for commuting Pauli terms (#3427) d890784b Exclude names from concise serialization. (#3863) 1a614232 fail cirq's use of deprecated features in tests (#3860) e937b199 Add two qubit interaction heatmaps (#3861) 59d9e73d Remove unused perform_measurements argument from sparse simulator (#3869) 4ca1c1da Add support for using physical-Z phase matching on 2-qubit gates (#3862) af0d9f30 Add circuit Alignment and use it for zip and tetris_concat (#3821) d4a12a22 Update reference link in readme (#3859) 7fe025f1 Refactor MPS simulator to add noise, after #3829 (#3857) 2105e0c2 Deprecate 0.9 deprecated items (#3856) a7f7129a Deprecate 0.10.0 deprecated items (#3854) 3df8aa3d Documentation for accessing the IonQ API (#3755) 9a88acfa [obs] 4.1 - Pre-requisites (#3792) 0679a128 fix grpcio-tools version (#3849) 384b9a28 [XEB] Enable characterizing other gates (#3842) 5977bf39 Allow noise on sparse simulator (#3829) 4b068e69 circuit = circuit.freeze() (#3845) f3d89826 [XEB] Generate calibrations from circuits (#3834) 94724fa5 Task, design discussion, project health issue templates (#3839) d7bd940b Airspeed Velocity (asv) performance benchmarks setup: part-1 (#3822) f2bf60f3 Expose new calibration methods (#3830) aa2af6f2 Fixes for older envs (#3836) a938495c Fix measurement_keys in repeated CircuitOperation and update the separator (#3823) 9ab0f6d0 [XEB] Optimize/characterize by pair (#3795) e3c673fa Ensure only measured subcircuits cause full simulator sweeps (#3827) f9a82f18 Move google noisemodel to cirq.google (#3824) c0600fb4 Add option to do per-operation compensation (#3812) 31f44ec0 Add prepare_floquet_characterization_for_operations function (#3813) 31c3728e [Docs] Move Floquet calibration docs to tutorials/google (#3826) 38a6c983 Allow quantum engine timeslots to handle missing start/end values (#3796) 7b2abd80 Improve type safety with generics on simulators (#3818) e46f62eb Don't serialize GridQubit hash when pickling (#3791) 6ea7c76f Add Floquet calibration docs (#3765) a616ae87 Add Circuit.tetris_concat and FrozenCircuit.tetris_concat (#3805) 6bad7bfe Adding two options for the MPS simulator: max_bond and method (#3793) 6aa46d7c adding standard header to characterization notebooks (#3817) a276f9fe Improve naming and docstrings of characterization methods (#3810) 98d950a9 pylint print version + verbose mode (#3811) 3f965a4b Fix Result constructing a pandas dataframe to compute repetitions (#3801) 0677d608 Enforce unique serialization keys (#3673) 1e9323c3 Revert "Drop python 3.6 support" (#3798) 2959dcc0 Add from_moment to PhasedFSimCalibrationRequest (#3720) 1590ff13 [XEB] Split into three files (#3794) bbf6245e Notebooks guide (#3781) e8697ded [XEB] Support parallel execution (#3760) bc108f94 Add key/value type annotations to cirq.PauliString.items() (#3790) 2e5c45bc Remove cirq.google references from circuit_test and circuit_dag_test (#3738) 2c904da8 Add support for WaitGate and inverse of sqrt(iSWAP) to characterization and compilation (#3750) 18e11b38 Add the ability to do hybrid MPS/dense/inbetween simulations by having qubit grouping (#3735) e8824756 Fix DepolarizingChannel.circuit_diagram_info assuming it is a single qubit gate (#3780) 942b2c9b Modular JSON serialization protocol (#3539) 64af70f3 adding wojtek to the codeowners in cirq.experiments (#3776) ca65d5de Updated, Multi-Stage Dockerfile (#3553) 2aa20b3d Add ISWAP and its inverse to FSIM_GATESET (#3743) 387ad42d Add and use QuantumState class (#3419) 3882d593 Accept qubit maps in transform_qubits (#3727) 7088690f refactor: move relative luminance (#3757) 90bf207e [XEB] Faster and more extensible simulation (#3753) e9b802ae removing cirq.google references from random circuit generation (#3764) 1958f2e1 Revert "Updated secretmanager ref to v1 (#3762)" (#3770) 1e49f88a Rename calibration methods (#3752) f08b3444 Avoid run_sweep_sample when subcircuits exist (#3745) d57fa67b Updated secretmanager ref to v1 (#3762) 451b2f16 Repetition IDs for CircuitOperation (#3741) d14eb7c5 Notebook tests against both released Cirq and PRs (#3751) c24e2b9a [XEB] Optimize two qubit circuits (#3739) a163a39b Backwards-compatibility behavior for resolve_parameters. (#3719) abfa2af0 Add ability to overwrite characterized parameters with a fixed value (#3746) 0f87bb3d Remove unused imports (#3747) d4a18746 Add functionality that compensate (calibrate out) for a single-qubit phases of the circuit's PhasedFSimGates (#3731) bbaacd35 update the zenodo metadata + removing confusing bibtex (#3742) 5571b76d Update build status badge (#3744) 03f3a2f5 Add guide on operators and observables (#3654) 1ed3176e Cross Entropy Benchmarking sample and simulate two qubits (#3706) 4f9eb60c Add ability to construct service via environment variables (#3707) 65b86386 import os before using os (#3733) 2a121ecd Fix a bug in Depol channel with multi qubits (#3715) c626db04 Add PhasedFSimEngineSimulator which allows to simulate calibration requests and unitary shifts of the PhasedFSimGate (#3725) 7eb27cfb make three qubit decomposition tests scipy version dependent (#3726) d8598dcd Support even powers of SWAP gate in CliffordSimulator (#3661) 3c566d27 Support gzip serialization (#3662) 97e9a915 Sync has_stabilizer_effect implementations and use that for Clifford checks (#3656) fa9d941d Fix: tutorial index headings do not match tutorial content page (#3724) b0023c24 Add utilities that allow to characterize circuits using Floquet calibration (#3711) c52e52f5 MPS simulator can handle any topology (still required to have 1- or 2-qubit gates) (#3670) 239936db only test notebooks that are checked into git (#3713) 18c97b3f Fix bug of in IonQ result conversion (#3710) ed07465b SimulatesExpectationValues (#3698) 6036851f Remove unused imports that were triggering pylint failures (#3718) 141f9571 Add IonQ API device (#3665) 373f1546 Add more test for heatmap colorbar (#3689) 2f9864b0 Cross entropy benchmarking spruce up (#3669) 32a806ee Add a convenience interface that allows to issue Floquet calibration requests on cirq.google.Engine (#3690) c5c2d954 Proposed fix for #3529 (Functionality decoupling for strat_commutes… (#3548) 1e849cb5 Add hash values to tags in cirq.google (#3701) 59cd7be2 Pin codeowners to 0.1.2 (#3703) fbafbd5a Add tags to MeasureInfo (#3694) 680ae219 Add Circuit.are_any_matches_terminal() (#3697) 1ec80807 Observable Measurement - 3.5 - Readout Correction (#3649) 014514c3 Copy instead of assign input state for ProductState multiplication (#3692) e9c09d35 Add PhasedFSimCharacterization container that describes cirq.PhasedFSimGate unitary angles (#3646) 057382cf Remove extraneous copies in StabilizerStateChForm JSON parsing (#3680) 187cc238 Remove CliffordTableau from CliffordState (#3645) df12015f Add align-left and align-right optimizers (#3643) dd966902 Wrap input json_dict entries in np.array to avoid wrong type deduction (#3679) dae89114 Simplify recursive sweepable cast (#3644) 3a882342 Fix for issue #1622: Some QASM annotations missing (#3637) 71cdf331 Fix assumption about order in MPSSimulator (#3671) 5fa8a3b3 Push redundant simulator iterator code into base classes (#3650) 989abada An MPS (approximate) simulator (#3630) 2a9fff78 Copy states in Clifford simulator (#3664) e6a89fb0 Fix TaggedOperation not delegating act_on to its sub_operation (#3660) 1a9ee180 Fix SWAP and ResetChannel not working with CliffordSimulator (#3659) 6dfa6280 Add qasm output support to ResetChannel (#3657) 1fbcd9a8 Validate that CircuitOperation is provided a FrozenCircuit (#3653) bd3d95a2 Update chemistry tutorial docs for OpenFermion 1.0 (#3635) ae9c7bdf Fix quantum volume notebooks (#3604) 9bad962c Perform CliffordState measurements via method dispatch (#3503) 47cfc790 Observable Measurement - 3 - Data (#3374) 19497154 Add sampler to IonQ Service (#3607) 0ff2894e add JSON serialization to ParallelGateOperation (#3632) bd8801c9 docs: fix simple typo, sigificant -> significant (#3631) 2188c07e Add transform_qubits/neg/pos to MutablePauliString (#3629) f98ece88 Avoid going through CliffordSimulator to test StabilizerStateChForm (#3628) 0b58a1a4 Add measurement support to ActOnStabilizerChFormArgs and use it in MeasurementGate (#3610) 888d535c temporary fix for chemistry notebook (#3626) a70cb529 Three qubit decomposition (#2873) 2d647f70 CircuitOperation (#3580) 4b08f85d Add list calibrations to IonQ service (#3606) e20099e6 Remove repetition number in calibration calls (#3615) 9edf75a7 Add concise serialization tools. (#3601) 56160e4b Measure using StabilizerStateChForm (#3564) 2e211332 Update tutorial links on readme (#3609) 06a2bd72 Circuits can now be multiplied by numpy ints (#3590) 905083cf Directly use Clifford tableaux for direct fidelity estimation (#3571) dd332325 Refactor cirq.Moment to support efficiently finding operations by qubit (#3592) 70b08f06 Update noise docs (#3598) 5369b9ba Add list jobs to IonQ service (#3602) 7fabf03b Make string for powered gates consistent (#3521) b31d2d81 Add run method to IonQ service (#3600) 3440836a Format links in simulation docs (#3596) 7dad8359 Remove unused dependency (#3595) 4f24415c Add get current calibration to IonQ service (#3570) baddb11a Serialize measurement keys through IonQ metadata (#3562) 9885e432 Remove stale rtd_docs/docs_coverage_test.py references from check/* scripts (#3593) 4c98d376 Retire ReadTheDocs (#3587) a0ee113f Docs: update notebook buttons (#3591) 8f9d8597 Add module docstrings and fix formatting (#3589) 3a095e98 JSON Serialization for CalibrationResult and CalibrationLayer (#3540) 86661594 [docs] Fixes in install.md, rabi tutorial, variational algo and reservations tutorial (#3585) ae6509b4 Remove bad delete char from docstring (#3583) 0701327b Polish noise docs (#3569) 1409d686 Fixes indentations on development.md (#3579) b4e958ef [docs] small formatting errors (#3578) 9d7ba9c0 Fix formatter on deleted or moved files (#3576) a4740353 Avoid triggering KeyError to check key presence in dicts (#3568) 09bb8ebc ParamResolver composition. (#3538) e99fe921 Drop python 3.6 support (#3574) 2219adec Switching to pre-releases instead of cirq-unstable (#3527) ed37d2f8 Provide one-step and recursive parameter resolution (#3546) 0276ea0c Allow strings as targets of metrics in Calibration objects. (#3536) cdfa4bcd Remove print debugs from tests (#3563) d6c6f9b1 [doc] Fix a newline in the Google Getting started tutorial. (#3558) 150f5c37 Adds alfrisch to AQT codeowners (#3557) 28764bef Fix adjacent string literals (#3559) fda14a5f Remove todos from protocols documentation (#3485) 226d52f5 Update requirements.txt (#3551) 556dcda7 Docs nits (#3545) a61e51b5 Format 2496fc9a Switch to black for formatting 1bd083a8 [doc] remove CircuitDag methods from API doc that are inherited from networkx (#3531) 5b99b856 [3 qubit decomposition] Extract diagonal (#3472) ff36e02a Reorganize tutorials landing page (#3522) c429a027 Canonicalize theta and phi for the FSimGate (#3543) d6005ff0 Fix WAIT_GATE_SERIALIZER to work with multi-qubit waits (#3537) 47d34182 Refactor how we generate default json resolver (#3532) 92e928e5 Fix type error in (X/Y)PowGate.act_on (#3533) c5b58f8e Tweak formatting to prepare for switching to black (#3534) baef78da Tweak coverage to prepare for switching to black (#3535) 16a906d5 Complete serializer for IonQ gates (#3520) cf556d35 Add command to track upstream repo. (#3530) c425c8a1 Add JSON serialization for Calibration metrics (#3508) 0693f797 Fix symmetry of PhasedFSimGate under qubit exchange (#3524) 69cc1b89 Implement cirq.commute for Moment and Operation (#3519) 0de53fb0 aqt, pasqal, ionq owners (#3526) e6de69cd codeowners file (#3525) ed5cbffa Add cancel and delete to IonQ job (#3523) 8a828258 Fixes run_batch requiring param list (#3507) 8cc0befa Add PhasedFSimGate (#3505) 269af717 Make WaitGate variadic and add wait helper function (#3514) cdb62eba Generalize types for basic qubit experiments (#3513) 8e884b8f Update/polish neutral atom device tutorial. (#3491) 1f638b3f Update/polish QAOA educators tutorial. (#3486) 7cd4cc15 Adding missing ecosystem nav (#3510) 956845e8 New landing page for tutorials (#3506) 7d737500 Initial IonQ service (#3500) 00f29904 Fixes transform.ipynb and adds notebook testing (#3497) b12ddf3c Add measurement key remapping protocol. (#3495) 0c2ee9f3 update code of conduct steward (#3496) 359a1023 Add initial Engine client for Calibration API (#3474) 8bf262e9 Make dtype optional in state validation routines (#3428) 4d15fd7c Remove "python" symbolic link (#3489) 979025bd moving freezegun dependency to dev dependencies (#3487) f9588f5b Change initial backoff in engine client. (#3488) 58f139a0 Fix notebook authentication (#3484) debc6fb5 AbstractCircuits and FrozenCircuits (#3481) 512d2568 Modify EngineProgram.get_circuit() to work with BatchPrograms (#3483) e937268a Update/polish textbook algorithms tutorial from educators workshop (#3476) 4fc8a851 Add serialization of tokens (#3480) fcabf198 Fix a typo in basics.ipynb (#3482) 0c36d621 Fix iterator name in channel docstrings (#3477) 51000046 Reorder const methods in Circuit (#3478) 03155955 Update and polish educators workshop intro notebook (#3473) 28048eee Delete docs _index.yaml file. (#3470) 825adc4b Restructure tutorials into beginner, intermediate, and advanced sections (#3469) a913530b Fix typo in custom gates guide (#3468) ae3de3ff fix educators links in book.yaml (#3465) 3045bd06 Pasqal access file (#3466) d8c07aa5 Update basics.ipynb (#3467) 862ba0a0 Add educators workshop heading and contents (#3464) 4a3274c1 Move to method dispatch using act_on for CliffordState, Tableau and ChForm (#3456) 4676aa9b placeholder for protocols docs (#3461) be9d1473 Qubits docs (#3463) 78222c2c adds circuit transformations page (#3462) ce4ff472 mention hardware/simulation options in Devices page (#3455) c4c8f29d Add ion device tutorial. (#3450) d000355f Fix equation rendering in custom gates guide (#3460) a9b1549a Polish QAOA tutorial (#3457) 690f0eed First steps docs (#3449) 98ce452d Fix Tableau act_on for GlobalPhaseOp (#3458) 1f27aa2d Document Cirq ecosystem (#3446) a7810c84 Make args_from_proto public (#3453) 37196ab9 Adds guide on custom gates. (#3442) 699bd641 Fix StabilizerStateChForm omega data type (#3451) 786822bc Change measurement_keys protocol to return AbstractSet[str] (#3454) c04dd6e2 Add act_on for StabilizerStateChForm to GlobalPhaseOp (#3448) e4c191d5 Support ActOnStabilizerCHFormArgs in the common gates and testing (#3203) e1754ecb Replace Study with sweep in docs (#3439) 5253f54e Document private protocol methods for devsite (#3440) 70aad196 Standardize notebook pip installs (#3431) 47189e59 fix some cirq.google missing coverage issues (#3434) a9040d62 Fix typos in quantum computing service start guide (#3436) be5fb906 Docs nav fixes (#3437) cfce4490 Fix engine processor test (#3435) 382db24b Address doc-cleanup items (#3432) 6a151afc Observable Measurement - 2 - Grouping (#3372) 7a41a70d Removing Quantum chess tutorial from cirq (#3430) 4a278469 fix AQT access & authentication nav (#3424) 73ce7ad7 Dedup noise doc (#3426) 87bb1d4e Update README.rst (#3425) d787f5a2 AQT doc devices and getting started tutorial (#3420) ae6172f0 Fix all latex expressions without enclosing $ signs (#3407) 94984893 Observable Measurement - 1 - Settings (#3371) 9811ce80 Add CalibrationTag (#3423) 3d5c323c Add access and authentication page for Google doc (#3422) 36aa4958 New left nav for devsite (#3416) 784cbfcd Adding citation doc for devsite (#3418) 657188a6 Verify that Cliffords fix Pauli group (#3417) 96abdcd7 Add Moment.to_text_diagram (#3403) a07b0d20 Update single-qubit cliffords to fix XZ decomposition. (#3414) f3948921 Add SerializableGateSet.is_supported (#3410) ca307cd7 Add optional arguments to calibration API (#3395) 50d9be88 fix readme (#3405) 6ddbfd94 strip license info for RTD pages (#3404) ffc5352c Remove unnecessary conditional (#3401) 0b610391 adds zenodo config (#3392) 3468b27e fix protobuf serialization test issue (#3400) 415babee Fix freezegun related issues (#3399) cfa2f101 fixing stale issue action (#3396) 497c19fb Docs frontmatter and some cleanup (#3393) a2942236 Add mock to env_config_test (#3398) c15990f8 Adds the stale issue Github Actions workflow (#3389) b8e8d2f1 upgrade to pylint 2.6 (#3387) 13375da8 Fix duration documentation for Physical Z (#3385) 72c1a543 remove accidental print (#3383) 7c8c959e Fix TrialResult deprecation (#3381) 3e86ad63 Bump cirq version to 0.10.0 (#3379)

    Source code(tar.gz)
    Source code(zip)
    cirq-0.10.0-py3-none-any.whl(1.68 MB)
  • v0.9.1(Oct 2, 2020)

    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 d58423a3 remove accidental print (#3384) a7790f22 remove accidental print a95a2e35 Fix TrialResult deprecation (#3381) (#3382) 785ffafd Bump cirq version to 0.9.1

    Source code(tar.gz)
    Source code(zip)
    cirq-0.9.1-py3-none-any.whl(1.47 MB)
  • v0.9.0(Oct 1, 2020)

    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, or state - now, state_vector is consistently used instead

    Breaking changes:

    • cirq.approx_eq now raises an AttributeError if the symbolic evaluation can't unambiguously decide the equality, before it returned False #3195
    • cirq.google.Engine methods run, run_sweep and create_program now raise ValueError if gate_set is not specified #3138
    • cirq.google.Engine constructor signature change: context is now last to signal that direct usage isn't recommended #3151
    • cirq.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 deprecated cirq.google.api.v1.programs module #3204
    • circuit + 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:

    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álint Pató
    • Craig Gidney
    • Dave Bacon
    • David Yonge-Mallo
    • Dmytro Fedoriaka
    • Doug Strain
    • Henrique Silvério
    • Kevin J. Sung
    • KevinVillela
    • Mark Daoust
    • Matteo Pompili
    • Matthew Harrigan
    • Matthew Neeley
    • MichaelBroughton
    • Oliver O'Brien
    • Orion Martin
    • Peter Karalekas
    • Ryan LaRose
    • Samarth Vadia
    • Seb Grijalva
    • Shadab Hussain
    • Shaswata Das
    • Tanuj Khattar
    • Tony Bruguier
    • Yash Katariya
    • Yusheng Zhao
    • Zachary Crockett
    • crystalzhaizhai
    • karlunho
    • smitsanghavi
    • tonybruguier-google
    • yourball

    Full change list:

    65abd007 releasing v0.9.0 2c0c4817 Fix quimb version checking (#3378) ddb40716 Fix np.pad issue in numpy 1.16 (#3377) 67444ea2 Fixing sympy imports (#3376) 8d5a3af0 Improve GridQubit dictionary lookup performance 3x (#3375) 88026853 Un-invert B gate (#3373) 5029af4e Do not perform extra optimizations in "via B" decomposition (#3370) 0d961ad3 Python 3.8 support (#3365) 0bb9239d Change names of focused calibration protos for consistency. (#3369) be1d024a Greedy router (#3360) 46f8df7d Extending types for symbol resolution fast pass-through (#3366) fa80d4ca Add extensions to document public constants (#3367) e852d58d Add cirq.StabilizerSampler (#3355) b65e0b4e Adjust Circuit.__add__ behavior to match Circuit.__iadd__ (#3364) 83c1f234 Docs for listing jobs and programs (#3362) fb164bb0 Adds cirq.num_cnots_required and cirq.to_special (#2892) bba01532 Execute TODO to have the prob mass auto added (#3363) fa995853 Add symmetric depol (#3361) 730cc242 Adding default values to op serializers and deserializers (#3280) fa433c39 s|TrialResult|Result (#3344) 43aed78e ignore q in gridqubit ids (#3357) e0a078af Fix NumPy 0.19 related issues (#3358) 89d33836 feat(cirq): Add greedy implementation of aligning 1-qubit, and 2-qubit gates optimizer (#2869) 37f5cb20 Generalize asymmetric depolarization channel to multiple qubits (#3262) 8a69e8e7 Make PauliString's key type generic (#3325) 4406b2db Various updates to automerge script deployment (#3334) 9bb96d2d adds pasqal pages to devsite (#3352) b73a53b7 adding 3.7 to the tests (#3348) 7c63a42d Added Moment operation at (#3339) 4298a97f Refactor to_resolvers to use to_sweeps (#3343) 77eed438 added NamedQid and GridQid to the qudit concept page (#3338) 64939e53 Explaining Engine API access (#3337) 01058084 Add methods for converting dict to product or zip sweep and deprecate implicit cartesian product (#3333) b5a42690 pygment 2.6.1 to fix readthedocs (#3336) 85114262 Moving style.md to the developer documentation (#3335) 896c03ad Add ActOnStabilizerCHFormArgs (#3326) d95682b8 Implement cphase (#3332) c2c7d609 Automerge bot on GCP (#3317) 1a3c53cc Fix link to RFC process in CONTRIBUTING.md (#3331) 11933d1a Improve parameter-related types and documentation (#3330) 946665d1 Change _book.yaml to point to /reference/python (#3328) 50eba00d Add TensorProductState, a state-vector-like object (#3171) b0f42a1e List Engine jobs (#3322) a0247877 Update book for api gen changes (cl/331666270) (#3321) dd3df775 Change MutablePauliString from private to public (#3299) bfedcbca List programs (#3320) 0f29faeb cleanup engine docstrings (#3319) c53ef33e Improve initial_state handling for CliffordTableau and StabilizerStateChForm (#3309) 20df07e7 Add cirq.QubitPermutationGate (#3298) 054fa07e Add CPMG to T2 experiment (#3255) e2f1ec54 Add docs for batched_result (#3314) 01ae4726 Implement speckle purity benchmarking as part of grid XEB (#3291) a98808a6 Add run_batch to Sampler and QuantumEngineSampler (#3265) 09dc1782 moving cirq-unstable publishing to Github Actions (#3311) c652c88c Update gates.ipynb (#3312) 6b1422a4 Add parameter_names and parameter_symbols protocols. (#3273) ae590932 Adjust docs for Getting started guide (#3307) f0666bfa Adding documentation on Request for proposals (#3097) dca2cb4e Fix a bug in validating computational basis limits (#3306) 55502f1a Split right multiplication into separate methods in StabilizerStateCHForm (#3259) ecd53266 Add batched_results() to retrieve BatchResult (#3303) 61321290 Add Moment.with_operations and use in Circuit.batch_insert_into (#3282) 60b4ad30 Fix command-line engine start up guide (#3304) e61e277a Add information on downloading historical results (#3300) a97479e9 Add a few extra links to documentation (#3301) 0c17bc95 Add information about batching restrictions (#3296) 0fc057a8 Update documentation on bell_inequality.py example (#3281) e04187cd Quantum Engine documentation (#3283) 1a41835c Add more information about gates and best practices (#3287) a62ed8be removing readthedocs.io references (#3294) 65876a9b fix hanging docs build + bad cleanup logic (#3284) 1699cb33 Minimum required version of quimb. (#3272) 431d986b Add SupportsPauliExpansion (#3270) 39e6fb8a docstrings for type aliases in devsite API docs (#3275) 749468b0 Update book/index (#3268) 52a2c499 Give mypy a hint (#3271) 898a1ff9 Add allow_decompose flag on has_channel (#3249) 77d01700 Fix copyright notes: Google LLC -> The Cirq Developers (#3264) 40413621 Added qid version of Named Qubit (#3187) e0fbadcd [automerge/cirqbot] paging for PR events (#3251) dbf0bcf1 Calibration proto fixes (#3261) b38b8d16 Add shortcut for get_engine_calibration (#3258) df755d9f Use num_qubits protocol in ActOnCliffordTableauArgs (#3260) 3a08c52d Add protos for Focused Calibration (#3222) 2a4222e0 Fix documentation of [Engine, EngineProgram].run_batch (#3254) ac21df5f Fixing a bunch of typos (#3252) 826db476 [qpolish] dev-site & readthedocs hybrid (#3227) 140fb95b Add pow function to arg_func_lang (#3218) a77bec69 Feature request template (#3236) b9c47029 Upgrade to sphinx 3.2.* and fix warnings (#3247) 1e2c30e4 Add get_engine_device shortcut (#3225) 3e008964 A example of Qec using Shor's Code (#2922) 656e3887 Escape special characters in Jupyter circuit diagram (#3221) 29e6c524 Add JsonResolver mypy type for custom json resolvers (#3223) aff27b8b Add Moment.sub and generalize Moment.add (#3216) 72c2a9ff Minor Correction to Dev Docs. (#3217) d244bf71 Disable cirq v1 api docs (#3215) 1aabcb7d Add initial support for converting Quil programs into Cirq circuits (#3211) 193c35d3 Add jupyter-compatible repr for SerializableDevice (#3207) b878d061 Add missing factor of pi to parameterized Quil gate output (#3206) 0caaeb59 Remove cirq v1 programs from namespace (#3204) 9de43905 Rewrite sympy in 20 lines (#3205) 059006d9 Qc render fix (#3186) 4bab2d2f Approximately equal circuits with symbols not detected by cirq.approx_eq (#3195) 3c7fc5da Document matrices for parity gates (#3199) 4e9681fa Fix docs build (#3201) 143ac083 Quimb Tensor Network Simulators (#3129) 4539bb9c Adding Pasqal documentation (#3193) 335aba84 Cosmetics: e.g. vs i.e. (#3191) d8486111 [Pasqal updates] Adding PasqalVirtualDevice (#3181) cf272309 Fix signs of rotation gates in gate tutorial (#3180) b21baea2 [Pasqal updates] Updated gate set (#3160) 4f30b573 Fixed Issue #3178 (#3179) f3acfbdd Adding a DFE Jupyter notebook (#2932) c5584c08 adding rstcheck for rst files (#3177) 2bc99732 Fix readme section headers (#3176) 53fe161b fixing broken deprecation namings (#3174) d16f3a16 Preserve (and resolve) tags when resolving TaggedOperation (#3172) 3577ea2e Add Hidden Shift Algorithm example (#3052) a7a8689b cirq-dev and other updates to README.rst (#3167) 75e5f749 Unit test for Clifford check skipping multi-qubit unitaries (#3168) 7bf16e1b Use device instead of gateset validation in ZerosSampler (#3142) 6f24531b Test the right order finder (#3166) 7a4ccaf2 Skip unitary in Clifford check (#3165) 09529581 Remove q from calibrations.py (#3163) 74c0aa82 Add get_engine and deprecate engine_from_environment (#3151) 3076bbad [Pasqal updates] Removing ThreeDGridQubit (#3161) a7b13170 Adding Quantum Chess tutorial (#3162) a16824f7 CI check for uncommitted generated proto files (#3159) 4bf14c18 Fix calibration metric names in docs (#3155) 65f2b16e fix bug in deprecated collapse_wavefunction (#3156) ea20a181 Adding documentation about big endian values (#3146) d1b374ca [email protected] to v2 (#3158) 4f20b008 [Pasqal updates] PasqalDevice class generalization (#3141) 4abff182 Propose a bug report issue (#3119) ee35ee98 Remove ProtoVersion.V1 from Engine (#3147) 88779d48 Create double_val in oneof for program (#3140) 8ad51869 get_engine_sampler (#2767) 8ccca1bd Modify PointOptimizer to handle multiple modified gates acting on the same qubit in a moment (#3016) 12a2a9a8 std dev on fidelity (#2977) 8afb02c4 Add ZerosSampler (#2912) b3728aaf release process nits (#3137) 72808f36 [Pasqal updates] New qubit classes (#3133) 8071b0cb Remove XMON as engine default (#3138) 12492761 Add docs for circuit batching (#3134) fb9fbac0 Add ActOnCliffordTableauArgs. Support it in act_on for common gates and measurements. (#3063) adc89646 Bump protobuf requirement to 3.12.x (#3132) c869e0e5 Support adding numpy arrays to GridQubits (#3131) 190e842b Add getitem to EngineJob (#3128) 1a6c6f6a Add grid parallel two-qubit XEB (#2834) 62ef7f7a Fix some test incompatibilities with latest numpy (#3107) b21294ba Add batch support to cirq Engine client (#3114) df52d1c6 Add KakDecomposition.decompose by fixing factor of 2 error in exp(PauliString) (#3125) 4e444468 Add MeasurementGate.with_key to change measurement key (#3123) b37f2260 Improve docstrings for controlled common gate overrides (#3117) 76472fdb Add a code of conduct (#3118) a06be715 Defensively copy state vector in simulator (#3115) a610aab5 Only override control when global phase is zero (#3113) 5934b5a0 Defensively copy density matrices in simulator (#3109) bbd8a2d7 Change Operation.with_qubits return type to match self type (#3112) 7cfef7ac Preserve external simulator recommendations. (#3108) f3fec914 Expose methods in contrib.noise_models (#3102) a69b82f0 Reduce numpy version d75467de Implement unitary protocol for linear combinations (#3096) b0a4599a Fix split_into_unitary_then_general not spreading blocks across operation (#3095) 037afff4 Fix cirq.Simulator assuming a reset is safe to cache before sampling (#3093) b0b398e0 Add circuit_diagram_info to cirq.PauliString (#3094) 7f0bb626 Api builds (#3090) c866d236 Fix Quirk import extra gates bug d3ce7cc4 Fix flakes in random_circuit_test (#3084) 2b5e1766 Add generated code for batch.proto (#3086) f55090a1 Support multi-qubit measurement in plot_state_histogram (#3054) 20fb7175 [SVG] Noise hack and font fix (#3076) e1e00384 Make LinearDict json serializable (#3072) c69af97e Fix build-doc github action failure (#3082) 8cc7d93e Add Circuit.zip method (#3075) 2b8b0851 Fix IdentityGate.on_each failing when given a qubit that is iterable (#3036) 03a7dc82 Disentangle MS gate and XXPowGate. (#3015) d998b3af Add Batched requests to Google's cirq messages (#3064) 4860f5c1 Add missing methods to cirq namespace (#3070) 369ed548 Use FromString classmethod for protos (#3066) d9c02211 Add .gitattributes file to hide proto generated code in PRs (#3065) 7191cb57 Adds pylint on only changed files. (#3038) 008eab47 Fix VirtualTag (#3051) caab356e Fix methods missing from doc strings (#3048) eb4ad794 Add a docstring to testing default gate domain constant (#3047) fd625307 Fix empty gate domain problem in random_circuit (#3037) b45b7ef4 Heed deprecation notice for has_mixture_channel (#3040) e301b404 Add support for monte carlo channel simulation (quantum trajectories) (#3043) 79d83e04 Add mixture support to Controlled{Operation,Gate} (#3042) 0068c4ea Deprecate QFT to qft (#3039) 9f0b49b5 Add increment proto build and use in CI (#3012) 804c8e56 Deprecate mixture_channel in favor of just mixture (#3026) 28962e6d Updates random_circuit for single qubit circuits (#3029) 127fdae8 Fix Gate.on_each failing when a Qid class has an iter method (#3030) e9ac2ba2 Deprecation: State_vector not wavefunction, wave_function, or state. (#3022) e697284a Add with_probability modifier to Gate and Operation (#3024) a344fb71 Add act_on protocol (#3019) 77efcbc5 Add support for PhasedXZ in EjectZ optimizer (#2951) 36314604 Fix local lint warnings in text_diagram_drawer.py (#3025) f48e0c61 ContextManager for testing logs (#3009) 5c76c2c3 Generalize measurement_key to measurement_keys protocol (#2944) 70dc5eff No longer need to install asteroid in CI 505ee1f6 Bump pytest-asyncio version to remove warning (#3014) 93ecd240 [SVG Circuits] Give up gracefully on gates with big labels (#3007) 5d6b8bc1 Fix an equation which does not display correctly in nbsphinx. (#3008) 1d21e960 Fixes obvious typo (#3005) e907109a Update contributing markdown links 6d72b981 Fix some documentation for engine 3d645b7e Enable serialization of non-GridQubits. (#2966) 6bdcb1c8 Initial T2 experiment (#2725) c7a8c190 Add the release procedure to the markdown file in cirq (#2992) 17e27e6e Add timeout to engine object (#2996) 8e30cf68 Add tests for module wrapping in _compat 047421d9 set dict when wrapping module e5af689f Fix PauliString exponentiation (#2989) f532a862 Harden arg function serialization 03a91feb Enforce argument types in engine client a98041d0 First iteration of the outputting to Quil. (#2903) 4a0ded7c Add TwoQubitDiagonalGate (#2891) f0be329e Doctest fix. (#2987) 32c769ff Make circuit rendering of swap-like gates consistent (#2945) 502a5f34 Decompose cphase to two fSim gates (#2955) 6aa0a025 Update protobuf version 720ea341 Pipe seed into quantum teleportation example 2899c1f5 Update asteroid version (#2976) 78fc4c22 Cleanup TODOs and corresponding Github issues 0915ac20 Fix Problem with Y gates in Clifford Simulator (#2960) 8e980fd0 Bump version of master to 0.9.0.dev

    Source code(tar.gz)
    Source code(zip)
    cirq-0.9.0-py3-none-any.whl(1.47 MB)
  • v0.8.2(Jul 14, 2020)

    This point release fixes a dependency conflict with protobuf.

    No other changes to cirq functionality. No protocol changes, top-level changes or other changes.

    Complete list of changes:

    1b05c0ec Bump protobuf requirement to 3.12.x (#3132) 503bf5a5 Set version to v0.8.2 on release branch

    Source code(tar.gz)
    Source code(zip)
    cirq-0.8.2-py3-none-any.whl(1.32 MB)
  • v0.8.1(Jun 3, 2020)

    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:

    6dd74847 Fix methods missing from doc strings (#3048) 0567d33d Change version to 0.8.1.dev on 0.8.1 release branch 3fded886 Remove dev version on release branch

    Source code(tar.gz)
    Source code(zip)
    cirq-0.8.1-py3-none-any.whl(1.32 MB)
  • v0.8.0(May 4, 2020)

    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:

    a759e41b Add get_device for engine_processor (#2954) f907314f Update xmon gate times (#2952) d2d3356d Accept empty list of whitelisted_users when updating reservations. (#2950) b67ef87b Add Example: Simon's Algorithm (#2649) 33194ad3 Create qis subpackage and move some existing code to qis.states and qis.measures (#2808) e9b881ae Speed up clifford simulator by short circuiting on known gates (#2919) 71df1703 Fix time bugs in EngineProcessor.get_schedule (#2878) 4e86982c Remove deprecated methods and improve reprs (#2717) b4c40667 Ensure exponent in eigen gate is real. (#2881) a3af71f4 Add assert_specifies_has_unitary_if_unitary to consistency tests (#1759) d147dda8 Add all_measurement_keys method to circuit (#2868) 675e4f0f Rename RANDOM_STATE_LIKE to RANDOM_STATE_OR_SEED_LIKE and expose at top level (#2942) e34f8d14 Add shell:bash to run bash script on Windows. (#2943) f2631ac8 Add more type annotations and f-strings (#2937) 46327bdd Check 2x2 unitary in has_stabilizer_effect (#2938) 06f34f87 Allow creating device proto for specified qubits and pairs (#2934) e08f94a7 Some more type annotations and format strings (#2935) 10fc655e Make from_json_dict return global Pauli instance so they commute(#2911) 9208613a Remove exponent parameter from _Pauli{X,Y,Z} (#2924) 0b050f7f Move studies to Tutorials (#2931) 23ce11c1 DFE with exhaustive sampling for exhaustive Clifford Pauli strings (#2918) d0ec8917 Fix pytest for mac by replacing grep with perl (#2930) aa2a40ac Update noise model to new metrics. (#2927) 9208cb3b Fix indentation on markdown (#2929) 67cd74bf Add JSON serialization for CliffordState and CliffordTableau (#2894) 3bd420ea Add JSON Serialization for GateTabulation. (#2883) 97701b18 More type annotations and format strings (#2914) 86bf42af Add notebook on Hidden Linear Function Problem (#2857) 7ec9e6f7 Loosen tolerance restrictions in Quantum Engine (#2921) beaa782f DRY radian formatting (#2907) 3132f970 Actually test zip sweep with duplicate keys (#2913) 68bf2994 Replace Travis with Github workflow except for script that performs devbuilds (#2859) 4c0cb2c9 Remove explicit object superclass (#2910) 110dd4a3 Add interop docs and optimizers (#2884) 4df6919a Add more missing type annotations (#2908) 1640175c Intermediate examples had the wrong header (#2909) 4792e8fc Add some missing type annotations (#2906) 740ef6c8 Reorganize examples page to better list out examples (#2897) 32a4162b Add function to compute fidelity (#2797) eef41052 Add ability to do exhaustive Clifford trial (#2837) 11b1433e Add return values to direct_fidelity_estimation() (#2889) 9b8eb8b1 Shortening titles of tutorials (#2901) baa718ef Fix invalid argument in list_processors. (#2899) b1b09a08 upgrade pytest to version 5.4.1 (#2895) ad6b8220 Fix examples link (#2893) 1daad398 Fix links in github view (#2890) 4320e524 Fix column axis rename in pandas 1.0 (#2886) 76b26896 Reorder TOC and move development to dev/ (#2882) 230249cc Define moment+moment operation to return a combined moment (#2879) 3fee6d5b Fix image links and headers (#2880) d2a8fa19 Add CXPowGate and CCNotPowGate for completeness and consistency. (#2874) 1e50e4ad Refactor DFE to run samplers (#2870) d1d203e2 Fix images in cirq docs (#2876) c769af85 Move notebooks from examples to docs (#2877) 41b8e8b2 Add new tutorial (#2865) 4521a9bf Add CZ to combined FSim gate set (#2875) 3659c7ff fix pytest changed files script for mac (#2871) 25e1668d Handle all possible 1-qubit Clifford gates in Clifford simulator (#2803) 0fccaae9 Add stratified_circuit method (#2852) 459f6440 Add has_stabilizer_effect protocol and support native Clifford simulator gates (#2760) 08ee1065 Add CZ serializer (#2866) 2a3f7e9b Restore single-Clifford inversion in RB benchmarking. (#2851) 6c57f2ee Expand SWEEP_LIKE to work for {'t': [0, 1, 3]} (#2786) 2dd6e2e8 Add GridQid class (#2861) eb9b13c8 Use UTC time for reservation interactions. (#2860) 4d044cf2 Use random seed in CliffordSimulator (#2845) 5a52d971 Upgraded Gate documentation (#2790) 825aa573 Add Pauli expansion for PhasedXZ (#2856) ad87c579 Add circuits notebook back in (#2855) 6271cb62 Convert documentation to use nbsphinx (#2850) 2cb97875 Implement filtering by time slot type (#2849) fa07ce3a Fix typo (#2854) 36f32620 Add preliminary doc on calibration metrics (#2761) 76a07c78 Support readout errors modeling in noise-from-metrics utility. (#2715) e151dc7a Fix filters to include time slots that do not start within the window. (#2848) 61fd6f17 Pasqal api (#2751) 5c60a587 Reservation Client API for cirq google EngineProcessor (#2838) afad82b6 Fix error message from cirq.final_wavefunction to cirq.final_density_matrix #2778 (#2844) 626e16e4 Added BB84_example (#2395) 61b4259d Fix quantum engine gRPC path (#2833) 4561991e Update google gRPC Client to include reservation calls (#2830) 9b14d2f4 More gates aqt (#2801) 4efcb74a Issue #2829 - moved Jupyter notebooks into examples/notebooks (#2831) 5d0ac1d6 Added Quantum Walks Tutorial (#2825) 2e80ac32 Restore deprecated noise models. (#2827) a8c7ed26 docs: minor spelling tweaks (#2823) 9718bd7c Add symbol capability to LIMITED_FSIM gate set (#2822) 61ce1c30 Add EngineProcessorTimeSlot to cirq.google.engine (#2794) 9422f5c2 Speed up GridQubit eq (#2815) 41273977 Document external simulators. (#2811) cdb24ea8 Slightly speed up comparison and hashes for GridQubit (#2814) 58bdb815 Speed up direct fidelity estimation for Clifford circuits (Issue #2639) (#2709) 86b89fb2 Fit depolarizing model to XEB result (#2784) 007f858d Add a limited FSIM gateset (#2804) 329765a9 Convert single-qubit gates to single-gate PhasedXZ for sycamore (#2796) 5da8f0f2 Add test for non-string tag for TaggedOperation circuit diagrams (#2800) cc457d34 Add support for indexing circuits and moments by qubits (#2773) 5d9a4648 In unitary_eig, check preconditions before performing computing eigenvalues (#2795) f6b484a5 Updated Dev Documentation (#2792) dec73130 Refactor and clean up of engine client and helper objects. (#2720) 3a6ad8d8 Accept FSim(pi/2, pi/6) in ConvertToSycamoreGates (#2788) 875132cf Attempt to fix flaky test by fixing random seed in n_qubit_tomography_test.py (#2758) c8beade4 unitary eigenvalue decomposition (#2736) 17d2b05b Apply 'virtual' tag in noise models. (#2734) d8c85475 Enable optimized_for_sycamore with single qubit MatrixGates (#2766) 736e7ac9 Make auto_merge script use new update-branch API call (#2782) 343682dc Add tags and untagged properties on cirq.Operation (#2783) 0915f949 Make GridInteractionLayer a JSON serializable dataclass (#2779) 5e81be85 Fix density matrix simulation of noise (#2776) 0cefd75c Add function to generate random density matrix (#2780) 9d926d6e Serialization for PhysicalZ gates (#2770) a1d2fb16 Increase tolerance in n_qubit_tomography_test' (#2774) 82d4fb3e Add tags to circuit diagrams (#2759) 37a222f5 Improves semantics of Circuit.findall_operations_until_blocked (#1916) 6a4fbfbc Added QAOA and Rabi Demo notebooks. (#2768) 645af19e Save repetitions in CrossEntropyResult and make it into a JSON serializable dataclass (#2765) c0a1b552 Speed up single qubit gate layer generation for random quantum circuit (#2764) 89653aaa Add PhysicalZTag (#2753) ce13a733 Add random quantum circuit generation (#2621) 1b37885d Return unrecognized random state unmodified (#2622) 6ba76b86 Add algorithm for decomposing multi-controlled rotation (#2716) 926751de Make LineQubit and GridQubit immutable (#2756) 68ca8431 Make Best Practices its own page (#2754) 1d35492f Remove Google index page and link directly to Google pages (#2752) 27154175 Add Tags and TaggedOperation class (#2670) 1e5bf55f Fix sign error in PhasedXZGate._canonical (#2744) 8a0339bd Add documentation for Engine (#2663) 4b91b2cc Adding, shifting, and stacking for TextDiagramDrawer (#1236) e257e31e Add json_serializable_dataclass decorator (#2706) 4dae9b2c Fix n-qubit state tomography (#2739) 8612933e Fix ordering bug in fsim decomposition (#2732) fa74b05c Turn off --actually-quiet for Windows (#2731) 8179aa2d Add more specialized controlled implementations (#2597) d5ce4044 Draw ket labels for both real and imaginary parts of density matrix (#2722) db9a9ed7 requirements: remove sympy pin (#2721) 04e2a1b9 Pin pandas (#2724) 0882abb7 Add cirq.final_density_matrix utility method (#2487) 9293779c Use captions in TOC (#2703) c54066b5 Unpin networkx (#2718) e69a1acd Fix slow tests (#2714) df15b9b5 Convert documentation in docs/ to jupyter notebooks (new PR) (#2713) 1bda2725 Fix special new line characters in a file (#2708) 8f946e3a removing deprecated functions with v0.7 deadline (#2707) 0494323a Update the engine code to use gRPC instead of REST (#2675) bc858fc9 Plumb gate tabulation through optimized_for_sycamore (#2697) d470089c Fix occasional bug in gate_product_tabulation (#2700) 3d9d2df5 Make n-qubit tomography code available under cirq.experiments (#2699) 28e39030 Add CliffordSimulator to cirq.Sample (#2600) 9065d4e8 Fix deprecation warnings coming from tests (#2658) 7a04b8f7 Polish commutes protocol (#2659) 79b9b2ca DFE with physical simulations (#2523) d1916426 Update osx check from 3.6 to 3.7 (#2694) 6781fb91 Remove pip upgrade on Windows check in Travis (#2693) 7fc4d956 Add versioned branches to the travis file (#2689) 1c52d18b Add json_test_data to cirq package (#2688) cc61838b Update master to 0.8.0.dev (#2686)

    Source code(tar.gz)
    Source code(zip)
    cirq-0.8.0-py3-none-any.whl(1.32 MB)
  • v0.7.0(Jan 18, 2020)

    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:

    f56e6fbf Add test_json_data files to package 266491ae Create add method for Moment (#2665) de6ca2db Better decomposition of SWAP into ISWAP ** 0.5 (#2682) 575ae934 Make grid_qubits addable (#2681) 58741a1a Add gate duration for xyz gate (#2680) 91e919ad Delete cirq.api.google (#2667) 3469e5c9 (t2_experiments) Change symbols in phased_iswap_test (#2672) f306544b Remove code for GCS locations since they are no longer used. (#2668) 02ee2852 Add PhasedXZ gate to standard single qubit (de)serializers (#2661) 86e059af Add device_specification to engine code (#2640) f7f224c5 Fix typo in SerializableDevice print out (#2660) 2c8914b7 Quantum Volume: Add the ability to specify the device graph to compile the model circuit onto (#2645) 7fb1a498 Add documentation for cirq.google devices (#2636) ed6188b0 Add commutes protocol (#1853) 1017bae7 Add __tracebackhide__ = True to several test methods (#2653) 1309e99e Add optional qubit_set property to cirq.Device (#2605) 5968ccd1 Adds basic PhasedISwapPow gate to Sycamore decomposition function (#2629) 933329b8 Fix automerge script not seeing PRs on second page (#2654) b928a871 Fix instability in _decompose_interaction_into_two_b_gates_ignoring_single_qubit_ops (#2609) 9a5a09e9 Fix serialization breakage due to sympy.Rational now being a numbers.Number (#2655) c78d345d Add optimized_for_gmon to optimize circuits for Sycamore devices (#2627) 58d7722d Fix documentation and key error in calibration (#2633) da513ac6 adds max_num_empty_steps parameter (#2631) a038bd39 Mark test that sometimes fails on windows as xfail. (#2630) 32171355 Add pretty str for devices with grid qubits (#2616) 6d81ddbb fix of router hanging #2282 (#2619) 2b88d34d Add optional tabulation to ConvertToSycamoreGates (#2615) 18a677d1 Update Alpha Disclaimer (#2611) 31b5436d Fix doc build by removing tensorflow dependency (#2610) 3a32a401 Add support for u1(lambda) gate (#2608) 42f9a377 Add explicit JSON resolver function in contrib (#2559) 07955c58 Detect duplicate mesurement keys. (#2604) 912c82a1 Add (de)serializer for PhasedXZGate (#2598) 7f8a4ffa Add WaitGate to gate sets (#2601) 690b5f7c lengthen randomly generated program id (#2599) 993fa1e2 Delete things marked as deprecated-until-v0.7 (#2594) 6d986e63 Implement TrialResult JSON serialization (#2576) 55c15907 Make 'async def' tests work (#2583) d963a025 Add Conversion optimizers to cirq.google init (#2593) 5dcab586 Fix parametrized -> parameterized typos (#2592) 29632853 Initial draft of ConvertToSycamore (#2516) 1c5084a8 Delete schedules (#2589) 89028207 Use warnings.warn for deprecation warnings (#2586) ebd0b36b Add cirq.PhasedXPowZPowGate (#2566) 35c64e40 Move deprecated functions to deprecated docs section (#2585) 8beef6d1 Implement decompose_two_qubit_interaction_into_four_fsim_gates_via_b (#2574) 29208045 Rename Rx, Ry and Rz factories (#2580) e76e36af Add Sycamore23 device (#2547) 2201aa0c AQT: Improve documentation, Add Z operations and rename AQTRemoteSimulator to AQTSamplerLocalSimulator (#2578) 8408f895 Fix pytest (#2584) 96f5f548 Make pytest-changed-files include api tests when an init file is changed (#2575) e2446d47 Update ZPow.controlled specialization (#2572) 52b14db9 Fix radd losing device (#2451) f14ed205 Support arbitrary exponents when exporting X/Y/ZPowGate to quirk url (#2513) 06821343 Zlib fix (#2573) 837c4e45 Initial draft for convert_to_sqrt_iswap (#2528) d2f6344b Test gate being added multiple times. (#2560) 907f990b Add CircuitDiagramInfoArgs.format_real (#2569) ad98557b Add Gate and Operation Guidelines dev docs (#2558) a8c6ca2d Don't run async methods on other threads by default (#2562) fab633d0 Fix several dozen relative type annotations (#2568) 4be5578c Make QuantumEngineSampler engine accessible through property (#2564) c055eea1 Fix NoisySingleQubitReadoutSampler test class (#2563) a90051e1 Turn off flaky build-protos check (#2571) e9043059 Define cirq.PAULI_GATE_LIKE (#2557) dac7814c Add single qubit readout calibration (#2532) bb0afb30 Fixes "Mention the difference between stable docs and latest docs." (#2549) 3a4d8a78 Add optional readout error correction to Quantum Volume (#2522) 26cadfb6 Implement JSON serialization for ParamResolver (#2555) 2bf4826d Add a special case for WaitGate in known devices (#2545) 8a8696f3 Fix MatrixGate pow and repr failing for non-qubit shapes (#2556) a4025d12 Add developer doc explaining serialization (#2548) 781e84c9 make resolver repr evaluatable (#2554) d0fc17e7 Rename givens rotation factory (#2519) 08df3b49 Rename Mølmer–Sørensen gate factory (#2518) d6f65c2b Deprecate IdentityOperation obsoleted by IdentityGate (#2546) 23ce7cab Fix ParamResolver.param_dict type (#2550) 4ff38cf6 Refactor json_test's TEST_OBJECTS value into test data files (#2527) 6d5087cd Rename iswap rotation (#2526) 7a15f02e Fix typo in contrib noise models (#2529) c90644eb Update path to Cirq_logo_color.png to make it appear in the README. (#2540) 0a5d3d49 Add check/pytest-changed-files-and-incremental-coverage (#2510) a167b648 Client change google api (#2530) d7927cb4 use RANDOM_STATE_LIKE in simulators (#2531) 15c142df Fix timings for Google devices (#2521) 390cc4a9 Use sum instead of einsum in QAOA example (#2507) e2373e63 Make circuit rendering of PhasedISwapPowGate consistent with other gates (#2524) d60cd5b1 identity operation -> gate property (#2515) 990be613 Simplify logic in PhasedXPowGate.circuit_diagram_info (#2525) 8f1c30a3 Add EigenGate.equal_up_to_global_phase (#1840) 52079003 Add support for serializing linear combinations of symbols (#2358) 95a14f2e Move quirk url importing out of contrib into interop (#2512) a1ba3f94 Add 2-qubit gate decomp based on randomly filling the Weyl chamber to contrib (#2420) 07d8cd2b Specialize ZPow.controlled() to return CZPow for single qubit control. (#2402) 17d94cf4 Add docstrings for additional methods in #2480 (#2489) aade1f39 Bump qiskit version used during qasm compatibility test (#2511) 1cdf3434 Add support for importing custom gates in Quirk URLS (#2473) ad490a71 Sycamore Device (#2485) 46701736 Add a documentation coverage test (#2498) 9b51176e Use @dataclass for cirq.google.[De]SerializingArg (#2494) de2039da Increase prominence of doc links in readme (#2490) 0d08c9fa Add logo(s) to the docs (#2491) 4a96e045 use python -m install everywhere in travis.yml (#2500) 94f7fd2a Allow creating new gatesets with added gates (#2458) 58a794ff Define cirq.STATE_VECTOR_LIKE (#2376) efb3afee Fix various protocols and result types not being exported (#2496) 5d9b9bb4 Various doc improvements in cirq/ops (#2495) 9becde4b Various doc fixes (#2497) 5c13dea6 ISwapRotation (#2488) d7fefa8e PointOptimizerSummary option to avoid flattening (#2461) 9c0eb4c0 Associate docstrings with public constants (#2471) 0df878c2 Skip install step in misc check (#2483) cd84155a CliffordTableau stabilizers and destabilizers methods return list of DensePauliString (#2480) 190c41fb Extract generic MatrixGate, deprecate SingleQubit/TwoQubitMatrixGate (#2381) 93a93129 SVG circuit drawing updates (#2414) 1df09790 Speed up QAOA example (#2470) 0b483188 use testing assert function for more readable output (#2469) b221c522 add atol parameter to tests (#2467) be0615d3 Gate.controlled(0) return self (#2465) 1ec8a688 Speed up sampling in the case of measuring all qudits (#2463) e54f0f13 Speed up density matrix sampling (#2462) ef86e7a5 Speed up wavefunction sampling (#2460) c266da8e Add random_state argument to linalg testing functions for seeded randomness (#2459) d3cfe3f1 Implement JSON serialization for numpy dtypes (#2456) dffd4ea8 Add WaitGate proto serialization (#2437)

    Source code(tar.gz)
    Source code(zip)
    cirq-0.7.0-py3-none-any.whl(1.18 MB)
  • v0.6.0(Oct 30, 2019)

    Major usability changes:

    • Pandas. cirq.TrialResult now has a data property that returns results as a pandas.DataFrame, providing access to all of pandas' convenience methods for working with data.
    • Qudit support. Added cirq.Qid.dimension and cirq.Operation._qid_shape_, as well as validation and simulator support.
    • Packaging. Package variant cirq[contrib] with requirements for cirq.contrib. Unstable package cirq-unstable tracking master.
    • Serialization. cirq.to_json and cirq.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 alias
    • cirq.CX = cirq.CNOT alias
    • cirq.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 sweeps
    • cirq.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 interface
    • cirq.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 of cirq.Circuit.__init__
    • Deprecated cirq.Circuit.to_unitary_matrix in favor of cirq.Circuit.unitary
    • Deprecated cirq.Circuit.apply_unitary_effect_to_state in favor of cirq.Circuit.final_wavefunction
    • Deleted cirq.google.XmonSimulator (use cirq.Simulator instead)
    • cirq.approx_eq now recursively compares the items of iterables
    • cirq.resolve_parameters now recursively resolves the items of iterables
    • cirq.is_parameterized now recursively checks the items of iterables
    • Added cirq.TrialResult.data method
    • Added cirq.Sampler.sample method which returns a pandas.DataFrame
    • cirq.ControlledGate.on now returns a cirq.ControlledOperation instead of a cirq.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 spec
    • cirq.PhasedXPowGate now longer auto-transforms itself into cirq.XPowGate or cirq.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 telling mypy 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 of sympy.Basic
    • Added cirq.vis.Heatmap
    • cirq.EjectZ optimizer copes better in the presence of symbolic parameters
    • cirq.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[...] to cirq.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 accepts timedelta and sympy.Basic values
    • Added ConstantQubitNoiseModel.__eq__
    • Added ConstantQubitNoiseModel.__repr__
    • Re-arranged some files within the cirq.ops package
    • Fixed cirq.SWAP and cirq.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 with cirq.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 of check/ scripts
    Source code(tar.gz)
    Source code(zip)
    cirq-0.6.0-py3-none-any.whl(1.11 MB)
  • v0.5.0(Apr 24, 2019)

    Themes:

    • Noisy simulation.
    • Experiments.
    • Symbols via sympy.
    • Algebraic manipulation of gates.
    • Support for other hardware.

    Notable new functionality:

    • Added cirq.controlled_by protocol. Gates and operations now have a controlled_by method. ControlledGate and ControlledOperation support arbitrary numbers of controls.
    • Added cirq.channel and cirq.mixture protocols for defining noisy evolution.
    • Added cirq.DensityMatrixSimulator.
    • Added cirq.NoiseModel/cirq.NO_NOISE/cirq.ConstantQubitNoiseModel classes. Some simulate and sample methods now take noise models.
    • Added cirq.amplitude_damp, cirq.phase_damp, and other noise channels.
    • Added convenience methods cirq.sample and cirq.sample_sweep for sampling from circuits without having to explicitly pick a simulator.
    • Added cirq.experiments package with rabi_oscillations, single_qubit_randomized_benchmarking, and other predefined experiments.
    • cirq.X, cirq.Y, and cirq.Z are now cirq.Pauli instances, whose operations can be multiplied together to produce cirq.PauliStrings.
    • Added cirq.pauli_expansion protocol
    • cirq.PauliString now supports exponentiation and raising to a power. The expression np.exp(1j * np.pi / 3 * cirq.X(q1) * cirq.Y(q2)) produces an operation you can append into a circuit.
    • Added cirq.LinearDict for representing linear combinations.
    • cirq.Gate instances can now be scaled and added together, producing a cirq.LinearCombinationOfGates.
    • The unitary protocol now falls back to decompose, allowing gates to be defined using only a _decompose_ method.
    • cirq.approx_eq now works on circuits and gates
    • cirq.value_equality now has an approximate flag, and there is now cirq.PeriodicValue for handling approximate angles.
    • All methods that take a parameter resolver can now take a raw dictionary and default to the empty resolver.
    • Gates can now be parameterized using arbitrary sympy expressions.
    • Added cirq.testing.random_superposition
    • Added cirq.NamedQubit.range.
    • Added cirq.IdentityGate and the single-qubit identity gate cirq.I.
    • Added cirq.IonDevice and cirq.NeutralAtomDevice and related helper methods.

    Notable breaking changes:

    • cirq.QubitId has been renamed to cirq.Qid.
    • SingleQubitGate.on_each now takes a varargs *targets instead of a targets list.
    • All cirq.Gate instances must now implement a num_qubits method. cirq.MeasurementGate's first argument is now the number of qubits. Use cirq.measure instead.
    • cirq.Tolerance has been deleted, replaced by explicit atol/rtol arguments.
    • cirq.Symbol has been deleted, replaced by sympy.Symbol.
    • cirq.google.XmonSimulator no longer does automatic decomposition of circuits, which was hidden from and surprising to users. Circuits given to the xmon simulator must now only use supported operations. Use cirq.Simulator or cirq.sample instead.
    • Deleted cirq.contrib.jobs package, which was obsoleted by the introduction of cirq.NoiseModel.
    Source code(tar.gz)
    Source code(zip)
    cirq-0.5.0-py2-none-any.whl(702.02 KB)
    cirq-0.5.0-py3-none-any.whl(698.22 KB)
  • v0.4.0(Nov 30, 2018)

    Themes:

    • Making the API more pythonic and more consistent (a.k.a. breaking changes and refactoring)
    • Faster simulation

    Notable new functionality:

    • cirq.Rx, cirq.Ry, and cirq.Rz
    • cirq.XX, cirq.YY, cirq.ZZ, and cirq.MS (Mølmer–Sørensen gate)
    • cirq.Simulator
    • cirq.SupportsApplyUnitary protocol for specifying fast simulation methods
    • cirq.Circuit.reachable_frontier_from and cirq.Circuit.findall_operations_between
    • cirq.decompose
    • sorted(qubits) is now equivalent to cirq.QubitOrder.DEFAULT.order_for(qubits)
    • cirq.experiments.generate_supremacy_circuit_[...]
    • dtype parameters to control precision-vs-speed of simulations
    • cirq.TrialResult helper methods (dirac_notation / bloch_vector / density_matrix)
    • cirq.TOFFOLI and cirq.CCZ can now be raised to powers

    Notable breaking changes:

    • Most gate classes have been standardized to take an exponent argument and have a name of the form NamePowGate. For example, RotXGate is now XPowGate and no longer takes rads, degs, or half_turns.
    • The xmon gate set has been merged into the common gate set.
    • Capability marker classes have been replaced by magic method protocols. For example, gates now just implement a _unitary_ method instead of inheriting from KnownMatrix.
    • cirq.Extensions and cirq.PotentialImplementation are gone.
    • Several decomposition classes and methods have been moved from cirq.google.* to cirq.*. For example,cirq.google.EjectFullW is now cirq.EjectPhasedPaulis.
    • Moved classes and methods related to line placement into cirq.google.

    Notable bug fixes:

    • Two qubit gate decomposition no longer produces a glut of single qubit gates.
    • Circuit diagrams stay aligned when given multi-line entries, and now include "same moment" indicators.
    • Fixed false-positives and false-negatives in cirq.testing.assert_circuits_with_terminal_measurements_are_equivalent.
    • Fixed many repr methods returning code that assumed from cirq import * instead of import cirq.
    • Example code now runs in both python 2 and python 3 without transpilation.

    Notable dev changes:

    • Test files now import cirq instead of specific modules.
    • Better testing and packaging scripts.
    • No longer using different package versions for python 2 and python 3
    • cirq.value_equality decorator.
    • New cirq.testing methods and classes.

    Additions to contrib:

    • cirq.contrib.acquaintance: utilities for defining permutation gates
    • cirq.contrib.paulistring: utilities for optimizing non-Clifford operations separated by Clifford operations
    • cirq.contrib.tpu: utilities for converting circuits into a form executable on cloud TPUs (requires tensorflow)
    Source code(tar.gz)
    Source code(zip)
    cirq-0.4.0-py2-none-any.whl(539.70 KB)
    cirq-0.4.0-py3-none-any.whl(537.13 KB)
  • v0.3.1(Jul 18, 2018)

  • v0.3.0(Jul 18, 2018)

    First release of Cirq with a publicly available pypi package.

    Notable changes from v0.1:

    • Burned the 0.2 version number while testing pypi packages.
    • Massive breaking changes, both in terms of renaming things and changing how things behave.
    • Circuits now have an optional device.
    • Placement code for converting from LineQubit to GridQubit targeting a device.
    • More methods for querying/editing circuits (e.g. to_unitary_matrix(), batch_insert).
    • Notable increase in the amount of documentation and tooling.
    • Encapsulated optimizers behind cirq.google.optimized_for_xmon.
    • QASM output support.
    • Suggestive but inactive code for calling the engine.
    • Simulator support for specifying/receiving wavefunctions.
    • LineQubit and GridQubit.
    Source code(tar.gz)
    Source code(zip)
    cirq-0.3.0.27-py2-none-any.whl(358.91 KB)
    cirq-0.3.0.27.tar.gz(221.86 KB)
    cirq-0.3.0.35-py3-none-any.whl(359.12 KB)
    cirq-0.3.0.35.tar.gz(224.66 KB)
  • v0.1(Apr 17, 2018)

    First release of Cirq.

    This release is an initial development release, the public API should not be considered stable (it will become stable at a v1.0 release).

    Source code(tar.gz)
    Source code(zip)
Owner
quantumlib
Google's open source code library for the quantum world
quantumlib
Identifies the faulty wafer before it can be used for the fabrication of integrated circuits and, in photovoltaics, to manufacture solar cells.

Identifies the faulty wafer before it can be used for the fabrication of integrated circuits and, in photovoltaics, to manufacture solar cells. The project retrains itself after every prediction, making it more robust and generalized over time.

Arun Singh Babal 2 Jul 1, 2022
Tool to generate wrappers for Linux libraries allowing for dlopen()ing them without writing any boilerplate

Dynload wrapper This program will generate a wrapper to make it easy to dlopen() shared objects on Linux without writing a ton of boilerplate code. Th

Hein-Pieter van Braam 22 Feb 2, 2022
This is a Python 3.10 port of mock, a library for manipulating human-readable message strings.

This is a Python 3.10 port of mock, a library for manipulating human-readable message strings.

Alexander Bartolomey 1 Dec 31, 2021
Anki for desktop computers

Anki This repo contains the source code for the computer version of Anki. If you'd like to try development builds of Anki but don't feel comfortable b

Ankitects 11.5k Jul 2, 2022
Wordle is fun, so let's ruin it with computers.

ruin-wordle Wordle is fun, so let's ruin it with computers. Metrics This repository assesses two metrics about each algorithm: Success: how many of th

Charles Tapley Hoyt 11 Feb 11, 2022
A simple projects to help your seo optimizing has been written with python

python-seo-projects it is a very simple projects to help your seo optimizing has been written with python broken link checker with python(it will give

Amirmohammad Razmy 3 Dec 25, 2021
Pacman - A suite of tools for manipulating debian packages

Overview Repository is a suite of tools for manipulating debian packages. At a h

Pardis Pashakhanloo 1 Feb 24, 2022
a bit of my project :) and I use some of them for my school lesson or study for an exam! but some of them just for myself.

Handy Project a bit of my project :) and I use some of them for my school lesson or study for an exam! but some of them just for myself. the handy pro

amirkasra esmaeilian 13 Jul 5, 2021
App and Python library for parsing, writing, and validation of the STAND013 file format.

python-stand013 python-stand013 is a Python app and library for parsing, writing, and validation of the STAND013 file format. Features The following i

Oda 3 Jan 10, 2022
A python library for writing parser-based interactive fiction.

About IntFicPy A python library for writing parser-based interactive fiction. Currently in early development. IntFicPy Docs Parser-based interactive f

Rita Lester 28 Jun 22, 2022
BloodCheck enables Red and Blue Teams to manage multiple Neo4j databases and run Cypher queries against a BloodHound dataset.

BloodCheck BloodCheck enables Red and Blue Teams to manage multiple Neo4j databases and run Cypher queries against a BloodHound dataset. Installation

Mr B0b 16 Nov 5, 2021
Dot Browser is a privacy-conscious web browser with smarts built-in for protection against trackers and advertisments online.

?? Take back your privacy with Dot Browser, the privacy-conscious web browser that protects you from being tracked and monitored online.

Dot HQ 1k Jun 29, 2022
Annotates sequences with Eggnog-mapper and hhblits against PDB70

Annotating "hypothetical" proteins with the PDB See config/ for configuration information. This workflow takes as input a set of protein sequences. It

null 1 Apr 5, 2022
Arcpy Tool developed for ArcMap 10.x that checks DVOF points against TDS data and creates an output feature class as well as a check database.

DVOF_check_tool Arcpy Tool developed for ArcMap 10.x that checks DVOF points against TDS data and creates an output feature class as well as a check d

null 3 Apr 18, 2022
Check COVID locations of interest against Google location history

Location of Interest Checker Script to compare COVID locations of interest to Google location history. The script produces a map plot (as shown below)

null 9 Mar 30, 2022
A calculator to test numbers against the collatz conjecture

The Collatz Calculator This is an algorithm custom built by Kyle Dickey, used to test numbers against the simple rules of the Collatz Conjecture.

Kyle Dickey 2 Jun 14, 2022
Small exercises to get you used to reading and writing Python code!

Pythonlings Welcome to Pythonlings, an automated Python tutorial program (inspired by Rustlings and Haskellings). WIP This program is still working in

鹤翔万里 6 Sep 26, 2021
Python DSL for writing PDDL

PDDL in Python – Python DSL for writing a PDDL A minimal implementation of a DSL which allows people to write PDDL in python. Based on parsing python’

International Business Machines 18 Apr 17, 2022
This repository requires you to solve a problem by writing some basic python code.

Can You Solve a Problem? A beginner friendly repository that requires you to solve familiar problems with python. This could be as simple as implement

Precious Kolawole 10 Mar 8, 2022