You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If I pass in a Clifford circuit to the OBP method, it can backpropagate over the entire circuit (since the number of terms in the operator does not increase). The truncated/backpropagated effective circuit will only be a trivial circuit with all qubits initialised in |0>. However, passing in such a clifford circuit through the OBP structure produces a NoneType object for the backpropagated circuit instead of a trivial one, thus restricting the following steps of execution.
How can we reproduce the issue?
`
from qiskit.quantum_info import random_clifford
from qiskit_addon_obp.utils.simplify import OperatorBudget
from qiskit.quantum_info import SparsePauliOp
from qiskit_addon_obp import backpropagate
The draw function itself throws error because bp_circuit is not a QuantumCircuit object, but is NoneType
Traceback
No response
Any suggestions?
For such a scenario, where backpropagation leads to a trivial backpropagated circuit, the output should be a QuantumCircuit object with the same number of qubits. The simples bypass can be if remaining_slices is [], change the NoneType bp_circuit to QuantumCircuit(num_qubits).
The text was updated successfully, but these errors were encountered:
Thanks, @ritajitmajumdar1 . Indeed this breaks the tutorial. I think we can add a conditional block to that cell which does something if the entire circuit was back-propagated.
I'm not certain this is a bug, as backpropagate is expected to return an empty list if all slices were back-propagated, and combine_slices is expected to return None if passed an empty list.
Leaving this open, as I believe we can tidy up the tutorial some here
Environment
What is happening and why is it wrong?
If I pass in a Clifford circuit to the OBP method, it can backpropagate over the entire circuit (since the number of terms in the operator does not increase). The truncated/backpropagated effective circuit will only be a trivial circuit with all qubits initialised in |0>. However, passing in such a clifford circuit through the OBP structure produces a NoneType object for the backpropagated circuit instead of a trivial one, thus restricting the following steps of execution.
How can we reproduce the issue?
`
from qiskit.quantum_info import random_clifford
from qiskit_addon_obp.utils.simplify import OperatorBudget
from qiskit.quantum_info import SparsePauliOp
from qiskit_addon_obp import backpropagate
cliff = random_clifford(num_qubits=6, seed=10)
clifford_circuit = cliff.to_circuit()
op_budget = OperatorBudget(max_qwc_groups=8) # exact value doesn't matter here
observable = SparsePauliOp("Z"*clifford_circuit.num_qubits)
bp_obs, remaining_slices, metadata = backpropagate(observable, slices, operator_budget=op_budget)
bp_circuit = combine_slices(remaining_slices, include_barriers=True)
bp_circuit.draw('mpl')
`
The draw function itself throws error because
bp_circuit
is not a QuantumCircuit object, but is NoneTypeTraceback
No response
Any suggestions?
For such a scenario, where backpropagation leads to a trivial backpropagated circuit, the output should be a QuantumCircuit object with the same number of qubits. The simples bypass can be if remaining_slices is [], change the NoneType bp_circuit to QuantumCircuit(num_qubits).
The text was updated successfully, but these errors were encountered: