Merge branch 'release/v9.64'
This commit is contained in:
@@ -408,55 +408,85 @@ def interactive_forcecurve(theworkouts,workstrokesonly=True,plottype='scatter'):
|
|||||||
|
|
||||||
# quick linear regression
|
# quick linear regression
|
||||||
# peakforce = slope*peakforceangle + intercept
|
# peakforce = slope*peakforceangle + intercept
|
||||||
slope, intercept, r,p,stderr = linregress(rowdata['peakforceangle'],rowdata['peakforce'])
|
try:
|
||||||
|
slope, intercept, r,p,stderr = linregress(rowdata['peakforceangle'],rowdata['peakforce'])
|
||||||
|
except KeyError:
|
||||||
|
slope = 0
|
||||||
|
intercept = 0
|
||||||
|
|
||||||
covariancematrix = np.cov(rowdata['peakforceangle'],y=rowdata['peakforce'])
|
try:
|
||||||
eig_vals, eig_vecs = np.linalg.eig(covariancematrix)
|
covariancematrix = np.cov(rowdata['peakforceangle'],y=rowdata['peakforce'])
|
||||||
|
eig_vals, eig_vecs = np.linalg.eig(covariancematrix)
|
||||||
|
|
||||||
a = rowdata['peakforceangle']-rowdata['peakforceangle'].median()
|
a = rowdata['peakforceangle']-rowdata['peakforceangle'].median()
|
||||||
F = rowdata['peakforce']-rowdata['peakforce'].median()
|
F = rowdata['peakforce']-rowdata['peakforce'].median()
|
||||||
|
|
||||||
Rinv = eig_vecs
|
Rinv = eig_vecs
|
||||||
R = np.linalg.inv(Rinv)
|
R = np.linalg.inv(Rinv)
|
||||||
|
|
||||||
x = R[0,0]*a+R[0,1]*F
|
x = R[0,0]*a+R[0,1]*F
|
||||||
y = R[1,0]*a+R[1,1]*F
|
y = R[1,0]*a+R[1,1]*F
|
||||||
|
|
||||||
|
|
||||||
x05 = x.quantile(q=0.01)
|
x05 = x.quantile(q=0.01)
|
||||||
x25 = x.quantile(q=0.15)
|
x25 = x.quantile(q=0.15)
|
||||||
x75 = x.quantile(q=0.85)
|
x75 = x.quantile(q=0.85)
|
||||||
x95 = x.quantile(q=0.99)
|
x95 = x.quantile(q=0.99)
|
||||||
|
|
||||||
y05 = y.quantile(q=0.01)
|
y05 = y.quantile(q=0.01)
|
||||||
y25 = y.quantile(q=0.15)
|
y25 = y.quantile(q=0.15)
|
||||||
y75 = y.quantile(q=0.85)
|
y75 = y.quantile(q=0.85)
|
||||||
y95 = y.quantile(q=0.99)
|
y95 = y.quantile(q=0.99)
|
||||||
|
|
||||||
a25 = Rinv[0,0]*x25 + rowdata['peakforceangle'].median()
|
|
||||||
F25 = Rinv[1,0]*x25 + rowdata['peakforce'].median()
|
|
||||||
|
|
||||||
a25b = Rinv[0,1]*y25 + rowdata['peakforceangle'].median()
|
|
||||||
F25b = Rinv[1,1]*y25 + rowdata['peakforce'].median()
|
|
||||||
|
|
||||||
a75 = Rinv[0,0]*x75 + rowdata['peakforceangle'].median()
|
|
||||||
F75 = Rinv[1,0]*x75 + rowdata['peakforce'].median()
|
|
||||||
|
|
||||||
a75b = Rinv[0,1]*y75 + rowdata['peakforceangle'].median()
|
|
||||||
F75b = Rinv[1,1]*y75 + rowdata['peakforce'].median()
|
|
||||||
|
|
||||||
|
a25 = Rinv[0,0]*x25 + rowdata['peakforceangle'].median()
|
||||||
|
F25 = Rinv[1,0]*x25 + rowdata['peakforce'].median()
|
||||||
|
|
||||||
|
a25b = Rinv[0,1]*y25 + rowdata['peakforceangle'].median()
|
||||||
|
F25b = Rinv[1,1]*y25 + rowdata['peakforce'].median()
|
||||||
|
|
||||||
|
a75 = Rinv[0,0]*x75 + rowdata['peakforceangle'].median()
|
||||||
|
F75 = Rinv[1,0]*x75 + rowdata['peakforce'].median()
|
||||||
|
|
||||||
|
a75b = Rinv[0,1]*y75 + rowdata['peakforceangle'].median()
|
||||||
|
F75b = Rinv[1,1]*y75 + rowdata['peakforce'].median()
|
||||||
|
|
||||||
|
|
||||||
a05 = Rinv[0,0]*x05 + rowdata['peakforceangle'].median()
|
a05 = Rinv[0,0]*x05 + rowdata['peakforceangle'].median()
|
||||||
F05 = Rinv[1,0]*x05 + rowdata['peakforce'].median()
|
F05 = Rinv[1,0]*x05 + rowdata['peakforce'].median()
|
||||||
|
|
||||||
a05b = Rinv[0,1]*y05 + rowdata['peakforceangle'].median()
|
a05b = Rinv[0,1]*y05 + rowdata['peakforceangle'].median()
|
||||||
F05b = Rinv[1,1]*y05 + rowdata['peakforce'].median()
|
F05b = Rinv[1,1]*y05 + rowdata['peakforce'].median()
|
||||||
|
|
||||||
a95 = Rinv[0,0]*x95 + rowdata['peakforceangle'].median()
|
a95 = Rinv[0,0]*x95 + rowdata['peakforceangle'].median()
|
||||||
F95 = Rinv[1,0]*x95 + rowdata['peakforce'].median()
|
F95 = Rinv[1,0]*x95 + rowdata['peakforce'].median()
|
||||||
|
|
||||||
a95b = Rinv[0,1]*y95 + rowdata['peakforceangle'].median()
|
a95b = Rinv[0,1]*y95 + rowdata['peakforceangle'].median()
|
||||||
F95b = Rinv[1,1]*y95 + rowdata['peakforce'].median()
|
F95b = Rinv[1,1]*y95 + rowdata['peakforce'].median()
|
||||||
|
except KeyError:
|
||||||
|
a25 = 0
|
||||||
|
F25 = 0
|
||||||
|
|
||||||
|
a25b = 0
|
||||||
|
F25b = 0
|
||||||
|
|
||||||
|
a75 = 0
|
||||||
|
F75 = 0
|
||||||
|
|
||||||
|
a75b = 0
|
||||||
|
F75b = 0
|
||||||
|
|
||||||
|
|
||||||
|
a05 = 0
|
||||||
|
F05 = 0
|
||||||
|
|
||||||
|
a05b = 0
|
||||||
|
F05b = 0
|
||||||
|
|
||||||
|
a95 = 0
|
||||||
|
F95 = 0
|
||||||
|
|
||||||
|
a95b = 0
|
||||||
|
F95b = 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -578,8 +608,6 @@ def interactive_forcecurve(theworkouts,workstrokesonly=True,plottype='scatter'):
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
hull2575 = ConvexHull(points2575)
|
|
||||||
|
|
||||||
|
|
||||||
angles2575 = []
|
angles2575 = []
|
||||||
forces2575 = []
|
forces2575 = []
|
||||||
@@ -711,21 +739,25 @@ def interactive_forcecurve(theworkouts,workstrokesonly=True,plottype='scatter'):
|
|||||||
multilinedatax = []
|
multilinedatax = []
|
||||||
multilinedatay = []
|
multilinedatay = []
|
||||||
for i in range(len(rowdata)):
|
for i in range(len(rowdata)):
|
||||||
x = [
|
try:
|
||||||
rowdata['catch'].values[i],
|
x = [
|
||||||
rowdata['slip'].values[i]+rowdata['catch'].values[i],
|
rowdata['catch'].values[i],
|
||||||
rowdata['peakforceangle'].values[i],
|
rowdata['slip'].values[i]+rowdata['catch'].values[i],
|
||||||
rowdata['finish'].values[i]-rowdata['wash'].values[i],
|
rowdata['peakforceangle'].values[i],
|
||||||
rowdata['finish'].values[i]
|
rowdata['finish'].values[i]-rowdata['wash'].values[i],
|
||||||
|
rowdata['finish'].values[i]
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
y = [
|
y = [
|
||||||
0,
|
0,
|
||||||
thresholdforce,
|
thresholdforce,
|
||||||
rowdata['peakforce'].values[i],
|
rowdata['peakforce'].values[i],
|
||||||
thresholdforce,
|
thresholdforce,
|
||||||
0]
|
0]
|
||||||
|
except KeyError:
|
||||||
|
x = [0,0]
|
||||||
|
y = [0,0]
|
||||||
|
|
||||||
multilinedatax.append(x)
|
multilinedatax.append(x)
|
||||||
multilinedatay.append(y)
|
multilinedatay.append(y)
|
||||||
|
|||||||
Reference in New Issue
Block a user