ezmsg-sigproc 2.6.0__py3-none-any.whl → 2.8.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.
Files changed (49) hide show
  1. ezmsg/sigproc/__version__.py +2 -2
  2. ezmsg/sigproc/activation.py +1 -1
  3. ezmsg/sigproc/adaptive_lattice_notch.py +1 -2
  4. ezmsg/sigproc/affinetransform.py +26 -5
  5. ezmsg/sigproc/aggregate.py +6 -6
  6. ezmsg/sigproc/bandpower.py +6 -6
  7. ezmsg/sigproc/butterworthzerophase.py +1 -1
  8. ezmsg/sigproc/coordinatespaces.py +142 -0
  9. ezmsg/sigproc/decimate.py +1 -1
  10. ezmsg/sigproc/denormalize.py +3 -4
  11. ezmsg/sigproc/detrend.py +1 -1
  12. ezmsg/sigproc/diff.py +3 -4
  13. ezmsg/sigproc/downsample.py +5 -6
  14. ezmsg/sigproc/ewma.py +45 -9
  15. ezmsg/sigproc/extract_axis.py +1 -2
  16. ezmsg/sigproc/fbcca.py +4 -4
  17. ezmsg/sigproc/filter.py +3 -4
  18. ezmsg/sigproc/filterbank.py +5 -5
  19. ezmsg/sigproc/filterbankdesign.py +4 -4
  20. ezmsg/sigproc/fir_hilbert.py +1 -1
  21. ezmsg/sigproc/linear.py +118 -0
  22. ezmsg/sigproc/math/abs.py +3 -0
  23. ezmsg/sigproc/math/add.py +1 -1
  24. ezmsg/sigproc/math/clip.py +3 -0
  25. ezmsg/sigproc/math/difference.py +2 -0
  26. ezmsg/sigproc/math/invert.py +2 -0
  27. ezmsg/sigproc/math/log.py +3 -0
  28. ezmsg/sigproc/math/scale.py +2 -0
  29. ezmsg/sigproc/quantize.py +1 -2
  30. ezmsg/sigproc/resample.py +4 -4
  31. ezmsg/sigproc/rollingscaler.py +4 -4
  32. ezmsg/sigproc/sampler.py +6 -6
  33. ezmsg/sigproc/scaler.py +56 -8
  34. ezmsg/sigproc/signalinjector.py +3 -4
  35. ezmsg/sigproc/slicer.py +5 -6
  36. ezmsg/sigproc/spectrogram.py +4 -4
  37. ezmsg/sigproc/spectrum.py +5 -6
  38. ezmsg/sigproc/transpose.py +5 -6
  39. ezmsg/sigproc/util/axisarray_buffer.py +2 -0
  40. ezmsg/sigproc/util/buffer.py +4 -0
  41. ezmsg/sigproc/util/sparse.py +2 -0
  42. ezmsg/sigproc/wavelets.py +4 -4
  43. ezmsg/sigproc/window.py +5 -5
  44. ezmsg_sigproc-2.8.0.dist-info/METADATA +60 -0
  45. ezmsg_sigproc-2.8.0.dist-info/RECORD +65 -0
  46. ezmsg_sigproc-2.6.0.dist-info/METADATA +0 -73
  47. ezmsg_sigproc-2.6.0.dist-info/RECORD +0 -63
  48. {ezmsg_sigproc-2.6.0.dist-info → ezmsg_sigproc-2.8.0.dist-info}/WHEEL +0 -0
  49. {ezmsg_sigproc-2.6.0.dist-info → ezmsg_sigproc-2.8.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,73 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: ezmsg-sigproc
3
- Version: 2.6.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>, Kyle McGraw <kmcgraw@blackrockneuro.com>
6
- License-Expression: MIT
7
- License-File: LICENSE
8
- Requires-Python: >=3.10.15
9
- Requires-Dist: array-api-compat>=1.11.1
10
- Requires-Dist: ezmsg-baseproc>=1.0.3
11
- Requires-Dist: ezmsg>=3.6.0
12
- Requires-Dist: numba>=0.61.0
13
- Requires-Dist: numpy>=1.26.0
14
- Requires-Dist: pywavelets>=1.6.0
15
- Requires-Dist: scipy>=1.13.1
16
- Requires-Dist: sparse>=0.15.4
17
- Description-Content-Type: text/markdown
18
-
19
- # ezmsg.sigproc
20
-
21
- ## Overview
22
-
23
- 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.
24
-
25
- ## Installation
26
-
27
- Install the latest release from pypi with: `pip install ezmsg-sigproc` (or `uv add ...` or `poetry add ...`).
28
-
29
- You can install pre-release versions directly from GitHub:
30
-
31
- * Using `pip`: `pip install git+https://github.com/ezmsg-org/ezmsg-sigproc.git@dev`
32
- * Using `uv`: `uv add git+https://github.com/ezmsg-org/ezmsg-sigproc --branch dev`
33
- * Using `poetry`: `poetry add "git+https://github.com/ezmsg-org/ezmsg-sigproc.git@dev"`
34
-
35
- > See the [Development](#development) section below for installing with the intention of developing.
36
-
37
- ## Source layout & key modules
38
- * 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.
39
- * The framework’s backbone is base.py, defining standard protocols—Processor, Producer, Consumer, and Transformer—that enable both stateless and stateful processing chains.
40
- * Filtering is implemented in filter.py, providing settings dataclasses and a stateful transformer that applies supplied coefficients to incoming data.
41
- * Spectral analysis uses a composite spectrogram transformer chaining windowing, spectrum computation, and axis adjustments.
42
-
43
- ## Operating styles: Standalone processors vs. ezmsg pipelines
44
- 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.
45
-
46
- 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:
47
-
48
- * Standalone processors: Low overhead, ideal for one‑off or exploratory offline tasks.
49
- * 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.
50
-
51
- ## Documentation & tests
52
- * `docs/ProcessorsBase.md` details the processor hierarchy and generic type patterns, providing a solid foundation for custom components.
53
- * Unit tests (e.g., `tests/unit/test_sampler.py`) offer concrete examples of usage, showcasing sampler generation, windowing, and message handling.
54
-
55
- ## Where to learn next
56
- * Study docs/ProcessorsBase.md to master the processor architecture.
57
- * Explore unit tests for hands‑on examples of composing processors and Units.
58
- * Review the ezmsg framework in pyproject.toml to understand the surrounding ecosystem.
59
- * Experiment with the code—try running processors standalone and then integrate them into a small pipeline to observe the trade‑offs firsthand.
60
-
61
- 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.
62
-
63
- ## Development
64
-
65
- 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.
66
-
67
- 1. Install [`uv`](https://docs.astral.sh/uv/getting-started/installation/) if not already installed.
68
- 2. Fork ezmsg-sigproc and clone your fork to your local computer.
69
- 3. Open a terminal and `cd` to the cloned folder.
70
- 4. `uv sync` to create a .venv and install dependencies.
71
- 5. `uv run pre-commit install` to install pre-commit hooks to do linting and formatting.
72
- 6. Run the test suite before finalizing your edits: `uv run pytest tests`
73
- 7. Make a PR against the `dev` branch of the main repo.
@@ -1,63 +0,0 @@
1
- ezmsg/sigproc/__init__.py,sha256=8K4IcOA3-pfzadoM6s2Sfg5460KlJUocGgyTJTJl96U,52
2
- ezmsg/sigproc/__version__.py,sha256=2GXF52IIutfiInnoWGItHWB6xM45HGVQYJ3J77-iUV0,704
3
- ezmsg/sigproc/activation.py,sha256=Zh3kbb8eNOUK3ud6rkPAostIuRAP57mQj37XgKY6xdo,2746
4
- ezmsg/sigproc/adaptive_lattice_notch.py,sha256=KJQE4ugmQ0Si09YqBoasgDr_lDzeLuYG0xHtssxLgi0,8810
5
- ezmsg/sigproc/affinetransform.py,sha256=r6WemRI38dxHIOPWvfH0bHXiT4AwFu-yM5nF1G7oA-0,8406
6
- ezmsg/sigproc/aggregate.py,sha256=8Yn_ixIdywWNO7MAb1Kh889nFQ0awogQJzscpyCRHQ8,9039
7
- ezmsg/sigproc/bandpower.py,sha256=--tKRWyHU4gREAVBvNN5AJgtjyuKA848WYZe2i-t1xo,2255
8
- ezmsg/sigproc/base.py,sha256=SJvKEb8gw6mUMwlV5sH0iPG0bXrgS8tvkPwhI-j89MQ,3672
9
- ezmsg/sigproc/butterworthfilter.py,sha256=NKTGkgjvlmC1Dc9gD2Z6UBzUq12KicfnczrzM5ZTosk,5255
10
- ezmsg/sigproc/butterworthzerophase.py,sha256=QbJ_gGXrIfVOl_OybD07orO460owSMP5yTDMcGgASP0,4109
11
- ezmsg/sigproc/cheby.py,sha256=B8pGt5_pOBpNZCmaibNl_NKkyuasd8ZEJXeTDCTaino,3711
12
- ezmsg/sigproc/combfilter.py,sha256=MSxr1I-jBePW_9AuCiv3RQ1HUNxIsNhLk0q1Iu8ikAw,4766
13
- ezmsg/sigproc/decimate.py,sha256=t_7ycFDT6TLwtqjKF150ngeRoUPOHrA1HYXvnWPquuc,2327
14
- ezmsg/sigproc/denormalize.py,sha256=CaH34QJ3OvsnhZT7bhCw2KVxVKvaU24ui6BS5-oe_x0,3040
15
- ezmsg/sigproc/detrend.py,sha256=TxqZ41AdjsH_yOTj8fBoKTnbKCbdyzVibpCHWkFARYU,898
16
- ezmsg/sigproc/diff.py,sha256=PC8KJAqaXMsdS_kPlDSEtXpcQ5rk92Ze_TeUjsVwbN0,2782
17
- ezmsg/sigproc/downsample.py,sha256=-C8enCVvPZx-kY-BWdgWJ_cOHD6b79B7lRxk5da0uvg,3671
18
- ezmsg/sigproc/ewma.py,sha256=9Gkdbtmh1YczVfNKMdQwYw6S9qdQYvFDd50d6HbAJuo,6239
19
- ezmsg/sigproc/ewmfilter.py,sha256=9AuvVn3TDdf5R4bVolYNM46AtDVHFJa8MLGltY6mYPE,4795
20
- ezmsg/sigproc/extract_axis.py,sha256=4beqJ0EyUkT9Pa1FdYa9IteHGaxkh87j5_rYiZlvIG4,1598
21
- ezmsg/sigproc/fbcca.py,sha256=BufUMWyhzCRL6h-eNIbOGRC-5f_vX6ni8lp4k3bjh9U,12034
22
- ezmsg/sigproc/filter.py,sha256=rLmJCgPevoODTL3g_D6czwVvcCD4uK8hJJ0tKfTH5_w,11609
23
- ezmsg/sigproc/filterbank.py,sha256=61bEqKrrdye2RI6dbysr9PDwB4N4I0A2DUoUECHojiw,13047
24
- ezmsg/sigproc/filterbankdesign.py,sha256=ePOJmEVKWx2wHxo4ZXDBH425bEnf_p42Z_sxkrUUFdU,4703
25
- ezmsg/sigproc/fir_hilbert.py,sha256=aurBCcpvsG69qD6Du2aHMye4HCBXF4RXzACdSxIy_Z8,10859
26
- ezmsg/sigproc/fir_pmc.py,sha256=Ze2pd9K8XrdDhgJZG2E7x-5C2hfd6kIns4bYjTJsBvc,6997
27
- ezmsg/sigproc/firfilter.py,sha256=7r_I476nYuixJsuwc_hQ0Fbq8WB0gnYBZUKs3zultOQ,3790
28
- ezmsg/sigproc/gaussiansmoothing.py,sha256=BfXm9YQoOtieM4ABK2KRgxeQz055rd7mqtTVqmjT3Rk,2672
29
- ezmsg/sigproc/kaiser.py,sha256=dIwgHbLXUHPtdotsGNLE9VG_clhcMgvVnSoFkMVgF9M,3483
30
- ezmsg/sigproc/messages.py,sha256=KQczHTeifn4BZycChN8ZcpfZoQW3lC_xuFmN72QT97s,925
31
- ezmsg/sigproc/quantize.py,sha256=d-Dpv-l7abBOp_EZYhqRms12YbTIZEjKbvp4XYrHNkg,2187
32
- ezmsg/sigproc/resample.py,sha256=RGYRuYM8YjGUMqqOu0LoBwzXNCl5cX3BZH6-woEvtrI,11380
33
- ezmsg/sigproc/rollingscaler.py,sha256=j5hoWgJMbeDST7FXE6UBLSeR2hhfACIqQvFKr92ZTZA,8503
34
- ezmsg/sigproc/sampler.py,sha256=JC2iNdlz-vMP1P35kFviHN6Knj57JOA4dWva80ByRZA,10752
35
- ezmsg/sigproc/scaler.py,sha256=mGZZ59cHSpTKaBA9KsjGgy4Nxhw05pUbzumihI5cexw,4033
36
- ezmsg/sigproc/signalinjector.py,sha256=xfqDuw4Ei9f1eP9HZhp-keGXFfp5iKtL86jXL4iKe4Y,2866
37
- ezmsg/sigproc/slicer.py,sha256=t3w8MMdUvhmcv7hFfmbRQPckFYFTDOVxDGSNFuvIGYc,5187
38
- ezmsg/sigproc/spectral.py,sha256=wFzuihS7qJZMQcp0ds_qCG-zCbvh5DyhFRjn2wA9TWQ,322
39
- ezmsg/sigproc/spectrogram.py,sha256=i3jkZ-6wXfuEG5tpN1jQQSd8mZZDulvw0mGQ1Ijz5A4,2884
40
- ezmsg/sigproc/spectrum.py,sha256=K6arHOh8UlZFUFeDgjybWQlmPAAd1AHWfq2EtwxCv2U,9515
41
- ezmsg/sigproc/transpose.py,sha256=Qcwn0tzWk0s456pIdIKwdlUnL86lR5Y7QJ42SHzxZhk,4373
42
- ezmsg/sigproc/wavelets.py,sha256=TVF7UPMlUsCmf8zJ8aqtUDzA22PlNQjzqwrbD75lJDw,7419
43
- ezmsg/sigproc/window.py,sha256=5WkFQECPAgA7imm_E8E7RiD8i9jsS31voD0JJugNxqA,15326
44
- ezmsg/sigproc/math/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
- ezmsg/sigproc/math/abs.py,sha256=if1L5-WZD9Vl3Kwhnpw_RSRIWR_5i5VzEy_TfD1ZBtA,679
46
- ezmsg/sigproc/math/add.py,sha256=9ohV-NtaR4p2QdTCBE4m_ltlFHISJC5cF2g8O6BIdCQ,3641
47
- ezmsg/sigproc/math/clip.py,sha256=JShzvW545DOxiKmcjQEnYdCJVJrXxWFLhifWhvW21Vo,1057
48
- ezmsg/sigproc/math/difference.py,sha256=rQKPoBGhj_NyZU7NhG4euFrCvCxNDmlXY8k-pjsp2n8,4404
49
- ezmsg/sigproc/math/invert.py,sha256=gily0zMOL3Zwum3VBnfEmANj56b5jAED7RzNKxqPPcU,603
50
- ezmsg/sigproc/math/log.py,sha256=mQm_q73Ac3WWJHV5pRRuk3VIWFpl-GDdNzzjUdtzWXY,1431
51
- ezmsg/sigproc/math/scale.py,sha256=kMQRPYnm1o_9lC1EtIkoZOWaAWOWWbeT4ri1q7Hs7Fc,898
52
- ezmsg/sigproc/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
- ezmsg/sigproc/util/asio.py,sha256=aAj0e7OoBvkRy28k05HL2s9YPCTxOddc05xMN-qd4lQ,577
54
- ezmsg/sigproc/util/axisarray_buffer.py,sha256=PCEKh-zcKl7yD8eSdfgg36Door23KTcNQK5yIri0n0w,14006
55
- ezmsg/sigproc/util/buffer.py,sha256=zbBg94mp0GtDbhMxPEJgMopnlWgqL_R47WzieyYKcv8,19521
56
- ezmsg/sigproc/util/message.py,sha256=ppN3IYtIAwrxWG9JOvgWFn1wDdIumkEzYFfqpH9VQkY,338
57
- ezmsg/sigproc/util/profile.py,sha256=eVOo9pXgusrnH1yfRdd2RsM7Dbe2UpyC0LJ9MfGpB08,416
58
- ezmsg/sigproc/util/sparse.py,sha256=Ijo5B5BCe2eczfZtT_RhgvRRj8UNJvdJwFY1AQw0YNU,4772
59
- ezmsg/sigproc/util/typeresolution.py,sha256=fMFzLi63dqCIclGFLcMdM870OYxJnkeWw6aWKNMk718,362
60
- ezmsg_sigproc-2.6.0.dist-info/METADATA,sha256=hN-gCxRbOhxCS0NV6BlDl4nMSWrhIq1lllPF0GvIJVo,5052
61
- ezmsg_sigproc-2.6.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
62
- ezmsg_sigproc-2.6.0.dist-info/licenses/LICENSE,sha256=seu0tKhhAMPCUgc1XpXGGaCxY1YaYvFJwqFuQZAl2go,1100
63
- ezmsg_sigproc-2.6.0.dist-info/RECORD,,