From f1f3c7c6b329269a87bb3e57fdb95f896d7fe32d Mon Sep 17 00:00:00 2001 From: Philipp Spohr <spohr.philipp@web.de> Date: Mon, 5 Mar 2018 13:47:01 +0100 Subject: [PATCH] More elegant handling of CyColumn tunable, removed workaround via String completely Updated some headers, some Javadoc --- .../ba/yoshikoWrapper/core/ParameterSet.java | 75 +++++++------------ .../graphModel/YoshikoCluster.java | 9 ++- .../graphModel/YoshikoResult.java | 2 +- .../graphModel/YoshikoSolution.java | 2 +- .../swing/components/EditCostPanel.java | 19 +++-- .../swing/components/MainPanel.java | 6 +- .../yoshikoWrapper/tasks/AlgorithmTask.java | 6 +- 7 files changed, 52 insertions(+), 67 deletions(-) diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/core/ParameterSet.java b/src/main/java/de/hhu/ba/yoshikoWrapper/core/ParameterSet.java index 1ae45b2..f050e37 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/core/ParameterSet.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/core/ParameterSet.java @@ -44,11 +44,11 @@ public class ParameterSet implements TunableValidator //COLUMN-MAPPINGS @Tunable(description="A column in the edge table containing weights", context="nogui") - public ListSingleSelection<String> weightColumnName = null; + public ListSingleSelection<CyColumn> weightColumn = null; @Tunable(description="A column containing boolean entries for edges that are to be treated as permanent",context="nogui") - public ListSingleSelection<String> permanentColumnName = null; + public ListSingleSelection<CyColumn> permanentColumn = null; @Tunable(description="A column containing boolean entries for edges that are to be treated as forbidden",context="nogui") - public ListSingleSelection<String> forbiddenColumnName = null; + public ListSingleSelection<CyColumn> forbiddenColumn = null; @Tunable(description="The default insertion cost that is to be used for non-existing edges",context="nogui") public double defaultInsertionCost = -1; @@ -86,40 +86,32 @@ public class ParameterSet implements TunableValidator */ public ParameterSet() { - ArrayList<String> columnNames = new ArrayList<String>(); + ArrayList<CyColumn> columns = new ArrayList<CyColumn>(); //Only numeric columns are relevant for weight mapping for (CyColumn col : net.getDefaultEdgeTable().getColumns()) { if (Number.class.isAssignableFrom(col.getType())) { - columnNames.add(col.getName()); + columns.add(col); } } - weightColumnName = new ListSingleSelection<String>(columnNames); + weightColumn = new ListSingleSelection<CyColumn>(columns); - columnNames = new ArrayList<String>(); + columns.clear(); //Only boolean columns are relevant for forbidden/permanent mapping for (CyColumn col : net.getDefaultEdgeTable().getColumns()) { if (col.getType() == Boolean.class) { - columnNames.add(col.getName()); + columns.add(col); } } - forbiddenColumnName = new ListSingleSelection<String>(columnNames); - permanentColumnName = new ListSingleSelection<String>(columnNames); + forbiddenColumn = new ListSingleSelection<CyColumn>(columns); + permanentColumn = new ListSingleSelection<CyColumn>(columns); } @Override public ValidationState getValidationState(Appendable errMsg) { System.out.println("DEBUG: Running VALIDATION of tunables"); //TODO: Move to logger (if it would work) try { - if (net!= null) { - //Verify column validity - CyColumn weightColumn = net.getDefaultEdgeTable().getColumn(weightColumnName.getSelectedValue()); - if (weightColumn == null) { - errMsg.append("Could not find a column named: "+weightColumnName+"\n"); - return ValidationState.INVALID; - } - } if (!checkBitmask(reductionRulesBitMask)) { errMsg.append("The Bitmask provided is invalid! Needs to be six bit binary (example: 011001)\n"); return ValidationState.INVALID; @@ -156,8 +148,11 @@ public class ParameterSet implements TunableValidator @Override public String toString(){ - String ret = ""; + String ret = "[ParameterSet]:\n"; ret += "Target Cluster Count: "+clusterCount+"\n"; + ret += "Weight mapped to column: "+(weightColumn.getSelectedValue() != null ? weightColumn.getSelectedValue().getName() : "[NONE]")+"\n"; + ret += "Permanent edges mapped to column: "+(permanentColumn.getSelectedValue() != null ? permanentColumn.getSelectedValue().getName() : "[NONE]")+"\n"; + ret += "Forbidden edges mapped to column: "+(forbiddenColumn.getSelectedValue() != null ? forbiddenColumn.getSelectedValue().getName() : "[NONE]")+"\n"; //TODO return ret; } @@ -166,46 +161,28 @@ public class ParameterSet implements TunableValidator //TODO: Code Redundancy, might be smart to insert the three columns into some sort of super structure and then remove the redundant setters/getters, pass column type as argument - public void setWeightColumnName(String columnName) { - if (weightColumnName.getPossibleValues().contains(columnName)) { - weightColumnName.setSelectedValue(columnName); - } - else { - //Attempting to set a column that is not part of the possible values - //TODO: Output debug/warning if Cytoscape logger will eventually work - } + public void setWeightColumn(CyColumn column) { + weightColumn.setSelectedValue(column); } - public void setPermanentColumnName(String columnName) { - if (permanentColumnName.getPossibleValues().contains(columnName)) { - permanentColumnName.setSelectedValue(columnName); - } - else { - //Attempting to set a column that is not part of the possible values - //TODO: Output debug/warning if Cytoscape logger will eventually work - } + public void setPermanentColumn(CyColumn column) { + permanentColumn.setSelectedValue(column); } - public void setForbiddenColumnName(String columnName) { - if (forbiddenColumnName.getPossibleValues().contains(columnName)) { - forbiddenColumnName.setSelectedValue(columnName); - } - else { - //Attempting to set a column that is not part of the possible values - //TODO: Output debug/warning if Cytoscape logger will eventually work - } + public void setForbiddenColumn(CyColumn column) { + forbiddenColumn.setSelectedValue(column); } - public String getWeightColumnName() { - return weightColumnName.getSelectedValue(); + public CyColumn getWeightColumn() { + return weightColumn.getSelectedValue(); } - public String getPermanentColumnName() { - return permanentColumnName.getSelectedValue(); + public CyColumn getPermanentColumn() { + return permanentColumn.getSelectedValue(); } - public String getForbiddenColumnName() { - return forbiddenColumnName.getSelectedValue(); + public CyColumn getForbiddenColumn() { + return forbiddenColumn.getSelectedValue(); } } diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoCluster.java b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoCluster.java index 6b8ebbb..57c4563 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoCluster.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoCluster.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (C) 2017 Philipp Spohr + * Copyright (C) 2018 Philipp Spohr * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -50,9 +50,14 @@ import static org.cytoscape.view.presentation.property.BasicVisualLexicon.NETWOR public class YoshikoCluster { - + /** + * The internal id used to uniquely identify the cluster + */ private final long id; + /** + * All nodes associated with this cluster + */ private ArrayList<CyNode> nodes; private Image img; diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoResult.java b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoResult.java index d6af2cf..16bb1f7 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoResult.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoResult.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (C) 2017 Philipp Spohr + * Copyright (C) 2018 Philipp Spohr * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoSolution.java b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoSolution.java index e862745..d54fbe5 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoSolution.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/graphModel/YoshikoSolution.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (C) 2017 Philipp Spohr + * Copyright (C) 2018 Philipp Spohr * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/EditCostPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/EditCostPanel.java index b52e776..257ff59 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/EditCostPanel.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/EditCostPanel.java @@ -26,6 +26,9 @@ import javax.swing.GroupLayout; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSeparator; + +import org.cytoscape.model.CyColumn; + import javax.swing.GroupLayout.Alignment; import de.hhu.ba.yoshikoWrapper.core.LocalizationManager; @@ -113,12 +116,6 @@ public class EditCostPanel extends JPanel { } //SETTER / GETTER - public String getPermanentColumnName() { - return columnMapper.getPermanentColumn() != null ? columnMapper.getPermanentColumn().getName() : null; } - - public String getForbiddenColumnName() { - return columnMapper.getForbiddenColumn() != null ? columnMapper.getForbiddenColumn().getName() : null; } - public double getDefaultInsertionCost() { return icField.getValueAsDouble(); } @@ -131,8 +128,14 @@ public class EditCostPanel extends JPanel { return columnMapper; } - public String getWeightColumnName() { - return columnMapper.getEditingCostColumn() != null ? columnMapper.getEditingCostColumn().getName() : null; + public CyColumn getWeightColumn() { + return columnMapper.getEditingCostColumn() != null ? columnMapper.getEditingCostColumn() : null; } + + public CyColumn getPermanentColumn() { + return columnMapper.getPermanentColumn() != null ? columnMapper.getPermanentColumn() : null; } + + public CyColumn getForbiddenColumn() { + return columnMapper.getForbiddenColumn() != null ? columnMapper.getForbiddenColumn(): null; } } diff --git a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/MainPanel.java b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/MainPanel.java index e48efbf..b8277bc 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/MainPanel.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/swing/components/MainPanel.java @@ -346,9 +346,9 @@ public class MainPanel extends JPanel implements CytoPanelComponent { ParameterSet ret = new ParameterSet(); ret.net = net; ret.timeLimit = opModePanel.getTimeLimit(); - ret.setWeightColumnName(ecPanel.getWeightColumnName()); - ret.setPermanentColumnName(ecPanel.getPermanentColumnName()); - ret.setForbiddenColumnName(ecPanel.getForbiddenColumnName()); + ret.setWeightColumn(ecPanel.getWeightColumn()); + ret.setPermanentColumn(ecPanel.getPermanentColumn()); + ret.setForbiddenColumn(ecPanel.getForbiddenColumn()); ret.defaultInsertionCost = ecPanel.getDefaultInsertionCost(); ret.defaultDeletionCost = ecPanel.getDefaultDeletionCost(); ret.useHeuristic = opModePanel.useHeuristic(); 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 52d75a3..3d0d53f 100644 --- a/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/AlgorithmTask.java +++ b/src/main/java/de/hhu/ba/yoshikoWrapper/tasks/AlgorithmTask.java @@ -132,9 +132,9 @@ public class AlgorithmTask extends AbstractTask implements ObservableTask, Tunab taskMonitor.setProgress(0.1); //We identify the columns if they exist from their given names - CyColumn weightColumn = parameterSet.getWeightColumnName() != null ? parameterSet.net.getDefaultEdgeTable().getColumn(parameterSet.getWeightColumnName()) : null; - CyColumn permanentColumn = parameterSet.permanentColumnName != null ? parameterSet.net.getDefaultEdgeTable().getColumn(parameterSet.getPermanentColumnName()) : null; - CyColumn forbiddenColumn = parameterSet.forbiddenColumnName != null ? parameterSet.net.getDefaultEdgeTable().getColumn(parameterSet.getForbiddenColumnName()) : null; + CyColumn weightColumn = parameterSet.getWeightColumn(); + CyColumn permanentColumn = parameterSet.getPermanentColumn(); + CyColumn forbiddenColumn = parameterSet.getForbiddenColumn(); //Generate an c_input instance from the network c_input = NetworkParser.parseNetwork( -- GitLab