pynumdiff 0.2.2__tar.gz → 0.2.3__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.
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/PKG-INFO +8 -5
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/README.md +6 -4
- pynumdiff-0.2.3/notebooks/7_circular_domain.ipynb +140 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/notebooks/README.md +2 -1
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/__init__.py +1 -1
- pynumdiff-0.2.3/pynumdiff/_version.py +24 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/basis_fit.py +119 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/kalman_smooth.py +19 -8
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/optimize.py +1 -1
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/tests/test_diff_methods.py +41 -1
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/utils/utility.py +2 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff.egg-info/PKG-INFO +8 -5
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff.egg-info/SOURCES.txt +1 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff.egg-info/requires.txt +1 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pyproject.toml +2 -1
- pynumdiff-0.2.2/pynumdiff/_version.py +0 -34
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/.coveragerc +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/.editorconfig +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/.github/workflows/release.yml +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/.github/workflows/test.yml +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/.gitignore +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/.pylintrc +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/.readthedocs.yaml +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/CITATION.cff +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/CONTRIBUTING.md +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/LICENSE.txt +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/Makefile +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/LICENSE.rst +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/basis_fit.rst +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/code.rst +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/conf.py +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/contact.rst +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/contributing.rst +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/finite_difference.rst +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/index.rst +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/kalman_smooth.rst +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/linear_model.rst +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/optimize.rst +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/polynomial_fit.rst +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/smooth_finite_difference.rst +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/total_variation_regularization.rst +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/utils/evaluate.rst +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/utils/simulate.rst +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/utils/utility.rst +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/docs/source/utils.rst +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/logo.png +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/notebooks/1_basic_tutorial.ipynb +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/notebooks/2_optimizing_hyperparameters.ipynb +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/notebooks/3_automatic_method_suggestion.ipynb +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/notebooks/4_performance_analysis.ipynb +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/notebooks/5_robust_outliers_demo.ipynb +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/notebooks/6_multidimensionality_demo.ipynb +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/README.md +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/finite_difference.py +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/linear_model.py +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/polynomial_fit.py +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/smooth_finite_difference.py +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/tests/__init__.py +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/tests/conftest.py +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/tests/test_optimize.py +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/tests/test_utils.py +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/total_variation_regularization.py +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/utils/__init__.py +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/utils/_chartrand_tvregdiff.py +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/utils/evaluate.py +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/utils/old_pi_cruise_control.py +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff/utils/simulate.py +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff.egg-info/dependency_links.txt +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/pynumdiff.egg-info/top_level.txt +0 -0
- {pynumdiff-0.2.2 → pynumdiff-0.2.3}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pynumdiff
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: pynumdiff: numerical derivatives in python
|
|
5
5
|
Maintainer-email: Floris van Breugel <fvanbreugel@unr.edu>, Pavel Komarov <pvlkmrv@uw.edu>, Yuying Liu <yliu814@uw.edu>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -19,6 +19,7 @@ License-File: LICENSE.txt
|
|
|
19
19
|
Requires-Dist: numpy
|
|
20
20
|
Requires-Dist: scipy
|
|
21
21
|
Requires-Dist: matplotlib
|
|
22
|
+
Requires-Dist: pywavelets
|
|
22
23
|
Provides-Extra: advanced
|
|
23
24
|
Requires-Dist: cvxpy; extra == "advanced"
|
|
24
25
|
Requires-Dist: tqdm; extra == "advanced"
|
|
@@ -61,7 +62,7 @@ Python methods for numerical differentiation of noisy data, including multi-obje
|
|
|
61
62
|
|
|
62
63
|
## Introduction
|
|
63
64
|
|
|
64
|
-
PyNumDiff is a Python package that implements
|
|
65
|
+
PyNumDiff is a Python package that implements many methods for computing numerical derivatives and smooth estimates of noisy data, which can be a critical step in developing dynamic models or designing control. There are seven different families of methods implemented in this repository:
|
|
65
66
|
|
|
66
67
|
1. prefiltering followed by finite difference calculation
|
|
67
68
|
2. iterated finite differencing
|
|
@@ -71,9 +72,11 @@ PyNumDiff is a Python package that implements various methods for computing nume
|
|
|
71
72
|
6. generalized Kalman smoothing
|
|
72
73
|
7. local approximation with linear model
|
|
73
74
|
|
|
74
|
-
For a
|
|
75
|
+
All are ultimately smoothing with similar runtime and accuracy, but some have situational advantages over others: For example, `robustdiff` is specialized to handle outliers; `splinediff`, `polydiff`, `rtsdiff`, and `robustdiff` can handle missing data; `splinediff`, `polydiff`, `rbfdiff`, `rtsdiff`, and `robustdiff` can handle irregularly-spaced data; and `rtsdiff` can handle inputs on a wrapped domain, like angles. All methods can accept blocks of multidimensional data, differentiating all vectors along the dimension given by the `axis` parameter.
|
|
75
76
|
|
|
76
|
-
|
|
77
|
+
For a full list and comparison, see section 7 of our [Taxonomy Paper](https://arxiv.org/abs/2512.09090) and explore modules in the [Sphinx documentation](https://pynumdiff.readthedocs.io/master/).
|
|
78
|
+
|
|
79
|
+
All methods have hyperparameters, so we take a principled approach and propose a multi-objective optimization framework for choosing settings that minimize a loss function to balance the faithfulness and smoothness of the derivative estimate. For more details, refer to [this paper](https://doi.org/10.1109/ACCESS.2020.3034077).
|
|
77
80
|
|
|
78
81
|
## Installing
|
|
79
82
|
|
|
@@ -89,7 +92,7 @@ For more details, read our [Sphinx documentation](https://pynumdiff.readthedocs.
|
|
|
89
92
|
somethingdiff(x, dt, **kwargs)
|
|
90
93
|
```
|
|
91
94
|
|
|
92
|
-
where `x` is data, `dt` is a step size, and various keyword arguments control the behavior. Some methods support variable step size, in which case the second parameter is renamed `dt_or_t` and can receive either a constant step size or an array of values to denote sample locations.
|
|
95
|
+
where `x` is data, `dt` is a step size, and various keyword arguments control the behavior. Some methods support variable step size, in which case the second parameter is renamed `dt_or_t` and can receive either a constant step size or an array of values to denote sample locations. All major methods support multidimensional data, so look for an `axis` argument to control the dimension differentiated along.
|
|
93
96
|
|
|
94
97
|
You can set the hyperparameters:
|
|
95
98
|
```python
|
|
@@ -24,7 +24,7 @@ Python methods for numerical differentiation of noisy data, including multi-obje
|
|
|
24
24
|
|
|
25
25
|
## Introduction
|
|
26
26
|
|
|
27
|
-
PyNumDiff is a Python package that implements
|
|
27
|
+
PyNumDiff is a Python package that implements many methods for computing numerical derivatives and smooth estimates of noisy data, which can be a critical step in developing dynamic models or designing control. There are seven different families of methods implemented in this repository:
|
|
28
28
|
|
|
29
29
|
1. prefiltering followed by finite difference calculation
|
|
30
30
|
2. iterated finite differencing
|
|
@@ -34,9 +34,11 @@ PyNumDiff is a Python package that implements various methods for computing nume
|
|
|
34
34
|
6. generalized Kalman smoothing
|
|
35
35
|
7. local approximation with linear model
|
|
36
36
|
|
|
37
|
-
For a
|
|
37
|
+
All are ultimately smoothing with similar runtime and accuracy, but some have situational advantages over others: For example, `robustdiff` is specialized to handle outliers; `splinediff`, `polydiff`, `rtsdiff`, and `robustdiff` can handle missing data; `splinediff`, `polydiff`, `rbfdiff`, `rtsdiff`, and `robustdiff` can handle irregularly-spaced data; and `rtsdiff` can handle inputs on a wrapped domain, like angles. All methods can accept blocks of multidimensional data, differentiating all vectors along the dimension given by the `axis` parameter.
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
For a full list and comparison, see section 7 of our [Taxonomy Paper](https://arxiv.org/abs/2512.09090) and explore modules in the [Sphinx documentation](https://pynumdiff.readthedocs.io/master/).
|
|
40
|
+
|
|
41
|
+
All methods have hyperparameters, so we take a principled approach and propose a multi-objective optimization framework for choosing settings that minimize a loss function to balance the faithfulness and smoothness of the derivative estimate. For more details, refer to [this paper](https://doi.org/10.1109/ACCESS.2020.3034077).
|
|
40
42
|
|
|
41
43
|
## Installing
|
|
42
44
|
|
|
@@ -52,7 +54,7 @@ For more details, read our [Sphinx documentation](https://pynumdiff.readthedocs.
|
|
|
52
54
|
somethingdiff(x, dt, **kwargs)
|
|
53
55
|
```
|
|
54
56
|
|
|
55
|
-
where `x` is data, `dt` is a step size, and various keyword arguments control the behavior. Some methods support variable step size, in which case the second parameter is renamed `dt_or_t` and can receive either a constant step size or an array of values to denote sample locations.
|
|
57
|
+
where `x` is data, `dt` is a step size, and various keyword arguments control the behavior. Some methods support variable step size, in which case the second parameter is renamed `dt_or_t` and can receive either a constant step size or an array of values to denote sample locations. All major methods support multidimensional data, so look for an `axis` argument to control the dimension differentiated along.
|
|
56
58
|
|
|
57
59
|
You can set the hyperparameters:
|
|
58
60
|
```python
|