Skip to content
Snippets Groups Projects
Commit c4d1bb1c authored by Tucker Siegel's avatar Tucker Siegel
Browse files

temp change

parent 9fd0ffd5
No related branches found
No related tags found
No related merge requests found
......@@ -23,8 +23,7 @@ require (
gitlab.cs.umd.edu/dawn/dawn-go-common v0.0.0-20211213001842-421eae1b9493
go.mongodb.org/mongo-driver v1.7.3
go4.org v0.0.0-20201209231011-d4a079459e60 // indirect
golang.org/x/net v0.0.0-20210917221730-978cfadd31cf // indirect
golang.org/x/sys v0.0.0-20210917161153-d61c044b1678 // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/tools v0.1.6 // indirect
golang.org/x/mod v0.6.0-dev.0.20211013180041-c96bc1413d57 // indirect
golang.org/x/tools v0.1.8 // indirect
gonum.org/v1/gonum v0.9.3 // indirect
)
This diff is collapsed.
......@@ -7,6 +7,7 @@ import (
"gitlab.cs.umd.edu/dawn/go-backend/dawn-gdd/models/enums"
"gitlab.cs.umd.edu/dawn/go-backend/dawn-gdd/persistence"
"gitlab.cs.umd.edu/dawn/go-backend/dawn-gdd/utils"
"gonum.org/v1/gonum/stat"
)
func GetGefsGddValues(request models.GddRequest) models.GefsGddResponse {
......@@ -58,92 +59,34 @@ func GetGefsGddValues(request models.GddRequest) models.GefsGddResponse {
func GetCfsGddValues(request models.GddRequest) models.CfsGddResponse {
location := request.BuildLocation()
g := persistence.CfsFindAllByLocation(location)
gs := persistence.CfsFindByLocation(location)
product := enums.GetProductFromString(request.Product)
var returnGdds models.CfsGddResponse
gdds := []float64{}
lowerBound := []float64{}
upperBound := []float64{}
var gdds []float64
var lowerBound []float64
var upperBound []float64
for i := 0; i < len(gs[0].MaxTemps); i++ {
gddMean := 0.0
innerGdds := []float64{}
rotatedGdds := [][]float64{}
for i := 0; i < len(gs[0].MinTemps); i++ {
inner := []float64{}
for j := 0; j < len(gs); j++ {
value := utils.CalculateSingleGdd(gs[j].MinTemps[i], gs[j].MaxTemps[i], product)
gddMean += value
innerGdds = append(innerGdds, value)
inner = append(inner, utils.CalculateSingleGdd(gs[j].MinTemps[i], gs[j].MaxTemps[i], product))
if request.Accumulate && i > 0 {
inner[j] += rotatedGdds[len(rotatedGdds)-1][j]
}
}
gddMean = gddMean / float64(len(gs))
gddStd := 0.0
for j := 0; j < len(gs); j++ {
gddStd += math.Pow(innerGdds[j]-gddMean, 2)
}
gddStd = math.Pow(gddStd/float64(len(gs)-1), 0.5)
lowerBoundValue := gddMean - gddStd
upperBoundValue := gddMean + gddStd
lowerBoundValue = utils.ClipMinFloat(lowerBoundValue, 0.0)
upperBoundValue = utils.ClipMinFloat(upperBoundValue, 0.0)
if request.Accumulate && i > 0 {
gddMean += gdds[len(gdds)-1]
lowerBoundValue += lowerBound[len(gdds)-1]
upperBoundValue += upperBound[len(gdds)-1]
}
gdds = append(gdds, gddMean)
lowerBound = append(lowerBound, lowerBoundValue)
upperBound = append(upperBound, upperBoundValue)
rotatedGdds = append(rotatedGdds, inner)
}
// var gdds []float64
// var lowerBound []float64
// var upperBound []float64
// var VarMin []float64
// var VarMax []float64
// var MinTemp []float64
// var MaxTemp []float64
// factor := math.Pow(float64(g.Count), 0.5)
// if product == enums.ProductType.CORN {
// MinTemp = g.CornMinTemps
// MaxTemp = g.CornMaxTemps
// VarMin = g.CornVarMin
// VarMax = g.CornVarMax
// } else {
// MinTemp = g.MinTemps
// MaxTemp = g.MaxTemps
// VarMin = g.VarMin
// VarMax = g.VarMax
// }
// for i := 0; i < len(VarMax); i++ {
// variance := (VarMin[i] + VarMax[i])
// variance *= 0.25 // 0.5 ^ 2
// std := math.Pow(variance, 0.5)
// value := utils.CalculateSingleGdd(MinTemp[i], MaxTemp[i], product)
// lowerBoundValue := (value - (std / factor * 1.960))
// upperBoundValue := (value + (std / factor * 1.960))
// lowerBoundValue = utils.ClipMinFloat(lowerBoundValue, 0.0)
// upperBoundValue = utils.ClipMinFloat(upperBoundValue, 0.0)
// if request.Accumulate && i > 0 {
// value += gdds[len(gdds)-1]
// lowerBoundValue += lowerBound[len(gdds)-1]
// upperBoundValue += upperBound[len(gdds)-1]
// }
// gdds = append(gdds, value)
// lowerBound = append(lowerBound, lowerBoundValue)
// upperBound = append(upperBound, upperBoundValue)
// }
for i := 0; i < len(rotatedGdds); i++ {
row := rotatedGdds[i]
mean, std := stat.MeanStdDev(row, nil)
gdds = append(gdds, mean)
upperBound = append(upperBound, utils.ClipMinFloat(mean+std, 0))
lowerBound = append(lowerBound, utils.ClipMinFloat(mean-std, 0))
}
returnGdds = models.CfsGddResponse{
Product: product.Name,
......@@ -152,7 +95,7 @@ func GetCfsGddValues(request models.GddRequest) models.CfsGddResponse {
GddValues: gdds,
LowerBound: lowerBound,
UpperBound: upperBound,
FirstDate: gs[0].Date.Time().UTC(),
FirstDate: g.Date.Time().UTC(),
}
return returnGdds
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment