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()
 

Reply via email to