Skip to content

Commit e9c5464

Browse files
committed
renamed poly_order to poly_deg because it's really called degree more often
1 parent cc91428 commit e9c5464

7 files changed

Lines changed: 57 additions & 57 deletions

File tree

examples/1_basic_tutorial.ipynb

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -438,16 +438,16 @@
438438
}
439439
],
440440
"source": [
441-
"x_hat, dxdt_hat = pynumdiff.polynomial_fit.polydiff(x, dt, poly_order=2, window_size=21)\n",
441+
"x_hat, dxdt_hat = pynumdiff.polynomial_fit.polydiff(x, dt, poly_deg=2, window_size=21)\n",
442442
"evaluate.plot(x, dt, x_hat, dxdt_hat, x_truth, dxdt_truth)\n",
443443
"\n",
444-
"_, dxdt_hat1 = pynumdiff.polynomial_fit.polydiff(x, dt, poly_order=2, kernel='friedrichs', window_size=40, step_size=1)\n",
445-
"_, dxdt_hat2 = pynumdiff.polynomial_fit.polydiff(x, dt, poly_order=3, kernel='friedrichs', window_size=40, step_size=5)\n",
446-
"_, dxdt_hat3 = pynumdiff.polynomial_fit.polydiff(x, dt, poly_order=3, kernel='gaussian', window_size=40, step_size=5)\n",
444+
"_, dxdt_hat1 = pynumdiff.polynomial_fit.polydiff(x, dt, poly_deg=2, kernel='friedrichs', window_size=40, step_size=1)\n",
445+
"_, dxdt_hat2 = pynumdiff.polynomial_fit.polydiff(x, dt, poly_deg=3, kernel='friedrichs', window_size=40, step_size=5)\n",
446+
"_, dxdt_hat3 = pynumdiff.polynomial_fit.polydiff(x, dt, poly_deg=3, kernel='gaussian', window_size=40, step_size=5)\n",
447447
"\n",
448-
"evaluate.plot_comparison(dt, dxdt_truth, dxdt_hat1, \"poly_order=2, kernel='friedrichs',\\nwindow_size=40, step_size=1\",\n",
449-
" dxdt_hat2, \"poly_order=3, kernel='friedrichs',\\nwindow_size=40, step_size=5\",\n",
450-
" dxdt_hat3, \"poly_order=3, kernel='gaussian',\\nwindow_size=40, step_size=5\")"
448+
"evaluate.plot_comparison(dt, dxdt_truth, dxdt_hat1, \"poly_deg=2, kernel='friedrichs',\\nwindow_size=40, step_size=1\",\n",
449+
" dxdt_hat2, \"poly_deg=3, kernel='friedrichs',\\nwindow_size=40, step_size=5\",\n",
450+
" dxdt_hat3, \"poly_deg=3, kernel='gaussian',\\nwindow_size=40, step_size=5\")"
451451
]
452452
},
453453
{
@@ -500,16 +500,16 @@
500500
}
501501
],
502502
"source": [
503-
"x_hat, dxdt_hat = pynumdiff.polynomial_fit.savgoldiff(x, dt, poly_order=2, window_size=10, smoothing_win=10)\n",
503+
"x_hat, dxdt_hat = pynumdiff.polynomial_fit.savgoldiff(x, dt, poly_deg=2, window_size=10, smoothing_win=10)\n",
504504
"evaluate.plot(x, dt, x_hat, dxdt_hat, x_truth, dxdt_truth)\n",
505505
"\n",
506-
"_, dxdt_hat1 = pynumdiff.polynomial_fit.savgoldiff(x, dt, poly_order=3, window_size=25, smoothing_win=3)\n",
507-
"_, dxdt_hat2 = pynumdiff.polynomial_fit.savgoldiff(x, dt, poly_order=3, window_size=25, smoothing_win=11)\n",
508-
"_, dxdt_hat3 = pynumdiff.polynomial_fit.savgoldiff(x, dt, poly_order=5, window_size=35, smoothing_win=11)\n",
506+
"_, dxdt_hat1 = pynumdiff.polynomial_fit.savgoldiff(x, dt, poly_deg=3, window_size=25, smoothing_win=3)\n",
507+
"_, dxdt_hat2 = pynumdiff.polynomial_fit.savgoldiff(x, dt, poly_deg=3, window_size=25, smoothing_win=11)\n",
508+
"_, dxdt_hat3 = pynumdiff.polynomial_fit.savgoldiff(x, dt, poly_deg=5, window_size=35, smoothing_win=11)\n",
509509
"\n",
510-
"evaluate.plot_comparison(dt, dxdt_truth, dxdt_hat1, \"poly_order=3, window_size=25, smoothing_win=3\",\n",
511-
" dxdt_hat2, \"poly_order=3, window_size=25, smoothing_win=11\",\n",
512-
" dxdt_hat3, \"poly_order=5, window_size=35, smoothing_win=11\")"
510+
"evaluate.plot_comparison(dt, dxdt_truth, dxdt_hat1, \"poly_deg=3, window_size=25, smoothing_win=3\",\n",
511+
" dxdt_hat2, \"poly_deg=3, window_size=25, smoothing_win=11\",\n",
512+
" dxdt_hat3, \"poly_deg=5, window_size=35, smoothing_win=11\")"
513513
]
514514
},
515515
{

examples/2a_optimizing_parameters_with_dxdt_known.ipynb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,7 @@
377377
"name": "stdout",
378378
"output_type": "stream",
379379
"text": [
380-
"Optimal parameters: {'step_size': 1, 'poly_order': 3, 'window_size': 40, 'kernel': 'friedrichs'}\n",
380+
"Optimal parameters: {'step_size': 1, 'poly_deg': 3, 'window_size': 40, 'kernel': 'friedrichs'}\n",
381381
"RMS error in velocity: 0.5727285849814204\n",
382382
"Error correlation: 2.2687822224677363e-05\n"
383383
]
@@ -416,7 +416,7 @@
416416
"name": "stdout",
417417
"output_type": "stream",
418418
"text": [
419-
"Optimal parameters: {'poly_order': 5, 'window_size': 39, 'smoothing_win': 12}\n",
419+
"Optimal parameters: {'poly_deg': 5, 'window_size': 39, 'smoothing_win': 12}\n",
420420
"RMS error in velocity: 0.5148645883411752\n",
421421
"Error correlation: 0.06099842962669914\n"
422422
]

examples/2b_optimizing_parameters_with_dxdt_unknown.ipynb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@
410410
"name": "stdout",
411411
"output_type": "stream",
412412
"text": [
413-
"Optimal parameters: {'step_size': 1, 'poly_order': 2, 'window_size': 27, 'kernel': 'gaussian'}\n",
413+
"Optimal parameters: {'step_size': 1, 'poly_deg': 2, 'window_size': 27, 'kernel': 'gaussian'}\n",
414414
"RMS error in velocity: 0.6590705824066536\n",
415415
"Error correlation: 1.9556342504970285e-05\n"
416416
]
@@ -449,7 +449,7 @@
449449
"name": "stdout",
450450
"output_type": "stream",
451451
"text": [
452-
"Optimal parameters: {'poly_order': 3, 'window_size': 21, 'smoothing_win': 11}\n",
452+
"Optimal parameters: {'poly_deg': 3, 'window_size': 21, 'smoothing_win': 11}\n",
453453
"RMS error in velocity: 0.6735648325578836\n",
454454
"Error correlation: 0.013784684383151752\n"
455455
]

pynumdiff/optimize/_optimize.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@
2424
{'high_freq_cutoff': (1e-5, 1-1e-5)}),
2525
polydiff: ({'step_size': [1, 2, 5],
2626
'kernel': {'friedrichs', 'gaussian'}, # categorical
27-
'poly_order': [2, 3, 5, 7],
27+
'poly_deg': [2, 3, 5, 7],
2828
'window_size': [11, 31, 51, 91, 131]},
2929
{'step_size': (1, 100),
30-
'poly_order': (1, 8),
30+
'poly_deg': (1, 8),
3131
'window_size': (10, 1000)}),
32-
savgoldiff: ({'poly_order': [2, 3, 5, 7, 10],
32+
savgoldiff: ({'poly_deg': [2, 3, 5, 7, 10],
3333
'window_size': [3, 10, 30, 50, 90, 130, 200, 300],
3434
'smoothing_win': [3, 10, 30, 50, 90, 130, 200, 300]},
35-
{'poly_order': (1, 12),
35+
{'poly_deg': (1, 12),
3636
'window_size': (3, 1000),
3737
'smoothing_win': (3, 1000)}),
3838
lineardiff: ({'kernel': 'gaussian',
@@ -56,7 +56,7 @@
5656
'num_iterations': [1, 5, 10]},
5757
{'cutoff_freq': (1e-4, 1-1e-2),
5858
'num_iterations': (1, 1000)}),
59-
splinediff: ({'order': {3, 4, 5}, # categorical, because order is whole number, and there aren't many choices
59+
splinediff: ({'deg': {3, 4, 5}, # categorical, because degree is whole number, and there aren't many choices
6060
's': [0.5, 0.9, 0.95, 1, 10, 100],
6161
'num_iterations': [1, 5, 10]},
6262
{'s': (1e-2, 1e6),

pynumdiff/polynomial_fit/_polynomial_fit.py

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55
from pynumdiff.utils import utility
66

77

8-
def splinediff(x, dt, params=None, options={}, order=3, s=None, num_iterations=1):
8+
def splinediff(x, dt, params=None, options={}, deg=3, s=None, num_iterations=1):
99
"""Find smoothed data and derivative estimates by fitting a smoothing spline to the data with
1010
scipy.interpolate.UnivariateSpline.
1111
1212
:param np.array[float] x: data to differentiate
1313
:param float dt: step size
14-
:param list params: (**deprecated**, prefer :code:`order`, :code:`cutoff_freq`, and :code:`num_iterations`)
14+
:param list params: (**deprecated**, prefer :code:`deg`, :code:`cutoff_freq`, and :code:`num_iterations`)
1515
:param dict options: (**deprecated**, prefer :code:`num_iterations`) an empty dictionary or {'iterate': (bool)}
16-
:param int order: polynomial order of the spline. A kth order spline can be differentiated k times.
16+
:param int deg: polynomial degree of the spline. A kth degree spline can be differentiated k times.
1717
:param float s: positive smoothing factor used to choose the number of knots. Number of knots will be increased
1818
until the smoothing condition is satisfied: :math:`\\sum_t (x[t] - \\text{spline}[t])^2 \\leq s`
1919
:param int num_iterations: how many times to apply smoothing
@@ -25,15 +25,15 @@ def splinediff(x, dt, params=None, options={}, order=3, s=None, num_iterations=1
2525
if params != None: # Warning to support old interface for a while. Remove these lines along with params in a future release.
2626
warn("`params` and `options` parameters will be removed in a future version. Use `order`, `s`, and " +
2727
"`num_iterations` instead.", DeprecationWarning)
28-
order, s = params[0:2]
28+
deg, s = params[0:2]
2929
if 'iterate' in options and options['iterate']:
3030
num_iterations = params[2]
3131

3232
t = np.arange(len(x))*dt
3333

3434
x_hat = x
3535
for _ in range(num_iterations):
36-
spline = scipy.interpolate.UnivariateSpline(t, x_hat, k=order, s=s)
36+
spline = scipy.interpolate.UnivariateSpline(t, x_hat, k=deg, s=s)
3737
x_hat = spline(t)
3838

3939
dspline = spline.derivative()
@@ -42,16 +42,16 @@ def splinediff(x, dt, params=None, options={}, order=3, s=None, num_iterations=1
4242
return x_hat, dxdt_hat
4343

4444

45-
def polydiff(x, dt, params=None, options=None, poly_order=None, window_size=None, step_size=1,
45+
def polydiff(x, dt, params=None, options=None, poly_deg=None, window_size=None, step_size=1,
4646
kernel='friedrichs'):
4747
"""Fit polynomials to the data, and differentiate the polynomials.
4848
4949
:param np.array[float] x: data to differentiate
5050
:param float dt: step size
51-
:param list[int] params: (**deprecated**, prefer :code:`poly_order` and :code:`window_size`)
51+
:param list[int] params: (**deprecated**, prefer :code:`poly_deg` and :code:`window_size`)
5252
:param dict options: (**deprecated**, prefer :code:`step_size` and :code:`kernel`)
5353
a dictionary consisting of {'sliding': (bool), 'step_size': (int), 'kernel_name': (str)}
54-
:param int poly_order: order of the polynomial
54+
:param int poly_deg: degree of the polynomial
5555
:param int window_size: size of the sliding window, if not given no sliding
5656
:param int step_size: step size for sliding
5757
:param str kernel: name of kernel to use for weighting and smoothing windows ('gaussian' or 'friedrichs')
@@ -61,27 +61,27 @@ def polydiff(x, dt, params=None, options=None, poly_order=None, window_size=None
6161
- **dxdt_hat** -- estimated derivative of x
6262
"""
6363
if params != None:
64-
warn("`params` and `options` parameters will be removed in a future version. Use `poly_order` " +
64+
warn("`params` and `options` parameters will be removed in a future version. Use `poly_deg` " +
6565
"and `window_size` instead.", DeprecationWarning)
66-
poly_order = params[0]
66+
poly_deg = params[0]
6767
if len(params) > 1: window_size = params[1]
6868
if options != None:
6969
if 'sliding' in options and not options['sliding']: window_size = None
7070
if 'step_size' in options: step_size = options['step_size']
7171
if 'kernel_name' in options: kernel = options['kernel_name']
72-
elif poly_order == None or window_size == None:
73-
raise ValueError("`poly_order` and `window_size` must be given.")
72+
elif poly_deg == None or window_size == None:
73+
raise ValueError("`poly_deg` and `window_size` must be given.")
7474

75-
if window_size < poly_order*3:
76-
window_size = poly_order*3+1
75+
if window_size < poly_deg*3:
76+
window_size = poly_deg*3+1
7777
if window_size % 2 == 0:
7878
window_size += 1
7979
warn("Kernel window size should be odd. Added 1 to length.")
8080

81-
def _polydiff(x, dt, poly_order, weights=None):
81+
def _polydiff(x, dt, poly_deg, weights=None):
8282
t = np.arange(len(x))*dt
8383

84-
r = np.polyfit(t, x, poly_order, w=weights) # polyfit returns highest order first
84+
r = np.polyfit(t, x, poly_deg, w=weights) # polyfit returns highest order first
8585
dr = np.polyder(r) # power rule already implemented for us
8686

8787
dxdt_hat = np.polyval(dr, t) # evaluate the derivative and original polynomials at points t
@@ -90,22 +90,22 @@ def _polydiff(x, dt, poly_order, weights=None):
9090
return x_hat, dxdt_hat
9191

9292
if not window_size:
93-
return _polydiff(x, dt, poly_order)
93+
return _polydiff(x, dt, poly_deg)
9494

9595
kernel = {'gaussian':utility.gaussian_kernel, 'friedrichs':utility.friedrichs_kernel}[kernel](window_size)
96-
return utility.slide_function(_polydiff, x, dt, kernel, poly_order, stride=step_size, pass_weights=True)
96+
return utility.slide_function(_polydiff, x, dt, kernel, poly_deg, stride=step_size, pass_weights=True)
9797

9898

99-
def savgoldiff(x, dt, params=None, options=None, poly_order=None, window_size=None, smoothing_win=None):
99+
def savgoldiff(x, dt, params=None, options=None, poly_deg=None, window_size=None, smoothing_win=None):
100100
"""Use the Savitzky-Golay to smooth the data and calculate the first derivative. It uses
101101
scipy.signal.savgol_filter. The Savitzky-Golay is very similar to the sliding polynomial fit,
102102
but slightly noisier, and much faster.
103103
104104
:param np.array[float] x: data to differentiate
105105
:param float dt: step size
106-
:param list params: (**deprecated**, prefer :code:`poly_order`, :code:`window_size`, and :code:`smoothing_win`)
106+
:param list params: (**deprecated**, prefer :code:`poly_deg`, :code:`window_size`, and :code:`smoothing_win`)
107107
:param dict options: (**deprecated**)
108-
:param int poly_order: order of the polynomial
108+
:param int poly_deg: degree of the polynomial
109109
:param int window_size: size of the sliding window, must be odd (if not, 1 is added)
110110
:param int smoothing_win: size of the window used for gaussian smoothing, a good default is
111111
window_size, but smaller for high frequnecy data
@@ -115,19 +115,19 @@ def savgoldiff(x, dt, params=None, options=None, poly_order=None, window_size=No
115115
- **dxdt_hat** -- estimated derivative of x
116116
"""
117117
if params != None: # Warning to support old interface for a while. Remove these lines along with params in a future release.
118-
warn("`params` and `options` parameters will be removed in a future version. Use `poly_order`, " +
118+
warn("`params` and `options` parameters will be removed in a future version. Use `poly_deg`, " +
119119
"`window_size`, and `smoothing_win` instead.", DeprecationWarning)
120-
poly_order, window_size, smoothing_win = params
121-
elif poly_order == None or window_size == None or smoothing_win == None:
122-
raise ValueError("`poly_order`, `window_size`, and `smoothing_win` must be given.")
120+
poly_deg, window_size, smoothing_win = params
121+
elif poly_deg == None or window_size == None or smoothing_win == None:
122+
raise ValueError("`poly_deg`, `window_size`, and `smoothing_win` must be given.")
123123

124-
window_size = np.clip(window_size, poly_order + 1, len(x)-1)
124+
window_size = np.clip(window_size, poly_deg + 1, len(x)-1)
125125
if window_size % 2 == 0:
126126
window_size += 1 # window_size needs to be odd
127127
warn("Kernel window size should be odd. Added 1 to length.")
128128
smoothing_win = min(smoothing_win, len(x)-1)
129129

130-
dxdt_hat = scipy.signal.savgol_filter(x, window_size, poly_order, deriv=1)/dt
130+
dxdt_hat = scipy.signal.savgol_filter(x, window_size, poly_deg, deriv=1)/dt
131131

132132
kernel = utility.gaussian_kernel(smoothing_win)
133133
dxdt_hat = utility.convolutional_smoother(dxdt_hat, kernel)

pynumdiff/tests/test_diff_methods.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,15 @@ def iterated_fourth_order(*args, **kwargs): return fourth_order(*args, **kwargs)
3434
(first_order, {}), (second_order, {}), (fourth_order, {}), # empty dictionary for the case of no parameters
3535
(iterated_second_order, {'num_iterations':5}), (iterated_fourth_order, {'num_iterations':10}),
3636
(lineardiff, {'order':3, 'gamma':5, 'window_size':11, 'solver':'CLARABEL'}), (lineardiff, [3, 5, 11], {'solver':'CLARABEL'}),
37-
(polydiff, {'poly_order':2, 'window_size':3}), (polydiff, [2, 3]),
38-
(savgoldiff, {'poly_order':2, 'window_size':5, 'smoothing_win':5}), (savgoldiff, [2, 5, 5]),
37+
(polydiff, {'poly_deg':2, 'window_size':3}), (polydiff, [2, 3]),
38+
(savgoldiff, {'poly_deg':2, 'window_size':5, 'smoothing_win':5}), (savgoldiff, [2, 5, 5]),
3939
(spectraldiff, {'high_freq_cutoff':0.2}), (spectraldiff, [0.2]),
4040
(mediandiff, {'window_size':3, 'num_iterations':2}), (mediandiff, [3, 2], {'iterate':True}),
4141
(meandiff, {'window_size':3, 'num_iterations':2}), (meandiff, [3, 2], {'iterate':True}),
4242
(gaussiandiff, {'window_size':5}), (gaussiandiff, [5]),
4343
(friedrichsdiff, {'window_size':5}), (friedrichsdiff, [5]),
4444
(butterdiff, {'filter_order':3, 'cutoff_freq':0.074}), (butterdiff, [3, 0.074]),
45-
(splinediff, {'order':5, 's':2}), (splinediff, [5, 2]),
45+
(splinediff, {'deg':5, 's':2}), (splinediff, [5, 2]),
4646
(constant_velocity, {'r':1e-4, 'q':1e-2}), (constant_velocity, [1e-4, 1e-2]),
4747
(constant_acceleration, {'r':1e-4, 'q':1e-1}), (constant_acceleration, [1e-4, 1e-1]),
4848
(constant_jerk, {'r':1e-4, 'q':10}), (constant_jerk, [1e-4, 10]),

pynumdiff/tests/test_optimize.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ def test_acceleration():
7878
def test_savgoldiff():
7979
params1, val1 = optimize(savgoldiff, x, dt, dxdt_truth=dxdt_truth, padding='auto')
8080
params2, val2 = optimize(savgoldiff, x, dt, tvgamma=tvgamma, padding='auto')
81-
assert (params1['poly_order'], params1['window_size'], params1['smoothing_win']) == (7, 41, 3)
82-
assert (params2['poly_order'], params2['window_size'], params2['smoothing_win']) == (3, 3, 5)
81+
assert (params1['poly_deg'], params1['window_size'], params1['smoothing_win']) == (7, 41, 3)
82+
assert (params2['poly_deg'], params2['window_size'], params2['smoothing_win']) == (3, 3, 5)
8383

8484
def test_spectraldiff():
8585
params1, val1 = optimize(spectraldiff, x, dt, dxdt_truth=dxdt_truth, padding='auto')
@@ -90,5 +90,5 @@ def test_spectraldiff():
9090
def test_polydiff():
9191
params1, val1 = optimize(polydiff, x, dt, dxdt_truth=dxdt_truth, search_space_updates={'step_size':1}, padding='auto')
9292
params2, val2 = optimize(polydiff, x, dt, tvgamma=tvgamma, search_space_updates={'step_size':1}, padding='auto')
93-
assert (params1['poly_order'], params1['window_size'], params1['kernel']) == (6, 50, 'friedrichs')
94-
assert (params2['poly_order'], params2['window_size'], params2['kernel']) == (3, 10, 'gaussian')
93+
assert (params1['poly_deg'], params1['window_size'], params1['kernel']) == (6, 50, 'friedrichs')
94+
assert (params2['poly_deg'], params2['window_size'], params2['kernel']) == (3, 10, 'gaussian')

0 commit comments

Comments
 (0)