Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 29 additions & 39 deletions examples/1_basic_tutorial.ipynb

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion pynumdiff/tests/test_diff_methods.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import numpy as np
from matplotlib import pyplot
from pytest import mark
from warnings import warn

Expand Down
2 changes: 1 addition & 1 deletion pynumdiff/tests/test_optimize.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import numpy as np
from pytest import mark, skip
from pytest import skip

from ..finite_difference import first_order as iterated_finite_difference # actually second order
from ..smooth_finite_difference import mediandiff, meandiff, gaussiandiff, friedrichsdiff, butterdiff, splinediff
Expand Down
15 changes: 8 additions & 7 deletions pynumdiff/utils/evaluate.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,10 @@ def metrics(x, dt, x_hat, dxdt_hat, x_truth=None, dxdt_truth=None, padding=0):
"""
if np.isnan(x_hat).any():
return np.nan, np.nan, np.nan
if padding is None or padding == 'auto':
if padding == 'auto':
padding = int(0.025*len(x))
padding = max(padding, 1)
s = slice(padding,len(x)-padding) # slice out where the data is
s = slice(padding, len(x)-padding) # slice out data we want to measure

# RMS of dxdt and x_hat
root = np.sqrt(s.stop - s.start)
Expand All @@ -111,12 +111,12 @@ def error_correlation(dxdt_hat, dxdt_truth, padding=0):

:return: (float) -- r-squared correlation coefficient
"""
if padding is None or padding == 'auto':
if padding == 'auto':
padding = int(0.025*len(dxdt_hat))
padding = max(padding, 1)
errors = (dxdt_hat[padding:-padding] - dxdt_truth[padding:-padding])
r = stats.linregress(dxdt_truth[padding:-padding] -
np.mean(dxdt_truth[padding:-padding]), errors)
s = slice(padding, len(dxdt_hat)-padding) # slice out data we want to measure
errors = (dxdt_hat[s] - dxdt_truth[s])
r = stats.linregress(dxdt_truth[s] - np.mean(dxdt_truth[s]), errors)
return r.rvalue**2


Expand All @@ -129,8 +129,9 @@ def total_variation(x, padding=0):
"""
if np.isnan(x).any():
return np.nan
if padding is None or padding == 'auto':
if padding == 'auto':
padding = int(0.025*len(x))
padding = max(padding, 1)
x = x[padding: len(x)-padding]

return np.sum(np.abs(x[1:]-x[:-1]))/(len(x)-1) # mostly equivalent to cvxpy.tv(x2-x1).value