Skip to content

Commit 28ccd32

Browse files
committed
Implement new PropertyValues::maxIndex
This can be used to find out the highest index to check if you want to retrieve every value.
1 parent c7a8b15 commit 28ccd32

File tree

69 files changed

+471
-65
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+471
-65
lines changed

algo-common/src/main/java/org/neo4j/gds/scaling/ScaleProperties.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,11 @@ public double doubleValue(long nodeId) {
228228
public long valuesStored() {
229229
return property.valuesStored();
230230
}
231+
232+
@Override
233+
public long maxIndex() {
234+
return property.maxIndex();
235+
}
231236
};
232237
}
233238

@@ -247,6 +252,11 @@ public double doubleValue(long nodeId) {
247252
public long valuesStored() {
248253
return property.valuesStored();
249254
}
255+
256+
@Override
257+
public long maxIndex() {
258+
return property.maxIndex();
259+
}
250260
};
251261
}
252262

@@ -266,6 +276,11 @@ public double doubleValue(long nodeId) {
266276
public long valuesStored() {
267277
return property.valuesStored();
268278
}
279+
280+
@Override
281+
public long maxIndex() {
282+
return property.maxIndex();
283+
}
269284
};
270285
}
271286

algo/src/main/java/org/neo4j/gds/modularityoptimization/ModularityOptimization.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,11 @@ public long longValue(long nodeId) {
419419
public long valuesStored() {
420420
return currentCommunities.size();
421421
}
422+
423+
@Override
424+
public long maxIndex() {
425+
return graph.nodeCount();
426+
}
422427
};
423428
}
424429
}

algo/src/main/java/org/neo4j/gds/pagerank/EigenvectorComputation.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,11 @@ public long valuesStored() {
119119
return context.nodeCount();
120120
}
121121

122+
@Override
123+
public long maxIndex() {
124+
return context.nodeCount();
125+
}
126+
122127
@Override
123128
public double doubleValue(long nodeId) {
124129
return context.doubleNodeValue(nodeId, NEXT_RANK);

algo/src/main/java/org/neo4j/gds/similarity/knn/metrics/LongArrayPropertySimilarityComputer.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ static final class SortedLongArrayPropertyValues implements LongArrayNodePropert
5555
private final HugeObjectArray<long[]> properties;
5656

5757
SortedLongArrayPropertyValues(NodePropertyValues nodePropertyValues) {
58-
this.properties = HugeObjectArray.newArray(long[].class, nodePropertyValues.valuesStored());
58+
this.properties = HugeObjectArray.newArray(long[].class, nodePropertyValues.maxIndex());
5959
this.properties.setAll(i -> {
6060
long[] input = nodePropertyValues.longArrayValue(i);
6161

@@ -74,6 +74,11 @@ public long valuesStored() {
7474
return properties.size();
7575
}
7676

77+
@Override
78+
public long maxIndex() {
79+
return properties.size();
80+
}
81+
7782
@Override
7883
public long[] longArrayValue(long nodeId) {
7984
return properties.get(nodeId);

algo/src/main/java/org/neo4j/gds/similarity/knn/metrics/NullCheckingNodePropertyValues.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@ public long valuesStored() {
9090
return properties.valuesStored();
9191
}
9292

93+
@Override
94+
public long maxIndex() {
95+
return properties.maxIndex();
96+
}
97+
9398
private void check(long nodeId, @Nullable Object value) {
9499
if (value == null) {
95100
throw new IllegalArgumentException(formatWithLocale(

algo/src/test/java/org/neo4j/gds/similarity/knn/GenerateRandomNeighborsTest.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.eclipse.collections.api.tuple.primitive.IntIntPair;
2626
import org.neo4j.gds.api.properties.nodes.LongNodePropertyValues;
2727
import org.neo4j.gds.core.huge.DirectIdMap;
28+
import org.neo4j.gds.core.utils.IdentityPropertyValues;
2829
import org.neo4j.gds.core.utils.paged.HugeObjectArray;
2930
import org.neo4j.gds.core.utils.partition.Partition;
3031
import org.neo4j.gds.core.utils.progress.tasks.ProgressTracker;
@@ -51,17 +52,7 @@ void neighborsForKEqualsNMinus1startWithEachOtherAsNeighbors(
5152
nodeCount
5253
);
5354

54-
var nodeProperties = new LongNodePropertyValues() {
55-
@Override
56-
public long longValue(long nodeId) {
57-
return nodeId;
58-
}
59-
60-
@Override
61-
public long valuesStored() {
62-
return nodeCount;
63-
}
64-
};
55+
var nodeProperties = new IdentityPropertyValues(nodeCount);
6556

6657
var similarityComputer = SimilarityComputer.ofProperty(
6758
idMap,

algo/src/test/java/org/neo4j/gds/similarity/knn/metrics/LongArrayPropertySimilarityComputerTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,11 @@ public long[] longArrayValue(long nodeId) {
4040
public long valuesStored() {
4141
return 2;
4242
}
43+
44+
@Override
45+
public long maxIndex() {
46+
return 3;
47+
}
4348
};
4449

4550
var sortedValues = new LongArrayPropertySimilarityComputer.SortedLongArrayPropertyValues(sparseProperties);

algo/src/test/java/org/neo4j/gds/similarity/knn/metrics/SimilarityComputerTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,11 @@ public long[] longArrayValue(long nodeId) {
266266

267267
@Override
268268
public long valuesStored() {
269+
return 0;
270+
}
271+
272+
@Override
273+
public long maxIndex() {
269274
return nodeCount;
270275
}
271276
};

alpha/alpha-proc/src/main/java/org/neo4j/gds/centrality/HarmonicCentralityWriteProc.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,11 @@ public long valuesStored() {
9696
return computationResult.graph().nodeCount();
9797
}
9898

99+
@Override
100+
public long maxIndex() {
101+
return computationResult.graph().nodeCount();
102+
}
103+
99104
@Override
100105
public double doubleValue(long nodeId) {
101106
return computationResult.result().getCentralityScore(nodeId);

alpha/alpha-proc/src/main/java/org/neo4j/gds/influenceMaximization/CelfNodeProperties.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ class CelfNodeProperties implements DoubleNodePropertyValues {
3434

3535
@Override
3636
public long valuesStored() {
37+
return celfSeedSet.size();
38+
}
39+
40+
@Override
41+
public long maxIndex() {
3742
return totalGraphNodeCount;
3843
}
3944

0 commit comments

Comments
 (0)