in vermeer/apps/compute/statistics.go [397:437]
func (sd *StatisticsSketchDegreeMaster) Aggregate(data []byte) {
result := make([][]byte, 2)
err := json.Unmarshal(data, &result)
if err != nil {
logrus.Errorf("json unmarshal error:%v", err)
}
superVertex := make(map[string]int32)
degrees := make(map[int32]int64)
err = json.Unmarshal(result[0], °rees)
if err != nil {
logrus.Errorf("json unmarshal error:%v", err)
}
err = json.Unmarshal(result[1], &superVertex)
if err != nil {
logrus.Errorf("json unmarshal error:%v", err)
}
for k, v := range degrees {
if k < sd.minDegree {
sd.minDegree = k
}
if k > sd.maxDegree {
sd.maxDegree = k
}
sd.degrees[k] += v
if _, ok := sd.dispersions[k]; !ok {
sd.dispersions[k] = (float64(v) - sd.degreeAvg) * (float64(v) - sd.degreeAvg)
}
}
for k, v := range superVertex {
if float64(v) >= float64(sd.edgeCount)*0.01 && float64(v) < float64(sd.edgeCount)*0.03 {
sd.superVertex[0][k] = v
} else if float64(v) >= float64(sd.edgeCount)*0.03 && float64(v) < float64(sd.edgeCount)*0.05 {
sd.superVertex[1][k] = v
} else if float64(v) >= float64(sd.edgeCount)*0.05 && float64(v) < float64(sd.edgeCount)*0.1 {
sd.superVertex[2][k] = v
} else if float64(v) >= float64(sd.edgeCount)*0.1 {
sd.superVertex[3][k] = v
}
}
}