Private
Public Access
1
0

added alternative updatecp

but it is slower ...
This commit is contained in:
Sander Roosendaal
2017-12-22 10:35:56 +01:00
parent 65364ec59a
commit a72e1525f7
2 changed files with 110 additions and 5 deletions

View File

@@ -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')