Skip to content

Commit 82adf32

Browse files
Add k1coloring in compute facade
1 parent ec4b20c commit 82adf32

File tree

6 files changed

+82
-5
lines changed

6 files changed

+82
-5
lines changed

algo/src/main/java/org/neo4j/gds/CommunityAlgorithmTasks.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import org.neo4j.gds.core.utils.progress.tasks.Task;
2929
import org.neo4j.gds.core.utils.progress.tasks.Tasks;
3030
import org.neo4j.gds.hdbscan.HDBScanProgressTrackerCreator;
31-
import org.neo4j.gds.k1coloring.K1ColoringBaseConfig;
31+
import org.neo4j.gds.k1coloring.K1ColoringParameters;
3232
import org.neo4j.gds.k1coloring.K1ColoringProgressTrackerTaskCreator;
3333
import org.neo4j.gds.kmeans.KMeansTaskFactory;
3434
import org.neo4j.gds.kmeans.KmeansParameters;
@@ -70,10 +70,10 @@ public Task hdbscan(Graph graph) {
7070
return HDBScanProgressTrackerCreator.hdbscanTask(AlgorithmLabel.HDBScan.asString(), graph.nodeCount());
7171
}
7272

73-
public Task k1Coloring(Graph graph, K1ColoringBaseConfig configuration) {
73+
public Task k1Coloring(Graph graph, K1ColoringParameters parameters) {
7474
return K1ColoringProgressTrackerTaskCreator.progressTask(
7575
graph.nodeCount(),
76-
configuration.maxIterations()
76+
parameters.maxIterations()
7777
);
7878
}
7979

algo/src/main/java/org/neo4j/gds/k1coloring/K1ColoringResult.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,6 @@ public BitSet usedColors() {
3939
return usedColors;
4040
}
4141

42+
public static K1ColoringResult EMPTY = new K1ColoringResult(HugeLongArray.newArray(0),0, false);
43+
4244
}

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

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@
3737
import org.neo4j.gds.hdbscan.HDBScan;
3838
import org.neo4j.gds.hdbscan.HDBScanParameters;
3939
import org.neo4j.gds.hdbscan.Labels;
40+
import org.neo4j.gds.k1coloring.K1Coloring;
41+
import org.neo4j.gds.k1coloring.K1ColoringParameters;
42+
import org.neo4j.gds.k1coloring.K1ColoringResult;
4043
import org.neo4j.gds.result.TimedAlgorithmResult;
4144
import org.neo4j.gds.termination.TerminationFlag;
4245

@@ -196,4 +199,36 @@ CompletableFuture<TimedAlgorithmResult<Labels>> hdbscan(
196199
jobId
197200
);
198201
}
202+
203+
CompletableFuture<TimedAlgorithmResult<K1ColoringResult>> k1Coloring(
204+
Graph graph,
205+
K1ColoringParameters parameters,
206+
JobId jobId,
207+
boolean logProgress
208+
) {
209+
210+
if (graph.isEmpty()) {
211+
return CompletableFuture.completedFuture(TimedAlgorithmResult.empty(K1ColoringResult.EMPTY));
212+
}
213+
214+
var progressTracker = progressTrackerFactory.create(
215+
tasks.k1Coloring(graph, parameters),
216+
jobId,
217+
parameters.concurrency(),
218+
logProgress
219+
);
220+
221+
var algorithm = new K1Coloring(
222+
graph,
223+
parameters,
224+
DefaultPool.INSTANCE,
225+
progressTracker,
226+
terminationFlag
227+
);
228+
229+
return algorithmCaller.run(
230+
algorithm::compute,
231+
jobId
232+
);
233+
}
199234
}

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
@@ -36,6 +36,8 @@
3636
import org.neo4j.gds.core.utils.progress.JobId;
3737
import org.neo4j.gds.hdbscan.HDBScanParameters;
3838
import org.neo4j.gds.hdbscan.Labels;
39+
import org.neo4j.gds.k1coloring.K1ColoringParameters;
40+
import org.neo4j.gds.k1coloring.K1ColoringResult;
3941
import org.neo4j.gds.termination.TerminationFlag;
4042

4143
import static org.assertj.core.api.Assertions.assertThat;
@@ -133,4 +135,21 @@ void hdbscan(){
133135
verifyNoInteractions(algorithmCallerMock);
134136
}
135137

138+
@Test
139+
void k1Coloring(){
140+
141+
var future = facade.k1Coloring(
142+
graph,
143+
mock(K1ColoringParameters.class),
144+
jobIdMock,
145+
false
146+
);
147+
148+
var results = future.join();
149+
150+
assertThat(results.result()).isEqualTo(K1ColoringResult.EMPTY);
151+
verifyNoInteractions(progressTrackerFactoryMock);
152+
verifyNoInteractions(algorithmCallerMock);
153+
}
154+
136155
}

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
@@ -40,6 +40,7 @@
4040
import org.neo4j.gds.extension.Inject;
4141
import org.neo4j.gds.extension.TestGraph;
4242
import org.neo4j.gds.hdbscan.HDBScanParameters;
43+
import org.neo4j.gds.k1coloring.K1ColoringParameters;
4344
import org.neo4j.gds.logging.Log;
4445
import org.neo4j.gds.termination.TerminationFlag;
4546

@@ -180,4 +181,23 @@ void hdbscan(){
180181
assertThat(results.result().labels().toArray()).hasSize(3);
181182
assertThat(results.computeMillis()).isNotNegative();
182183
}
184+
185+
@Test
186+
void k1Coloring(){
187+
var future = facade.k1Coloring(
188+
graph,
189+
new K1ColoringParameters(
190+
new Concurrency(4),
191+
1,
192+
10_000
193+
),
194+
jobIdMock,
195+
false
196+
);
197+
198+
var results = future.join();
199+
200+
assertThat(results.result().ranIterations()).isGreaterThan(0);
201+
assertThat(results.computeMillis()).isNotNegative();
202+
}
183203
}

applications/algorithms/community/src/main/java/org/neo4j/gds/applications/algorithms/community/CommunityAlgorithmsBusinessFacade.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,11 @@ public Labels hdbscan(Graph graph, HDBScanBaseConfig configuration) {
124124
}
125125

126126
public K1ColoringResult k1Coloring(Graph graph, K1ColoringBaseConfig configuration) {
127-
var task = tasks.k1Coloring(graph, configuration);
128-
var progressTracker = progressTrackerCreator.createProgressTracker(task, configuration);
129127
var params = configuration.toParameters();
130128

129+
var task = tasks.k1Coloring(graph, params);
130+
var progressTracker = progressTrackerCreator.createProgressTracker(task, configuration);
131+
131132
return algorithmMachinery.getResult(
132133
() -> algorithms.k1Coloring(graph, params, progressTracker),
133134
progressTracker,

0 commit comments

Comments
 (0)