AGWN round: band-pass filter, generation common, AGWN generator (tickets 08-10) #7
No reviewers
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
ykp/gensig!7
Loading…
Reference in a new issue
No description provided.
Delete branch "round2-agwn"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
First signal-processing round: the AGWN waveform with level shaping and per-band filtering, on two independently-built DSP foundations (bandpass + generation common) that the remaining generators reuse. Three commits, implemented by parallel headless workers with non-overlapping ownership, wired/verified and committed by the orchestrator.
Ticket 08 — band-pass filtering (
4c7bbc4)gensig/core/generation/bandpass.py:design_bandpass(fmin_hz, fmax_hz, sample_rate) -> BandPassDesignwith.apply(samples)— corrected port of applyBPFilter.m: complex FIR band-pass, ~70 dB rejection, 1.1 shape-factor transition, decimated path for narrow transitions (decimation_factor > 4). Validation 0 <= fmin < fmax <= Fe/2, 1-D input.Ticket 09 — generation common (
a88b531)units.level_to_gain— the single percent-of-full-scale -> linear conversion point (future dB mode swaps the body); 100->1.0 / 50->0.5 / 0->0.0.gensig/core/generation/common.py: frozenGeneratedSignal,quantize_duration_us(MATLAB ceil, quantum<=0 passthrough),sample_count_for,seeded_rng/draw_complex_noise(deterministic, byte-identical per seed),preflight_memoryreusing validation.estimate_memory withGenerationMemoryErrorraised BEFORE allocation.Ticket 10 — AGWN generator (
ff4c276)gensig/core/generation/agwn.py+generation/__init__re-export:generate_agwn(project) -> GeneratedSignal. Seeded complex Gaussian noise per band, band-limited and summed withLevelscaling (RMS-referenced: per-band in-band RMS ~ Level/100), freqC table-center convention, time quantization gated on TimeAlign (round decision), memory preflight before any allocation, no spectrum inversion.chore(coverage): dropped
gensig/core/generation/*andgensig/core/settings.pyfrom the coverage omit list — both now implemented and tested.Verification: 291 passed / 2 skipped (display-guarded, run under xvfb in CI), coverage 98.0%, ruff check/format + mypy clean (32 files). Headless-only new tests as required.