3
3
import pandas as pd
4
4
import mikeio
5
5
from mikeio import Dfs0 , EUMType , EUMUnit , ItemInfo
6
+ from mikecore .DfsFile import DataValueType
6
7
7
8
8
9
import pytest
@@ -274,23 +275,31 @@ def test_from_pandas_mapping_eum_types() -> None:
274
275
time = pd .DatetimeIndex (["2001-01-01" , "2001-01-01 01:00" , "2001-01-01 01:10" ])
275
276
276
277
df = pd .DataFrame (
277
- {"flow" : np .array ([1 , np .nan , 2 ]), "level " : np .array ([2 , 3.0 , - 1.3 ])}
278
+ {"flow" : np .array ([1 , np .nan , 2 ]), "rain " : np .array ([2 , 3.0 , - 1.3 ])}
278
279
)
279
280
df .index = time
280
281
281
282
dfr = df .resample ("5min" ).mean ().fillna (0.0 ) # .interpolate()
282
283
284
+ item_with_dvt = mikeio .ItemInfo (
285
+ itemtype = mikeio .EUMType .Rainfall ,
286
+ unit = mikeio .EUMUnit .centimeter ,
287
+ data_value_type = "StepAccumulated" ,
288
+ )
283
289
ds = mikeio .from_pandas (
284
290
dfr ,
285
291
items = {
286
292
"flow" : mikeio .ItemInfo (itemtype = mikeio .EUMType .Discharge ),
287
- "level " : mikeio . ItemInfo ( itemtype = mikeio . EUMType . Water_Level ) ,
293
+ "rain " : item_with_dvt ,
288
294
},
289
295
)
296
+ item_with_dvt .name = "rain"
290
297
291
298
assert ds .n_timesteps == 15
292
299
assert ds [0 ].type == mikeio .EUMType .Discharge
293
- assert ds [1 ].type == mikeio .EUMType .Water_Level
300
+ assert ds [1 ].type == mikeio .EUMType .Rainfall
301
+ assert ds [1 ].item is not item_with_dvt
302
+ assert ds [1 ].item == item_with_dvt
294
303
assert len (ds ) == 2
295
304
assert ds .end_time == dfr .index [- 1 ]
296
305
assert ds .is_equidistant
@@ -304,10 +313,14 @@ def test_from_pandas_same_eum_type() -> None:
304
313
index = pd .date_range ("2001-01-01" , periods = 3 , freq = "H" ),
305
314
)
306
315
307
- ds = mikeio .from_pandas (df , items = ItemInfo (EUMType .Water_Level ))
316
+ ds = mikeio .from_pandas (
317
+ df ,
318
+ items = ItemInfo (EUMType .Water_Level , data_value_type = DataValueType .Accumulated ),
319
+ )
308
320
309
321
assert ds .n_timesteps == 3
310
322
assert ds [0 ].type == EUMType .Water_Level
323
+ assert ds [0 ].item .data_value_type == DataValueType .Accumulated
311
324
assert ds ["station_b" ].item .name == "station_b"
312
325
313
326
@@ -325,13 +338,20 @@ def test_from_pandas_sequence_eum_types() -> None:
325
338
dfr ,
326
339
items = [
327
340
mikeio .ItemInfo ("Ignored" , itemtype = mikeio .EUMType .Discharge ),
328
- mikeio .ItemInfo ("Also Ignored" , itemtype = mikeio .EUMType .Water_Level ),
341
+ mikeio .ItemInfo (
342
+ "Also Ignored" ,
343
+ itemtype = mikeio .EUMType .Water_Level ,
344
+ unit = mikeio .EUMUnit .millimeter ,
345
+ data_value_type = DataValueType .Accumulated ,
346
+ ),
329
347
],
330
348
)
331
349
332
350
assert ds .n_timesteps == 15
333
351
assert ds [0 ].type == mikeio .EUMType .Discharge
334
352
assert ds [1 ].type == mikeio .EUMType .Water_Level
353
+ assert ds [1 ].item .unit == mikeio .EUMUnit .millimeter
354
+ assert ds [1 ].item .data_value_type == DataValueType .Accumulated
335
355
assert ds ["level" ].item .name == "level"
336
356
337
357
0 commit comments