File tree Expand file tree Collapse file tree 4 files changed +80
-1
lines changed
algorithms-compute-facade/src
main/java/org/neo4j/gds/community
algo/src/main/java/org/neo4j/gds/triangle Expand file tree Collapse file tree 4 files changed +80
-1
lines changed Original file line number Diff line number Diff line change 2424public record LocalClusteringCoefficientResult (
2525 HugeDoubleArray localClusteringCoefficients ,
2626 double averageClusteringCoefficient
27- ){}
27+ ){
28+
29+ public static LocalClusteringCoefficientResult EMPTY = new LocalClusteringCoefficientResult (HugeDoubleArray .newArray (0 ), 0D );
30+ }
Original file line number Diff line number Diff line change 5252import org .neo4j .gds .labelpropagation .LabelPropagationResult ;
5353import org .neo4j .gds .result .TimedAlgorithmResult ;
5454import 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
5659import 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}
Original file line number Diff line number Diff line change 4444import org .neo4j .gds .labelpropagation .LabelPropagationParameters ;
4545import org .neo4j .gds .labelpropagation .LabelPropagationResult ;
4646import org .neo4j .gds .termination .TerminationFlag ;
47+ import org .neo4j .gds .triangle .LocalClusteringCoefficientParameters ;
48+ import org .neo4j .gds .triangle .LocalClusteringCoefficientResult ;
4749
4850import static org .assertj .core .api .Assertions .assertThat ;
4951import 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}
Original file line number Diff line number Diff line change 4747import org .neo4j .gds .labelpropagation .LabelPropagationParameters ;
4848import org .neo4j .gds .logging .Log ;
4949import org .neo4j .gds .termination .TerminationFlag ;
50+ import org .neo4j .gds .triangle .LocalClusteringCoefficientParameters ;
5051
5152import java .util .List ;
5253import 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}
You can’t perform that action at this time.
0 commit comments