iqm-pulse 10.0.0__tar.gz → 10.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/CHANGELOG.rst +13 -0
  2. {iqm_pulse-10.0.0/src/iqm_pulse.egg-info → iqm_pulse-10.1.0}/PKG-INFO +1 -1
  3. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/gates/prx.py +8 -0
  4. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/playlist/waveforms.py +29 -1
  5. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0/src/iqm_pulse.egg-info}/PKG-INFO +1 -1
  6. iqm_pulse-10.1.0/version.txt +1 -0
  7. iqm_pulse-10.0.0/version.txt +0 -1
  8. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/LICENSE.txt +0 -0
  9. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/MANIFEST.in +0 -0
  10. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/README.rst +0 -0
  11. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/API.rst +0 -0
  12. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/Makefile +0 -0
  13. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/_static/.gitignore +0 -0
  14. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/_static/css/custom.css +0 -0
  15. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/_static/images/favicon.ico +0 -0
  16. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/_static/images/feedback_timing.svg +0 -0
  17. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/_static/images/logo.png +0 -0
  18. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/_static/images/playlist_breakdown.svg +0 -0
  19. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/_static/images/pulse_timing.svg +0 -0
  20. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/_static/images/readout_timing.svg +0 -0
  21. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/_templates/autosummary-class-template.rst +0 -0
  22. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/_templates/autosummary-module-template.rst +0 -0
  23. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/changelog.rst +0 -0
  24. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/concepts.rst +0 -0
  25. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/conf.py +0 -0
  26. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/custom_gates.rst +0 -0
  27. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/index.rst +0 -0
  28. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/license.rst +0 -0
  29. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/pulse_timing.rst +0 -0
  30. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/references.bib +0 -0
  31. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/references.rst +0 -0
  32. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/docs/using_builder.rst +0 -0
  33. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/pyproject.toml +0 -0
  34. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/requirements/base.in +0 -0
  35. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/requirements/base.txt +0 -0
  36. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/setup.cfg +0 -0
  37. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/setup.py +0 -0
  38. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/__init__.py +0 -0
  39. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/base_utils.py +0 -0
  40. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/builder.py +0 -0
  41. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/circuit_operations.py +0 -0
  42. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/gate_implementation.py +0 -0
  43. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/gates/__init__.py +0 -0
  44. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/gates/barrier.py +0 -0
  45. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/gates/conditional.py +0 -0
  46. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/gates/cz.py +0 -0
  47. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/gates/default_gates.py +0 -0
  48. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/gates/delay.py +0 -0
  49. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/gates/enums.py +0 -0
  50. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/gates/flux_multiplexer.py +0 -0
  51. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/gates/measure.py +0 -0
  52. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/gates/move.py +0 -0
  53. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/gates/reset.py +0 -0
  54. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/gates/rz.py +0 -0
  55. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/gates/sx.py +0 -0
  56. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/gates/u.py +0 -0
  57. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/playlist/__init__.py +0 -0
  58. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/playlist/channel.py +0 -0
  59. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/playlist/fast_drag.py +0 -0
  60. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/playlist/hd_drag.py +0 -0
  61. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/playlist/instructions.py +0 -0
  62. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/playlist/playlist.py +0 -0
  63. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/playlist/schedule.py +0 -0
  64. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/playlist/visualisation/__init__.py +0 -0
  65. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/playlist/visualisation/base.py +0 -0
  66. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/playlist/visualisation/templates/playlist_inspection.jinja2 +0 -0
  67. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/playlist/visualisation/templates/static/logo.png +0 -0
  68. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/playlist/visualisation/templates/static/moment.min.js +0 -0
  69. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/playlist/visualisation/templates/static/vis-timeline-graph2d.min.css +0 -0
  70. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/playlist/visualisation/templates/static/vis-timeline-graph2d.min.js +0 -0
  71. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/py.typed +0 -0
  72. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/quantum_ops.py +0 -0
  73. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/scheduler.py +0 -0
  74. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/timebox.py +0 -0
  75. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/utils.py +0 -0
  76. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm/pulse/validation.py +0 -0
  77. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm_pulse.egg-info/SOURCES.txt +0 -0
  78. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm_pulse.egg-info/dependency_links.txt +0 -0
  79. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm_pulse.egg-info/requires.txt +0 -0
  80. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/src/iqm_pulse.egg-info/top_level.txt +0 -0
  81. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/tests/.pylintrc +0 -0
  82. {iqm_pulse-10.0.0 → iqm_pulse-10.1.0}/tests/__init__.py +0 -0
@@ -2,6 +2,19 @@
2
2
  Changelog
3
3
  =========
4
4
 
5
+ Version 10.1.0 (2025-07-18)
6
+ ===========================
7
+
8
+ Features
9
+ --------
10
+ - Add a new "prx" implementation :class:`PRX_Cosine`, using a cosine pulse for both I and Q components.
11
+ - Add a new waveform :class:`PolynomialCosine`, which is a polynomial function of a cosine,
12
+ :math:`f(n) = \sum_{k=0}^m a_k \cos^k(2 \pi f n)`, where :math:`n` is the sample index.
13
+
14
+ Bug Fixes
15
+ ---------
16
+ - In the waveform :class:`Cosine` add ``phase`` to :attr:`non_timelike_attributes`.
17
+
5
18
  Version 10.0.0 (2025-07-16)
6
19
  ===========================
7
20
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-pulse
3
- Version: 10.0.0
3
+ Version: 10.1.0
4
4
  Summary: A Python-based project for providing interface and implementations for control pulses.
5
5
  Author-email: IQM Finland Oy <info@meetiqm.com>
6
6
  License: Apache License
@@ -50,6 +50,7 @@ from iqm.pulse.playlist.instructions import Block, IQPulse
50
50
  from iqm.pulse.playlist.schedule import TOLERANCE, Schedule
51
51
  from iqm.pulse.playlist.waveforms import (
52
52
  Constant,
53
+ Cosine,
53
54
  CosineFall,
54
55
  CosineRise,
55
56
  CosineRiseFall,
@@ -419,6 +420,13 @@ class PRX_HdDrag(PRX_CustomWaveforms, wave_i=HdDragI, wave_q=HdDragQ): # type:i
419
420
  """
420
421
 
421
422
 
423
+ class PRX_Cosine(PRX_CustomWaveforms, wave_i=Cosine, wave_q=Cosine): # type:ignore[call-arg]
424
+ """Special modulated pulse resulting in two frequency sidebands.
425
+
426
+ See :class:`.PRX_CustomWaveforms`.
427
+ """
428
+
429
+
422
430
  def _normalize_params(angle: float, phase: float) -> tuple[float, float]:
423
431
  """Algebraic normalization of ``angle`` to [0, pi] and ``phase`` to (-pi, pi].
424
432
 
@@ -145,7 +145,35 @@ class Cosine(Waveform):
145
145
 
146
146
  @staticmethod
147
147
  def non_timelike_attributes() -> dict[str, str]:
148
- return {"frequency": "Hz"}
148
+ return {"frequency": "Hz", "phase": "rad"}
149
+
150
+
151
+ @dataclass(frozen=True)
152
+ class PolynomialCosine(Waveform):
153
+ r"""Polynomial of a periodic sinusoidal waveform which defaults to cosine.
154
+
155
+ .. math::
156
+ f(t) = P(\cos(2\pi \: f \: t + \phi))
157
+
158
+ where :math:`P(x)` is a polynomial, :math:`f` is the frequency, and :math:`\phi` the phase of the wave.
159
+
160
+ Args:
161
+ frequency: frequency of the wave, in units of inverse sampling window duration
162
+ phase: phase of the wave, in radians
163
+
164
+ """
165
+
166
+ frequency: float
167
+ coefficients: np.ndarray
168
+ phase: float = 0.0
169
+
170
+ def _sample(self, sample_coords: np.ndarray) -> np.ndarray:
171
+ cosine = np.cos(2 * np.pi * self.frequency * sample_coords + self.phase)
172
+ return np.polynomial.polynomial.polyval(cosine, self.coefficients)
173
+
174
+ @staticmethod
175
+ def non_timelike_attributes() -> dict[str, str]:
176
+ return {"frequency": "Hz", "phase": "rad", "coefficients": ""}
149
177
 
150
178
 
151
179
  @dataclass(frozen=True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-pulse
3
- Version: 10.0.0
3
+ Version: 10.1.0
4
4
  Summary: A Python-based project for providing interface and implementations for control pulses.
5
5
  Author-email: IQM Finland Oy <info@meetiqm.com>
6
6
  License: Apache License
@@ -0,0 +1 @@
1
+ 10.1.0
@@ -1 +0,0 @@
1
- 10.0.0
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes