in src/main/java/com/twitter/sbf/graph/Graph.java [801:829]
public double affiliationOfVertexToSet(int nodeId, IntSet set) {
if (set.size() == 1 && set.contains(nodeId)) {
return 1.0;
}
double wtOfNeighborsInSet = 0;
int numberOfNeighborsInSet = 0;
double wtOfNeighborsNotInSet = 0;
Iterator<WeightedId> iter = this.getWeightedNeighborsIterator(nodeId);
while (iter.hasNext()) {
WeightedId wtId = iter.next();
if (set.contains(wtId.neighborId)) {
wtOfNeighborsInSet += wtId.weight;
numberOfNeighborsInSet++;
} else {
wtOfNeighborsNotInSet += wtId.weight;
}
}
int setSize = set.contains(nodeId) ? set.size() - 1 : set.size();
double wtOfSetMinusNeighbors =
this.getGlobalAvgWeight() * (setSize - numberOfNeighborsInSet);
double den = wtOfNeighborsInSet + wtOfNeighborsNotInSet + wtOfSetMinusNeighbors;
if (den == 0.0) {
return 0.0;
} else {
return wtOfNeighborsInSet / den;
}
}