Mercurial > gemma
diff pkg/controllers/gauges.go @ 3091:cec9d4af5f03
Simplified and fixed Nash Sutcliffe calculation.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 23 Apr 2019 10:10:54 +0200 |
parents | 342c7bcb97f1 |
children | 7dc9660df743 |
line wrap: on
line diff
--- a/pkg/controllers/gauges.go Sun Apr 21 19:11:38 2019 +0200 +++ b/pkg/controllers/gauges.go Tue Apr 23 10:10:54 2019 +0200 @@ -558,29 +558,26 @@ Coeffs []coeff `json:"coeffs"` } - var measurements []common.NSMeasurement + var predicted, observed []float64 cs := make([]coeff, 3) for i := range cs { cs[i].Hours = (i + 1) * 24 - back := when.Add(time.Duration(-cs[i].Hours) * time.Hour) + delta := -time.Duration(-cs[i].Hours) * time.Hour for j := range values { - if predicted, ok := values[j].predicted.Interpolate(back); ok { - measurements = append(measurements, common.NSMeasurement{ - Observed: values[j].observed, - Predicted: predicted, - }) + when := values[j].when.Add(delta) + if p, ok := values[j].predicted.Interpolate(when); ok { + predicted = append(predicted, p) + observed = append(observed, values[j].observed) } } - cs[i].Value, cs[i].Samples = common.NashSutcliffe( - measurements, - when, - back, - ) + cs[i].Value = common.NashSutcliffe(predicted, observed) + cs[i].Samples = len(predicted) - measurements = measurements[:0] + predicted = predicted[:0] + observed = observed[:0] } jr = JSONResult{