Esempio n. 1
0
def test_qid_pair():
    q0, q1, q2, q3 = cirq.LineQubit.range(4)
    e1 = cirq.SymmetricalQidPair(q0, q1)
    e2 = cirq.SymmetricalQidPair(q1, q0)
    e3 = cirq.SymmetricalQidPair(q2, q3)
    assert e1 == e2
    assert e2 != e3
    assert repr(e1) == "cirq.QidPair(cirq.LineQubit(0), cirq.LineQubit(1))"

    assert len(e1) == 2
    a, b = e1
    assert (a, b) == (q0, q1)
    a, b = e2
    assert (a, b) == (q0, q1)

    assert q0 in e1
    assert q1 in e1
    assert q2 not in e1

    set1 = frozenset([e1, e2])
    set2 = frozenset([e2, e3])
    assert len(set1) == 1
    assert len(set2) == 2

    with pytest.raises(ValueError, match='A QidPair cannot have identical qids.'):
        cirq.SymmetricalQidPair(q0, q0)
Esempio n. 2
0
def test_qid_pair_deprecated():
    q0, q1, q2, q3 = cirq.LineQubit.range(4)
    with cirq.testing.assert_deprecated('device.metadata',
                                        deadline='v0.15',
                                        count=3):
        e1 = cirq.SymmetricalQidPair(q0, q1)
        e2 = cirq.SymmetricalQidPair(q1, q0)
        e3 = cirq.SymmetricalQidPair(q2, q3)
    assert e1 == e2
    assert e2 != e3
    assert repr(e1) == "cirq.QidPair(cirq.LineQubit(0), cirq.LineQubit(1))"

    assert len(e1) == 2
    a, b = e1
    assert (a, b) == (q0, q1)
    a, b = e2
    assert (a, b) == (q0, q1)

    assert q0 in e1
    assert q1 in e1
    assert q2 not in e1

    set1 = frozenset([e1, e2])
    set2 = frozenset([e2, e3])
    assert len(set1) == 1
    assert len(set2) == 2

    with cirq.testing.assert_deprecated('device.metadata',
                                        deadline='v0.15',
                                        count=1):
        with pytest.raises(ValueError,
                           match='A QidPair cannot have identical qids.'):
            cirq.SymmetricalQidPair(q0, q0)
Esempio n. 3
0
    def qid_pairs(self) -> FrozenSet['cirq.SymmetricalQidPair']:
        """Returns a list of qubit edges on the device.

        Returns:
            All qubit pairs that are less or equal to the control radius apart.
        """
        qs = self.qubits
        return frozenset([
            cirq.SymmetricalQidPair(q, q2) for q in qs for q2 in qs
            if q < q2 and self.distance(q, q2) <= self.control_radius
        ])
Esempio n. 4
0
    def qid_pairs(self) -> FrozenSet['cirq.SymmetricalQidPair']:
        """Returns a list of qubit edges on the device.

        Returns:
            All qubit pairs that are less or equal to the control radius apart.
        """
        with _compat.block_overlapping_deprecation('device\\.metadata'):
            qs = self.qubits
            return frozenset([
                cirq.SymmetricalQidPair(q, q2) for q in qs for q2 in qs
                if q < q2 and self.distance(q, q2) <= self.control_radius
            ])
Esempio n. 5
0
    def qid_pairs(self) -> FrozenSet['cirq.SymmetricalQidPair']:
        """Returns a list of qubit edges on the device, defined by the gate
        definitions.

        Returns:
            The list of qubit edges on the device.
        """
        return frozenset([
            cirq.SymmetricalQidPair(pair[0], pair[1])
            for gate_defs in self.gate_definitions.values()
            for gate_def in gate_defs if gate_def.number_of_qubits == 2
            for pair in gate_def.target_set
            if len(pair) == 2 and pair[0] < pair[1]
        ])
Esempio n. 6
0
    def qid_pairs(self) -> FrozenSet['cirq.SymmetricalQidPair']:
        """Returns a list of qubit edges on the device, defined by the gate
        definitions.

        Returns:
            The list of qubit edges on the device.
        """
        with _compat.block_overlapping_deprecation('device\\.metadata'):
            return frozenset([
                cirq.SymmetricalQidPair(pair[0], pair[1])
                for gate_defs in self.gate_definitions.values()
                for gate_def in gate_defs if gate_def.number_of_qubits == 2
                for pair in gate_def.target_set
                if len(pair) == 2 and pair[0] < pair[1]
            ])