Shows how dfs aggregator functions work
import numpy as np
import mikeio
from mikeio import aggregator
from mikeio import Dfs2, Dfs1, Dfs0
dfs2file = "../tests/testdata/eq.dfs2"
dfs2 = Dfs2(dfs2file)
ds = dfs2.read()
data2 = ds.data
print(data2[0].shape)
print(np.nanmean(data2[0][:,0,0]))
print(np.nanmean(data2[0][0,:,0]))
print(np.nanmax(data2[0][:,0,0]))
#
s1, s2, s3 = data2[0].shape
vec=np.reshape(data2[0][:,:,0],newshape=(s1*s2,1))
print(np.nanmean(vec))
print(np.nanstd(vec))
(25, 10, 20) 0.6955797064304352 0.44341139290481807 0.9616825580596924 0.53730055398494 0.20780547246244235
s1, s2, s3 = data2[0].shape
vec=np.reshape(data2[0][:,:,0],newshape=(s1*s2,1))
make y-average of dfs2 (keeping x-axis)
dfs1file1 = "../tests/testdata/eq_ax_x.dfs1"
aggregator.dfs2todfs1(dfs2file, dfs1file1)
dfs1 = Dfs1(dfs1file1)
ds1 = dfs1.read()
data1 = ds1.data
print(data1[0].shape)
print(data1[0][0,0])
(25, 20) 0.4434114098548889
Take average instead over x-axis
dfs1file2 = "../tests/testdata/eq_ax_y.dfs1"
aggregator.dfs2todfs1(dfs2file, dfs1file2, axis=2)
dfs1 = Dfs1(dfs1file2)
ds1 = dfs1.read()
data1 = ds1.data
print(data1[0].shape)
print(data1[0][0,0])
(25, 10) 0.5089341998100281
Take max instead over y-axis
dfs1file3 = "../tests/testdata/eq_ax_x_max.dfs1"
aggregator.dfs2todfs1(dfs2file, dfs1file3, axis=1, func=np.nanmax)
dfs1 = Dfs1(dfs1file3)
ds = dfs1.read()
data1 = ds1.data
print(data1[0].shape)
print(data1[0][0,0])
(25, 10) 0.5089341998100281
Calc mean of each time step
dfs0fileA = "../tests/testdata/eq_mean.dfs0"
aggregator.dfstodfs0(dfs2file, dfs0fileA)
dfs0 = Dfs0(dfs0fileA)
ds = dfs0.read()
ds
<mikeio.Dataset> Dimensions: (25,) Time: 2000-01-01 00:00:00 - 2000-01-02 00:00:00 Items: 0: Item 1 <Undefined> (undefined)
dfs0fileB = "../tests/testdata/eq_std.dfs0"
aggregator.dfstodfs0(dfs2file, dfs0fileB, np.nanstd)
dfs0 = Dfs0(dfs0fileB)
ds = dfs0.read()
ds.data[0][0]
0.2997477352619171
import os
os.remove(dfs1file1)
os.remove(dfs1file2)
os.remove(dfs1file3)
os.remove(dfs0fileA)
os.remove(dfs0fileB)