added alternative updatecp
but it is slower ...
This commit is contained in:
@@ -107,7 +107,104 @@ def getsinglecp(df):
|
||||
|
||||
return delta,cpvalue,avgpower
|
||||
|
||||
def getcp_new(dfgrouped,logarr):
|
||||
delta = []
|
||||
cpvalue = []
|
||||
avgpower = {}
|
||||
|
||||
|
||||
for id, group in dfgrouped:
|
||||
tt = group['time'].copy()
|
||||
|
||||
ww = group['power'].copy()
|
||||
|
||||
try:
|
||||
avgpower[id] = int(ww.mean())
|
||||
except ValueError:
|
||||
avgpower[id] = '---'
|
||||
|
||||
tmax = tt.max()
|
||||
|
||||
if tmax > 500000:
|
||||
newlen = int(tmax/2000.)
|
||||
newt = np.arange(newlen)*tmax/float(newlen)
|
||||
deltat = newt[1]-newt[0]
|
||||
else:
|
||||
newt = np.arange(0,tmax,10.)
|
||||
deltat = 10.
|
||||
|
||||
ww = griddata(tt.values,
|
||||
ww.values,
|
||||
newt,method='linear',
|
||||
rescale=True)
|
||||
|
||||
tt = pd.Series(newt)
|
||||
ww = pd.Series(ww)
|
||||
|
||||
G = pd.Series(ww.cumsum())
|
||||
G = pd.concat([pd.Series([0]),G])
|
||||
|
||||
h = np.mgrid[0:len(tt)+1:1,0:len(tt)+1:1]
|
||||
|
||||
distances = pd.DataFrame(h[1]-h[0])
|
||||
|
||||
ones = 1+np.zeros(len(G))
|
||||
|
||||
Ghor = np.outer(ones,G)
|
||||
Gver = np.outer(G,ones)
|
||||
|
||||
Gdif = Ghor - Gver
|
||||
|
||||
Gdif = np.tril(Gdif.T).T
|
||||
|
||||
Gdif = pd.DataFrame(Gdif)
|
||||
|
||||
F = Gdif/distances
|
||||
|
||||
F.fillna(inplace=True,method='ffill',axis=1)
|
||||
F.fillna(inplace=True,value=0)
|
||||
|
||||
restime = []
|
||||
power = []
|
||||
|
||||
for i in np.arange(0,len(tt)+1,1):
|
||||
restime.append(deltat*i)
|
||||
cp = np.diag(F,i).max()
|
||||
power.append(cp)
|
||||
|
||||
power[0] = power[1]
|
||||
|
||||
restime = np.array(restime)
|
||||
power = np.array(power)
|
||||
|
||||
|
||||
#power[0] = power[1]
|
||||
|
||||
cpvalues = griddata(restime,power,
|
||||
logarr,method='linear', fill_value=0)
|
||||
|
||||
|
||||
|
||||
for cpv in cpvalues:
|
||||
cpvalue.append(cpv)
|
||||
for d in logarr:
|
||||
delta.append(d)
|
||||
|
||||
df = pd.DataFrame({
|
||||
'delta':delta,
|
||||
'cpvalue':cpvalue
|
||||
})
|
||||
|
||||
df.dropna(axis=0, how='any',inplace=True)
|
||||
df = df.sort_values(['delta','cp'], ascending=[1, 0])
|
||||
df = df.drop_duplicates(subset='Delta', keep='first')
|
||||
|
||||
delta = df['delta']
|
||||
cpvalue = df['cpvalue']
|
||||
|
||||
return delta,cpvalue,avgpower
|
||||
|
||||
|
||||
def getcp(dfgrouped,logarr):
|
||||
delta = []
|
||||
cpvalue = []
|
||||
@@ -165,7 +262,9 @@ def getcp(dfgrouped,logarr):
|
||||
cpvalue.append(cpv)
|
||||
for d in logarr:
|
||||
delta.append(d)
|
||||
|
||||
|
||||
|
||||
|
||||
delta = pd.Series(delta,name='Delta')
|
||||
cpvalue = pd.Series(cpvalue,name='CP')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user