diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/AlgorithmTask.java b/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/AlgorithmTask.java index 86b039fd0b6a10be83ea136e835bdfa07a609273..77d089353787599477ae7e606a689a656585a94f 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/AlgorithmTask.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/AlgorithmTask.java @@ -22,8 +22,15 @@ package de.hhu.ba.yoshikoWrapper.tasks; import java.awt.Window; +import java.util.List; +import java.util.Properties; +import de.hhu.ba.yoshikoWrapper.core.CyCore; import de.hhu.ba.yoshikoWrapper.yoshikoAlgorithm.YoshikoAlgoritmController; +import org.cytoscape.application.swing.CytoPanel; +import org.cytoscape.application.swing.CytoPanelComponent; +import org.cytoscape.application.swing.CytoPanelName; +import org.cytoscape.application.swing.CytoPanelState; import org.cytoscape.work.AbstractTask; import org.cytoscape.work.ContainsTunables; import org.cytoscape.work.TaskMonitor; @@ -34,6 +41,8 @@ import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoResult; import de.hhu.ba.yoshikoWrapper.logging.YoshikoLogger; import de.hhu.ba.yoshikoWrapper.swing.components.ResultPanel; +import javax.swing.*; + public class AlgorithmTask extends AbstractTask { @@ -85,7 +94,9 @@ public class AlgorithmTask extends AbstractTask { throw new Exception("CoreAlgorithm called on a net that is NULL!"); //TODO: Localize } - YoshikoAlgoritmController yoshikoAlgoritmController = new YoshikoAlgoritmController(parameterSet, taskMonitor); + result = new YoshikoResult(parameterSet.net); + + YoshikoAlgoritmController yoshikoAlgoritmController = new YoshikoAlgoritmController(parameterSet, taskMonitor, result); yoshikoAlgoritmController.controllAlgorithm(); taskMonitor.setProgress(1); @@ -127,10 +138,10 @@ public class AlgorithmTask extends AbstractTask { //Generate solutionsPanel*/ - //resultPanel = new ResultPanel(result); -/* + resultPanel = new ResultPanel(result); + //Show solution panel - CyCore.registrar.registerService(resultPanel,CytoPanelComponent.class, new Properties()); + CyCore.registrar.registerService(resultPanel, CytoPanelComponent.class, new Properties()); //Focus solution panel CytoPanel eastPanel = CyCore.swing.getCytoPanel(CytoPanelName.EAST); eastPanel.setSelectedIndex(eastPanel.indexOfComponent(resultPanel)); @@ -146,8 +157,8 @@ public class AlgorithmTask extends AbstractTask { } } ); - //eastPanel.getThisComponent().revalidate(); -*/ + eastPanel.getThisComponent().revalidate(); + } diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/yoshikoAlgorithm/GraphTranslator.java b/src/main/java/de/hhu/ba/yoshikoWrapper/yoshikoAlgorithm/GraphTranslator.java index e8f99a56dda218f5244c5670e3225942738356c9..d6feff67afe004e552cdde859e70e7ba6c0d0d9d 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/yoshikoAlgorithm/GraphTranslator.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/yoshikoAlgorithm/GraphTranslator.java @@ -4,6 +4,8 @@ import de.hhu.ba.yoshikoWrapper.core.CyCore; import de.hhu.ba.yoshikoWrapper.core.ParameterSet; import de.hhu.ba.yoshikoWrapper.cytoUtil.NodeMap; import de.hhu.ba.yoshikoWrapper.cytoUtil.StyleManager; +import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoCluster; +import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoSolution; import org.cytoscape.model.*; import org.cytoscape.model.subnetwork.CyRootNetwork; import org.cytoscape.model.subnetwork.CySubNetwork; @@ -101,61 +103,15 @@ public final class GraphTranslator { return weight; } - public void makeCytoscapeGraph(List<List<Integer>> clusters){ - CySubNetwork resultNetwork = createNewGaph(); - - addNodesToResultNetwork(resultNetwork); - - addEdgesToResultNetwork(clusters, resultNetwork); - - // createNetworkView(resultNetwork); - } - - private CySubNetwork createNewGaph(){ - CyRootNetwork rootNetwork = CyCore.rootNetworkManager.getRootNetwork(network); - CySubNetwork resultNetwork = rootNetwork.addSubNetwork(); - - CyCore.networkManager.addNetwork(resultNetwork, false); - resultNetwork.getRow(resultNetwork).set(CyNetwork.NAME, "Result-Graph"); - - return resultNetwork; - } - - private void addNodesToResultNetwork(CySubNetwork resultNetwork){ - for (CyNode node : nodeMap.values()){ - resultNetwork.addNode(node); - } - } - - private void addEdgesToResultNetwork(List<List<Integer>> clusters, CySubNetwork resultNetwork){ - for (List<Integer> cluster : clusters){ - for (Integer i : cluster){ - for (Integer j : cluster){ - if (j<i){ - addEdgeToResultNetwork(edgeArray[i][j],resultNetwork); - } - } + public void transateClusters(List<List<Integer>> clusters, YoshikoSolution solution){ + int i = 0; + for (List<Integer> cluster : clusters){ + YoshikoCluster yoshikoCluster = new YoshikoCluster(solution, i); + i++; + solution.addCluster(yoshikoCluster); + for (Integer nodeId : cluster){ + yoshikoCluster.addNode(nodeMap.get(nodeId)); } } } - - private void addEdgeToResultNetwork(YoshikoEdge yoshikoEdge, CySubNetwork resultNetwork) { - if (yoshikoEdge.suid < 0) { - CyNode node1 = nodeMap.get(yoshikoEdge.source); - CyNode node2 = nodeMap.get(yoshikoEdge.target); - - CyEdge edge = resultNetwork.addEdge(node1, node2, false); - - } else { - resultNetwork.addEdge(network.getEdge(yoshikoEdge.suid)); - } - } - - private CyNetworkView createNetworkView(CyNetwork resultNetwork){ - - CyNetworkView view = CyCore.networkViewFactory.createNetworkView(resultNetwork); - - CyCore.networkViewManager.addNetworkView(view,false); - return view; - } } diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/yoshikoAlgorithm/YoshikoAlgoritmController.java b/src/main/java/de/hhu/ba/yoshikoWrapper/yoshikoAlgorithm/YoshikoAlgoritmController.java index a9bbb96ac360ec009f75b6d13a56a7c07d100237..1b77221b0204614824ddc89d89e3f456a6872921 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/yoshikoAlgorithm/YoshikoAlgoritmController.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/yoshikoAlgorithm/YoshikoAlgoritmController.java @@ -1,7 +1,11 @@ package de.hhu.ba.yoshikoWrapper.yoshikoAlgorithm; import de.hhu.ba.yoshikoWrapper.core.ParameterSet; +import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoCluster; +import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoResult; +import de.hhu.ba.yoshikoWrapper.graphModel.YoshikoSolution; import org.cytoscape.model.CyNetwork; +import org.cytoscape.model.CyNode; import org.cytoscape.work.TaskMonitor; import java.util.List; @@ -12,12 +16,14 @@ public class YoshikoAlgoritmController { private CyNetwork network; private ParameterSet parameterSet; private TaskMonitor taskMonitor; + private YoshikoResult result; - public YoshikoAlgoritmController(ParameterSet parameterSet, TaskMonitor taskMonitor){ + public YoshikoAlgoritmController(ParameterSet parameterSet, TaskMonitor taskMonitor, YoshikoResult result){ this.parameterSet = parameterSet; this.network = parameterSet.net; this.k = parameterSet.clusterCount; this.taskMonitor = taskMonitor; + this.result = result; } public void controllAlgorithm(){ @@ -32,9 +38,10 @@ public class YoshikoAlgoritmController { taskMonitor.setStatusMessage("Clustering the Graph"); clusters = clusteringAlgorithm.runClusteringAlgorithm(); - taskMonitor.setStatusMessage("Makeing new Graph"); - translator.makeCytoscapeGraph(clusters); - } - + YoshikoSolution solution = new YoshikoSolution(result, 0); + result.addSolution(solution); + taskMonitor.setStatusMessage("Processing Clusters"); + translator.transateClusters(clusters, solution); + } } \ No newline at end of file