@@ -81,10 +81,10 @@ def metrics(x, dt, x_hat, dxdt_hat, x_truth=None, dxdt_truth=None, padding=0):
8181 """
8282 if np .isnan (x_hat ).any ():
8383 return np .nan , np .nan , np .nan
84- if padding is None or padding == 'auto' :
84+ if padding == 'auto' :
8585 padding = int (0.025 * len (x ))
8686 padding = max (padding , 1 )
87- s = slice (padding ,len (x )- padding ) # slice out where the data is
87+ s = slice (padding , len (x )- padding ) # slice out data we want to measure
8888
8989 # RMS of dxdt and x_hat
9090 root = np .sqrt (s .stop - s .start )
@@ -111,12 +111,12 @@ def error_correlation(dxdt_hat, dxdt_truth, padding=0):
111111
112112 :return: (float) -- r-squared correlation coefficient
113113 """
114- if padding is None or padding == 'auto' :
114+ if padding == 'auto' :
115115 padding = int (0.025 * len (dxdt_hat ))
116116 padding = max (padding , 1 )
117- errors = ( dxdt_hat [ padding : - padding ] - dxdt_truth [ padding : - padding ])
118- r = stats . linregress ( dxdt_truth [ padding : - padding ] -
119- np .mean (dxdt_truth [padding : - padding ]), errors )
117+ s = slice ( padding , len ( dxdt_hat ) - padding ) # slice out data we want to measure
118+ errors = ( dxdt_hat [ s ] - dxdt_truth [ s ])
119+ r = stats . linregress ( dxdt_truth [ s ] - np .mean (dxdt_truth [s ]), errors )
120120 return r .rvalue ** 2
121121
122122
@@ -129,8 +129,9 @@ def total_variation(x, padding=0):
129129 """
130130 if np .isnan (x ).any ():
131131 return np .nan
132- if padding is None or padding == 'auto' :
132+ if padding == 'auto' :
133133 padding = int (0.025 * len (x ))
134134 padding = max (padding , 1 )
135+ x = x [padding : len (x )- padding ]
135136
136137 return np .sum (np .abs (x [1 :]- x [:- 1 ]))/ (len (x )- 1 ) # mostly equivalent to cvxpy.tv(x2-x1).value
0 commit comments