iqm-pulse 11.1.0__tar.gz → 11.2.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-11.1.0 → iqm_pulse-11.2.0}/CHANGELOG.rst +8 -0
  2. {iqm_pulse-11.1.0/src/iqm_pulse.egg-info → iqm_pulse-11.2.0}/PKG-INFO +1 -1
  3. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/playlist/waveforms.py +44 -0
  4. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0/src/iqm_pulse.egg-info}/PKG-INFO +1 -1
  5. iqm_pulse-11.2.0/version.txt +1 -0
  6. iqm_pulse-11.1.0/version.txt +0 -1
  7. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/LICENSE.txt +0 -0
  8. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/MANIFEST.in +0 -0
  9. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/README.rst +0 -0
  10. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/API.rst +0 -0
  11. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/Makefile +0 -0
  12. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/_static/.gitignore +0 -0
  13. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/_static/css/custom.css +0 -0
  14. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/_static/images/favicon.ico +0 -0
  15. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/_static/images/feedback_timing.svg +0 -0
  16. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/_static/images/logo.png +0 -0
  17. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/_static/images/playlist_breakdown.svg +0 -0
  18. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/_static/images/pulse_timing.svg +0 -0
  19. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/_static/images/readout_timing.svg +0 -0
  20. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/_templates/autosummary-class-template.rst +0 -0
  21. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/_templates/autosummary-module-template.rst +0 -0
  22. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/changelog.rst +0 -0
  23. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/concepts.rst +0 -0
  24. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/conf.py +0 -0
  25. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/custom_gates.rst +0 -0
  26. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/index.rst +0 -0
  27. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/license.rst +0 -0
  28. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/pulse_timing.rst +0 -0
  29. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/references.bib +0 -0
  30. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/references.rst +0 -0
  31. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/docs/using_builder.rst +0 -0
  32. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/pyproject.toml +0 -0
  33. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/requirements/base.in +0 -0
  34. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/requirements/base.txt +0 -0
  35. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/setup.cfg +0 -0
  36. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/setup.py +0 -0
  37. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/__init__.py +0 -0
  38. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/base_utils.py +0 -0
  39. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/builder.py +0 -0
  40. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/circuit_operations.py +0 -0
  41. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/gate_implementation.py +0 -0
  42. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/gates/__init__.py +0 -0
  43. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/gates/barrier.py +0 -0
  44. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/gates/conditional.py +0 -0
  45. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/gates/cz.py +0 -0
  46. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/gates/default_gates.py +0 -0
  47. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/gates/delay.py +0 -0
  48. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/gates/enums.py +0 -0
  49. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/gates/flux_multiplexer.py +0 -0
  50. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/gates/measure.py +0 -0
  51. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/gates/move.py +0 -0
  52. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/gates/prx.py +0 -0
  53. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/gates/reset.py +0 -0
  54. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/gates/rz.py +0 -0
  55. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/gates/sx.py +0 -0
  56. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/gates/u.py +0 -0
  57. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/playlist/__init__.py +0 -0
  58. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/playlist/channel.py +0 -0
  59. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/playlist/fast_drag.py +0 -0
  60. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/playlist/hd_drag.py +0 -0
  61. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/playlist/instructions.py +0 -0
  62. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/playlist/playlist.py +0 -0
  63. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/playlist/schedule.py +0 -0
  64. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/playlist/visualisation/__init__.py +0 -0
  65. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/playlist/visualisation/base.py +0 -0
  66. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/playlist/visualisation/templates/playlist_inspection.jinja2 +0 -0
  67. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/playlist/visualisation/templates/static/logo.png +0 -0
  68. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/playlist/visualisation/templates/static/moment.min.js +0 -0
  69. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/playlist/visualisation/templates/static/vis-timeline-graph2d.min.css +0 -0
  70. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/playlist/visualisation/templates/static/vis-timeline-graph2d.min.js +0 -0
  71. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/py.typed +0 -0
  72. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/quantum_ops.py +0 -0
  73. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/scheduler.py +0 -0
  74. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/timebox.py +0 -0
  75. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/utils.py +0 -0
  76. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm/pulse/validation.py +0 -0
  77. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm_pulse.egg-info/SOURCES.txt +0 -0
  78. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm_pulse.egg-info/dependency_links.txt +0 -0
  79. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm_pulse.egg-info/requires.txt +0 -0
  80. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/src/iqm_pulse.egg-info/top_level.txt +0 -0
  81. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/tests/.pylintrc +0 -0
  82. {iqm_pulse-11.1.0 → iqm_pulse-11.2.0}/tests/__init__.py +0 -0
@@ -2,6 +2,14 @@
2
2
  Changelog
3
3
  =========
4
4
 
5
+ Version 11.2.0 (2025-09-10)
6
+ ===========================
7
+
8
+ Features
9
+ --------
10
+
11
+ - Add ``PiecewiseConstant`` waveform.
12
+
5
13
  Version 11.1.0 (2025-09-08)
6
14
  ===========================
7
15
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-pulse
3
- Version: 11.1.0
3
+ Version: 11.2.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
@@ -176,6 +176,50 @@ class PolynomialCosine(Waveform):
176
176
  return {"frequency": "Hz", "phase": "rad", "coefficients": ""}
177
177
 
178
178
 
179
+ @dataclass(frozen=True)
180
+ class PiecewiseConstant(Waveform):
181
+ r"""Piecewise constant waveform.
182
+
183
+ The values are assumed to be in the range :math:`[-1, 1]`, and the changepoints are
184
+ assumed to be in the Nyquist-zone of the duration,
185
+ i.e. in the range [-`duration`/2, `duration`/2]
186
+
187
+ Args:
188
+ changepoints: Array of the changepoints of the piecewise constant function.
189
+ values: Array of the values of the piecewise constant function.
190
+ Must have one more element than ``changepoints``.
191
+
192
+ """
193
+
194
+ changepoints: np.ndarray
195
+ values: np.ndarray
196
+
197
+ def __post_init__(self):
198
+ if len(self.values) != len(self.changepoints) + 1:
199
+ raise ValueError("The number of values must be one more than the number of changepoints.")
200
+
201
+ @staticmethod
202
+ def non_timelike_attributes() -> dict[str, str]:
203
+ return {
204
+ "values": "",
205
+ }
206
+
207
+ def _sample(self, sample_coords: np.ndarray) -> np.ndarray:
208
+ condlist = []
209
+ # Before first changepoint
210
+ condlist.append(sample_coords < self.changepoints[0])
211
+
212
+ for i in range(len(self.changepoints) - 1):
213
+ condlist.append((sample_coords >= self.changepoints[i]) & (sample_coords < self.changepoints[i + 1]))
214
+
215
+ condlist.append(sample_coords >= self.changepoints[-1])
216
+
217
+ funclist = (
218
+ [self.values[0]] + [self.values[i + 1] for i in range(len(self.changepoints) - 1)] + [self.values[-1]]
219
+ )
220
+ return np.piecewise(sample_coords, condlist, funclist)
221
+
222
+
179
223
  @dataclass(frozen=True)
180
224
  class Slepian(Waveform):
181
225
  r"""Slepian waveform, which minimizes non-adiabatic errors during a gate.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-pulse
3
- Version: 11.1.0
3
+ Version: 11.2.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
+ 11.2.0
@@ -1 +0,0 @@
1
- 11.1.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