Separate the gate definition from the QubitCircuit.propagators method #83
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changes
QubitCircuit.propagators
methods.Gate
class: one method defining the compact gate operator as Qobj, while the other one expands it to the full Hilbert space. This makes it easier to define subclasses for each gate later.QubitCircuit.get_inds
method toget_all_qubits
and add documentation. It was added recently but never documented.There are two new method for
Gate
:get_qobj
andget_compact_qobj
. Although they could be merged to one, I made them two different methods because if for custom gate, I wish that the user only need to defineget_compact_qobj
, without having to consider permutation and expanding etc. And inget_qobj
, we take care of that.The special case is the global phase gate. Currently, in
propagators
it always gives a matrix with the full dimension. However, it should be treated as just a complex number, which is more efficient. I suspect that in the circuit simulation with precomputed unitaries the global phase gate is not properly handled. But I will leave this for another PR.