Mercurial > gemma
comparison 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 |
comparison
equal
deleted
inserted
replaced
3090:342c7bcb97f1 | 3091:cec9d4af5f03 |
---|---|
556 type coeffs struct { | 556 type coeffs struct { |
557 When models.ImportTime `json:"when"` | 557 When models.ImportTime `json:"when"` |
558 Coeffs []coeff `json:"coeffs"` | 558 Coeffs []coeff `json:"coeffs"` |
559 } | 559 } |
560 | 560 |
561 var measurements []common.NSMeasurement | 561 var predicted, observed []float64 |
562 | 562 |
563 cs := make([]coeff, 3) | 563 cs := make([]coeff, 3) |
564 for i := range cs { | 564 for i := range cs { |
565 cs[i].Hours = (i + 1) * 24 | 565 cs[i].Hours = (i + 1) * 24 |
566 back := when.Add(time.Duration(-cs[i].Hours) * time.Hour) | 566 delta := -time.Duration(-cs[i].Hours) * time.Hour |
567 | 567 |
568 for j := range values { | 568 for j := range values { |
569 if predicted, ok := values[j].predicted.Interpolate(back); ok { | 569 when := values[j].when.Add(delta) |
570 measurements = append(measurements, common.NSMeasurement{ | 570 if p, ok := values[j].predicted.Interpolate(when); ok { |
571 Observed: values[j].observed, | 571 predicted = append(predicted, p) |
572 Predicted: predicted, | 572 observed = append(observed, values[j].observed) |
573 }) | |
574 } | 573 } |
575 } | 574 } |
576 | 575 |
577 cs[i].Value, cs[i].Samples = common.NashSutcliffe( | 576 cs[i].Value = common.NashSutcliffe(predicted, observed) |
578 measurements, | 577 cs[i].Samples = len(predicted) |
579 when, | 578 |
580 back, | 579 predicted = predicted[:0] |
581 ) | 580 observed = observed[:0] |
582 | |
583 measurements = measurements[:0] | |
584 } | 581 } |
585 | 582 |
586 jr = JSONResult{ | 583 jr = JSONResult{ |
587 Result: &coeffs{ | 584 Result: &coeffs{ |
588 When: models.ImportTime{Time: when}, | 585 When: models.ImportTime{Time: when}, |