Skip to content

Commit baeacfd

Browse files
authored
Merge pull request #10287 from vnickolov/remote-community-stats
remote community stats
2 parents 3f71510 + 9fec284 commit baeacfd

11 files changed

+178
-374
lines changed

procedures/facade-api/community-facade-api/src/main/java/org/neo4j/gds/procedures/algorithms/community/K1ColoringStatsResult.java

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -24,34 +24,15 @@
2424
import java.util.Map;
2525
import java.util.stream.Stream;
2626

27-
public class K1ColoringStatsResult {
28-
public final long preProcessingMillis;
29-
public final long computeMillis;
30-
31-
public final long nodeCount;
32-
public final long colorCount;
33-
public final long ranIterations;
34-
public final boolean didConverge;
35-
36-
public Map<String, Object> configuration;
37-
38-
public K1ColoringStatsResult(
39-
long preProcessingMillis,
40-
long computeMillis,
41-
long nodeCount,
42-
long colorCount,
43-
long ranIterations,
44-
boolean didConverge,
45-
Map<String, Object> configuration
46-
) {
47-
this.preProcessingMillis = preProcessingMillis;
48-
this.computeMillis = computeMillis;
49-
this.nodeCount = nodeCount;
50-
this.colorCount = colorCount;
51-
this.ranIterations = ranIterations;
52-
this.didConverge = didConverge;
53-
this.configuration = configuration;
54-
}
27+
public record K1ColoringStatsResult(
28+
long preProcessingMillis,
29+
long computeMillis,
30+
long nodeCount,
31+
long colorCount,
32+
long ranIterations,
33+
boolean didConverge,
34+
Map<String, Object> configuration
35+
) {
5536

5637
static Stream<K1ColoringStatsResult> emptyFrom(
5738
AlgorithmProcessingTimings timings,

procedures/facade-api/community-facade-api/src/main/java/org/neo4j/gds/procedures/algorithms/community/LeidenStatsResult.java

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,25 @@
2020
package org.neo4j.gds.procedures.algorithms.community;
2121

2222
import org.neo4j.gds.applications.algorithms.machinery.AlgorithmProcessingTimings;
23+
import org.neo4j.gds.procedures.algorithms.results.StatsResult;
2324

2425
import java.util.Collections;
2526
import java.util.List;
2627
import java.util.Map;
2728

2829
public record LeidenStatsResult(
29-
long ranLevels,
30-
boolean didConverge,
31-
long nodeCount,
32-
long communityCount,
33-
Map<String, Object> communityDistribution,
34-
double modularity,
35-
List<Double> modularities,
36-
long preProcessingMillis,
37-
long computeMillis,
38-
long postProcessingMillis,
39-
Map<String, Object> configuration
40-
) {
30+
long ranLevels,
31+
boolean didConverge,
32+
long nodeCount,
33+
long communityCount,
34+
Map<String, Object> communityDistribution,
35+
double modularity,
36+
List<Double> modularities,
37+
long preProcessingMillis,
38+
long computeMillis,
39+
long postProcessingMillis,
40+
Map<String, Object> configuration
41+
) implements StatsResult {
4142

4243
static LeidenStatsResult emptyFrom(AlgorithmProcessingTimings timings, Map<String, Object> configurationMap) {
4344
return new LeidenStatsResult(

procedures/facade-api/community-facade-api/src/main/java/org/neo4j/gds/procedures/algorithms/community/LocalClusteringCoefficientMutateResult.java

Lines changed: 20 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -20,36 +20,40 @@
2020
package org.neo4j.gds.procedures.algorithms.community;
2121

2222
import org.neo4j.gds.applications.algorithms.machinery.AlgorithmProcessingTimings;
23-
import org.neo4j.gds.result.AbstractResultBuilder;
23+
import org.neo4j.gds.procedures.algorithms.results.MutateNodePropertiesResult;
2424

2525
import java.util.Map;
2626

27-
public final class LocalClusteringCoefficientMutateResult extends LocalClusteringCoefficientStatsResult {
28-
public long mutateMillis;
29-
public long nodePropertiesWritten;
27+
public record LocalClusteringCoefficientMutateResult(
28+
double averageClusteringCoefficient,
29+
long nodeCount,
30+
long preProcessingMillis,
31+
long computeMillis,
32+
long mutateMillis,
33+
long nodePropertiesWritten,
34+
Map<String, Object> configuration,
35+
long postProcessingMillis
36+
) implements MutateNodePropertiesResult {
3037

3138
public LocalClusteringCoefficientMutateResult(
3239
double averageClusteringCoefficient,
33-
long nodeCount,
40+
long size,
3441
long preProcessingMillis,
3542
long computeMillis,
3643
long mutateMillis,
3744
long nodePropertiesWritten,
3845
Map<String, Object> configuration
3946
) {
40-
super(
47+
this(
4148
averageClusteringCoefficient,
42-
nodeCount,
49+
size,
4350
preProcessingMillis,
4451
computeMillis,
45-
configuration
52+
mutateMillis,
53+
nodePropertiesWritten,
54+
configuration,
55+
0
4656
);
47-
this.mutateMillis = mutateMillis;
48-
this.nodePropertiesWritten = nodePropertiesWritten;
49-
}
50-
51-
public static Builder builder() {
52-
return new Builder();
5357
}
5458

5559
public static LocalClusteringCoefficientMutateResult emptyFrom(
@@ -63,30 +67,8 @@ public static LocalClusteringCoefficientMutateResult emptyFrom(
6367
timings.computeMillis,
6468
timings.sideEffectMillis,
6569
0,
66-
configurationMap
70+
configurationMap,
71+
0
6772
);
6873
}
69-
70-
public static class Builder extends AbstractResultBuilder<LocalClusteringCoefficientMutateResult> {
71-
72-
double averageClusteringCoefficient = 0;
73-
74-
public Builder withAverageClusteringCoefficient(double averageClusteringCoefficient) {
75-
this.averageClusteringCoefficient = averageClusteringCoefficient;
76-
return this;
77-
}
78-
79-
@Override
80-
public LocalClusteringCoefficientMutateResult build() {
81-
return new LocalClusteringCoefficientMutateResult(
82-
averageClusteringCoefficient,
83-
nodeCount,
84-
preProcessingMillis,
85-
computeMillis,
86-
mutateMillis,
87-
nodePropertiesWritten,
88-
config.toMap()
89-
);
90-
}
91-
}
9274
}

procedures/facade-api/community-facade-api/src/main/java/org/neo4j/gds/procedures/algorithms/community/LocalClusteringCoefficientStatsResult.java

Lines changed: 20 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -20,35 +20,33 @@
2020
package org.neo4j.gds.procedures.algorithms.community;
2121

2222
import org.neo4j.gds.applications.algorithms.machinery.AlgorithmProcessingTimings;
23-
import org.neo4j.gds.result.AbstractResultBuilder;
23+
import org.neo4j.gds.procedures.algorithms.results.StatsResult;
2424

2525
import java.util.Map;
2626

27-
public class LocalClusteringCoefficientStatsResult {
28-
public final double averageClusteringCoefficient;
29-
public final long nodeCount;
30-
public final long preProcessingMillis;
31-
public final long computeMillis;
32-
public final Map<String, Object> configuration;
33-
public final long postProcessingMillis;
34-
27+
public record LocalClusteringCoefficientStatsResult(
28+
double averageClusteringCoefficient,
29+
long nodeCount,
30+
long preProcessingMillis,
31+
long computeMillis,
32+
Map<String, Object> configuration,
33+
long postProcessingMillis
34+
) implements StatsResult {
3535
public LocalClusteringCoefficientStatsResult(
3636
double averageClusteringCoefficient,
37-
long nodeCount,
37+
long size,
3838
long preProcessingMillis,
3939
long computeMillis,
4040
Map<String, Object> configuration
4141
) {
42-
this.averageClusteringCoefficient = averageClusteringCoefficient;
43-
this.nodeCount = nodeCount;
44-
this.postProcessingMillis = 0; // post-processing is instant for TC
45-
this.preProcessingMillis = preProcessingMillis;
46-
this.computeMillis = computeMillis;
47-
this.configuration = configuration;
48-
}
49-
50-
public static Builder statsBuilder() {
51-
return new Builder();
42+
this(
43+
averageClusteringCoefficient,
44+
size,
45+
preProcessingMillis,
46+
computeMillis,
47+
configuration,
48+
0
49+
);
5250
}
5351

5452
static LocalClusteringCoefficientStatsResult emptyFrom(
@@ -60,28 +58,8 @@ static LocalClusteringCoefficientStatsResult emptyFrom(
6058
0,
6159
timings.preProcessingMillis,
6260
timings.computeMillis,
63-
configurationMap
61+
configurationMap,
62+
0
6463
);
6564
}
66-
67-
public static class Builder extends AbstractResultBuilder<LocalClusteringCoefficientStatsResult> {
68-
69-
double averageClusteringCoefficient = 0;
70-
71-
public Builder withAverageClusteringCoefficient(double averageClusteringCoefficient) {
72-
this.averageClusteringCoefficient = averageClusteringCoefficient;
73-
return this;
74-
}
75-
76-
@Override
77-
public LocalClusteringCoefficientStatsResult build() {
78-
return new LocalClusteringCoefficientStatsResult(
79-
averageClusteringCoefficient,
80-
nodeCount,
81-
preProcessingMillis,
82-
computeMillis,
83-
config.toMap()
84-
);
85-
}
86-
}
8765
}

procedures/facade-api/community-facade-api/src/main/java/org/neo4j/gds/procedures/algorithms/community/LocalClusteringCoefficientWriteResult.java

Lines changed: 22 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,20 @@
2020
package org.neo4j.gds.procedures.algorithms.community;
2121

2222
import org.neo4j.gds.applications.algorithms.machinery.AlgorithmProcessingTimings;
23-
import org.neo4j.gds.result.AbstractResultBuilder;
23+
import org.neo4j.gds.procedures.algorithms.results.WriteNodePropertiesResult;
2424

2525
import java.util.Map;
2626

27-
public final class LocalClusteringCoefficientWriteResult extends LocalClusteringCoefficientStatsResult {
28-
public long writeMillis;
29-
public long nodePropertiesWritten;
27+
public record LocalClusteringCoefficientWriteResult(
28+
double averageClusteringCoefficient,
29+
long nodeCount,
30+
long preProcessingMillis,
31+
long computeMillis,
32+
long writeMillis,
33+
long nodePropertiesWritten,
34+
Map<String, Object> configuration,
35+
long postProcessingMillis
36+
) implements WriteNodePropertiesResult {
3037

3138
public LocalClusteringCoefficientWriteResult(
3239
double averageClusteringCoefficient,
@@ -37,48 +44,31 @@ public LocalClusteringCoefficientWriteResult(
3744
long nodePropertiesWritten,
3845
Map<String, Object> configuration
3946
) {
40-
super(
47+
this(
4148
averageClusteringCoefficient,
4249
nodeCount,
4350
preProcessingMillis,
4451
computeMillis,
45-
configuration
52+
writeMillis,
53+
nodePropertiesWritten,
54+
configuration,
55+
0
4656
);
47-
this.writeMillis = writeMillis;
48-
this.nodePropertiesWritten = nodePropertiesWritten;
4957
}
5058

51-
static LocalClusteringCoefficientWriteResult emptyFrom(AlgorithmProcessingTimings timings, Map<String, Object> configurationMap) {
59+
static LocalClusteringCoefficientWriteResult emptyFrom(
60+
AlgorithmProcessingTimings timings,
61+
Map<String, Object> configurationMap
62+
) {
5263
return new LocalClusteringCoefficientWriteResult(
5364
0,
5465
0,
5566
timings.preProcessingMillis,
5667
timings.computeMillis,
5768
timings.sideEffectMillis,
5869
0,
59-
configurationMap
70+
configurationMap,
71+
0
6072
);
6173
}
62-
63-
public static class Builder extends AbstractResultBuilder<LocalClusteringCoefficientWriteResult> {
64-
double averageClusteringCoefficient = 0;
65-
66-
public Builder withAverageClusteringCoefficient(double averageClusteringCoefficient) {
67-
this.averageClusteringCoefficient = averageClusteringCoefficient;
68-
return this;
69-
}
70-
71-
@Override
72-
public LocalClusteringCoefficientWriteResult build() {
73-
return new LocalClusteringCoefficientWriteResult(
74-
averageClusteringCoefficient,
75-
nodeCount,
76-
preProcessingMillis,
77-
computeMillis,
78-
writeMillis,
79-
nodePropertiesWritten,
80-
config.toMap()
81-
);
82-
}
83-
}
8474
}

procedures/facade-api/community-facade-api/src/main/java/org/neo4j/gds/procedures/algorithms/community/LouvainStatsResult.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package org.neo4j.gds.procedures.algorithms.community;
2121

2222
import org.neo4j.gds.applications.algorithms.machinery.AlgorithmProcessingTimings;
23+
import org.neo4j.gds.procedures.algorithms.results.StatsResult;
2324

2425
import java.util.Arrays;
2526
import java.util.Collections;
@@ -28,16 +29,16 @@
2829
import java.util.stream.Collectors;
2930

3031
public record LouvainStatsResult(
31-
double modularity,
32-
List<Double> modularities,
33-
long ranLevels,
34-
long communityCount,
35-
Map<String, Object> communityDistribution,
36-
long preProcessingMillis,
37-
long computeMillis,
38-
long postProcessingMillis,
39-
Map<String, Object> configuration
40-
) {
32+
double modularity,
33+
List<Double> modularities,
34+
long ranLevels,
35+
long communityCount,
36+
Map<String, Object> communityDistribution,
37+
long preProcessingMillis,
38+
long computeMillis,
39+
long postProcessingMillis,
40+
Map<String, Object> configuration
41+
) implements StatsResult {
4142

4243
static LouvainStatsResult emptyFrom(AlgorithmProcessingTimings timings, Map<String, Object> configurationMap) {
4344
return new LouvainStatsResult(

0 commit comments

Comments
 (0)