Mercurial > gemma
diff pkg/common/nashsutcliffe.go @ 3097:e6ba32b060df
Nash Sutcliffe: Treat last prediction date as valid afterwards. Small optimizsations.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 23 Apr 2019 18:10:19 +0200 |
parents | cb3360653652 |
children | 8f2ac24b0cb3 |
line wrap: on
line diff
--- a/pkg/common/nashsutcliffe.go Tue Apr 23 16:53:56 2019 +0200 +++ b/pkg/common/nashsutcliffe.go Tue Apr 23 18:10:19 2019 +0200 @@ -49,9 +49,11 @@ continue } if m1.When.Equal(when) { + //log.Printf("matches first: %f\n", m1.Value) return m1.Value, true } if m2.When.Equal(when) { + //log.Printf("matches second: %f\n", m1.Value) return m2.Value, true } @@ -69,13 +71,27 @@ a := (m1.Value - m2.Value) / m1.When.Sub(m2.When).Seconds() b := m1.Value - m1.When.Sub(utc0).Seconds()*a m := when.Sub(utc0).Seconds()*a + b + + //log.Printf("%f %f %f\n", m1.Value, m, m2.Value) return m, true } - if len(mvs) == 1 && when.Equal(mvs[0].When) { - return mvs[0].Value, true + if l := len(mvs); l > 0 { + if when.Equal(mvs[0].When) { + //log.Printf("at start\n") + return mvs[0].Value, true + } + if !when.Before(mvs[l-1].When) { + //log.Printf("after end\n") + } + return mvs[l-1].Value, true } + //if len(mvs) > 0 { + // log.Printf("does not match %v %v %v\n", + // mvs[0].When, mvs[len(mvs)-1].When.Sub(mvs[0].When), when) + //} + return 0, false }