func()

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], &degrees)
	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
		}
	}
}