Ejemplo n.º 1
0
def test_classical_control():
    q0, q1 = cirq.LineQubit.range(2)
    circuit = cirq.Circuit(
        cirq.H(q0), cirq.measure(q0, key='m'), cirq.X(q1).with_classical_controls('m')
    )
    cirq.testing.assert_same_circuits(cirq.align_left(circuit), circuit)
    cirq.testing.assert_same_circuits(cirq.align_right(circuit), circuit)
Ejemplo n.º 2
0
def test_align_basic_no_context():
    q1 = cirq.NamedQubit('q1')
    q2 = cirq.NamedQubit('q2')
    c = cirq.Circuit(
        [
            cirq.Moment([cirq.X(q1)]),
            cirq.Moment([cirq.Y(q1), cirq.X(q2)]),
            cirq.Moment([cirq.X(q1)]),
        ]
    )
    cirq.testing.assert_same_circuits(
        cirq.align_left(c),
        cirq.Circuit(
            cirq.Moment([cirq.X(q1), cirq.X(q2)]),
            cirq.Moment([cirq.Y(q1)]),
            cirq.Moment([cirq.X(q1)]),
        ),
    )
    cirq.testing.assert_same_circuits(
        cirq.align_right(c),
        cirq.Circuit(
            cirq.Moment([cirq.X(q1)]),
            cirq.Moment([cirq.Y(q1)]),
            cirq.Moment([cirq.X(q1), cirq.X(q2)]),
        ),
    )
Ejemplo n.º 3
0
def test_align_right_deep():
    q1, q2 = cirq.LineQubit.range(2)
    c_nested = cirq.FrozenCircuit(
        cirq.Moment([cirq.X(q1)]),
        cirq.Moment([cirq.Y(q1), cirq.X(q2).with_tags("nocompile")]),
        cirq.Moment([cirq.X(q2)]),
        cirq.Moment([cirq.Y(q1)]),
        cirq.measure(q1, key='a'),
        cirq.Z(q2).with_classical_controls('a'),
    )
    c_nested_aligned = cirq.FrozenCircuit(
        cirq.Moment([cirq.X(q1), cirq.X(q2).with_tags("nocompile")]),
        [cirq.Y(q1), cirq.Y(q1)],
        cirq.Moment(cirq.measure(q1, key='a'), cirq.X(q2)),
        cirq.Z(q2).with_classical_controls('a'),
    )
    c_orig = cirq.Circuit(
        c_nested,
        cirq.CircuitOperation(c_nested).repeat(6).with_tags("nocompile"),
        c_nested,
        cirq.CircuitOperation(c_nested).repeat(5).with_tags("preserve_tag"),
    )
    c_expected = cirq.Circuit(
        c_nested_aligned,
        cirq.CircuitOperation(c_nested).repeat(6).with_tags("nocompile"),
        cirq.Moment(),
        c_nested_aligned,
        cirq.CircuitOperation(c_nested_aligned).repeat(5).with_tags("preserve_tag"),
    )
    context = cirq.TransformerContext(tags_to_ignore=["nocompile"], deep=True)
    cirq.testing.assert_same_circuits(cirq.align_right(c_orig, context=context), c_expected)
Ejemplo n.º 4
0
def test_align_right_no_compile_context():
    q1 = cirq.NamedQubit('q1')
    q2 = cirq.NamedQubit('q2')
    cirq.testing.assert_same_circuits(
        cirq.align_right(
            cirq.Circuit(
                [
                    cirq.Moment([cirq.X(q1)]),
                    cirq.Moment([cirq.Y(q1), cirq.X(q2).with_tags("nocompile")]),
                    cirq.Moment([cirq.X(q1), cirq.Y(q2)]),
                    cirq.Moment([cirq.Y(q1)]),
                    cirq.measure(*[q1, q2], key='a'),
                ]
            ),
            context=cirq.TransformerContext(tags_to_ignore=["nocompile"]),
        ),
        cirq.Circuit(
            [
                cirq.Moment([cirq.X(q1)]),
                cirq.Moment([cirq.Y(q1), cirq.X(q2).with_tags("nocompile")]),
                cirq.Moment([cirq.X(q1)]),
                cirq.Moment([cirq.Y(q1), cirq.Y(q2)]),
                cirq.measure(*[q1, q2], key='a'),
            ]
        ),
    )