Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

adding pyupgrade #633

Merged
merged 1 commit into from
Aug 5, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,7 @@ repos:
hooks:
- id: isort
args: ["--profile", "black"]
- repo: https://github.com/asottile/pyupgrade
rev: v2.32.1
hooks:
- id: pyupgrade
10 changes: 5 additions & 5 deletions examples/aavqe/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
def main(nqubits, layers, maxsteps, T_max):
circuit = models.Circuit(nqubits)
for l in range(layers):
circuit.add((gates.RY(q, theta=0) for q in range(nqubits)))
circuit.add((gates.CZ(q, q + 1) for q in range(0, nqubits - 1, 2)))
circuit.add((gates.RY(q, theta=0) for q in range(nqubits)))
circuit.add((gates.CZ(q, q + 1) for q in range(1, nqubits - 2, 2)))
circuit.add(gates.RY(q, theta=0) for q in range(nqubits))
circuit.add(gates.CZ(q, q + 1) for q in range(0, nqubits - 1, 2))
circuit.add(gates.RY(q, theta=0) for q in range(nqubits))
circuit.add(gates.CZ(q, q + 1) for q in range(1, nqubits - 2, 2))
circuit.add(gates.CZ(0, nqubits - 1))
circuit.add((gates.RY(q, theta=0) for q in range(nqubits)))
circuit.add(gates.RY(q, theta=0) for q in range(nqubits))
problem_hamiltonian = hamiltonians.XXZ(nqubits)
easy_hamiltonian = hamiltonians.X(nqubits)
s = lambda t: t
Expand Down
10 changes: 5 additions & 5 deletions examples/benchmarks/vqe.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@ def create_circuit(nqubits, nlayers):
"""Creates variational circuit."""
circuit = models.Circuit(nqubits)
for l in range(nlayers):
circuit.add((gates.RY(q, theta=0) for q in range(nqubits)))
circuit.add((gates.CZ(q, q + 1) for q in range(0, nqubits - 1, 2)))
circuit.add((gates.RY(q, theta=0) for q in range(nqubits)))
circuit.add((gates.CZ(q, q + 1) for q in range(1, nqubits - 2, 2)))
circuit.add(gates.RY(q, theta=0) for q in range(nqubits))
circuit.add(gates.CZ(q, q + 1) for q in range(0, nqubits - 1, 2))
circuit.add(gates.RY(q, theta=0) for q in range(nqubits))
circuit.add(gates.CZ(q, q + 1) for q in range(1, nqubits - 2, 2))
circuit.add(gates.CZ(0, nqubits - 1))
circuit.add((gates.RY(q, theta=0) for q in range(nqubits)))
circuit.add(gates.RY(q, theta=0) for q in range(nqubits))
return circuit


Expand Down
6 changes: 3 additions & 3 deletions src/qibo/gates/channels.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ def __init__(self, ops):
if isinstance(ops[0], Gate):
self.gates = tuple(ops)
self.target_qubits = tuple(
sorted(set(q for gate in ops for q in gate.target_qubits))
sorted({q for gate in ops for q in gate.target_qubits})
)
else:
gates, qubitset = [], set()
Expand Down Expand Up @@ -202,7 +202,7 @@ class ResetChannel(Channel):

.. math::
\\mathcal{E}(\\rho ) = (1 - p_0 - p_1) \\rho
+ \mathrm{Tr}\\rho \\otimes (p_0|0\\rangle \\langle 0| + p_1|1\\rangle \langle 1|)
+ \\mathrm{Tr}\\rho \\otimes (p_0|0\\rangle \\langle 0| + p_1|1\\rangle \\langle 1|)

Args:
q (int): Qubit id that the channel acts on.
Expand Down Expand Up @@ -231,7 +231,7 @@ class ThermalRelaxationChannel(Channel):

.. math::
\\mathcal{E} (\\rho ) = (1 - p_z - p_0 - p_1)\\rho + p_zZ\\rho Z
+ \mathrm{Tr}\\rho \\otimes (p_0|0\\rangle \\langle 0| + p_1|1\\rangle \langle 1|)
+ \\mathrm{Tr}\\rho \\otimes (p_0|0\\rangle \\langle 0| + p_1|1\\rangle \\langle 1|)


while if :math:`T_1 < T_2`:
Expand Down
2 changes: 1 addition & 1 deletion src/qibo/gates/gates.py
Original file line number Diff line number Diff line change
Expand Up @@ -1143,7 +1143,7 @@ def parameters(self, x):

def on_qubits(self, qubit_map):
args = [self.init_args[0]]
args.extend((qubit_map.get(i) for i in self.target_qubits))
args.extend(qubit_map.get(i) for i in self.target_qubits)
gate = self.__class__(*args, **self.init_kwargs)
if self.is_controlled_by:
controls = (qubit_map.get(i) for i in self.control_qubits)
Expand Down
4 changes: 2 additions & 2 deletions src/qibo/gates/special.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ def fuse(self, gate):
# fuse will be the parent
if len(left_gates) > len(right_gates):
parent, child = self, gate
between_gates = set(parent.right_neighbors.get(q) for q in qubits)
between_gates = {parent.right_neighbors.get(q) for q in qubits}
if between_gates == {child}:
child.marked = True
parent.append(child)
Expand All @@ -127,7 +127,7 @@ def fuse(self, gate):
parent.right_neighbors.pop(q)
else:
parent, child = gate, self
between_gates = set(parent.left_neighbors.get(q) for q in qubits)
between_gates = {parent.left_neighbors.get(q) for q in qubits}
if between_gates == {child}:
child.marked = True
parent.prepend(child)
Expand Down
2 changes: 1 addition & 1 deletion src/qibo/hamiltonians/hamiltonians.py
Original file line number Diff line number Diff line change
Expand Up @@ -522,7 +522,7 @@ def _calculate_dense_from_terms(self):
emat = np.reshape(np.eye(2**n, dtype=tmat.dtype), 2 * n * (2,))
gen = lambda x: (chars[i + x] for i in term.target_qubits)
tc = "".join(chain(gen(0), gen(self.nqubits)))
ec = "".join((c for c in chars if c not in tc))
ec = "".join(c for c in chars if c not in tc)
matrix += np.einsum(f"{tc},{ec}->{chars}", tmat, emat)
matrix = np.reshape(matrix, 2 * (2**self.nqubits,))
return Hamiltonian(self.nqubits, matrix, backend=self.backend) + self.constant
Expand Down
2 changes: 1 addition & 1 deletion src/qibo/hamiltonians/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def multikron(matrix_list):
def _build_spin_model(nqubits, matrix, condition):
"""Helper method for building nearest-neighbor spin model Hamiltonians."""
h = sum(
multikron((matrix if condition(i, j) else matrices.I for j in range(nqubits)))
multikron(matrix if condition(i, j) else matrices.I for j in range(nqubits))
for i in range(nqubits)
)
return h
Expand Down
2 changes: 1 addition & 1 deletion src/qibo/models/circuit.py
Original file line number Diff line number Diff line change
Expand Up @@ -1382,7 +1382,7 @@ def draw(self, line_wrap=70, legend=False) -> str:

# Add some spacers
for col in range(len(matrix[0])):
maxlen = max([len(matrix[l][col]) for l in range(self.nqubits)])
maxlen = max(len(matrix[l][col]) for l in range(self.nqubits))
for row in range(self.nqubits):
matrix[row][col] += "─" * (1 + maxlen - len(matrix[row][col]))

Expand Down
2 changes: 1 addition & 1 deletion src/qibo/models/distcircuit.py
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ def transform(self, queue, counter=None):
if counter is None:
counter = self.count(queue, self.nqubits)
new_queue = self._transform([], queue, counter)
new_queue.extend((gates.SWAP(*p) for p in reversed(self.swaps_list)))
new_queue.extend(gates.SWAP(*p) for p in reversed(self.swaps_list))
return new_queue

def create(self, queue: List[Gate]):
Expand Down
2 changes: 1 addition & 1 deletion src/qibo/states.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ def samples(self, binary=True, registers=False):
@staticmethod
def _frequencies_to_binary(frequencies, nqubits):
return collections.Counter(
{"{0:b}".format(k).zfill(nqubits): v for k, v in frequencies.items()}
{"{:b}".format(k).zfill(nqubits): v for k, v in frequencies.items()}
)

def frequencies(self, binary=True, registers=False):
Expand Down
24 changes: 12 additions & 12 deletions src/qibo/tests/test_callbacks.py
Original file line number Diff line number Diff line change
Expand Up @@ -238,36 +238,36 @@ def test_entropy_large_circuit(backend, accelerators):
target_entropy = callbacks.EntanglementEntropy([0, 2, 4, 5])
target_entropy.nqubits = 8
c1 = Circuit(8)
c1.add((gates.RY(i, thetas[0, i]) for i in range(8)))
c1.add((gates.CZ(i, i + 1) for i in range(0, 7, 2)))
c1.add(gates.RY(i, thetas[0, i]) for i in range(8))
c1.add(gates.CZ(i, i + 1) for i in range(0, 7, 2))
state1 = backend.execute_circuit(c1).state()
e1 = target_entropy.apply(backend, state1)

c2 = Circuit(8)
c2.add((gates.RY(i, thetas[1, i]) for i in range(8)))
c2.add((gates.CZ(i, i + 1) for i in range(1, 7, 2)))
c2.add(gates.RY(i, thetas[1, i]) for i in range(8))
c2.add(gates.CZ(i, i + 1) for i in range(1, 7, 2))
c2.add(gates.CZ(0, 7))
state2 = backend.execute_circuit(c1 + c2).state()
e2 = target_entropy.apply(backend, state2)

c3 = Circuit(8)
c3.add((gates.RY(i, thetas[2, i]) for i in range(8)))
c3.add((gates.CZ(i, i + 1) for i in range(0, 7, 2)))
c3.add(gates.RY(i, thetas[2, i]) for i in range(8))
c3.add(gates.CZ(i, i + 1) for i in range(0, 7, 2))
state3 = backend.execute_circuit(c1 + c2 + c3).state()
e3 = target_entropy.apply(backend, state3)

entropy = callbacks.EntanglementEntropy([0, 2, 4, 5])
c = Circuit(8, accelerators)
c.add(gates.CallbackGate(entropy))
c.add((gates.RY(i, thetas[0, i]) for i in range(8)))
c.add((gates.CZ(i, i + 1) for i in range(0, 7, 2)))
c.add(gates.RY(i, thetas[0, i]) for i in range(8))
c.add(gates.CZ(i, i + 1) for i in range(0, 7, 2))
c.add(gates.CallbackGate(entropy))
c.add((gates.RY(i, thetas[1, i]) for i in range(8)))
c.add((gates.CZ(i, i + 1) for i in range(1, 7, 2)))
c.add(gates.RY(i, thetas[1, i]) for i in range(8))
c.add(gates.CZ(i, i + 1) for i in range(1, 7, 2))
c.add(gates.CZ(0, 7))
c.add(gates.CallbackGate(entropy))
c.add((gates.RY(i, thetas[2, i]) for i in range(8)))
c.add((gates.CZ(i, i + 1) for i in range(0, 7, 2)))
c.add(gates.RY(i, thetas[2, i]) for i in range(8))
c.add(gates.CZ(i, i + 1) for i in range(0, 7, 2))
c.add(gates.CallbackGate(entropy))
state = backend.execute_circuit(c)

Expand Down
18 changes: 9 additions & 9 deletions src/qibo/tests/test_hamiltonians_from_symbols.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ def test_tfim_hamiltonian_from_symbols(backend, nqubits, hamtype, calcterms):
ham = hamiltonians.SymbolicHamiltonian(-symham, backend=backend)
else:
h = 0.5
z_symbols = sympy.symbols(" ".join((f"Z{i}" for i in range(nqubits))))
x_symbols = sympy.symbols(" ".join((f"X{i}" for i in range(nqubits))))
z_symbols = sympy.symbols(" ".join(f"Z{i}" for i in range(nqubits)))
x_symbols = sympy.symbols(" ".join(f"X{i}" for i in range(nqubits)))

symham = sum(z_symbols[i] * z_symbols[i + 1] for i in range(nqubits - 1))
symham += z_symbols[0] * z_symbols[-1]
Expand Down Expand Up @@ -54,7 +54,7 @@ def test_from_symbolic_with_power(backend, hamtype, calcterms):
)
ham = hamiltonians.SymbolicHamiltonian(symham, backend=backend)
else:
z = sympy.symbols(" ".join((f"Z{i}" for i in range(3))))
z = sympy.symbols(" ".join(f"Z{i}" for i in range(3)))
symham = z[0] ** 2 - z[1] ** 2 + 3 * z[1] - 2 * z[0] * z[2] + 1
matrix = random_hermitian(1)
symmap = {x: (i, matrix) for i, x in enumerate(z)}
Expand Down Expand Up @@ -86,8 +86,8 @@ def test_from_symbolic_with_complex_numbers(backend, hamtype, calcterms):
)
ham = hamiltonians.SymbolicHamiltonian(symham, backend=backend)
else:
x = sympy.symbols(" ".join((f"X{i}" for i in range(2))))
y = sympy.symbols(" ".join((f"Y{i}" for i in range(2))))
x = sympy.symbols(" ".join(f"X{i}" for i in range(2)))
y = sympy.symbols(" ".join(f"Y{i}" for i in range(2)))
symham = (
(1 + 2j) * x[0] * x[1]
+ 2 * y[0] * y[1]
Expand Down Expand Up @@ -150,7 +150,7 @@ def test_x_hamiltonian_from_symbols(backend, nqubits, hamtype, calcterms):
symham = -sum(X(i) for i in range(nqubits))
ham = hamiltonians.SymbolicHamiltonian(symham, backend=backend)
else:
x_symbols = sympy.symbols(" ".join((f"X{i}" for i in range(nqubits))))
x_symbols = sympy.symbols(" ".join(f"X{i}" for i in range(nqubits)))
symham = -sum(x_symbols)
symmap = {x: (i, matrices.X) for i, x in enumerate(x_symbols)}
ham = hamiltonians.Hamiltonian.from_symbolic(symham, symmap, backend=backend)
Expand All @@ -170,9 +170,9 @@ def test_three_qubit_term_hamiltonian_from_symbols(backend, hamtype, calcterms):
symham += Y(2) + 1.5 * Z(1) - 2 - 3 * X(1) * Y(3)
ham = hamiltonians.SymbolicHamiltonian(symham, backend=backend)
else:
x_symbols = sympy.symbols(" ".join((f"X{i}" for i in range(4))))
y_symbols = sympy.symbols(" ".join((f"Y{i}" for i in range(4))))
z_symbols = sympy.symbols(" ".join((f"Z{i}" for i in range(4))))
x_symbols = sympy.symbols(" ".join(f"X{i}" for i in range(4)))
y_symbols = sympy.symbols(" ".join(f"Y{i}" for i in range(4)))
z_symbols = sympy.symbols(" ".join(f"Z{i}" for i in range(4)))
symmap = {x: (i, matrices.X) for i, x in enumerate(x_symbols)}
symmap.update({x: (i, matrices.Y) for i, x in enumerate(y_symbols)})
symmap.update({x: (i, matrices.Z) for i, x in enumerate(z_symbols)})
Expand Down
6 changes: 3 additions & 3 deletions src/qibo/tests/test_measurements_collapse.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,16 +216,16 @@ def test_measurement_collapse_distributed(backend, accelerators, nqubits, target
def test_collapse_after_measurement(backend):
qubits = [0, 2, 3]
c = models.Circuit(5)
c.add((gates.H(i) for i in range(5)))
c.add(gates.H(i) for i in range(5))
output = c.add(gates.M(*qubits, collapse=True))
c.add((gates.H(i) for i in range(5)))
c.add(gates.H(i) for i in range(5))
final_state = backend.execute_circuit(c, nshots=1)[0]

ct = models.Circuit(5)
bitstring = [r.outcome() for r in output]
for i, r in zip(qubits, bitstring):
if r:
ct.add(gates.X(i))
ct.add((gates.H(i) for i in qubits))
ct.add(gates.H(i) for i in qubits)
target_state = backend.execute_circuit(ct)
backend.assert_allclose(final_state, target_state, atol=1e-15)
2 changes: 1 addition & 1 deletion src/qibo/tests/test_measurements_probabilistic.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def test_measurements_with_probabilistic_noise(backend):
thetas = np.random.random(5)
c = models.Circuit(5)
c.add((gates.RX(i, t) for i, t in enumerate(thetas)))
c.add((gates.PauliNoiseChannel(i, px=0.0, py=0.2, pz=0.4) for i in range(5)))
c.add(gates.PauliNoiseChannel(i, px=0.0, py=0.2, pz=0.4) for i in range(5))
c.add(gates.M(*range(5)))
backend.set_seed(123)
result = backend.execute_circuit(c, nshots=20)
Expand Down
4 changes: 2 additions & 2 deletions src/qibo/tests/test_models_circuit.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ def gen():
yield gates.CNOT(0, 1)

c = Circuit(2)
c.add((gen() for _ in range(3)))
c.add(gen() for _ in range(3))
assert c.depth == 6
assert c.ngates == 9
assert isinstance(c.queue[2], gates.CNOT)
Expand Down Expand Up @@ -252,7 +252,7 @@ def test_circuit_on_qubits():

def test_circuit_on_qubits_errors():
smallc = Circuit(2)
smallc.add((gates.H(i) for i in range(2)))
smallc.add(gates.H(i) for i in range(2))
with pytest.raises(ValueError):
next(smallc.on_qubits(0, 1, 2))

Expand Down
4 changes: 2 additions & 2 deletions src/qibo/tests/test_models_circuit_execution.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

def test_eager_execute(backend, accelerators):
c = Circuit(4, accelerators)
c.add((gates.H(i) for i in range(4)))
c.add(gates.H(i) for i in range(4))
final_state = backend.execute_circuit(c)
target_state = np.ones(16) / 4.0
backend.assert_allclose(final_state, target_state)
Expand Down Expand Up @@ -55,7 +55,7 @@ def test_compiling_twice_exception(backend):
def test_memory_error(backend, accelerators):
"""Check that ``RuntimeError`` is raised if device runs out of memory."""
c = Circuit(40, accelerators)
c.add((gates.H(i) for i in range(0, 40, 5)))
c.add(gates.H(i) for i in range(0, 40, 5))
with pytest.raises(RuntimeError):
final_state = backend.execute_circuit(c)

Expand Down
20 changes: 10 additions & 10 deletions src/qibo/tests/test_models_circuit_features.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,16 +154,16 @@ def test_circuit_on_qubits_execution(backend, accelerators, distribute_small):
smallc = Circuit(3, accelerators=accelerators)
else:
smallc = Circuit(3)
smallc.add((gates.RX(i, theta=i + 0.1) for i in range(3)))
smallc.add(gates.RX(i, theta=i + 0.1) for i in range(3))
smallc.add((gates.CNOT(0, 1), gates.CZ(1, 2)))

largec = Circuit(6, accelerators=accelerators)
largec.add((gates.RY(i, theta=i + 0.2) for i in range(0, 6, 2)))
largec.add(gates.RY(i, theta=i + 0.2) for i in range(0, 6, 2))
largec.add(smallc.on_qubits(1, 3, 5))

targetc = Circuit(6)
targetc.add((gates.RY(i, theta=i + 0.2) for i in range(0, 6, 2)))
targetc.add((gates.RX(i, theta=i // 2 + 0.1) for i in range(1, 6, 2)))
targetc.add(gates.RY(i, theta=i + 0.2) for i in range(0, 6, 2))
targetc.add(gates.RX(i, theta=i // 2 + 0.1) for i in range(1, 6, 2))
targetc.add((gates.CNOT(1, 3), gates.CZ(3, 5)))
assert largec.depth == targetc.depth
backend.assert_circuitclose(largec, targetc)
Expand All @@ -175,21 +175,21 @@ def test_circuit_on_qubits_double_execution(backend, accelerators, distribute_sm
smallc = Circuit(3, accelerators=accelerators)
else:
smallc = Circuit(3)
smallc.add((gates.RX(i, theta=i + 0.1) for i in range(3)))
smallc.add(gates.RX(i, theta=i + 0.1) for i in range(3))
smallc.add((gates.CNOT(0, 1), gates.CZ(1, 2)))
# execute the small circuit before adding it to the large one
_ = backend.execute_circuit(smallc)

largec = Circuit(6, accelerators=accelerators)
largec.add((gates.RY(i, theta=i + 0.2) for i in range(0, 6, 2)))
largec.add(gates.RY(i, theta=i + 0.2) for i in range(0, 6, 2))
if distribute_small and accelerators is not None: # pragma: no cover
with pytest.raises(RuntimeError):
largec.add(smallc.on_qubits(1, 3, 5))
else:
largec.add(smallc.on_qubits(1, 3, 5))
targetc = Circuit(6)
targetc.add((gates.RY(i, theta=i + 0.2) for i in range(0, 6, 2)))
targetc.add((gates.RX(i, theta=i // 2 + 0.1) for i in range(1, 6, 2)))
targetc.add(gates.RY(i, theta=i + 0.2) for i in range(0, 6, 2))
targetc.add(gates.RX(i, theta=i // 2 + 0.1) for i in range(1, 6, 2))
targetc.add((gates.CNOT(1, 3), gates.CZ(3, 5)))
assert largec.depth == targetc.depth
backend.assert_circuitclose(largec, targetc)
Expand Down Expand Up @@ -256,7 +256,7 @@ def test_circuit_decompose_execution(backend):
c = Circuit(6)
c.add(gates.RX(0, 0.1234))
c.add(gates.RY(1, 0.4321))
c.add((gates.H(i) for i in range(2, 6)))
c.add(gates.H(i) for i in range(2, 6))
c.add(gates.CNOT(0, 1))
c.add(gates.X(3).controlled_by(0, 1, 2, 4))
decomp_c = c.decompose(5)
Expand All @@ -268,7 +268,7 @@ def test_repeated_execute_pauli_noise_channel(backend):
backend.set_seed(1234)
c = Circuit(4)
c.add((gates.RY(i, t) for i, t in enumerate(thetas)))
c.add((gates.PauliNoiseChannel(i, px=0.1, py=0.2, pz=0.3) for i in range(4)))
c.add(gates.PauliNoiseChannel(i, px=0.1, py=0.2, pz=0.3) for i in range(4))
final_state = backend.execute_circuit(c, nshots=20)

backend.set_seed(1234)
Expand Down
Loading