Make PulseSequence modular by subclassing
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Refactor
- Clarity
- Needs clarification
- Activity status
- Stale
- Tech stack
- python
- Domain
- quantum-computing
Research direction
Start by inspecting the current PulseSequence implementation and its concatenation, remapping, and extension paths. Compare the proposed subclasses with qupulse's RepetitionPT, MappingPT, AtomicMultiChannelPT, and SequencePT structures. Done means composition is retained, redundant periodic data is avoided, and filter functions can be computed appropriately from the resulting pulse.
Written by the indexing model from the issue text.
Description
Right now, when concatenating, remapping or extending PulseSequences, information about the constituent instances is not retained in the resulting PulseSequence. This has several drawbacks:
- It is impossible to retroactively compute the pulse correlation filter function of a composite pulse after the concatenation has been carried out as the control matrices of the concatenated pulses are not copied over to the new pulse.
- Similarly, the user has to decide at the moment of concatenation if they want to efficiently compute the filter function. Exploiting the concatenation property of the filter functions is not possible after the fact.
- Periodic concatenation of a pulse stores all time steps and coefficients explicitly in the new
PulseSequence. This can take up a significant amount of memory for basically redundant information.
Extending the current structure by subclassing PulseSequence would address these issues on top of being more readable and transparent. Additionally, this would enable interfacing with qupulse in a very straightforward manner by mirroring its class structure:
- Concatenating periodic
PulseSequencescould be implemented in analog toRepetitionPTso that only the atomic pulse needs to be stored. - Remapping and extending pulses to different qubits as well as joining different instances to a single one could be implemented in analog to
MappingPTandAtomicMultiChannelPT. - Regular concatenation could be implemented in analog to
SequencePT.
This structure would also allow for a PulseSequence instance (or rather subclass thereof) to intelligently parse its composition and decide the most efficient way of calculating the filter function (from scratch, by concatenation, etc). Accordingly, it should be possible without too much effort to derive a PulseSequence from a PulseTemplate and connect it to a virtual_awg, enabling live introspection of pulses designed with qupulse (including for example AWG transfer functions).
- Dominant language
- Python
- Stars
- 19
- Forks
- 8
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from qutech/filter_functions
-
CI improvements Openenhancement
Difficulty 4/5 3-5 days Newbie friendliness 35/100
qutech/filter_functions#99 ·
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 25/100
qutech/filter_functions#21 ·
-
enhancement
Difficulty 4/5 3-5 days Newbie friendliness 35/100
-
Use cached_property Openenhancement
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 25/100
qutech/filter_functions#3 · 1 comment ·
All issues in qutech/filter_functions
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
bancolombia/sentinel#23 ·
-
test md OpenCI
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100