commkit 1.0.0__py3-none-any.whl
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/__init__.py +74 -0
- commkit/_cuda/__init__.py +321 -0
- commkit/_cuda/compiler.py +88 -0
- commkit/_cuda/src/bps_min_d2.cu +104 -0
- commkit/_cuda/src/cs_block.cu +119 -0
- commkit/_cuda/src/selftest.cu +14 -0
- commkit/analysis/__init__.py +55 -0
- commkit/analysis/_common.py +236 -0
- commkit/analysis/allan.py +108 -0
- commkit/analysis/drift.py +213 -0
- commkit/analysis/interferometry.py +887 -0
- commkit/analysis/linewidth.py +480 -0
- commkit/analysis/trajectory.py +91 -0
- commkit/backend.py +507 -0
- commkit/coding/__init__.py +23 -0
- commkit/coding/base.py +17 -0
- commkit/coding/bch.py +6 -0
- commkit/coding/convolutional.py +7 -0
- commkit/coding/crc.py +7 -0
- commkit/coding/galois.py +8 -0
- commkit/coding/hamming.py +6 -0
- commkit/coding/interleaving.py +7 -0
- commkit/coding/ldpc.py +8 -0
- commkit/coding/polar.py +8 -0
- commkit/coding/ratematch.py +6 -0
- commkit/coding/reed_solomon.py +6 -0
- commkit/coding/turbo.py +8 -0
- commkit/core/__init__.py +32 -0
- commkit/core/frame.py +992 -0
- commkit/core/generation.py +581 -0
- commkit/core/signal.py +725 -0
- commkit/equalization/__init__.py +49 -0
- commkit/equalization/_block.py +1855 -0
- commkit/equalization/_common.py +606 -0
- commkit/equalization/_kernels_jax.py +1720 -0
- commkit/equalization/_kernels_numba.py +1704 -0
- commkit/equalization/blind.py +223 -0
- commkit/equalization/linear.py +365 -0
- commkit/equalization/polarization.py +790 -0
- commkit/equalization/result.py +191 -0
- commkit/equalization/sequential.py +2805 -0
- commkit/filtering.py +1120 -0
- commkit/frequency.py +1191 -0
- commkit/helpers.py +489 -0
- commkit/impairments/__init__.py +43 -0
- commkit/impairments/channel/__init__.py +20 -0
- commkit/impairments/channel/linear.py +310 -0
- commkit/impairments/channel/nonlinear.py +11 -0
- commkit/impairments/frontend.py +229 -0
- commkit/impairments/noise.py +105 -0
- commkit/impairments/source.py +219 -0
- commkit/io.py +308 -0
- commkit/logger.py +103 -0
- commkit/mapping/__init__.py +46 -0
- commkit/mapping/bits.py +240 -0
- commkit/mapping/constellation.py +153 -0
- commkit/mapping/gray.py +429 -0
- commkit/mapping/llr.py +253 -0
- commkit/mapping/shaping.py +218 -0
- commkit/metrics.py +949 -0
- commkit/multirate.py +476 -0
- commkit/plotting/__init__.py +78 -0
- commkit/plotting/analysis.py +627 -0
- commkit/plotting/constellation.py +483 -0
- commkit/plotting/equalizer.py +390 -0
- commkit/plotting/eye.py +388 -0
- commkit/plotting/spectral.py +575 -0
- commkit/plotting/sync.py +953 -0
- commkit/plotting/theme.py +203 -0
- commkit/plotting/waveform.py +200 -0
- commkit/py.typed +0 -0
- commkit/recovery/__init__.py +51 -0
- commkit/recovery/bps.py +337 -0
- commkit/recovery/corrections.py +751 -0
- commkit/recovery/pilots.py +803 -0
- commkit/recovery/pll.py +482 -0
- commkit/recovery/tikhonov.py +424 -0
- commkit/recovery/viterbi_viterbi.py +227 -0
- commkit/spectral.py +560 -0
- commkit/timing.py +841 -0
- commkit-1.0.0.dist-info/METADATA +145 -0
- commkit-1.0.0.dist-info/RECORD +84 -0
- commkit-1.0.0.dist-info/WHEEL +4 -0
- commkit-1.0.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: commkit
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: A Python library for high-performance digital communications research.
|
|
5
|
+
License: MIT
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Requires-Python: >=3.12
|
|
8
|
+
Requires-Dist: jax>=0.10
|
|
9
|
+
Requires-Dist: matplotlib>=3.11
|
|
10
|
+
Requires-Dist: numba>=0.65
|
|
11
|
+
Requires-Dist: numpy>=2.4
|
|
12
|
+
Requires-Dist: pydantic>=2.13
|
|
13
|
+
Requires-Dist: pyyaml>=6.0.2
|
|
14
|
+
Requires-Dist: scipy>=1.17
|
|
15
|
+
Provides-Extra: gpu
|
|
16
|
+
Requires-Dist: cupy-cuda13x>=14.1; extra == 'gpu'
|
|
17
|
+
Requires-Dist: jax[cuda13]>=0.10; extra == 'gpu'
|
|
18
|
+
Requires-Dist: nvidia-curand>=10.4.1.34; extra == 'gpu'
|
|
19
|
+
Provides-Extra: notebook
|
|
20
|
+
Requires-Dist: jupyter>=1.1.1; extra == 'notebook'
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
|
|
23
|
+
# CommKit
|
|
24
|
+
|
|
25
|
+
**High-performance digital communications research kit for Python.**
|
|
26
|
+
|
|
27
|
+

|
|
28
|
+

|
|
29
|
+

|
|
30
|
+

|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
CommKit is a Python library for digital communications research that treats hardware as a first-class concern. A single `Signal` object carries IQ samples, physical metadata, and modulation context - with DSP operations dispatching automatically to NumPy, CuPy, or JAX based on data location.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Why CommKit?
|
|
39
|
+
|
|
40
|
+
- **One object, complete context:** Sampling rate, symbol rate, modulation format, and pulse shape travel with the signal through the processing pipeline.
|
|
41
|
+
- **Backend-transparent DSP:** `dispatch()` resolves NumPy, CuPy, or SciPy modules at runtime. The same code executes seamlessly on CPU or GPU.
|
|
42
|
+
- **Method chaining:** High-level fluent API (`sig.to("gpu").fir_filter(taps).resample(sps_out=2)...`) for rapid prototyping.
|
|
43
|
+
- **JAX escape hatch:** Zero-copy DLPack export on GPU allows direct application of JAX transforms (gradients, `vmap`, `scan`) without leaving the research loop.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Modules & Features
|
|
48
|
+
|
|
49
|
+
| Module | Key Capabilities & Features |
|
|
50
|
+
| --- | --- |
|
|
51
|
+
| [`commkit.core`](commkit/core) | `Signal` container (IQ samples + metadata), `SingleCarrierFrame`, `Preamble`, and symbol/frame factories (PAM, PSK, QAM). |
|
|
52
|
+
| [`commkit.backend`](commkit/backend.py) | Hardware abstraction layer (`dispatch`, `to_device`, `to_jax`, `from_jax`), placement management, and backend execution (NumPy, CuPy, JAX). |
|
|
53
|
+
| [`commkit.mapping`](commkit/mapping) | Gray-coded constellations, symbol mapping, hard demapping, soft LLR computation (max-log and exact log-sum-exp via JAX JIT), and GMI. |
|
|
54
|
+
| [`commkit.filtering`](commkit/filtering.py) | Pulse shaping (RRC, RC, Gaussian, Smooth-Rectangle), tap generators, matched filtering, Overlap-Save, and polyphase multirate filtering. |
|
|
55
|
+
| [`commkit.multirate`](commkit/multirate.py) | Fractional and integer sample rate conversion (`resample`, `decimate`, `upsample`, `decimate_to_symbol_rate`). |
|
|
56
|
+
| [`commkit.timing`](commkit/timing.py) | Preamble generation (Barker, Zadoff-Chu), cross-correlation timing delay estimation, and frame alignment. |
|
|
57
|
+
| [`commkit.frequency`](commkit/frequency.py) | Carrier frequency offset estimation (FOE via M-th power, Mengali-Morelli, Jacobsen) and phase-locked FOE correction. |
|
|
58
|
+
| [`commkit.recovery`](commkit/recovery) | Carrier phase recovery (CPR via Viterbi-Viterbi, BPS, DD-PLL) and cycle-slip detection/correction. |
|
|
59
|
+
| [`commkit.equalization`](commkit/equalization) | Adaptive equalizers (`lms`, `rls`, `cma`, `rde`, `zf`), butterfly MIMO topology support, with Numba JIT and JAX execution backends. |
|
|
60
|
+
| [`commkit.impairments`](commkit/impairments) | Channel impairments simulation: AWGN (with SPS correction), PMD (differential group delay, Jones matrix), phase noise, IQ imbalance, and chromatic dispersion. |
|
|
61
|
+
| [`commkit.coding`](commkit/coding) | Channel coding and FEC primitives (BCH, Convolutional, CRC, Galois field arithmetic, Hamming, Interleaving, LDPC, Polar, Rate matching, Reed-Solomon, Turbo codes). |
|
|
62
|
+
| [`commkit.metrics`](commkit/metrics.py) | System performance evaluation: EVM (%, dB), data-aided SNR, and BER estimation. |
|
|
63
|
+
| [`commkit.analysis`](commkit/analysis) | Laser phase and linewidth characterization: DSH, homodyne IQ, zero-phase drift detrending, AWGN-free lag-slope linewidth fit, Di Domenico $\beta$-separation line FWHM, and Allan deviation. |
|
|
64
|
+
| [`commkit.spectral`](commkit/spectral.py) | Welch PSD estimation and frequency shifting with bin-quantized mixing. |
|
|
65
|
+
| [`commkit.io`](commkit/io.py) | Signal persistence and disk serialization (`load_npz`, `save_npz`). |
|
|
66
|
+
| [`commkit.plotting`](commkit/plotting) | Visualization tools for constellations, eye diagrams, PSDs, time-domain signals, filter responses, and equalizer convergence. |
|
|
67
|
+
| [`commkit.helpers`](commkit/helpers.py) | General DSP helpers: random bit/symbol generators, array normalization, RMS calculation, and SI prefix formatting. |
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Installation & Usage
|
|
72
|
+
|
|
73
|
+
**Requires Python 3.12+** and [`uv`](https://github.com/astral-sh/uv).
|
|
74
|
+
|
|
75
|
+
### Core Installation (CPU)
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Using uv (Recommended)
|
|
79
|
+
uv pip install git+https://github.com/lokgar/commkit.git
|
|
80
|
+
|
|
81
|
+
# Or with standard pip
|
|
82
|
+
pip install git+https://github.com/lokgar/commkit.git
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### GPU Support
|
|
86
|
+
|
|
87
|
+
To install with CUDA acceleration (includes JAX CUDA 13 and CuPy stacks):
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Using uv
|
|
91
|
+
uv pip install "commkit[gpu] @ git+https://github.com/lokgar/commkit.git"
|
|
92
|
+
|
|
93
|
+
# Or with standard pip
|
|
94
|
+
pip install "commkit[gpu] @ git+https://github.com/lokgar/commkit.git"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
> [!NOTE]
|
|
98
|
+
> **WSL2 CUDA Configuration:**
|
|
99
|
+
> When NVIDIA drivers and CUDA are properly installed on Windows, there is no need to install CUDA inside WSL2. However, to allow Python CUDA packages inside WSL2 to locate the bundled NVIDIA shared libraries, add the following line to your `~/.bashrc`:
|
|
100
|
+
>
|
|
101
|
+
> ```bash
|
|
102
|
+
> export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(echo $HOME/commkit/.venv/lib/python3.*/site-packages/nvidia/cu13/lib)
|
|
103
|
+
> ```
|
|
104
|
+
>
|
|
105
|
+
> *(Assumes `commkit` is cloned in `$HOME/commkit`. If located elsewhere, replace `$HOME/commkit` with `<path-to-repo>`. `python3.*/` matches any Python version automatically).*
|
|
106
|
+
|
|
107
|
+
### Development Installation
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
git clone https://github.com/lokgar/commkit.git
|
|
111
|
+
cd commkit
|
|
112
|
+
|
|
113
|
+
# Sync core environment
|
|
114
|
+
uv sync
|
|
115
|
+
|
|
116
|
+
# Sync environment with all extras (including GPU packages)
|
|
117
|
+
uv sync --all-extras
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Examples & Notebooks
|
|
123
|
+
|
|
124
|
+
For complete usage scripts and DSP examples, explore the [`examples/`](examples) directory.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Running Tests
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# CPU test suite
|
|
132
|
+
uv run pytest --device=cpu
|
|
133
|
+
|
|
134
|
+
# GPU test suite (requires CuPy + CUDA)
|
|
135
|
+
uv run pytest --device=gpu
|
|
136
|
+
|
|
137
|
+
# Run all test suites
|
|
138
|
+
uv run pytest --device=all
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## License
|
|
144
|
+
|
|
145
|
+
This project is licensed under the [MIT License](LICENSE).
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
commkit/__init__.py,sha256=m9-JgEkO_ba43EXxfw6z2Dk9nHRH4-Cbo82WEuwwZwo,1922
|
|
2
|
+
commkit/backend.py,sha256=k3EpznsfHZd6OVlYbi3Kx-GZfxY904QuhbQfIYObpfg,15786
|
|
3
|
+
commkit/filtering.py,sha256=EkT9_ogjKyysdR1xfaexXVFYiH-5ZrOHpWkN4mm-bE8,37452
|
|
4
|
+
commkit/frequency.py,sha256=uTtTx7cp6enYYtFBCWHvu0LpKFGDTXQgfnJqCj2geG4,46152
|
|
5
|
+
commkit/helpers.py,sha256=b2qzLAQzSTdFl9emBSXYHew5Ib5ZbREWo0qo4aCqrfI,17402
|
|
6
|
+
commkit/io.py,sha256=xSH58lNYg64BnsHojO13GvMdKeitiKAhy05_gQs20Z8,11991
|
|
7
|
+
commkit/logger.py,sha256=C1HWxH_G3CC2RVfXt7QDkFy7ztCfb4TJknR_GqPmA8g,2790
|
|
8
|
+
commkit/metrics.py,sha256=Ypmdv0VoMmJnoe2ow2HTEq5WfwyEjiOz1Y2chFUNxQ4,35975
|
|
9
|
+
commkit/multirate.py,sha256=pFmq_zwnM7ejLhvondEZq3yTHpv3wJR3sTtqkj2a010,17059
|
|
10
|
+
commkit/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
+
commkit/spectral.py,sha256=pQcoqoI8j73uDUOG1ydNfbxvokfFg9eC0ATX5kkQB14,21071
|
|
12
|
+
commkit/timing.py,sha256=0yTn0iB1S3P8vsnUFYZjCSlPEzq-8OpqJIYetmkurWg,31785
|
|
13
|
+
commkit/_cuda/__init__.py,sha256=ivwcVqDn_buIKf9QEkRy4EW3NwyXL3KTPvn6cFrzJbU,11028
|
|
14
|
+
commkit/_cuda/compiler.py,sha256=auZBcdGBUHnLSSpv2d8IkSwgfni3SD_XR_9dBTQxgTE,2669
|
|
15
|
+
commkit/_cuda/src/bps_min_d2.cu,sha256=2qqv9o-kMW_ddChF5rSf1k-Xg17HZ3by1RASO5AFiwQ,4078
|
|
16
|
+
commkit/_cuda/src/cs_block.cu,sha256=NLVXTX8wYUo1gtYXDu3Dx4Z_TqJsuvy_iqu0JZBJjFg,5021
|
|
17
|
+
commkit/_cuda/src/selftest.cu,sha256=wVM-4HvA8egVF6CGp7Q_Z4A0SlO8dW6sQZmcMwpoPDo,511
|
|
18
|
+
commkit/analysis/__init__.py,sha256=6ENcGmyhW946NHYGR7UIzMhFLMCThjVDoJ2scJqt7HU,2160
|
|
19
|
+
commkit/analysis/_common.py,sha256=mEkXRDmRdesqHykDEzmC4-JCY0GAG8CittQRhrcyUU0,9697
|
|
20
|
+
commkit/analysis/allan.py,sha256=YvJ_LdvAFIAB9N2qjqlNTXIXYHBx6b43BLDHBHbIq14,4108
|
|
21
|
+
commkit/analysis/drift.py,sha256=rN2rmTJg21bAEYl2niLfgYQi30bjdAEpoK_ss2R9YHo,8313
|
|
22
|
+
commkit/analysis/interferometry.py,sha256=esdxvznJiXYuierAkbjG0iHX5qeNc_Y8CqMScMpvd3w,39607
|
|
23
|
+
commkit/analysis/linewidth.py,sha256=p6cmaHgRv-UwHBQglsQtvYxErQyNDpTm32Xi4Ey87R8,20173
|
|
24
|
+
commkit/analysis/trajectory.py,sha256=Jel_TUqt_1fXzITtqYDfryeRPM-oxRagxadxGvztVH8,3806
|
|
25
|
+
commkit/coding/__init__.py,sha256=_C3jhsmr5d3qHFokzY3gbUGKVV0GrUAWeba3Z2kqz9Q,1085
|
|
26
|
+
commkit/coding/base.py,sha256=sSwlyYB7n2Vf9_9mUiEy8BsuWjfmTbLSY8nRyRIjOAQ,753
|
|
27
|
+
commkit/coding/bch.py,sha256=YY3b0reQndVCpsPZ4NHAwinNfTdzkZ01KVYu5E_UKws,154
|
|
28
|
+
commkit/coding/convolutional.py,sha256=IVZmOfvSRxq4UT-eTbbyn4zou7fTiD2RZMLx4ZHcQC4,239
|
|
29
|
+
commkit/coding/crc.py,sha256=cVSI0YhU4jZj7h9ysM6Neqs0oOr0xjTK-mGJSsE_DaU,208
|
|
30
|
+
commkit/coding/galois.py,sha256=WhjS11z0VUnNSd29d_uL3JD6kOiEMg6wTrkoo7iQ2f0,301
|
|
31
|
+
commkit/coding/hamming.py,sha256=GI7QwYV05jpGPMv3-gApqx6hWhC5DL18MI9rzymhUBg,153
|
|
32
|
+
commkit/coding/interleaving.py,sha256=VH220faQB4GRIM89zDdT4de9pkoI3KL7bHvkLpNUwmc,224
|
|
33
|
+
commkit/coding/ldpc.py,sha256=1Sp_Q3MxAlqcdW7RyuredBzpLszLA9RTySd1AHdCVGQ,313
|
|
34
|
+
commkit/coding/polar.py,sha256=rCDqC6NYah3-Pz0hLaz11RJnmI0XCXFWcMHVxlM7nbI,293
|
|
35
|
+
commkit/coding/ratematch.py,sha256=i7dstHwKOlmoZsqCYigMmECn9Jnxb8zh2-tqb4vIYBo,159
|
|
36
|
+
commkit/coding/reed_solomon.py,sha256=U2IU1WfNuGhYCYAU94oWv-QwDGVBvvpzOxRw9R0-qX8,153
|
|
37
|
+
commkit/coding/turbo.py,sha256=p6W0BGdsW-sBCi7SXt2THyKEs4vkVuWDWkVzM5sTRqM,275
|
|
38
|
+
commkit/core/__init__.py,sha256=VsaPj73qIQo0ucr1Ftzp_kMLsGoUa2SeFEWC54wM8IY,871
|
|
39
|
+
commkit/core/frame.py,sha256=cAvvWAMG15AMfqbwTICv5319nTFysxAZq4685Wu1p0A,37861
|
|
40
|
+
commkit/core/generation.py,sha256=Y4xnJ0u-ZSfo-xkytCsWG9podHpdHg9xssb272HzaIk,18883
|
|
41
|
+
commkit/core/signal.py,sha256=ESQn0KknVUJPtEx-TVpkNfyvWCfQXwNe_2Rn_BVeaO0,28059
|
|
42
|
+
commkit/equalization/__init__.py,sha256=P3x5dek0AFk1QzM7siIPwMfuf8Nj4tYz_Un65aaOeYY,1640
|
|
43
|
+
commkit/equalization/_block.py,sha256=lBcnuijIunrw4u_V8vjvAE8m3cKlJzAVttseSVNx05o,81322
|
|
44
|
+
commkit/equalization/_common.py,sha256=3pagobuXFAZiaSYH9HyEz3yjLh1WPursbr4dbCKisys,22717
|
|
45
|
+
commkit/equalization/_kernels_jax.py,sha256=g8bx5l6Q5pqI9_LVHjy3L-z5Ht15ev198hP1Rve7XJQ,70885
|
|
46
|
+
commkit/equalization/_kernels_numba.py,sha256=4nw4l1e1KrvemI5V4tZN_ZVcA7tWa7xAR-G6wzrLYkw,75198
|
|
47
|
+
commkit/equalization/blind.py,sha256=b_EzCne4RBws8K07KzXN0MWwmIRBhlGJmSn4mgmJfFU,8296
|
|
48
|
+
commkit/equalization/linear.py,sha256=dgheW19-s7LqBP-lZb6zM-xf5YTfgH9FF7axLm574sA,14671
|
|
49
|
+
commkit/equalization/polarization.py,sha256=Ti44l3RRvdde6q38uxTAFZatzjX0mnK3uw1ZRqd5OWc,36513
|
|
50
|
+
commkit/equalization/result.py,sha256=SdmHSmLUDGpPaTiGctJpLxXCxQOfJFTuijtcQOpw2TA,8142
|
|
51
|
+
commkit/equalization/sequential.py,sha256=_8zM7yMDfek7AlNEmpyF9bMDupu1psUvTjEFYIPmTlA,120190
|
|
52
|
+
commkit/impairments/__init__.py,sha256=_GsY_M3flYVRHDq0FP9n2F-_RSTXQg9mSBxtW7w4Ugg,1437
|
|
53
|
+
commkit/impairments/frontend.py,sha256=YKTRnwPi9YBTgU4x0hmFi_1ik0GPjjTgpeXRlcKw4i0,6850
|
|
54
|
+
commkit/impairments/noise.py,sha256=OgvyA6DD9qS7JnqMCemL0DRfZgT8YOO6d6fYPEJPq7k,3722
|
|
55
|
+
commkit/impairments/source.py,sha256=9nqZqYhvE8LbQVQTRbnUfX_oN2pRY6W-CUnzVztFabM,7298
|
|
56
|
+
commkit/impairments/channel/__init__.py,sha256=GzEAZu6PxYlYqlYh8SPTjiY7fN9F6piiLmdAmnr3hO0,471
|
|
57
|
+
commkit/impairments/channel/linear.py,sha256=P9e9gmYg9b_LIOsLVpm9mQ0sOpom1sEh8K35lztK9wc,9947
|
|
58
|
+
commkit/impairments/channel/nonlinear.py,sha256=0LhoqErFEdZ-xQznC4wyqoW8t_JhmDyOJqCNimPzo80,456
|
|
59
|
+
commkit/mapping/__init__.py,sha256=MB6DGYDBG4tO0hLXl3PRmJ4pJ0g1J1kpJC5hyCue1dc,1511
|
|
60
|
+
commkit/mapping/bits.py,sha256=hFksHu6_evXZTf4ZppsKtBlc7wrE_vvIlRxUfTgPSR0,8599
|
|
61
|
+
commkit/mapping/constellation.py,sha256=B-Aur0_eZqeXhAV9qsR23fWgOkzYGYYGs_TbsWFnnOQ,4975
|
|
62
|
+
commkit/mapping/gray.py,sha256=t3bPUDyOn3VIDYwjqqo-uOXl777oqq06CnGF-1B45So,11439
|
|
63
|
+
commkit/mapping/llr.py,sha256=stT9sHW4J8iOQelqqLno9Y14mzgP_FCwujOuRDxUXzM,9024
|
|
64
|
+
commkit/mapping/shaping.py,sha256=qxPq8j6zk5Cu9knBluFMc_9k1J84-_5OW96dAz_NEV8,6939
|
|
65
|
+
commkit/plotting/__init__.py,sha256=A9QdogNOglW6Gqz6FuMIgnV2Jzc0tNvj43gBfPBt_4Y,2512
|
|
66
|
+
commkit/plotting/analysis.py,sha256=eYosIuRH3KKiFEDDqgOeFgjINNXbQNeL6A72obVB2kU,19256
|
|
67
|
+
commkit/plotting/constellation.py,sha256=faCRkYUYYaoLntVwtJuU8849Q7WFrkDv2zp4Ion4stI,15219
|
|
68
|
+
commkit/plotting/equalizer.py,sha256=jUyY5yywWD132xWRLpzoq6gFsUSihVSgxA6zaerM4_Y,12517
|
|
69
|
+
commkit/plotting/eye.py,sha256=_nFmtT5_Gwz0B1Gwgg556TjfGQXdDcZcIUQ6UO9ijfg,11784
|
|
70
|
+
commkit/plotting/spectral.py,sha256=E3QvZG-t2ohGoU9QkZJvk1uI4BHiFml_ZVv7Eqge3ig,18133
|
|
71
|
+
commkit/plotting/sync.py,sha256=7txbQYmqjJD6D9WOmqHSe4e2pvWrFXwz0vlaP4Ic9l0,31235
|
|
72
|
+
commkit/plotting/theme.py,sha256=N2QmSnVMg4L427kjKdXHO9HDnJKM752scBNeCXHBytg,6832
|
|
73
|
+
commkit/plotting/waveform.py,sha256=bzGxp1_uBo6DfpxK1Bo8YnCXZ8p2Mob2yj7zxQGnU4c,5503
|
|
74
|
+
commkit/recovery/__init__.py,sha256=mtEqN3oKm1E6vy_qrICSF1Y55oAaxDZVW0RTlGZg1yQ,1659
|
|
75
|
+
commkit/recovery/bps.py,sha256=d5d2vkEg0_AX-eak06ZHUTEaXsxCLQlxHZXnw_RbHnQ,14469
|
|
76
|
+
commkit/recovery/corrections.py,sha256=Km8tV7WrpbsNzxTcJYvOGNgmp38St4RIikzwgTOIirM,30180
|
|
77
|
+
commkit/recovery/pilots.py,sha256=pIXXGK_ZUZitJ91yIYjwHqDGGN877_reqbaam2cn0pY,34460
|
|
78
|
+
commkit/recovery/pll.py,sha256=NNrypJWQuJ-u96QKdAMBeohszu1hHuAOmpFciaLP03c,17882
|
|
79
|
+
commkit/recovery/tikhonov.py,sha256=C2LakaYs3NmuzfBJQ6RwWnNIBPjvRAA1UboLee5bATU,16219
|
|
80
|
+
commkit/recovery/viterbi_viterbi.py,sha256=SPy1mEbwueBSA9dSAcAIHWXBiasSBgrHnFfm3G-K5LU,9567
|
|
81
|
+
commkit-1.0.0.dist-info/METADATA,sha256=V6qOUaUJs5VKFYGAZvfeYQLGpFwnVvW3Sr2Kw1WsA7E,6692
|
|
82
|
+
commkit-1.0.0.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
|
|
83
|
+
commkit-1.0.0.dist-info/licenses/LICENSE,sha256=X9bm1DEtmmDugEV7ulyQzdX-fZcZ711lPAwtdDiU2yg,1059
|
|
84
|
+
commkit-1.0.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 lokgar
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction acting including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom it is furnished to do so,
|
|
10
|
+
subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|