From 5f22876155170957b600ca2e907279565c66863e Mon Sep 17 00:00:00 2001 From: Teque5 Date: Wed, 29 Apr 2026 10:46:06 -0700 Subject: [PATCH 1/2] fix annotation ordering within SigMFGenerator --- sigmf/__init__.py | 2 +- sigmf/siggen.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/sigmf/__init__.py b/sigmf/__init__.py index fcf791a..d481f0d 100644 --- a/sigmf/__init__.py +++ b/sigmf/__init__.py @@ -5,7 +5,7 @@ # SPDX-License-Identifier: LGPL-3.0-or-later # version of this python module -__version__ = "1.9.0" +__version__ = "1.9.1" # matching version of the SigMF specification __specification__ = "1.2.6" diff --git a/sigmf/siggen.py b/sigmf/siggen.py index 9bf9fe2..5397c55 100644 --- a/sigmf/siggen.py +++ b/sigmf/siggen.py @@ -559,6 +559,9 @@ def create_full_signal_annotation(label: str) -> dict: phase_annotation = create_full_signal_annotation(f"phase offset {phase_deg:+.1f}°") annotations.append(phase_annotation) + # sort annotations by sample_start to satisfy sigmf ordering requirement + annotations.sort(key=lambda a: a[SigMFFile.START_INDEX_KEY]) + return annotations def _build_metadata(self, samples: np.ndarray) -> dict: From a3cfb8d73267c6aa6d4f1093475f9864702cb52a Mon Sep 17 00:00:00 2001 From: Teque5 Date: Wed, 29 Apr 2026 10:52:28 -0700 Subject: [PATCH 2/2] siggen test fix --- tests/test_siggen.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test_siggen.py b/tests/test_siggen.py index 64f33e5..489dcd1 100644 --- a/tests/test_siggen.py +++ b/tests/test_siggen.py @@ -316,9 +316,9 @@ def test_phase_offset(self): signal_0 = SigMFGenerator(seed=42).tone().generate() signal_1 = SigMFGenerator(seed=42).tone().phase_offset(phase_offset).generate() - # find where the actual signal starts by looking at annotations - start_idx_0 = signal_0.get_annotations()[0][SigMFFile.START_INDEX_KEY] - start_idx_1 = signal_1.get_annotations()[0][SigMFFile.START_INDEX_KEY] + # tone annotations are last after sorting (full-signal annotations start at 0) + start_idx_0 = signal_0.get_annotations()[-1][SigMFFile.START_INDEX_KEY] + start_idx_1 = signal_1.get_annotations()[-1][SigMFFile.START_INDEX_KEY] # both should start at the same sample index (same seed) self.assertEqual(start_idx_0, start_idx_1)