commkit 3.6.0__tar.gz → 3.6.1__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.
- {commkit-3.6.0 → commkit-3.6.1}/CHANGELOG.md +8 -1
- {commkit-3.6.0 → commkit-3.6.1}/PKG-INFO +1 -1
- {commkit-3.6.0 → commkit-3.6.1}/commkit/__init__.py +1 -1
- {commkit-3.6.0 → commkit-3.6.1}/commkit/plotting/analysis.py +24 -1
- {commkit-3.6.0 → commkit-3.6.1}/pyproject.toml +2 -2
- {commkit-3.6.0 → commkit-3.6.1}/tests/plotting/test_plot_analysis.py +11 -0
- {commkit-3.6.0 → commkit-3.6.1}/uv.lock +1 -1
- {commkit-3.6.0 → commkit-3.6.1}/.gitattributes +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/.github/icon.svg +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/.github/logo.svg +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/.github/workflows/ci.yml +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/.github/workflows/publish.yml +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/.gitignore +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/.python-version +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/AGENTS.md +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/LICENSE +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/README.md +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/baselines/Linux-CPython-3.14-64bit/0002_pre_v2.json +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/baselines/Linux-CPython-3.14-64bit/0003_v2_0.json +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/baselines/Linux-CPython-3.14-64bit/0004_fiber_dbp.json +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/baselines/Linux-CPython-3.14-64bit/0005_gpu_decoder_path.json +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/baselines/Linux-CPython-3.14-64bit/0006_perf_cleanup.json +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/baselines/Linux-CPython-3.14-64bit/0007_v3_0.json +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/baselines/Linux-CPython-3.14-64bit/0008_v3_1.json +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/bench_block_blind.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/bench_block_lms.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/bench_bps.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/bench_coding.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/bench_equalizers.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/bench_fiber.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/bench_filters.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/bench_import.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/bench_llr.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/bench_mapping.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/bench_signal_pipeline.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/bench_sync_misc.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/benchutils.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/conftest.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/record_baseline.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/benchmarks/workloads.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_array.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_circular.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_constants.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_cuda/__init__.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_cuda/compiler.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_cuda/graphs.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_cuda/src/algebraic.cu +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_cuda/src/bps_anchor.cu +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_cuda/src/bps_min_d2.cu +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_cuda/src/cs_block.cu +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_cuda/src/iir.cu +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_cuda/src/ldpc.cu +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_cuda/src/llr.cu +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_cuda/src/selftest.cu +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_dispersion.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_fft.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_fiber.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_overlap_save.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_random.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/_sequences.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/analysis/__init__.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/analysis/_common.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/analysis/allan.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/analysis/drift.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/analysis/fm_noise.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/analysis/interferometry.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/analysis/linewidth/__init__.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/analysis/linewidth/dsh.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/analysis/linewidth/phase.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/analysis/linewidth/result.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/analysis/trajectory.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/backend.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/__init__.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/_galois.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/_gf2.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/_ldpc_tables.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/_numba_loops.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/algebraic.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/base.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/convolutional.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/crc.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/exit.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/interleaving.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/ldpc.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/linear.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/performance.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/polar.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/product.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/ratematch.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/shaping.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/coding/turbo.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/core/__init__.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/core/_signal_adapter.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/core/frame.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/core/generation.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/core/preamble.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/core/signal.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/equalization/__init__.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/equalization/_block/__init__.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/equalization/_block/_blind.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/equalization/_block/_dd.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/equalization/_block/_engine.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/equalization/_common.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/equalization/_numba_loops.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/equalization/_sequential/__init__.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/equalization/_sequential/_blind.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/equalization/_sequential/_dd.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/equalization/_sequential/_setup.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/equalization/linear.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/equalization/pilots.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/equalization/polarization.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/equalization/result.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/filtering/__init__.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/filtering/fiber.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/filtering/linear.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/filtering/pulses.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/filtering/response.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/frequency.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/impairments/__init__.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/impairments/fiber_channel.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/impairments/frontend.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/impairments/noise.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/impairments/source.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/io.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/logger.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/mapping/__init__.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/mapping/_numba_llr.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/mapping/bits.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/mapping/constellation.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/mapping/gray.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/mapping/llr.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/mapping/shaping.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/math.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/metrics/__init__.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/metrics/_common.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/metrics/error_rates.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/metrics/information.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/metrics/quality.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/multirate.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/plotting/__init__.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/plotting/coding.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/plotting/constellation.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/plotting/equalizer.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/plotting/eye.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/plotting/filter_response.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/plotting/frequency.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/plotting/recovery.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/plotting/spectral.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/plotting/theme.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/plotting/timing.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/plotting/waveform.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/py.typed +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/recovery/__init__.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/recovery/_common.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/recovery/bps.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/recovery/carrier_phase.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/recovery/corrections.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/recovery/pilots.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/recovery/pll.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/recovery/tikhonov.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/recovery/viterbi_viterbi.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/smoothing.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/spectral.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/commkit/timing.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/00-getting-started.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/01-constellations-and-bit-mapping.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/02-spectral-analysis.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/03-digital-filters.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/04-pulse-shaping-and-matched-filtering.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/05-multirate-and-resampling.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/06-awgn-and-performance-metrics.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/07-channel-coding.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/08-probabilistic-shaping-and-coded-modulation.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/09-laser-phase-noise.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/10-front-end-impairments.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/11-frame-synchronization-and-timing.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/12-frequency-offset-estimation.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/13-blind-carrier-phase-recovery.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/14-pilot-aided-carrier-recovery.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/15-linear-channel-equalization.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/16-adaptive-equalization.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/17-blind-equalization.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/18-polarization-multiplexing.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/19-chromatic-dispersion.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/20-nonlinear-fiber-and-backpropagation.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/21-fec-in-optical-standards.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/22-coherent-transceiver-end-to-end.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/23-carrier-phase-characterization.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/24-laser-linewidth-self-heterodyne.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/25-laser-linewidth-short-delay-and-flicker.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/26-laser-linewidth-self-homodyne-iq.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/27-measurement-template-self-heterodyne.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/28-measurement-template-self-homodyne-iq.ipynb +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/examples/README.md +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/scripts/sanitize.sh +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/analysis/test_allan.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/analysis/test_drift.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/analysis/test_fm_noise.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/analysis/test_interferometry.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/analysis/test_linewidth.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/analysis/test_trajectory.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_algebraic.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_coding_base.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_convolutional.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_crc.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_exit.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_gf2.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_interleaving.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_ldpc.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_ldpc_exit.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_ldpc_kernel.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_ldpc_tables.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_linear_codes.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_performance.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_polar.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_product.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_ratematch.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_shaping.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/coding/test_turbo.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/common/__init__.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/common/coding.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/common/conversions.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/common/kernel_utils.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/common/memory.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/common/metrics.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/common/periodic.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/common/reference_impl.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/common/scoring.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/common/signals.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/common/theory.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/conftest.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/core/test_frame.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/core/test_generation.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/core/test_preamble.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/core/test_psqam.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/core/test_signal.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/core/test_signal_adapter.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/core/test_signal_mimo.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/equalization/test_blind.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/equalization/test_block.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/equalization/test_bps_kernel.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/equalization/test_cpr.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/equalization/test_cs_kernel.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/equalization/test_equalizer_oracles.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/equalization/test_linear.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/equalization/test_mimo.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/equalization/test_polarization.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/equalization/test_sequential.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/equalization/test_state.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/equalization/test_winit.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/impairments/test_fiber_channel_linear.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/impairments/test_fiber_channel_nonlinear.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/impairments/test_frontend.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/impairments/test_noise.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/impairments/test_source.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/mapping/test_bits.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/mapping/test_constellation.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/mapping/test_gray.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/mapping/test_llr.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/metrics/test_common.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/metrics/test_error_rates.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/metrics/test_information.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/metrics/test_quality.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/plotting/test_plot_coding.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/plotting/test_plot_constellation.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/plotting/test_plot_equalizer.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/plotting/test_plot_eye.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/plotting/test_plot_filter_response.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/plotting/test_plot_frequency.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/plotting/test_plot_recovery.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/plotting/test_plot_spectral.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/plotting/test_plot_theme.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/plotting/test_plot_timing.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/plotting/test_plot_waveform.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/plugins/__init__.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/plugins/precision_trace.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/plugins/transfer_trace.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/recovery/test_bps.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/recovery/test_corrections.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/recovery/test_joint.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/recovery/test_pilots.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/recovery/test_pll.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/recovery/test_recovery_oracles.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/recovery/test_tikhonov.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/recovery/test_viterbi_viterbi.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_api_contracts.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_array.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_backend.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_cuda_infra.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_dispersion.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_examples.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_fiber.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_filter_response.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_filtering.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_frequency.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_import_hygiene.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_io.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_logger.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_math.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_multirate.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_pulse_shaping.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_receiver_chain.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_signal_pipeline.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_smoothing.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_spectral.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_timing.py +0 -0
- {commkit-3.6.0 → commkit-3.6.1}/tests/test_working_memory.py +0 -0
|
@@ -4,6 +4,12 @@ Notable changes to CommKit, newest first. Performance figures are from the refer
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [3.6.1] - 2026-11-05
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- `plot_frequency_noise_psd` shades the white-FM plateau: the fit bins where the fitted model stays within 10 % of the floor `Δν/π`, where white FM dominates and pins the linewidth down. It is a visual check only; `Δν` still comes from the model fitted over every bin in `used`, not from an average over the plateau.
|
|
12
|
+
|
|
7
13
|
## [3.6.0] - 2026-11-05
|
|
8
14
|
|
|
9
15
|
Chromatic dispersion for real captures. The compensation takes the link's accumulated dispersion and works as a receiver does, an FIR filter (or overlap-save blocks for backpropagation) in bounded memory, with the exact whole-record path as an option that is valid on captures too; three estimators measure an unknown dispersion, blind or from known symbols. The laser-characterization chain and its notebooks were corrected wherever a plot or a number did not mean what it said, method names that were generic now say what they do, and plot axes carry their SI prefix in the label.
|
|
@@ -461,7 +467,8 @@ See the [GitHub release](https://github.com/lokgar/commkit/releases/tag/v1.1.0)
|
|
|
461
467
|
|
|
462
468
|
First release. See the [GitHub release](https://github.com/lokgar/commkit/releases/tag/v1.0.0).
|
|
463
469
|
|
|
464
|
-
[Unreleased]: https://github.com/lokgar/commkit/compare/v3.6.
|
|
470
|
+
[Unreleased]: https://github.com/lokgar/commkit/compare/v3.6.1...HEAD
|
|
471
|
+
[3.6.1]: https://github.com/lokgar/commkit/compare/v3.6.0...v3.6.1
|
|
465
472
|
[3.6.0]: https://github.com/lokgar/commkit/compare/v3.5.0...v3.6.0
|
|
466
473
|
[3.5.0]: https://github.com/lokgar/commkit/compare/v3.4.0...v3.5.0
|
|
467
474
|
[3.4.0]: https://github.com/lokgar/commkit/compare/v3.3.0...v3.4.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: commkit
|
|
3
|
-
Version: 3.6.
|
|
3
|
+
Version: 3.6.1
|
|
4
4
|
Summary: A Python library for high-performance digital communications research.
|
|
5
5
|
Project-URL: Homepage, https://github.com/lokgar/commkit
|
|
6
6
|
Project-URL: Repository, https://github.com/lokgar/commkit
|
|
@@ -251,7 +251,11 @@ def plot_frequency_noise_psd(
|
|
|
251
251
|
masks (400 bins or fewer) are drawn as markers on the PSD, dense ones
|
|
252
252
|
as a highlighted log-binned median curve.
|
|
253
253
|
* ``fm_psd_model``: the fitted model of white FM, flicker FM and
|
|
254
|
-
detection noise, drawn over the PSD.
|
|
254
|
+
detection noise, drawn over the PSD. The white-FM plateau, the fit
|
|
255
|
+
bins where the model stays within 10 % of ``Δν/π``, is shaded. It
|
|
256
|
+
shows where the floor is pinned down; ``Δν`` itself comes from the
|
|
257
|
+
model fitted over all of ``used``, not from an average over the
|
|
258
|
+
plateau.
|
|
255
259
|
|
|
256
260
|
Dense spectra are drawn faint with a log-binned median trace on top, and
|
|
257
261
|
the model through the same reduction (a model divided by the response
|
|
@@ -346,6 +350,7 @@ def plot_frequency_noise_psd(
|
|
|
346
350
|
)
|
|
347
351
|
|
|
348
352
|
model = getattr(estimate, "fm_psd_model", None)
|
|
353
|
+
m_i = None
|
|
349
354
|
if model is not None:
|
|
350
355
|
m_c = _as_channels(model)
|
|
351
356
|
m_i = m_c[0, pos]
|
|
@@ -385,6 +390,24 @@ def plot_frequency_noise_psd(
|
|
|
385
390
|
ls=":",
|
|
386
391
|
label=r"White-FM floor $\Delta\nu/\pi$",
|
|
387
392
|
)
|
|
393
|
+
if m_i is not None:
|
|
394
|
+
# Δν is the white term of a model fitted over the whole fit
|
|
395
|
+
# region, not a plateau average. Shade where the model stays
|
|
396
|
+
# within 10 % of that term (flicker and the angle-noise tail
|
|
397
|
+
# negligible): the plateau that pins the floor down.
|
|
398
|
+
white = float(floors[0]) / np.pi
|
|
399
|
+
dom = np.isfinite(m_i) & (m_i <= 1.1 * white)
|
|
400
|
+
if used is not None:
|
|
401
|
+
dom &= u_c[pos]
|
|
402
|
+
if dom.any():
|
|
403
|
+
axi.axvspan(
|
|
404
|
+
float(fp[dom].min()),
|
|
405
|
+
float(fp[dom].max()),
|
|
406
|
+
color="#ffd166",
|
|
407
|
+
alpha=0.18,
|
|
408
|
+
lw=0,
|
|
409
|
+
label="Plateau (model within 10 % of floor)",
|
|
410
|
+
)
|
|
388
411
|
|
|
389
412
|
if band is not None:
|
|
390
413
|
lo = max(float(band[0]), float(fp[0])) if fp.size else float(band[0])
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "commkit"
|
|
3
|
-
version = "3.6.
|
|
3
|
+
version = "3.6.1"
|
|
4
4
|
description = "A Python library for high-performance digital communications research."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [{ name = "Denis Fatkhiev" }]
|
|
@@ -88,7 +88,7 @@ markers = [
|
|
|
88
88
|
]
|
|
89
89
|
|
|
90
90
|
[tool.bumpversion]
|
|
91
|
-
current_version = "3.6.
|
|
91
|
+
current_version = "3.6.1"
|
|
92
92
|
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
|
|
93
93
|
serialize = ["{major}.{minor}.{patch}"]
|
|
94
94
|
search = "{current_version}"
|
|
@@ -19,6 +19,7 @@ from commkit.analysis import (
|
|
|
19
19
|
IncrementSlope,
|
|
20
20
|
IncrementSubtract,
|
|
21
21
|
)
|
|
22
|
+
from commkit.backend import to_device
|
|
22
23
|
from commkit.plotting.analysis import (
|
|
23
24
|
plot_allan_deviation,
|
|
24
25
|
plot_carrier_phase_characterization,
|
|
@@ -113,6 +114,16 @@ class TestPlotAnalysis:
|
|
|
113
114
|
fig, ax = plot_frequency_noise_psd(est, title="DSH")
|
|
114
115
|
floor = [ln for ln in ax.lines if "White-FM" in ln.get_label()][0]
|
|
115
116
|
assert floor.get_ydata()[0] == pytest.approx(est.value / np.pi)
|
|
117
|
+
# The plateau span covers fit bins where the model is within 10 %
|
|
118
|
+
# of the floor, and none where it is not.
|
|
119
|
+
span = [p for p in ax.patches if "Plateau" in p.get_label()][0]
|
|
120
|
+
x0, x1 = span.get_x(), span.get_x() + span.get_width()
|
|
121
|
+
f = np.asarray(to_device(est.frequencies, "cpu"))
|
|
122
|
+
model = np.asarray(to_device(est.fm_psd_model, "cpu"))
|
|
123
|
+
used = np.asarray(to_device(est.used, "cpu"))
|
|
124
|
+
flat = used & (f > 0) & (model <= 1.1 * est.value / np.pi)
|
|
125
|
+
assert x0 == pytest.approx(f[flat].min())
|
|
126
|
+
assert x1 == pytest.approx(f[flat].max())
|
|
116
127
|
|
|
117
128
|
@pytest.mark.parametrize("dsh", [False, True])
|
|
118
129
|
def test_increment_variance(self, xp: Any, dsh: bool) -> None:
|
|
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
|
{commkit-3.6.0 → commkit-3.6.1}/benchmarks/baselines/Linux-CPython-3.14-64bit/0002_pre_v2.json
RENAMED
|
File without changes
|
{commkit-3.6.0 → commkit-3.6.1}/benchmarks/baselines/Linux-CPython-3.14-64bit/0003_v2_0.json
RENAMED
|
File without changes
|
{commkit-3.6.0 → commkit-3.6.1}/benchmarks/baselines/Linux-CPython-3.14-64bit/0004_fiber_dbp.json
RENAMED
|
File without changes
|
|
File without changes
|
{commkit-3.6.0 → commkit-3.6.1}/benchmarks/baselines/Linux-CPython-3.14-64bit/0006_perf_cleanup.json
RENAMED
|
File without changes
|
{commkit-3.6.0 → commkit-3.6.1}/benchmarks/baselines/Linux-CPython-3.14-64bit/0007_v3_0.json
RENAMED
|
File without changes
|
{commkit-3.6.0 → commkit-3.6.1}/benchmarks/baselines/Linux-CPython-3.14-64bit/0008_v3_1.json
RENAMED
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
{commkit-3.6.0 → commkit-3.6.1}/examples/08-probabilistic-shaping-and-coded-modulation.ipynb
RENAMED
|
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
|