21
21
def test_griddevice_metadata ():
22
22
qubits = cirq .GridQubit .rect (2 , 3 )
23
23
qubit_pairs = [(a , b ) for a in qubits for b in qubits if a != b and a .is_adjacent (b )]
24
-
24
+ isolated_qubits = [ cirq . GridQubit ( 9 , 9 ), cirq . GridQubit ( 10 , 10 )]
25
25
gateset = cirq .Gateset (cirq .XPowGate , cirq .YPowGate , cirq .ZPowGate , cirq .CZ )
26
- metadata = cirq .GridDeviceMetadata (qubit_pairs , gateset )
27
-
26
+ metadata = cirq .GridDeviceMetadata (qubit_pairs , gateset , all_qubits = qubits + isolated_qubits )
28
27
expected_pairings = frozenset (
29
28
{
30
29
(cirq .GridQubit (0 , 0 ), cirq .GridQubit (0 , 1 )),
@@ -36,14 +35,16 @@ def test_griddevice_metadata():
36
35
(cirq .GridQubit (0 , 0 ), cirq .GridQubit (1 , 0 )),
37
36
}
38
37
)
39
- assert metadata .qubit_set == frozenset (qubits )
38
+ assert metadata .qubit_set == frozenset (qubits + isolated_qubits )
40
39
assert metadata .qubit_pairs == expected_pairings
41
40
assert metadata .gateset == gateset
42
41
expected_graph = nx .Graph ()
42
+ expected_graph .add_nodes_from (sorted (list (qubits + isolated_qubits )))
43
43
expected_graph .add_edges_from (sorted (list (expected_pairings )), directed = False )
44
44
assert metadata .nx_graph .edges () == expected_graph .edges ()
45
45
assert metadata .nx_graph .nodes () == expected_graph .nodes ()
46
46
assert metadata .gate_durations is None
47
+ assert metadata .isolated_qubits == frozenset (isolated_qubits )
47
48
48
49
49
50
def test_griddevice_metadata_bad_durations ():
@@ -58,6 +59,24 @@ def test_griddevice_metadata_bad_durations():
58
59
cirq .GridDeviceMetadata ([qubits ], gateset , gate_durations = invalid_duration )
59
60
60
61
62
+ def test_griddevice_metadata_bad_isolated ():
63
+ qubits = cirq .GridQubit .rect (2 , 3 )
64
+ qubit_pairs = [(a , b ) for a in qubits for b in qubits if a != b and a .is_adjacent (b )]
65
+ fewer_qubits = [cirq .GridQubit (0 , 0 )]
66
+ gateset = cirq .Gateset (cirq .XPowGate , cirq .YPowGate , cirq .ZPowGate , cirq .CZ )
67
+ with pytest .raises (ValueError , match = 'node_set' ):
68
+ _ = cirq .GridDeviceMetadata (qubit_pairs , gateset , all_qubits = fewer_qubits )
69
+
70
+
71
+ def test_griddevice_self_loop ():
72
+ bad_pairs = [
73
+ (cirq .GridQubit (0 , 0 ), cirq .GridQubit (0 , 0 )),
74
+ (cirq .GridQubit (1 , 0 ), cirq .GridQubit (1 , 1 )),
75
+ ]
76
+ with pytest .raises (ValueError , match = 'Self loop' ):
77
+ _ = cirq .GridDeviceMetadata (bad_pairs , cirq .Gateset (cirq .XPowGate ))
78
+
79
+
61
80
def test_griddevice_json_load ():
62
81
qubits = cirq .GridQubit .rect (2 , 3 )
63
82
qubit_pairs = [(a , b ) for a in qubits for b in qubits if a != b and a .is_adjacent (b )]
@@ -67,7 +86,10 @@ def test_griddevice_json_load():
67
86
cirq .GateFamily (cirq .YPowGate ): cirq .Duration (picos = 2 ),
68
87
cirq .GateFamily (cirq .ZPowGate ): cirq .Duration (picos = 3 ),
69
88
}
70
- metadata = cirq .GridDeviceMetadata (qubit_pairs , gateset , gate_durations = duration )
89
+ isolated_qubits = [cirq .GridQubit (9 , 9 ), cirq .GridQubit (10 , 10 )]
90
+ metadata = cirq .GridDeviceMetadata (
91
+ qubit_pairs , gateset , gate_durations = duration , all_qubits = qubits + isolated_qubits
92
+ )
71
93
rep_str = cirq .to_json (metadata )
72
94
assert metadata == cirq .read_json (json_text = rep_str )
73
95
@@ -86,17 +108,22 @@ def test_griddevice_metadata_equality():
86
108
cirq .GateFamily (cirq .YPowGate ): cirq .Duration (picos = 13 ),
87
109
cirq .GateFamily (cirq .ZPowGate ): cirq .Duration (picos = 12 ),
88
110
}
111
+ isolated_qubits = [cirq .GridQubit (9 , 9 )]
89
112
metadata = cirq .GridDeviceMetadata (qubit_pairs , gateset , gate_durations = duration )
90
113
metadata2 = cirq .GridDeviceMetadata (qubit_pairs [:2 ], gateset , gate_durations = duration )
91
114
metadata3 = cirq .GridDeviceMetadata (qubit_pairs , gateset , gate_durations = None )
92
115
metadata4 = cirq .GridDeviceMetadata (qubit_pairs , gateset , gate_durations = duration2 )
93
116
metadata5 = cirq .GridDeviceMetadata (reversed (qubit_pairs ), gateset , gate_durations = duration )
117
+ metadata6 = cirq .GridDeviceMetadata (
118
+ qubit_pairs , gateset , gate_durations = duration , all_qubits = qubits + isolated_qubits
119
+ )
94
120
95
121
eq = cirq .testing .EqualsTester ()
96
122
eq .add_equality_group (metadata )
97
123
eq .add_equality_group (metadata2 )
98
124
eq .add_equality_group (metadata3 )
99
125
eq .add_equality_group (metadata4 )
126
+ eq .add_equality_group (metadata6 )
100
127
101
128
assert metadata == metadata5
102
129
@@ -110,5 +137,8 @@ def test_repr():
110
137
cirq .GateFamily (cirq .YPowGate ): cirq .Duration (picos = 3 ),
111
138
cirq .GateFamily (cirq .ZPowGate ): cirq .Duration (picos = 2 ),
112
139
}
113
- metadata = cirq .GridDeviceMetadata (qubit_pairs , gateset , gate_durations = duration )
140
+ isolated_qubits = [cirq .GridQubit (9 , 9 )]
141
+ metadata = cirq .GridDeviceMetadata (
142
+ qubit_pairs , gateset , gate_durations = duration , all_qubits = qubits + isolated_qubits
143
+ )
114
144
cirq .testing .assert_equivalent_repr (metadata )
0 commit comments