Is there a way to save an instance of qiskit's QuantumCircuit
in some format when the circuit has still some free parameters to be evaluated? I have tried using the qasm format but it seems it does not tolerate non-evaluated parameters.
1 Answer
Yes, there is - QPY serialization. It is useful for the case you have depicted but also for many other cases where the QASM format imposes restrictions.
An example:
Creating the circuit and dumping it to a qpy
file:
from qiskit import QuantumCircuit, qpy
from qiskit.circuit import Parameter
theta = Parameter("$\Theta$")
qc = QuantumCircuit(1)
qc.ry(theta, 0)
with open("qc.qpy", "wb") as qpy_file_write:
qpy.dump(qc, qpy_file_write)
Loading the circuit and assigning a value to $\theta$:
import numpy as np
from qiskit import qpy
with open("qc.qpy", "rb") as qpy_file_read:
qc_loaded = qpy.load(qpy_file_read)[0]
qc_loaded = qc_loaded.bind_parameters([np.pi/2])
qc_loaded.draw("mpl")
Displays:
-
$\begingroup$ Thanks a lot for the answer. It could be great if you could also spend a couple of works on how to then recover the parameter and bound it to some value, is that possible? $\endgroup$ Feb 25 at 9:12
-
$\begingroup$ I have edited my answer above with an example. If you need to define several parameters it can be done using
ParameterVector
- qiskit.org/documentation/stubs/…. Let me know if you need anything more. $\endgroup$– OhadFeb 25 at 9:55