dump results

This commit is contained in:
Noa Aarts 2026-01-12 12:08:03 +01:00
parent f8577f34af
commit 76a7566990
Signed by: noa
GPG key ID: 1850932741EFF672

View file

@ -1,4 +1,5 @@
#!/usr/bin/env python #!/usr/bin/env python
import json
from dataclasses import dataclass from dataclasses import dataclass
from enum import IntEnum from enum import IntEnum
from multiprocessing import Pool from multiprocessing import Pool
@ -30,6 +31,9 @@ class Gate:
qubits: int | tuple[int, int] qubits: int | tuple[int, int]
param_idx: int param_idx: int
def to_json(self):
return {"type": self.type, "qubits": self.qubits, "param_idx": self.param_idx}
def haar_fidelity_pdf(F: np.ndarray, d: int) -> np.ndarray: def haar_fidelity_pdf(F: np.ndarray, d: int) -> np.ndarray:
# p(F) = (d-1) * (1-F)^(d-2), for F in [0,1] # p(F) = (d-1) * (1-F)^(d-2), for F in [0,1]
@ -49,7 +53,7 @@ class QuantumCircuit:
two_qubit_gates: int two_qubit_gates: int
params: int params: int
paths: int = 0 paths: int = 0
expressibility: float = float("inf") expressibility: float = float("-inf")
def calculate_paths(self): def calculate_paths(self):
path_counts = [1 for _ in range(self.qubits)] path_counts = [1 for _ in range(self.qubits)]
@ -63,6 +67,15 @@ class QuantumCircuit:
self.paths = sum(path_counts) self.paths = sum(path_counts)
def to_json(self):
return {
"qubits": self.qubits,
"gates": [[gate.to_json() for gate in layer] for layer in self.gates],
"params": self.params,
"paths": self.paths,
"expressibility": self.expressibility,
}
def to_qiskit(self): def to_qiskit(self):
qc = QiskitCircuit(self.qubits) qc = QiskitCircuit(self.qubits)
thetas = ParameterVector("theta", self.params) thetas = ParameterVector("theta", self.params)
@ -227,7 +240,7 @@ def more_single_than_double(qc: QuantumCircuit) -> bool:
if __name__ == "__main__": if __name__ == "__main__":
rng = random.Random() rng = random.Random()
qubits = 6 qubits = 4
depth = 15 depth = 15
sample_amount = 50000 sample_amount = 50000
expressibility_samples = 2000 expressibility_samples = 2000
@ -259,6 +272,9 @@ if __name__ == "__main__":
): ):
final_circuits.append(circ) final_circuits.append(circ)
final_circuits.sort(key=lambda qc: qc.expressibility) final_circuits.sort(key=lambda qc: qc.expressibility, reverse=True)
for i, circuit in enumerate(final_circuits): for i, circuit in enumerate(final_circuits[::-1]):
print(f"circuit {i}:\n{circuit}") print(f"circuit {i}:\n{circuit}")
with open("dump.json", "w+") as fp:
json.dump([c.to_json() for c in final_circuits], fp, indent=4)