File tree Expand file tree Collapse file tree 4 files changed +76
-1
lines changed
algorithms-compute-facade/src
main/java/org/neo4j/gds/community
algo/src/main/java/org/neo4j/gds/kcore Expand file tree Collapse file tree 4 files changed +76
-1
lines changed Original file line number Diff line number Diff line change 2121
2222import org .neo4j .gds .collections .ha .HugeIntArray ;
2323
24- public record KCoreDecompositionResult (HugeIntArray coreValues , int degeneracy ){}
24+ public record KCoreDecompositionResult (HugeIntArray coreValues , int degeneracy ){
25+
26+ public static KCoreDecompositionResult EMPTY = new KCoreDecompositionResult (HugeIntArray .newArray (0 ), 0 );
27+ }
Original file line number Diff line number Diff line change 4040import org .neo4j .gds .k1coloring .K1Coloring ;
4141import org .neo4j .gds .k1coloring .K1ColoringParameters ;
4242import org .neo4j .gds .k1coloring .K1ColoringResult ;
43+ import org .neo4j .gds .kcore .KCoreDecomposition ;
44+ import org .neo4j .gds .kcore .KCoreDecompositionParameters ;
45+ import org .neo4j .gds .kcore .KCoreDecompositionResult ;
4346import org .neo4j .gds .result .TimedAlgorithmResult ;
4447import org .neo4j .gds .termination .TerminationFlag ;
4548
@@ -231,4 +234,35 @@ CompletableFuture<TimedAlgorithmResult<K1ColoringResult>> k1Coloring(
231234 jobId
232235 );
233236 }
237+
238+ CompletableFuture <TimedAlgorithmResult <KCoreDecompositionResult >> kCore (
239+ Graph graph ,
240+ KCoreDecompositionParameters parameters ,
241+ JobId jobId ,
242+ boolean logProgress
243+ ) {
244+
245+ if (graph .isEmpty ()) {
246+ return CompletableFuture .completedFuture (TimedAlgorithmResult .empty (KCoreDecompositionResult .EMPTY ));
247+ }
248+
249+ var progressTracker = progressTrackerFactory .create (
250+ tasks .kCore (graph ),
251+ jobId ,
252+ parameters .concurrency (),
253+ logProgress
254+ );
255+
256+ var algorithm = new KCoreDecomposition (
257+ graph ,
258+ parameters .concurrency (),
259+ progressTracker ,
260+ terminationFlag
261+ );
262+
263+ return algorithmCaller .run (
264+ algorithm ::compute ,
265+ jobId
266+ );
267+ }
234268}
Original file line number Diff line number Diff line change 3838import org .neo4j .gds .hdbscan .Labels ;
3939import org .neo4j .gds .k1coloring .K1ColoringParameters ;
4040import org .neo4j .gds .k1coloring .K1ColoringResult ;
41+ import org .neo4j .gds .kcore .KCoreDecompositionParameters ;
42+ import org .neo4j .gds .kcore .KCoreDecompositionResult ;
4143import org .neo4j .gds .termination .TerminationFlag ;
4244
4345import static org .assertj .core .api .Assertions .assertThat ;
@@ -152,4 +154,21 @@ void k1Coloring(){
152154 verifyNoInteractions (algorithmCallerMock );
153155 }
154156
157+ @ Test
158+ void kCore (){
159+
160+ var future = facade .kCore (
161+ graph ,
162+ mock (KCoreDecompositionParameters .class ),
163+ jobIdMock ,
164+ false
165+ );
166+
167+ var results = future .join ();
168+
169+ assertThat (results .result ()).isEqualTo (KCoreDecompositionResult .EMPTY );
170+ verifyNoInteractions (progressTrackerFactoryMock );
171+ verifyNoInteractions (algorithmCallerMock );
172+ }
173+
155174}
Original file line number Diff line number Diff line change 4141import org .neo4j .gds .extension .TestGraph ;
4242import org .neo4j .gds .hdbscan .HDBScanParameters ;
4343import org .neo4j .gds .k1coloring .K1ColoringParameters ;
44+ import org .neo4j .gds .kcore .KCoreDecompositionParameters ;
4445import org .neo4j .gds .logging .Log ;
4546import org .neo4j .gds .termination .TerminationFlag ;
4647
@@ -200,4 +201,22 @@ void k1Coloring(){
200201 assertThat (results .result ().ranIterations ()).isGreaterThan (0 );
201202 assertThat (results .computeMillis ()).isNotNegative ();
202203 }
204+
205+ @ Test
206+ void kCore (){
207+ var future = facade .kCore (
208+ graph ,
209+ new KCoreDecompositionParameters (
210+ new Concurrency (4 )
211+ ),
212+ jobIdMock ,
213+ false
214+ );
215+
216+ var results = future .join ();
217+
218+ assertThat (results .result ().degeneracy ()).isGreaterThan (0 );
219+ assertThat (results .computeMillis ()).isNotNegative ();
220+ }
221+
203222}
You can’t perform that action at this time.
0 commit comments