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.
Description
CompilationUnit
has amaps
attribute that is used to store relabelling of qubits and implicit permutations of qubits caused by the application ofPassPtr
.CustomPass
allows users to write python level transformations onpytket
Circuit
objects and wrap them intoPassPtr
objects that can be applied within theCompilationUnit
framework. However,CustomPass
does not allow the user to update themaps
attribute, while transformations onpytket
Circuit
can make changes that should be updated in themaps
attribute.As an example, the
LightSABREPass
CustomPass
used inpytket-qiskit
will relabel and permute qubits, but won't update themaps
attribute. This is not an issue if the routed circuit is being used for shot based execution, asBit
will correspond to the same logical qubits, but is an issue if it's being used for unitary synthesis.This PR adds a new
PassPtr
generatorCustomPassMap
, which is similar toCustomPass
, except the requiredTransformation
object also must return updatedmaps
objects corresponding to relabelling and permutation changes.Related issues
Please mention any github issues addressed by this PR.
Checklist