Repository navigation
v0.11.0-alpha
·
2 commits
to main
since this release
[v0.11.0-alpha] - 2026-10-15
Changes since v0.10.0-alpha.
Added
- Receiver DSP: feedforward (FFE), decision feedback (DFE) and Volterra equalizers (up to cubic order) for IM-DD links, with samples-per-symbol support, training mode and custom initial coefficients; adaptive filtering cores (NLMS, DD-LMS, CMA, RDE, DA-RDE, RLS, DD-RLS) with time- and frequency-domain MIMO equalization; Levinson recursion, autocorrelation and whitening filter;
optic.dsp.synchronizationmodule withsyncDataSequences; frequency shifting (freqShift) and M-th power frequency offset estimation. - Forward error correction: LDPC encoding and decoding (edge-based message passing, DVB-S2 codes, ALIST files), Hamming codes, extrinsic LLR metric and MLSE (Viterbi) routine.
- Devices and models: DAC model with quantization, ENOB and jitter; ENOB, clipping and noise model in the ADC; extinction ratio support in the MZM and IQ modulator; IQ imbalance and skew (
iqMixing) and frontend parameters in the coherent receiver; NLIN perturbation models rewritten with Numba kernels. - Metrics: theoretical GMI and mutual information (MI) support.
- Plotting: customizable eye diagram and power spectral density plots;
figsizeoption in constellation plots; comprehensive plotting tests. - Tests and CI: pytest-based test suite and GitHub Actions workflow running it on Python 3.10-3.13.
- Packaging: GitHub Actions workflow that publishes the package to PyPI (Trusted Publishing) when a release is published; the package version is now derived from the Git tag (setuptools-scm).
CITATION.cffmetadata and a revampedREADMEwith full project overview.
Changed
- Python 3.10 or newer is required.
- Numba caching and
fastmathenabled in performance-critical DSP, FEC and model routines; FIR filtering usesfftconvolve. - Renamed parameters for consistency (
Ei/EotosigIn/sigOut,outEqtoyEq,Ipd_sattoIpdSat,signalRotationtopolRotation);awgnnow takes aparametersobject. - Docstrings expanded with equations and theory notes across the
opticpackage, now with a Returns section for all documented public functions; Sphinx documentation refreshed andoptic.dsp.coreGPUadded to it. - Modern NumPy/SciPy/Matplotlib APIs replace deprecated ones.
Fixed
- AWGN noise variance for real-valued signals.
- Sign handling of LLRs for bit probabilities.
ber2QfactordB conversion formula, extinction ratio dB-to-linear conversion in the MZM, and ADC anti-alias filter frequency inputs.- PRBS-13 taps, CAZAC sequence formula and RRC filter tap scaling with the symbol period.
- Viterbi & Viterbi carrier phase recovery for PSK/APSK constellations.
- Photodiode noise seeds are now independent across receiver channels; PSD labels in single-mode plots.
Other Changes
- Fix docstring inconsistencies across optic folder (function parameters and param object attributes) by @edsonportosilva with @Copilot in #32
- Rework the test suite and add a CI workflow by @Hewei603 in #35
- Add PyPI publish workflow and tag-based versioning by @edsonportosilva in #37
New Contributors
- @edsonportosilva with @Copilot made their first contribution in #32
- @Hewei603 made their first contribution in #35
Full Changelog: v0.10.0-alpha...v0.11.0-alpha