This is an automated email from the ASF dual-hosted git repository.
guanmingchiu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/mahout.git
The following commit(s) were added to refs/heads/main by this push:
new dfc4aeb7e Fix in-place Circuit Mutation (#771)
dfc4aeb7e is described below
commit dfc4aeb7ef5f535892e454ecbd94eea90603e6da
Author: Ryan Huang <[email protected]>
AuthorDate: Wed Dec 31 22:32:18 2025 +0800
Fix in-place Circuit Mutation (#771)
* Refactor circuit execution to use working_circuit
* precommit
---
qumat/qiskit_backend.py | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/qumat/qiskit_backend.py b/qumat/qiskit_backend.py
index 958c8e3b7..d1dcda208 100644
--- a/qumat/qiskit_backend.py
+++ b/qumat/qiskit_backend.py
@@ -91,22 +91,25 @@ def apply_t_gate(circuit, qubit_index):
def execute_circuit(circuit, backend, backend_config):
+ working_circuit = circuit.copy()
+
# Add measurements if they are not already present
# Check if circuit already has measurement operations
has_measurements = any(
- isinstance(inst.operation, qiskit.circuit.Measure) for inst in
circuit.data
+ isinstance(inst.operation, qiskit.circuit.Measure)
+ for inst in working_circuit.data
)
if not has_measurements:
- circuit.measure_all()
+ working_circuit.measure_all()
# Ensure the circuit is parameterized properly
- if circuit.parameters:
+ if working_circuit.parameters:
# Parse the global parameter configuration
parameter_bindings = {
param: backend_config["parameter_values"][str(param)]
- for param in circuit.parameters
+ for param in working_circuit.parameters
}
- transpiled_circuit = qiskit.transpile(circuit, backend)
+ transpiled_circuit = qiskit.transpile(working_circuit, backend)
bound_circuit =
transpiled_circuit.assign_parameters(parameter_bindings)
job = backend.run(
bound_circuit, shots=backend_config["backend_options"]["shots"]
@@ -114,7 +117,7 @@ def execute_circuit(circuit, backend, backend_config):
result = job.result()
return result.get_counts()
else:
- transpiled_circuit = qiskit.transpile(circuit, backend)
+ transpiled_circuit = qiskit.transpile(working_circuit, backend)
job = backend.run(
transpiled_circuit,
shots=backend_config["backend_options"]["shots"]
)
@@ -124,13 +127,15 @@ def execute_circuit(circuit, backend, backend_config):
# placeholder method for use in the testing suite
def get_final_state_vector(circuit, backend, backend_config):
+ working_circuit = circuit.copy()
+
simulator = AerSimulator(method="statevector")
# Add save_statevector instruction
- circuit.save_statevector()
+ working_circuit.save_statevector()
# Simulate the circuit
- transpiled_circuit = qiskit.transpile(circuit, simulator)
+ transpiled_circuit = qiskit.transpile(working_circuit, simulator)
job = simulator.run(transpiled_circuit)
result = job.result()