Skip to content

Commit 0e6d9c3

Browse files
style: normalize string quotes to double quotes throughout cdr module and tests
1 parent 3bc4d2b commit 0e6d9c3

2 files changed

Lines changed: 47 additions & 46 deletions

File tree

mitigation/cdr.py

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -45,60 +45,60 @@ def generate_near_clifford_circuit(num_qubits=2, depth=3, seed=None):
4545

4646
qc = QuantumCircuit(num_qubits, name=f"near_clifford_{num_qubits}q_d{depth}")
4747

48-
clifford_gates = ['h', 's', 'sdg', 'x', 'y', 'z', 'cx', 'cz', 'swap']
48+
clifford_gates = ["h", "s", "sdg", "x", "y", "z", "cx", "cz", "swap"]
4949

5050
# Random initial state (to get varied expectation values)
5151
for qubit in range(num_qubits):
52-
init_choice = np.random.choice(['|0⟩', '|1⟩', '|+⟩', '|-⟩'])
53-
if init_choice == '|1⟩':
52+
init_choice = np.random.choice(["|0⟩", "|1⟩", "|+⟩", "|-⟩"])
53+
if init_choice == "|1⟩":
5454
qc.x(qubit)
55-
elif init_choice == '|+⟩':
55+
elif init_choice == "|+⟩":
5656
qc.h(qubit)
57-
elif init_choice == '|-⟩':
57+
elif init_choice == "|-⟩":
5858
qc.x(qubit)
5959
qc.h(qubit)
6060

6161
for layer in range(depth):
6262
# Ensure qubit 0 gets operations
6363
gate = np.random.choice(clifford_gates[:-3]) # Single-qubit gates
64-
if gate == 'h':
64+
if gate == "h":
6565
qc.h(0)
66-
elif gate == 's':
66+
elif gate == "s":
6767
qc.s(0)
68-
elif gate == 'sdg':
68+
elif gate == "sdg":
6969
qc.sdg(0)
70-
elif gate == 'x':
70+
elif gate == "x":
7171
qc.x(0)
72-
elif gate == 'y':
72+
elif gate == "y":
7373
qc.y(0)
74-
elif gate == 'z':
74+
elif gate == "z":
7575
qc.z(0)
7676

7777
for qubit in range(1, num_qubits):
7878
# Random Clifford gate on other qubits
7979
gate = np.random.choice(clifford_gates[:-3]) # Single-qubit gates
80-
if gate == 'h':
80+
if gate == "h":
8181
qc.h(qubit)
82-
elif gate == 's':
82+
elif gate == "s":
8383
qc.s(qubit)
84-
elif gate == 'sdg':
84+
elif gate == "sdg":
8585
qc.sdg(qubit)
86-
elif gate == 'x':
86+
elif gate == "x":
8787
qc.x(qubit)
88-
elif gate == 'y':
88+
elif gate == "y":
8989
qc.y(qubit)
90-
elif gate == 'z':
90+
elif gate == "z":
9191
qc.z(qubit)
9292

9393
# Random 2-qubit Clifford gates
9494
for qubit in range(num_qubits - 1):
9595
if np.random.random() < 0.5: # 50% chance
9696
gate = np.random.choice(clifford_gates[-3:]) # 2-qubit gates
97-
if gate == 'cx':
97+
if gate == "cx":
9898
qc.cx(qubit, qubit + 1)
99-
elif gate == 'cz':
99+
elif gate == "cz":
100100
qc.cz(qubit, qubit + 1)
101-
elif gate == 'swap':
101+
elif gate == "swap":
102102
qc.swap(qubit, qubit + 1)
103103

104104
return qc
@@ -126,7 +126,7 @@ def generate_training_set(num_circuits=50, num_qubits=2, max_depth=5):
126126
return training_circuits
127127

128128

129-
def simulate_circuit_expectation(circuit, simulator, shots=2048, observable='Z0'):
129+
def simulate_circuit_expectation(circuit, simulator, shots=2048, observable="Z0"):
130130
"""
131131
Simulate a circuit and compute expectation value of an observable.
132132
@@ -143,10 +143,10 @@ def simulate_circuit_expectation(circuit, simulator, shots=2048, observable='Z0'
143143
qc = circuit.remove_final_measurements(inplace=False)
144144

145145
# Add measurement for the observable
146-
if observable.startswith('Z'):
146+
if observable.startswith("Z"):
147147
qubit_idx = int(observable[1:])
148148
if qc.num_clbits == 0:
149-
qc.add_register(ClassicalRegister(qc.num_qubits, 'c'))
149+
qc.add_register(ClassicalRegister(qc.num_qubits, "c"))
150150
qc.measure(qubit_idx, qubit_idx)
151151

152152
# Run simulation
@@ -157,12 +157,12 @@ def simulate_circuit_expectation(circuit, simulator, shots=2048, observable='Z0'
157157
total_shots = sum(counts.values())
158158
# Note: Qiskit bit ordering - bits[0] is highest qubit, bits[-1] is lowest
159159
qubit_bit_idx = -(qubit_idx + 1) # qubit 0 -> bits[-1], qubit 1 -> bits[-2]
160-
prob_0 = sum(
161-
cnt for bits, cnt in counts.items() if bits[qubit_bit_idx] == '0'
162-
) / total_shots
163-
prob_1 = sum(
164-
cnt for bits, cnt in counts.items() if bits[qubit_bit_idx] == '1'
165-
) / total_shots
160+
prob_0 = (
161+
sum(cnt for bits, cnt in counts.items() if bits[qubit_bit_idx] == "0") / total_shots
162+
)
163+
prob_1 = (
164+
sum(cnt for bits, cnt in counts.items() if bits[qubit_bit_idx] == "1") / total_shots
165+
)
166166

167167
expectation = prob_0 - prob_1
168168
return expectation

mitigation/tests/test_cdr.py

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -112,15 +112,15 @@ def test_fit_requires_simulators(self):
112112

113113
result = cdr.fit(noisy_sim, ideal_sim)
114114

115-
assert 'slope' in result
116-
assert 'intercept' in result
117-
assert 'r2_score' in result
118-
assert 'training_circuits' in result
115+
assert "slope" in result
116+
assert "intercept" in result
117+
assert "r2_score" in result
118+
assert "training_circuits" in result
119119

120-
assert isinstance(result['slope'], (int, float))
121-
assert isinstance(result['intercept'], (int, float))
122-
assert isinstance(result['r2_score'], (int, float))
123-
assert len(result['training_circuits']) == 5
120+
assert isinstance(result["slope"], (int, float))
121+
assert isinstance(result["intercept"], (int, float))
122+
assert isinstance(result["r2_score"], (int, float))
123+
assert len(result["training_circuits"]) == 5
124124

125125
# Should set internal state
126126
assert cdr.slope is not None
@@ -159,20 +159,20 @@ def test_mitigate_workflow(self):
159159
backend = AerSimulator()
160160
result = cdr.mitigate(circuit, backend=backend)
161161

162-
assert 'mitigated' in result
163-
assert 'noisy' in result
164-
assert 'slope' in result
165-
assert 'intercept' in result
162+
assert "mitigated" in result
163+
assert "noisy" in result
164+
assert "slope" in result
165+
assert "intercept" in result
166166

167-
assert isinstance(result['mitigated'], (int, float))
168-
assert isinstance(result['noisy'], (int, float))
167+
assert isinstance(result["mitigated"], (int, float))
168+
assert isinstance(result["noisy"], (int, float))
169169

170170
def test_mitigate_with_noise(self):
171171
"""Test mitigation on noisy simulator."""
172172
# Create noise model
173173
noise_model = NoiseModel()
174174
error = depolarizing_error(0.01, 1) # Small noise
175-
noise_model.add_all_qubit_quantum_error(error, ['u2', 'u3'])
175+
noise_model.add_all_qubit_quantum_error(error, ["u2", "u3"])
176176

177177
noisy_sim = AerSimulator(noise_model=noise_model)
178178
ideal_sim = AerSimulator()
@@ -189,7 +189,8 @@ def test_mitigate_with_noise(self):
189189
result = cdr.mitigate(circuit, backend=noisy_sim)
190190

191191
# Check that mitigation is attempted (CDR may not always improve)
192-
assert isinstance(result['mitigated'], (int, float))
193-
assert isinstance(result['noisy'], (int, float))
192+
assert isinstance(result["mitigated"], (int, float))
193+
assert isinstance(result["noisy"], (int, float))
194194
assert cdr.r2_score > 0.0 # Should have some fit (may not be great)
195+
195196
# def test_cdr_corrects_noisy_value(self):

0 commit comments

Comments
 (0)