Skip to content

Commit 9e1c695

Browse files
Add lcc in compute facade
1 parent bda99c6 commit 9e1c695

File tree

4 files changed

+80
-1
lines changed

4 files changed

+80
-1
lines changed

algo/src/main/java/org/neo4j/gds/triangle/LocalClusteringCoefficientResult.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,7 @@
2424
public record LocalClusteringCoefficientResult(
2525
HugeDoubleArray localClusteringCoefficients,
2626
double averageClusteringCoefficient
27-
){}
27+
){
28+
29+
public static LocalClusteringCoefficientResult EMPTY = new LocalClusteringCoefficientResult(HugeDoubleArray.newArray(0), 0D);
30+
}

algorithms-compute-facade/src/main/java/org/neo4j/gds/community/CommunityComputeFacade.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@
5252
import org.neo4j.gds.labelpropagation.LabelPropagationResult;
5353
import org.neo4j.gds.result.TimedAlgorithmResult;
5454
import org.neo4j.gds.termination.TerminationFlag;
55+
import org.neo4j.gds.triangle.LocalClusteringCoefficient;
56+
import org.neo4j.gds.triangle.LocalClusteringCoefficientParameters;
57+
import org.neo4j.gds.triangle.LocalClusteringCoefficientResult;
5558

5659
import java.util.concurrent.CompletableFuture;
5760

@@ -336,4 +339,38 @@ CompletableFuture<TimedAlgorithmResult<LabelPropagationResult>> labelPropagation
336339
);
337340
}
338341

342+
CompletableFuture<TimedAlgorithmResult<LocalClusteringCoefficientResult>> lcc(
343+
Graph graph,
344+
LocalClusteringCoefficientParameters parameters,
345+
JobId jobId,
346+
boolean logProgress
347+
) {
348+
349+
if (graph.isEmpty()) {
350+
return CompletableFuture.completedFuture(TimedAlgorithmResult.empty(LocalClusteringCoefficientResult.EMPTY));
351+
}
352+
353+
var progressTracker = progressTrackerFactory.create(
354+
tasks.lcc(graph,parameters),
355+
jobId,
356+
parameters.concurrency(),
357+
logProgress
358+
);
359+
360+
var algorithm = new LocalClusteringCoefficient(
361+
graph,
362+
parameters.concurrency(),
363+
parameters.maxDegree(),
364+
parameters.seedProperty(),
365+
progressTracker,
366+
terminationFlag
367+
);
368+
369+
return algorithmCaller.run(
370+
algorithm::compute,
371+
jobId
372+
);
373+
}
374+
375+
339376
}

algorithms-compute-facade/src/test/java/org/neo4j/gds/community/CommunityComputeFacadeEmptyGraphTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
import org.neo4j.gds.labelpropagation.LabelPropagationParameters;
4545
import org.neo4j.gds.labelpropagation.LabelPropagationResult;
4646
import org.neo4j.gds.termination.TerminationFlag;
47+
import org.neo4j.gds.triangle.LocalClusteringCoefficientParameters;
48+
import org.neo4j.gds.triangle.LocalClusteringCoefficientResult;
4749

4850
import static org.assertj.core.api.Assertions.assertThat;
4951
import static org.mockito.Mockito.mock;
@@ -211,4 +213,21 @@ void labelPropagation(){
211213
verifyNoInteractions(progressTrackerFactoryMock);
212214
verifyNoInteractions(algorithmCallerMock);
213215
}
216+
217+
@Test
218+
void lcc(){
219+
220+
var future = facade.lcc(
221+
graph,
222+
mock(LocalClusteringCoefficientParameters.class),
223+
jobIdMock,
224+
false
225+
);
226+
227+
var results = future.join();
228+
229+
assertThat(results.result()).isEqualTo(LocalClusteringCoefficientResult.EMPTY);
230+
verifyNoInteractions(progressTrackerFactoryMock);
231+
verifyNoInteractions(algorithmCallerMock);
232+
}
214233
}

algorithms-compute-facade/src/test/java/org/neo4j/gds/community/CommunityComputeFacadeTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import org.neo4j.gds.labelpropagation.LabelPropagationParameters;
4848
import org.neo4j.gds.logging.Log;
4949
import org.neo4j.gds.termination.TerminationFlag;
50+
import org.neo4j.gds.triangle.LocalClusteringCoefficientParameters;
5051

5152
import java.util.List;
5253
import java.util.Optional;
@@ -268,4 +269,23 @@ void labelPropagation(){
268269
assertThat(results.computeMillis()).isNotNegative();
269270
}
270271

272+
@Test
273+
void lcc(){
274+
var future = facade.lcc(
275+
graph,
276+
new LocalClusteringCoefficientParameters(
277+
new Concurrency(4),
278+
100,
279+
null
280+
),
281+
jobIdMock,
282+
false
283+
);
284+
285+
var results = future.join();
286+
287+
assertThat(results.result().averageClusteringCoefficient()).isGreaterThan(0d);
288+
assertThat(results.computeMillis()).isNotNegative();
289+
}
290+
271291
}

0 commit comments

Comments
 (0)