smoothiepy 0.0.1__py3-none-any.whl → 0.1.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.
- smoothiepy/__init__.py +0 -1
- smoothiepy/core.py +32 -0
- smoothiepy/filter/__init__.py +0 -0
- smoothiepy/filter/basefilter.py +122 -0
- smoothiepy/filter/filter1d.py +324 -0
- smoothiepy/filter/filter2d.py +41 -0
- smoothiepy/filter/filter2d_naive.py +266 -0
- smoothiepy/smoother/__init__.py +0 -0
- smoothiepy/smoother/builder.py +110 -0
- smoothiepy/smoother/smoother.py +200 -0
- smoothiepy-0.1.0.dist-info/METADATA +181 -0
- smoothiepy-0.1.0.dist-info/RECORD +15 -0
- {smoothiepy-0.0.1.dist-info → smoothiepy-0.1.0.dist-info}/WHEEL +1 -1
- smoothiepy-0.1.0.dist-info/entry_points.txt +4 -0
- smoothiepy-0.1.0.dist-info/licenses/LICENSE +674 -0
- smoothiepy/easing_functions.py +0 -238
- smoothiepy-0.0.1.dist-info/LICENSE +0 -21
- smoothiepy-0.0.1.dist-info/METADATA +0 -16
- smoothiepy-0.0.1.dist-info/RECORD +0 -6
@@ -0,0 +1,181 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: smoothiepy
|
3
|
+
Version: 0.1.0
|
4
|
+
Summary: Smooth real-time data streams like eye tracking or sensor input with this lightweight package.
|
5
|
+
Keywords: smoothing,data-smoothing,signal-filter,signal-processing,noise-reduction,real-time,low-latency,live-data,online-processing,streaming-data,data-cleaning,data-filtering,preprocessing,adaptive-filter,ema,moving-average,median-filter,gaussian-smoothing,time-series,trend-analysis,rolling-average,forecasting,financial-data,stock-market,price-smoothing,volatility-reduction,algorithmic-trading,market-data,quantitative-analysis,data-denoising,eye-tracking,gaze-tracking,gaze-analysis,saccade-filtering,fixation-detection,attention-analysis,input-smoothing,cursor-smoothing,head-tracking,sensor-data,tracking-noise,motion-smoothing,imu-data,robotics,embedded-systems,wearable-sensors,biosignal-processing,hci,bci,gesture-recognition,computer-vision,biometrics,machine-learning,feature-extraction,data-preparation,computational-neuroscience,neurotechnology,psychophysics,real-time-processing,live-inference,python,smoothiepy,signal-analysis,time-series-preprocessing
|
6
|
+
Author-Email: Timo Seyfarth <timo@seyfarth.dev>
|
7
|
+
License-Expression: GPL-3.0-or-later
|
8
|
+
License-File: LICENSE
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
10
|
+
Classifier: Programming Language :: Python :: 3.10
|
11
|
+
Classifier: Programming Language :: Python :: 3.11
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
14
|
+
Classifier: Programming Language :: Python :: 3.14
|
15
|
+
Classifier: Operating System :: OS Independent
|
16
|
+
Classifier: Development Status :: 3 - Alpha
|
17
|
+
Classifier: Intended Audience :: Developers
|
18
|
+
Classifier: Intended Audience :: Science/Research
|
19
|
+
Classifier: Intended Audience :: Education
|
20
|
+
Classifier: Natural Language :: English
|
21
|
+
Classifier: Topic :: Scientific/Engineering
|
22
|
+
Classifier: Topic :: Scientific/Engineering :: Human Machine Interfaces
|
23
|
+
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
24
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
25
|
+
Project-URL: Homepage, https://github.com/timoseyfarth/smoothiepy
|
26
|
+
Project-URL: Documentation, https://github.com/timoseyfarth/smoothiepy/wiki
|
27
|
+
Project-URL: Issues, https://github.com/timoseyfarth/smoothiepy/issues
|
28
|
+
Requires-Python: >=3.10.0
|
29
|
+
Requires-Dist: numpy>=2.1.0
|
30
|
+
Requires-Dist: typing_extensions>=4.0.0
|
31
|
+
Provides-Extra: dev
|
32
|
+
Requires-Dist: pytest~=8.3.5; extra == "dev"
|
33
|
+
Requires-Dist: pylint>=3.3.7; extra == "dev"
|
34
|
+
Description-Content-Type: text/markdown
|
35
|
+
|
36
|
+

|
37
|
+
|
38
|
+
[]()
|
39
|
+
[](https://pypi.org/project/smoothiepy/)
|
40
|
+
[](https://pypi.org/project/smoothiepy/)
|
41
|
+
[](https://pypi.org/project/smoothiepy/)
|
42
|
+
[](https://github.com/timoseyfarth/smoothiepy/blob/main/LICENSE)
|
43
|
+
[](https://github.com/timoseyfarth/smoothiepy/commits/main)
|
44
|
+
[](https://github.com/timoseyfarth/smoothiepy)
|
45
|
+
|
46
|
+
Smooth real-time data streams like eye tracking or sensor input with this lightweight package.
|
47
|
+
|
48
|
+
## 📋 Overview
|
49
|
+
|
50
|
+
SmoothiePy is a Python library designed for smoothing real-time data streams with minimal latency.
|
51
|
+
It provides a collection of filters and smoothers that can be applied to one-dimensional and two-dimensional data,
|
52
|
+
making it ideal for applications such as:
|
53
|
+
|
54
|
+
- Eye tracking and gaze analysis
|
55
|
+
- Sensor data processing
|
56
|
+
- Motion tracking
|
57
|
+
- Financial data analysis
|
58
|
+
- Time series preprocessing
|
59
|
+
- Signal processing
|
60
|
+
|
61
|
+
The library is built with a focus on flexibility, performance, and ease of use, allowing you to quickly implement sophisticated data smoothing pipelines.
|
62
|
+
|
63
|
+
## 🚀 Installation
|
64
|
+
|
65
|
+
```bash
|
66
|
+
pip install smoothiepy
|
67
|
+
```
|
68
|
+
|
69
|
+
SmoothiePy requires Python 3.10 or later.
|
70
|
+
|
71
|
+
## 🏁 Quick Start
|
72
|
+
|
73
|
+
Here's a simple example of how to use SmoothiePy to smooth a data stream:
|
74
|
+
|
75
|
+
```python
|
76
|
+
from smoothiepy.smoother.builder import SmootherBuilder
|
77
|
+
from smoothiepy.filter.filter1d import ExponentialMovingAverageFilter1D
|
78
|
+
|
79
|
+
# Create a smoother with an exponential moving average filter
|
80
|
+
smoother = (
|
81
|
+
SmootherBuilder()
|
82
|
+
.one_dimensional()
|
83
|
+
.continuous()
|
84
|
+
.attach_filter(ExponentialMovingAverageFilter1D(alpha=0.2))
|
85
|
+
.build()
|
86
|
+
)
|
87
|
+
|
88
|
+
# Process data points
|
89
|
+
smoother.add(20.0)
|
90
|
+
print(f"Smoothed value: {smoother.get()}")
|
91
|
+
|
92
|
+
smoother.add(60.0)
|
93
|
+
print(f"Smoothed value: {smoother.get()}")
|
94
|
+
|
95
|
+
# Alternatively, use add_and_get to add a value and get the result in one step
|
96
|
+
smoothed_value = smoother.add_and_get(3.0)
|
97
|
+
print(f"Smoothed value: {smoothed_value}")
|
98
|
+
```
|
99
|
+
|
100
|
+
## ✨ Features
|
101
|
+
|
102
|
+
### Available Filters
|
103
|
+
|
104
|
+
SmoothiePy provides a variety of filters:
|
105
|
+
|
106
|
+
#### One-Dimensional Filters
|
107
|
+
|
108
|
+
- **Offset Filter**: Adds a constant offset to the data
|
109
|
+
- **Simple Moving Average**: Computes the arithmetic mean over a window
|
110
|
+
- **Weighted Moving Average**: Applies linearly decreasing weights
|
111
|
+
- **Gaussian Average**: Applies a Gaussian weighting function
|
112
|
+
- **Median Average**: Computes the median of values in a window
|
113
|
+
- **Exponential Moving Average**: Applies exponential weighting
|
114
|
+
- **Cumulative Moving Average**: Computes the cumulative average
|
115
|
+
- **Fixation Smooth Filter**: Sort of Deadband filter. Specialized for fixation-like data (e.g., eye tracking)
|
116
|
+
- **Multi-Pass Moving Average**: Applies multiple passes of a specified moving average type
|
117
|
+
|
118
|
+
#### Two-Dimensional Filters
|
119
|
+
|
120
|
+
Each 1D filter is also available in a 2D version, allowing you to smooth data in two dimensions (e.g., x-y coordinates).
|
121
|
+
|
122
|
+
Many more filters are work in progress, including advanced filters like Kalman filters and more complex multidimensional filters.
|
123
|
+
|
124
|
+
### Builder Pattern
|
125
|
+
|
126
|
+
SmoothiePy uses a builder pattern to create smoothers, making it easy to configure and chain multiple filters:
|
127
|
+
|
128
|
+
```python
|
129
|
+
from smoothiepy.smoother.builder import SmootherBuilder
|
130
|
+
from smoothiepy.filter.filter1d import SimpleMovingAverageFilter1D, GaussianAverageFilter1D
|
131
|
+
|
132
|
+
# Create a smoother with multiple filters
|
133
|
+
smoother = (
|
134
|
+
SmootherBuilder()
|
135
|
+
.one_dimensional()
|
136
|
+
.continuous()
|
137
|
+
.attach_filter(SimpleMovingAverageFilter1D(window_size=5))
|
138
|
+
.attach_filter(GaussianAverageFilter1D(window_size=3, std_dev=1.0))
|
139
|
+
.build()
|
140
|
+
)
|
141
|
+
```
|
142
|
+
|
143
|
+
## 📚 Documentation
|
144
|
+
|
145
|
+
For detailed documentation, visit our [GitHub Wiki](https://github.com/timoseyfarth/smoothiepy/wiki).
|
146
|
+
Coming soon...
|
147
|
+
|
148
|
+
### API Reference
|
149
|
+
|
150
|
+
#### Filters
|
151
|
+
|
152
|
+
- `Filter1D`: Base class for one-dimensional filters
|
153
|
+
- `SimpleMovingAverageFilter1D`: Simple arithmetic mean
|
154
|
+
- `WeightedMovingAverageFilter1D`: Linearly decreasing weights
|
155
|
+
- `GaussianAverageFilter1D`: Gaussian weighting function
|
156
|
+
- `MedianAverageFilter1D`: Median of values
|
157
|
+
- `ExponentialMovingAverageFilter1D`: Exponential weighting
|
158
|
+
- `CumulativeMovingAverageFilter1D`: Cumulative average
|
159
|
+
- `FixationSmoothFilter1D`: For fixation-like data
|
160
|
+
- `MultiPassMovingAverage1D`: Multiple passes of a specified filter
|
161
|
+
|
162
|
+
- `Filter2D`: Base class for two-dimensional filters
|
163
|
+
- Various 2D filter implementations
|
164
|
+
|
165
|
+
#### Builders
|
166
|
+
|
167
|
+
- `SmootherBuilder`: Entry point for creating smoothers
|
168
|
+
- `Smoother1DBuilder`: For 1D smoothers
|
169
|
+
- `Smoother1DContinuousBuilder`: For continuous 1D smoothers
|
170
|
+
|
171
|
+
## 📄 License
|
172
|
+
|
173
|
+
This project is licensed under the GNU Lesser General Public License v3.0 (LGPL-3.0) - see the [LICENSE](LICENSE) file for details.
|
174
|
+
|
175
|
+
## 🙏 Acknowledgements
|
176
|
+
|
177
|
+
- NumPy for efficient numerical operations
|
178
|
+
|
179
|
+
## 📬 Contact
|
180
|
+
|
181
|
+
Timo Seyfarth - timo@seyfarth.dev
|
@@ -0,0 +1,15 @@
|
|
1
|
+
smoothiepy-0.1.0.dist-info/METADATA,sha256=DvD5lzW-O3ojGJr_xRhZNUCXiHg5hQyeSwguqT92NIA,7782
|
2
|
+
smoothiepy-0.1.0.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
|
3
|
+
smoothiepy-0.1.0.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
|
4
|
+
smoothiepy-0.1.0.dist-info/licenses/LICENSE,sha256=gcuuhKKc5-dwvyvHsXjlC9oM6N5gZ6umYbC8ewW1Yvg,35821
|
5
|
+
smoothiepy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
+
smoothiepy/core.py,sha256=BRK1STVsac_CIwiB7g2viiS5RjfQXgXds-SQxGLc7Pg,853
|
7
|
+
smoothiepy/filter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
8
|
+
smoothiepy/filter/basefilter.py,sha256=BLxpYPgBuyuqoiUq7myaEGWG_N2An76WY24fkDCBED0,4605
|
9
|
+
smoothiepy/filter/filter1d.py,sha256=vmZy_L6dTshzySqqGahz3jCWkqDkzjGRJjIwJA-cdqE,13570
|
10
|
+
smoothiepy/filter/filter2d.py,sha256=FVoduaOUQpZ952D_HNoejWUvJ5rYfP4_JgQqC2WSuVo,1589
|
11
|
+
smoothiepy/filter/filter2d_naive.py,sha256=7Q0M6m-ftYIt4As9cOoV7vDb5rH3j0AG0Hdm-C6LK9w,12329
|
12
|
+
smoothiepy/smoother/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
|
+
smoothiepy/smoother/builder.py,sha256=rJqp1-NE0MDZ3LARpZTHQecdXUfamepKoBlpG-pL1ss,3631
|
14
|
+
smoothiepy/smoother/smoother.py,sha256=ASU6ktljRer8_CA5yXzIDHsYRCIAauKOQdhDgdxDymc,6874
|
15
|
+
smoothiepy-0.1.0.dist-info/RECORD,,
|