From e763789551d56c8566dae81ca6c3c4a1e0ebbe8b Mon Sep 17 00:00:00 2001
From: Peter Luenenschloss <peter.luenenschloss@ufz.de>
Date: Tue, 2 Jul 2019 13:48:32 +0200
Subject: [PATCH] fixed setValueOnCopyOfASlice problem in
 flagSoilMoistureByPrecipitation function

---
 saqc/funcs/functions.py | 12 +++++++-----
 saqc/lib/tools.py       |  3 ++-
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/saqc/funcs/functions.py b/saqc/funcs/functions.py
index f3025aa19..2f1c1a8f1 100644
--- a/saqc/funcs/functions.py
+++ b/saqc/funcs/functions.py
@@ -247,8 +247,10 @@ def flagSoilMoistureByPrecipitationEvents(data, flags, field, flagger, prec_refe
     periods = 2*int(24*60*60/moist_rate.n)
     invalid_raises = ~ef.rolling(window='1D', closed='both', min_periods=periods)\
         .apply(prec_test, raw=False).astype(bool)
-
-    # apply calculated flagging mask
-    flags.loc[invalid_raises.values, field] = flagger.setFlag(flags.loc[invalid_raises.values, field], **kwargs)
-
-    return (data, flags)
\ No newline at end of file
+    # undo stacking heritage (only every second entrie actually is holding an information:
+    invalid_raises = invalid_raises[1::2]
+    # retrieve indices referring to values-to-be-flagged-bad
+    invalid_indices = invalid_raises.index[invalid_raises]
+    # set Flags
+    flags.loc[invalid_indices, field] = flagger.setFlag(flags.loc[invalid_indices, field], **kwargs)
+    return (data, flags)
diff --git a/saqc/lib/tools.py b/saqc/lib/tools.py
index 3a2d28fcc..1c8d919ed 100644
--- a/saqc/lib/tools.py
+++ b/saqc/lib/tools.py
@@ -113,5 +113,6 @@ def estimateSamplingRate(index):
     max_scnds = scnds_series.max()
     min_scnds = scnds_series.min()
     hist = np.histogram(scnds_series, range=(min_scnds, max_scnds + 1), bins=int(max_scnds - min_scnds + 1))
-    # return smallest non zero sample difference (this works, because input is expected to be harmonized)
+    # return smallest non zero sample difference (this works, because input is expected to be at least
+    # harmonized with skips)
     return pd.tseries.frequencies.to_offset(str(int(hist[1][:-1][hist[0] > 0].min())) + 's')
-- 
GitLab