ezmsg-sigproc 2.1.0__py3-none-any.whl → 2.3.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.
@@ -0,0 +1,72 @@
1
+ Metadata-Version: 2.4
2
+ Name: ezmsg-sigproc
3
+ Version: 2.3.0
4
+ Summary: Timeseries signal processing implementations in ezmsg
5
+ Author-email: Griffin Milsap <griffin.milsap@gmail.com>, Preston Peranich <pperanich@gmail.com>, Chadwick Boulay <chadwick.boulay@gmail.com>
6
+ License-Expression: MIT
7
+ License-File: LICENSE.txt
8
+ Requires-Python: >=3.10.15
9
+ Requires-Dist: array-api-compat>=1.11.1
10
+ Requires-Dist: ezmsg>=3.6.0
11
+ Requires-Dist: numba>=0.61.0
12
+ Requires-Dist: numpy>=1.26.0
13
+ Requires-Dist: pywavelets>=1.6.0
14
+ Requires-Dist: scipy>=1.13.1
15
+ Requires-Dist: sparse>=0.15.4
16
+ Description-Content-Type: text/markdown
17
+
18
+ # ezmsg.sigproc
19
+
20
+ ## Overview
21
+
22
+ ezmsg-sigproc offers timeseries signal‑processing primitives built atop the ezmsg message‑passing framework. Core dependencies include ezmsg, numpy, scipy, pywavelets, and sparse; the project itself is managed through hatchling and uses VCS hooks to populate __version__.py.
23
+
24
+ ## Installation
25
+
26
+ Install the latest release from pypi with: `pip install ezmsg-sigproc` (or `uv add ...` or `poetry add ...`).
27
+
28
+ You can install pre-release versions directly from GitHub:
29
+
30
+ * Using `pip`: `pip install git+https://github.com/ezmsg-org/ezmsg-sigproc.git@dev`
31
+ * Using `uv`: `uv add git+https://github.com/ezmsg-org/ezmsg-sigproc --branch dev`
32
+ * Using `poetry`: `poetry add "git+https://github.com/ezmsg-org/ezmsg-sigproc.git@dev"`
33
+
34
+ > See the [Development](#development) section below for installing with the intention of developing.
35
+
36
+ ## Source layout & key modules
37
+ * All source resides under src/ezmsg/sigproc, which contains a suite of processors (for example, filter.py, spectrogram.py, spectrum.py, sampler.py) and math and util subpackages.
38
+ * The framework’s backbone is base.py, defining standard protocols—Processor, Producer, Consumer, and Transformer—that enable both stateless and stateful processing chains.
39
+ * Filtering is implemented in filter.py, providing settings dataclasses and a stateful transformer that applies supplied coefficients to incoming data.
40
+ * Spectral analysis uses a composite spectrogram transformer chaining windowing, spectrum computation, and axis adjustments.
41
+
42
+ ## Operating styles: Standalone processors vs. ezmsg pipelines
43
+ While each processor is designed to be assembled into an ezmsg pipeline, the components are also well‑suited for offline, ad‑hoc analysis. You can instantiate processors directly in scripts or notebooks for quick prototyping or to validate results from other code. The companion Unit wrappers, however, are meant for assembling processors into a full ezmsg pipeline.
44
+
45
+ A fully defined ezmsg pipeline shines in online streaming scenarios where message routing, scheduling, and latency handling are crucial. Nevertheless, you can run the same pipeline offline—say, within a Jupyter notebook—if your analysis benefits from ezmsg’s structured execution model. Deciding between a standalone processor and a full pipeline comes down to the trade‑off between simplicity and the operational overhead of the pipeline:
46
+
47
+ * Standalone processors: Low overhead, ideal for one‑off or exploratory offline tasks.
48
+ * Pipeline + Unit wrappers: Additional setup cost but bring concurrency, standardized interfaces, and automatic message flow—useful when your offline experiment mirrors a live system or when you require fine‑grained pipeline behavior.
49
+
50
+ ## Documentation & tests
51
+ * `docs/ProcessorsBase.md` details the processor hierarchy and generic type patterns, providing a solid foundation for custom components.
52
+ * Unit tests (e.g., `tests/unit/test_sampler.py`) offer concrete examples of usage, showcasing sampler generation, windowing, and message handling.
53
+
54
+ ## Where to learn next
55
+ * Study docs/ProcessorsBase.md to master the processor architecture.
56
+ * Explore unit tests for hands‑on examples of composing processors and Units.
57
+ * Review the ezmsg framework in pyproject.toml to understand the surrounding ecosystem.
58
+ * Experiment with the code—try running processors standalone and then integrate them into a small pipeline to observe the trade‑offs firsthand.
59
+
60
+ This approach equips newcomers to choose the right level of abstraction—raw processor, Unit wrapper, or full pipeline—based on the demands of their analysis or streaming application.
61
+
62
+ ## Development
63
+
64
+ We use [`uv`](https://docs.astral.sh/uv/getting-started/installation/) for development. It is not strictly required, but if you intend to contribute to ezmsg-sigproc then using `uv` will lead to the smoothest collaboration.
65
+
66
+ 1. Install [`uv`](https://docs.astral.sh/uv/getting-started/installation/) if not already installed.
67
+ 2. Fork ezmsg-sigproc and clone your fork to your local computer.
68
+ 3. Open a terminal and `cd` to the cloned folder.
69
+ 4. `uv sync` to create a .venv and install dependencies.
70
+ 5. `uv run pre-commit install` to install pre-commit hooks to do linting and formatting.
71
+ 6. Run the test suite before finalizing your edits: `uv run pytest tests`
72
+ 7. Make a PR against the `dev` branch of the main repo.
@@ -1,5 +1,5 @@
1
1
  ezmsg/sigproc/__init__.py,sha256=8K4IcOA3-pfzadoM6s2Sfg5460KlJUocGgyTJTJl96U,52
2
- ezmsg/sigproc/__version__.py,sha256=dseuoOPG9WZ1Ezr1SC3wS9_hczkX-b1NdE4TQPHFJso,511
2
+ ezmsg/sigproc/__version__.py,sha256=KNFYe-Vtdt7Z-oHyl8jmDAQ9qXoCNMAEXigj6BR1QUI,704
3
3
  ezmsg/sigproc/activation.py,sha256=qWAhpbFBxSoqbGy4P9JKE5LY-5v8rQI1U81OvNxBG2Y,2820
4
4
  ezmsg/sigproc/adaptive_lattice_notch.py,sha256=3M65PrZpdgBlQtE7Ph4Gu2ISIyWw4j8Xxhm5PpSkLFw,9102
5
5
  ezmsg/sigproc/affinetransform.py,sha256=WU495KoDKZfHPS3Dumh65rgf639koNlfDIx_torIByg,8662
@@ -10,18 +10,24 @@ ezmsg/sigproc/butterworthfilter.py,sha256=7ZP4CRsXBt3-5dzyUjD45vc0J3Fhpm4CLrk-ps
10
10
  ezmsg/sigproc/cheby.py,sha256=-aSauAwxJmmSSiRaw5qGY9rvYFOmk1bZlS4gGrS0jls,3737
11
11
  ezmsg/sigproc/combfilter.py,sha256=5UCfzGESpS5LSx6rxZv8_n25ZUvOOmws-mM_gpTZNhU,4777
12
12
  ezmsg/sigproc/decimate.py,sha256=Lz46fBllWagu17QeQzgklm6GWCV-zPysiydiby2IElU,2347
13
+ ezmsg/sigproc/denormalize.py,sha256=qMXkxpNoEACHzEfluA0wV4716HQyGE_1tcFAa8uzhIc,3091
13
14
  ezmsg/sigproc/detrend.py,sha256=7bpjFKdk2b6FdVn2GEtMbWtCuk7ToeiYKEBHVbN4Gd0,903
14
15
  ezmsg/sigproc/diff.py,sha256=P5BBjR7KdaCL9aD3GG09cmC7a-3cxDeEUw4nKdQ1HY8,2895
15
16
  ezmsg/sigproc/downsample.py,sha256=0X6EwPZ_XTwA2-nx5w-2HmMZUEDFuGAYF5EmPSuuVj8,3721
16
17
  ezmsg/sigproc/ewma.py,sha256=W_VS2MxiO1J7z2XS6rtnLnCEXxdRPQbMKtZduBwqTEQ,6369
17
18
  ezmsg/sigproc/ewmfilter.py,sha256=EPlocRdKORj575VV1YUzcNsVcq-pYgdEJ7_m9WfpVnY,4795
18
19
  ezmsg/sigproc/extract_axis.py,sha256=Gl8Hl_Ho2pPzchPjfseVHVRAqxj6eOvUQZlzfYRA7eI,1603
19
- ezmsg/sigproc/filter.py,sha256=i5adfND0NATrk2RewkWQ0C3RKRGiElr5AIB2eZE4Dr8,11225
20
+ ezmsg/sigproc/fbcca.py,sha256=8NTJAOpHIvNFwQepui2_ZaJV4SMDFgXrqoWJyiQdF5U,12362
21
+ ezmsg/sigproc/filter.py,sha256=1MQUZDFIf6HAHuuhGQEvH4Yd6Jv_vv12PM25YaHjdxc,11921
20
22
  ezmsg/sigproc/filterbank.py,sha256=pJzv_G6chgWa1ARmRjMAMgt9eEGnA-ZbMSge4EWrcYY,13633
23
+ ezmsg/sigproc/filterbankdesign.py,sha256=OfIXM0ushSqbdSQG9DZB1Mh57d-lqdJQX8aqfxNN67E,4734
24
+ ezmsg/sigproc/firfilter.py,sha256=MCrwY3DLq-uMLX04JswVB9oHBSYJGbdUiQYW6eRdkxE,3805
25
+ ezmsg/sigproc/gaussiansmoothing.py,sha256=NaVezgNwdvp-kam1I_7lSID4Obi0UCxZshH7A2afaVg,2692
26
+ ezmsg/sigproc/kaiser.py,sha256=WsZB8a4DP7WwrYLlGczHS61L86TiH6qEStAB6zxODhY,3502
21
27
  ezmsg/sigproc/messages.py,sha256=y_twVPK7TxRj8ajmuSuBuxwvLTgyv9OF7Y7v9bw1tfs,926
22
28
  ezmsg/sigproc/quantize.py,sha256=VzaqE6PatibEjkk7XrGO-ubAXYurAed9FYOn4bcQZQk,2193
23
- ezmsg/sigproc/resample.py,sha256=XQzEbUq44qTx5tXX2QXd14hkMb7C3LXT3CqbC161X1M,11600
24
- ezmsg/sigproc/sampler.py,sha256=qrw-7US3mqrGS7lOio7P_za0MSPgBhSxinIrMf1P3Os,11026
29
+ ezmsg/sigproc/resample.py,sha256=wqSM7g3QrcrklCeGVNN4l_qZLSXRUPHXCUxl1L47300,11654
30
+ ezmsg/sigproc/sampler.py,sha256=D5oMIZHAJS6XIKMdOHsDw97d4ZxfNP7iZwpc6J8Jmpk,10898
25
31
  ezmsg/sigproc/scaler.py,sha256=fCLHvCNUSgv0XChf8iS9s5uHCSCVjCasM2TCvyG5BwQ,4111
26
32
  ezmsg/sigproc/signalinjector.py,sha256=hGC837JyDLtAGrfsdMwzEoOqWXiwP7r7sGlUC9nahTY,2948
27
33
  ezmsg/sigproc/slicer.py,sha256=QKiq8wOTXf3kwWSCiZEGn9rA9HaM_q6PbXvtfpgjTXw,5417
@@ -31,7 +37,7 @@ ezmsg/sigproc/spectrum.py,sha256=xTSP8QFCG9M3NHveFkcks_wI-RzD7kM_fR1dmaLtiEQ,973
31
37
  ezmsg/sigproc/synth.py,sha256=DdE9yEXGrDRb745cOgKNpY2frI5uM2VHmCsaZO-UkBk,24547
32
38
  ezmsg/sigproc/transpose.py,sha256=AIwz8X2AS7Tf1_aidND132uDuB04M4f3-0iRYq0ysC8,4530
33
39
  ezmsg/sigproc/wavelets.py,sha256=g9nYRF4oVov2uLC0tfzPOLjaQah_HhM0ckhQ4m23mms,7507
34
- ezmsg/sigproc/window.py,sha256=VAFqZsHu-J3hfBnbbUk9d7MIsbbPIgrqg3OSz7uhl_o,16242
40
+ ezmsg/sigproc/window.py,sha256=DjfD-4zd_phUbJbGTGijAm4H7O-bNVPdyCrSfvXJ_HQ,16192
35
41
  ezmsg/sigproc/math/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
42
  ezmsg/sigproc/math/abs.py,sha256=9E0A-p_Qa1SVzqbr1sesjgpu6-XGUZkcRJVK5jcNc0U,685
37
43
  ezmsg/sigproc/math/clip.py,sha256=bBGfy45CKsUIhrznYZdpgUa0Lz7GsOuFl87IeL0qNA8,1057
@@ -41,11 +47,13 @@ ezmsg/sigproc/math/log.py,sha256=bx0om3Qi3ZShExEZ-IH5Xrg3XFjNEmjVygWlXWjyrv8,147
41
47
  ezmsg/sigproc/math/scale.py,sha256=kMQRPYnm1o_9lC1EtIkoZOWaAWOWWbeT4ri1q7Hs7Fc,898
42
48
  ezmsg/sigproc/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
49
  ezmsg/sigproc/util/asio.py,sha256=PQew73hB1oRmp7pfTqx-c4uo1zqgjxvZcTZCROQrEP4,5270
50
+ ezmsg/sigproc/util/axisarray_buffer.py,sha256=NEGOYxf1TN8_QQ6Vo-iIf_ZuxlqB-0v0_mgGAqJzlwM,14203
51
+ ezmsg/sigproc/util/buffer.py,sha256=wbTyj0p-Ib17rJ_ooI7x0VT_f8nhn9i3fpIuDdJQnic,19899
44
52
  ezmsg/sigproc/util/message.py,sha256=l_b1b6bXX8N6VF9RbUELzsHs73cKkDURBdIr0lt3CY0,909
45
53
  ezmsg/sigproc/util/profile.py,sha256=KNJ_QkKelQHNEp2C8MhqzdhYydMNULc_NQq3ccMfzIk,5775
46
- ezmsg/sigproc/util/sparse.py,sha256=8Ke0jh3jRPi_TwIdLTwLdojQiaqPs6QV-Edqpx81VoI,1036
54
+ ezmsg/sigproc/util/sparse.py,sha256=mE64p1tYb5A1shaRE1D-VnH-RshbLb8g8kXSXxnA-J4,4842
47
55
  ezmsg/sigproc/util/typeresolution.py,sha256=5R7xmG-F4CkdqQ5aoQnqM-htQb-VwAJl58jJgxtClys,3146
48
- ezmsg_sigproc-2.1.0.dist-info/METADATA,sha256=DuXuzu_YGIIldSiNwz9g72hu5x8JAHjxhGGsy5JXkS0,2479
49
- ezmsg_sigproc-2.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
50
- ezmsg_sigproc-2.1.0.dist-info/licenses/LICENSE.txt,sha256=seu0tKhhAMPCUgc1XpXGGaCxY1YaYvFJwqFuQZAl2go,1100
51
- ezmsg_sigproc-2.1.0.dist-info/RECORD,,
56
+ ezmsg_sigproc-2.3.0.dist-info/METADATA,sha256=EDFO5xk2hUAP6WseYifJK4SjYgqpvT903Lf_kQdPQWI,4977
57
+ ezmsg_sigproc-2.3.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
58
+ ezmsg_sigproc-2.3.0.dist-info/licenses/LICENSE.txt,sha256=seu0tKhhAMPCUgc1XpXGGaCxY1YaYvFJwqFuQZAl2go,1100
59
+ ezmsg_sigproc-2.3.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.27.0
2
+ Generator: hatchling 1.28.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -1,62 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: ezmsg-sigproc
3
- Version: 2.1.0
4
- Summary: Timeseries signal processing implementations in ezmsg
5
- Author-email: Griffin Milsap <griffin.milsap@gmail.com>, Preston Peranich <pperanich@gmail.com>, Chadwick Boulay <chadwick.boulay@gmail.com>
6
- License-Expression: MIT
7
- License-File: LICENSE.txt
8
- Requires-Python: >=3.10.15
9
- Requires-Dist: array-api-compat>=1.11.1
10
- Requires-Dist: ezmsg>=3.6.0
11
- Requires-Dist: numba>=0.61.0
12
- Requires-Dist: numpy>=1.26.0
13
- Requires-Dist: pywavelets>=1.6.0
14
- Requires-Dist: scipy>=1.13.1
15
- Requires-Dist: sparse>=0.15.4
16
- Provides-Extra: test
17
- Requires-Dist: flake8>=7.1.1; extra == 'test'
18
- Requires-Dist: frozendict>=2.4.4; extra == 'test'
19
- Requires-Dist: pytest-asyncio>=0.24.0; extra == 'test'
20
- Requires-Dist: pytest-cov>=5.0.0; extra == 'test'
21
- Requires-Dist: pytest>=8.3.3; extra == 'test'
22
- Description-Content-Type: text/markdown
23
-
24
- # ezmsg.sigproc
25
-
26
- Timeseries signal processing implementations for ezmsg
27
-
28
- ## Dependencies
29
-
30
- * `ezmsg`
31
- * `numpy`
32
- * `scipy`
33
- * `pywavelets`
34
-
35
- ## Installation
36
-
37
- ### Release
38
-
39
- Install the latest release from pypi with: `pip install ezmsg-sigproc` (or `uv add ...` or `poetry add ...`).
40
-
41
- ### Development Version
42
-
43
- You can add the development version of `ezmsg-sigproc` to your project's dependencies in one of several ways.
44
-
45
- You can clone it and add its path to your project dependencies. You may wish to do this if you intend to edit `ezmsg-sigproc`. If so, please refer to the [Developers](#developers) section below.
46
-
47
- You can also add it directly from GitHub:
48
-
49
- * Using `pip`: `pip install git+https://github.com/ezmsg-org/ezmsg-sigproc.git@dev`
50
- * Using `poetry`: `poetry add "git+https://github.com/ezmsg-org/ezmsg-sigproc.git@dev"`
51
- * Using `uv`: `uv add git+https://github.com/ezmsg-org/ezmsg-sigproc --branch dev`
52
-
53
- ## Developers
54
-
55
- We use [`uv`](https://docs.astral.sh/uv/getting-started/installation/) for development. It is not strictly required, but if you intend to contribute to ezmsg-sigproc then using `uv` will lead to the smoothest collaboration.
56
-
57
- 1. Install [`uv`](https://docs.astral.sh/uv/getting-started/installation/) if not already installed.
58
- 2. Fork ezmsg-sigproc and clone your fork to your local computer.
59
- 3. Open a terminal and `cd` to the cloned folder.
60
- 4. `uv sync` to create a .venv and install dependencies.
61
- 5. `uv run pre-commit install` to install pre-commit hooks to do linting and formatting.
62
- 6. After editing code and making commits, Run the test suite before making a PR: `uv run pytest tests`