diff options
author | 2023-09-07 20:44:48 +0200 | |
---|---|---|
committer | 2023-09-07 20:44:48 +0200 | |
commit | df8ebe6dae2203513240a3b001fabc2b8b34d505 (patch) | |
tree | 5f642cda936c190f2f5525992f17a05be2491920 /subprojects/store-dse-visualization/src/main | |
parent | feat: declarative DSE rules and model refinement (diff) | |
parent | Add missing copyright headers (diff) | |
download | refinery-df8ebe6dae2203513240a3b001fabc2b8b34d505.tar.gz refinery-df8ebe6dae2203513240a3b001fabc2b8b34d505.tar.zst refinery-df8ebe6dae2203513240a3b001fabc2b8b34d505.zip |
Merge remote-tracking branch 'nagilooh/datastructure' into partial-interpretation
Diffstat (limited to 'subprojects/store-dse-visualization/src/main')
4 files changed, 75 insertions, 68 deletions
diff --git a/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/ModelVisualizerAdapter.java b/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/ModelVisualizerAdapter.java index ae87d8ac..ad80bbc6 100644 --- a/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/ModelVisualizerAdapter.java +++ b/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/ModelVisualizerAdapter.java | |||
@@ -9,6 +9,7 @@ import tools.refinery.store.adapter.ModelAdapter; | |||
9 | import tools.refinery.store.map.Version; | 9 | import tools.refinery.store.map.Version; |
10 | import tools.refinery.store.tuple.Tuple; | 10 | import tools.refinery.store.tuple.Tuple; |
11 | import tools.refinery.visualization.internal.ModelVisualizerBuilderImpl; | 11 | import tools.refinery.visualization.internal.ModelVisualizerBuilderImpl; |
12 | import tools.refinery.visualization.statespace.VisualizationStore; | ||
12 | 13 | ||
13 | import java.util.Collection; | 14 | import java.util.Collection; |
14 | 15 | ||
@@ -18,15 +19,5 @@ public interface ModelVisualizerAdapter extends ModelAdapter { | |||
18 | static ModelVisualizerBuilder builder() { | 19 | static ModelVisualizerBuilder builder() { |
19 | return new ModelVisualizerBuilderImpl(); | 20 | return new ModelVisualizerBuilderImpl(); |
20 | } | 21 | } |
21 | 22 | void visualize(VisualizationStore visualizationStore); | |
22 | public void addTransition(Version from, Version to, String action); | ||
23 | |||
24 | |||
25 | public void addTransition(Version from, Version to, String action, Tuple activation); | ||
26 | public void addState(Version state); | ||
27 | public void addState(Version state, Collection<Double> fitness); | ||
28 | public void addState(Version state, String label); | ||
29 | public void addSolution(Version state); | ||
30 | public void visualize(); | ||
31 | |||
32 | } | 23 | } |
diff --git a/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/internal/ModelVisualizerAdapterImpl.java b/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/internal/ModelVisualizerAdapterImpl.java index 531969b4..031b2e6b 100644 --- a/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/internal/ModelVisualizerAdapterImpl.java +++ b/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/internal/ModelVisualizerAdapterImpl.java | |||
@@ -13,6 +13,7 @@ import tools.refinery.store.representation.TruthValue; | |||
13 | import tools.refinery.store.tuple.Tuple; | 13 | import tools.refinery.store.tuple.Tuple; |
14 | import tools.refinery.visualization.ModelVisualizerAdapter; | 14 | import tools.refinery.visualization.ModelVisualizerAdapter; |
15 | import tools.refinery.visualization.ModelVisualizerStoreAdapter; | 15 | import tools.refinery.visualization.ModelVisualizerStoreAdapter; |
16 | import tools.refinery.visualization.statespace.VisualizationStore; | ||
16 | 17 | ||
17 | import java.io.*; | 18 | import java.io.*; |
18 | import java.util.*; | 19 | import java.util.*; |
@@ -281,62 +282,6 @@ public class ModelVisualizerAdapterImpl implements ModelVisualizerAdapter { | |||
281 | return true; | 282 | return true; |
282 | } | 283 | } |
283 | 284 | ||
284 | @Override | ||
285 | public void addTransition(Version from, Version to, String action) { | ||
286 | designSpaceBuilder.append(states.get(from)).append(" -> ").append(states.get(to)) | ||
287 | .append(" [label=\"").append(transitionCounter++).append(": ").append(action).append("\"]\n"); | ||
288 | } | ||
289 | |||
290 | @Override | ||
291 | public void addTransition(Version from, Version to, String action, Tuple activation) { | ||
292 | designSpaceBuilder.append(states.get(from)).append(" -> ").append(states.get(to)) | ||
293 | .append(" [label=\"").append(transitionCounter++).append(": ").append(action).append(" / "); | ||
294 | |||
295 | |||
296 | for (int i = 0; i < activation.getSize(); i++) { | ||
297 | designSpaceBuilder.append(activation.get(i)); | ||
298 | if (i < activation.getSize() - 1) { | ||
299 | designSpaceBuilder.append(", "); | ||
300 | } | ||
301 | } | ||
302 | designSpaceBuilder.append("\"]\n"); | ||
303 | } | ||
304 | |||
305 | @Override | ||
306 | public void addState(Version state) { | ||
307 | if (states.containsKey(state)) { | ||
308 | return; | ||
309 | } | ||
310 | states.put(state, numberOfStates++); | ||
311 | designSpaceBuilder.append(states.get(state)).append(" [URL=\"./").append(states.get(state)).append(".svg\"]\n"); | ||
312 | } | ||
313 | |||
314 | @Override | ||
315 | public void addState(Version state, Collection<Double> fitness) { | ||
316 | var labelBuilder = new StringBuilder(); | ||
317 | for (var f : fitness) { | ||
318 | labelBuilder.append(f).append(", "); | ||
319 | } | ||
320 | addState(state, labelBuilder.toString()); | ||
321 | } | ||
322 | |||
323 | @Override | ||
324 | public void addState(Version state, String label) { | ||
325 | if (states.containsKey(state)) { | ||
326 | return; | ||
327 | } | ||
328 | states.put(state, numberOfStates++); | ||
329 | designSpaceBuilder.append(states.get(state)).append(" [label = \"").append(states.get(state)).append(" ("); | ||
330 | designSpaceBuilder.append(label); | ||
331 | designSpaceBuilder.append(")\"\n").append("URL=\"./").append(states.get(state)).append(".svg\"]\n"); | ||
332 | } | ||
333 | |||
334 | @Override | ||
335 | public void addSolution(Version state) { | ||
336 | addState(state); | ||
337 | designSpaceBuilder.append(states.get(state)).append(" [shape = doublecircle]\n"); | ||
338 | } | ||
339 | |||
340 | private String buildDesignSpaceDot() { | 285 | private String buildDesignSpaceDot() { |
341 | designSpaceBuilder.append("}"); | 286 | designSpaceBuilder.append("}"); |
342 | return designSpaceBuilder.toString(); | 287 | return designSpaceBuilder.toString(); |
@@ -381,7 +326,9 @@ public class ModelVisualizerAdapterImpl implements ModelVisualizerAdapter { | |||
381 | } | 326 | } |
382 | 327 | ||
383 | @Override | 328 | @Override |
384 | public void visualize() { | 329 | public void visualize(VisualizationStore visualizationStore) { |
330 | this.designSpaceBuilder.append(visualizationStore.getDesignSpaceStringBuilder()); | ||
331 | this.states.putAll(visualizationStore.getStates()); | ||
385 | renderDesignSpace(outputPath, formats); | 332 | renderDesignSpace(outputPath, formats); |
386 | } | 333 | } |
387 | } | 334 | } |
diff --git a/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/statespace/VisualizationStore.java b/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/statespace/VisualizationStore.java new file mode 100644 index 00000000..414ef737 --- /dev/null +++ b/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/statespace/VisualizationStore.java | |||
@@ -0,0 +1,18 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.visualization.statespace; | ||
7 | |||
8 | import tools.refinery.store.map.Version; | ||
9 | |||
10 | import java.util.Map; | ||
11 | |||
12 | public interface VisualizationStore { | ||
13 | void addState(Version state, String label); | ||
14 | void addSolution(Version state); | ||
15 | void addTransition(Version from, Version to, String label); | ||
16 | StringBuilder getDesignSpaceStringBuilder(); | ||
17 | Map<Version, Integer> getStates(); | ||
18 | } | ||
diff --git a/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/statespace/internal/VisualizationStoreImpl.java b/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/statespace/internal/VisualizationStoreImpl.java new file mode 100644 index 00000000..08a69cb4 --- /dev/null +++ b/subprojects/store-dse-visualization/src/main/java/tools/refinery/visualization/statespace/internal/VisualizationStoreImpl.java | |||
@@ -0,0 +1,51 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.visualization.statespace.internal; | ||
7 | |||
8 | import tools.refinery.store.map.Version; | ||
9 | import tools.refinery.visualization.statespace.VisualizationStore; | ||
10 | |||
11 | import java.util.HashMap; | ||
12 | import java.util.Map; | ||
13 | |||
14 | public class VisualizationStoreImpl implements VisualizationStore { | ||
15 | |||
16 | private final Map<Version, Integer> states = new HashMap<>(); | ||
17 | private int transitionCounter = 0; | ||
18 | private Integer numberOfStates = 0; | ||
19 | private final StringBuilder designSpaceBuilder = new StringBuilder(); | ||
20 | |||
21 | @Override | ||
22 | public synchronized void addState(Version state, String label) { | ||
23 | if (states.containsKey(state)) { | ||
24 | return; | ||
25 | } | ||
26 | states.put(state, numberOfStates++); | ||
27 | designSpaceBuilder.append(states.get(state)).append(" [label = \"").append(states.get(state)).append(" ("); | ||
28 | designSpaceBuilder.append(label); | ||
29 | designSpaceBuilder.append(")\"\n").append("URL=\"./").append(states.get(state)).append(".svg\"]\n"); | ||
30 | } | ||
31 | |||
32 | @Override | ||
33 | public synchronized void addSolution(Version state) { | ||
34 | designSpaceBuilder.append(states.get(state)).append(" [peripheries = 2]\n"); | ||
35 | } | ||
36 | |||
37 | @Override | ||
38 | public synchronized void addTransition(Version from, Version to, String label) { | ||
39 | designSpaceBuilder.append(states.get(from)).append(" -> ").append(states.get(to)) | ||
40 | .append(" [label=\"").append(transitionCounter++).append(": ").append(label).append("\"]\n"); | ||
41 | } | ||
42 | |||
43 | public synchronized StringBuilder getDesignSpaceStringBuilder() { | ||
44 | return designSpaceBuilder; | ||
45 | } | ||
46 | |||
47 | @Override | ||
48 | public Map<Version, Integer> getStates() { | ||
49 | return states; | ||
50 | } | ||
51 | } | ||