Skip to content

Commit 3fab734

Browse files
Fix filtering (always done in q,p)
1 parent 9a4f1d9 commit 3fab734

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

algo/src/main/java/org/neo4j/gds/hdbscan/DualTreeMSTAlgorithm.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,7 @@ boolean score(KdNode kdNodeQ, KdNode kdNodeR) {
212212

213213
}
214214

215-
private boolean filterNodesOnCoreValue(long node) {
216-
var component = unionFind.setIdOf(node);
215+
private boolean filterNodesOnCoreValue(long node, long component) {
217216
return coreValues.get(node) < closestDistanceTracker.componentClosestDistance(component);
218217
}
219218

@@ -223,17 +222,18 @@ void traversalLeafLeafStep(KdNode kdNodeQ, KdNode kdNodeR) {
223222
var qEnd = kdNodeQ.end();
224223
for (long qIndex = qStart; qIndex < qEnd; ++qIndex) {
225224
var qPoint = kdTree.nodeAt(qIndex);
226-
if (!filterNodesOnCoreValue(qPoint)) {
225+
var qComp = unionFind.setIdOf(qPoint);
226+
227+
if (!filterNodesOnCoreValue(qPoint, qComp)) {
227228
continue;
228229
}
229230

230231
var rStart = kdNodeR.start();
231232
var rEnd = kdNodeR.end();
232-
var qComp = unionFind.setIdOf(qPoint);
233233
var qArr = nodePropertyValues.doubleArrayValue(qPoint);
234234
for (long rIndex = rStart; rIndex < rEnd; ++rIndex) {
235235
var rPoint = kdTree.nodeAt(rIndex);
236-
if (filterNodesOnCoreValue(rPoint)) {
236+
if (filterNodesOnCoreValue(rPoint,qComp)) {
237237
baseCase(qPoint, rPoint, qComp, qArr);
238238
}
239239
}

0 commit comments

Comments
 (0)