Author: laylaoesper
Date: 2010-07-22 16:19:04 -0700 (Thu, 22 Jul 2010)
New Revision: 21004
Modified:
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/CloudParameters.java
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/CreateCloudAction.java
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummary.jar
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryInputPanel.java
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryManager.java
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryParameters.java
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryPlugin.java
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/UpdateCloudAction.java
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/WordFilter.java
Log:
Add number exclusion ability. Also, fix lots of bugs with word exclusion list
needed to act at the network level. Also, fixing restore issues when a HashMap
happened to be empty.
Modified:
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/CloudParameters.java
===================================================================
---
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/CloudParameters.java
2010-07-22 23:16:42 UTC (rev 21003)
+++
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/CloudParameters.java
2010-07-22 23:19:04 UTC (rev 21004)
@@ -170,17 +170,22 @@
this.selectedNodes = nodeNameList;
//Rebuild CloudWords
- String value2 = props.get("CloudWords");
- String[] words = value2.split(WORDDELIMITER);
- ArrayList<CloudWordInfo> cloudWordList = new
ArrayList<CloudWordInfo>();
- for (int i = 0; i < words.length; i++)
+ if (props.containsKey("CloudWords")) //handle the empty case
{
- String wordInfo = words[i];
- CloudWordInfo curInfo = new CloudWordInfo(wordInfo);
- curInfo.setCloudParameters(this);
- cloudWordList.add(curInfo);
+ String value2 = props.get("CloudWords");
+ String[] words = value2.split(WORDDELIMITER);
+ ArrayList<CloudWordInfo> cloudWordList = new
ArrayList<CloudWordInfo>();
+ for (int i = 0; i < words.length; i++)
+ {
+ String wordInfo = words[i];
+ CloudWordInfo curInfo = new
CloudWordInfo(wordInfo);
+ curInfo.setCloudParameters(this);
+ cloudWordList.add(curInfo);
+ }
+ this.cloudWords = cloudWordList;
}
- this.cloudWords = cloudWordList;
+ else
+ this.cloudWords = new ArrayList<CloudWordInfo>();
}
@@ -777,36 +782,40 @@
else
newMap = new HashMap();
- String [] lines = fileInput.split("\n");
+ //Check that we have input
+ if (!fileInput.equals(""))
+ {
+ String [] lines = fileInput.split("\n");
- for (int i = 0; i < lines.length; i++)
- {
- String line = lines[i];
- String [] tokens = line.split("\t");
+ for (int i = 0; i < lines.length; i++)
+ {
+ String line = lines[i];
+ String [] tokens = line.split("\t");
- //the first token is the key and the rest is the object
- //Different types have different data
+ //the first token is the key and the rest is
the object
+ //Different types have different data
- //Counts
- if (type == 1)
- newMap.put(tokens[0],
Integer.parseInt(tokens[1]));
+ //Counts
+ if (type == 1)
+ newMap.put(tokens[0],
Integer.parseInt(tokens[1]));
- //Mapping
- if (type == 2)
- {
- //Create List
- String [] nodes =
tokens[1].split(NODEDELIMITER);
- ArrayList nodeNames = new ArrayList<String>();
- for (int j =0; j < nodes.length; j++)
- nodeNames.add(nodes[j]);
+ //Mapping
+ if (type == 2)
+ {
+ //Create List
+ String [] nodes =
tokens[1].split(NODEDELIMITER);
+ ArrayList nodeNames = new
ArrayList<String>();
+ for (int j =0; j < nodes.length; j++)
+ nodeNames.add(nodes[j]);
- newMap.put(tokens[0], nodeNames);
- }
+ newMap.put(tokens[0], nodeNames);
+ }
- //Ratios
- if (type == 3)
- newMap.put(tokens[0],
Double.parseDouble(tokens[1]));
- }//end line loop
+ //Ratios
+ if (type == 3)
+ newMap.put(tokens[0],
Double.parseDouble(tokens[1]));
+ }//end line loop
+ }//end if data exists check
return newMap;
}
Modified:
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/CreateCloudAction.java
===================================================================
---
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/CreateCloudAction.java
2010-07-22 23:16:42 UTC (rev 21003)
+++
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/CreateCloudAction.java
2010-07-22 23:19:04 UTC (rev 21004)
@@ -151,8 +151,8 @@
//inputPanel.setNetworkList(params);
inputPanel.addNewCloud(cloudParams);
- //Update the list of filter words
- inputPanel.refreshRemovalCMB();
+ //Update the list of filter words and checkbox
+ inputPanel.refreshNetworkSettings();
//Enable adding of words to exclusion list
inputPanel.getAddWordTextField().setEditable(true);
Modified:
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummary.jar
===================================================================
(Binary files differ)
Modified:
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryInputPanel.java
===================================================================
---
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryInputPanel.java
2010-07-22 23:16:42 UTC (rev 21003)
+++
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryInputPanel.java
2010-07-22 23:19:04 UTC (rev 21004)
@@ -47,6 +47,7 @@
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
+import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
@@ -88,9 +89,9 @@
private JTextField addWordTextField;
//JComboBox
- JComboBox cmbAttributes;
- JComboBox cmbRemoval;
- JComboBox cmbStyle;
+ private JComboBox cmbAttributes;
+ private JComboBox cmbRemoval;
+ private JComboBox cmbStyle;
//JLabels
private JLabel networkLabel;
@@ -104,6 +105,9 @@
private JButton removeWordButton;
private JButton addWordButton;
+ //Checkbox
+ private JCheckBox numExclusion;
+
//String Constants for Separators in remove word combo box
private static final String addedSeparator = "--Added Words--";
private static final String flaggedSeparator = "--Flagged Words--";
@@ -393,8 +397,8 @@
addWordTextField = new JFormattedTextField();
addWordTextField.setColumns(15);
- CloudParameters params =
SemanticSummaryManager.getInstance().getCurCloud();
- if
(params.equals(SemanticSummaryManager.getInstance().getNullCloudParameters()))
+ SemanticSummaryParameters networkParams =
SemanticSummaryManager.getInstance().getCurNetwork();
+ if
(networkParams.equals(SemanticSummaryManager.getInstance().getNullSemanticSummary()))
addWordTextField.setEditable(false);
else
addWordTextField.setEditable(true);
@@ -482,19 +486,24 @@
gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
wordPanel.add(removeWordButton, gridBagConstraints);
+ refreshRemovalCMB();
- //Export Text Button
- //JButton exportTextButton = new JButton("txt export");
- //gridBagConstraints = new GridBagConstraints();
- //gridBagConstraints.gridy = 2;
- //gridBagConstraints.gridx = 2;
- //gridBagConstraints.anchor = GridBagConstraints.EAST;
- //gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
- //Comment out for the time being until we decide if this is
needed
- //wordPanel.add(exportTextButton, gridBagConstraints);
+ //Number Exclusion Stuff
- refreshRemovalCMB();
+ //Checkbox
+ numExclusion = new JCheckBox("Exclude Numbers");
+ numExclusion.setToolTipText("When selected, causes all words
that are numbers in the range 0-999 to be excluded");
+ numExclusion.addActionListener(this);
+ numExclusion.setSelected(false);
+ numExclusion.setEnabled(false);
+ gridBagConstraints = new GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 2;
+ gridBagConstraints.anchor = GridBagConstraints.WEST;
+ gridBagConstraints.insets = new Insets(5,0,0,0);
+ wordPanel.add(numExclusion, gridBagConstraints);
+
//Add components to main panel
panel.add(wordPanel);
@@ -631,19 +640,25 @@
cmbStyle.setSelectedItem(params.getDisplayStyle());
addWordTextField.setText("");
- if
(params.equals(SemanticSummaryManager.getInstance().getNullCloudParameters()))
+ //Get current network
+ SemanticSummaryParameters networkParams =
SemanticSummaryManager.getInstance().getCurNetwork();
+
+ if
(networkParams.equals(SemanticSummaryManager.getInstance().getNullSemanticSummary()))
{
addWordTextField.setEditable(false);
addWordButton.setEnabled(false);
+ numExclusion.setEnabled(false);
}
else
{
addWordTextField.setEditable(true);
addWordButton.setEnabled(true);
+ numExclusion.setEnabled(true);
}
SemanticSummaryManager.getInstance().setCurCloud(params);
- this.refreshRemovalCMB();
+ //this.refreshRemovalCMB();
+ this.refreshNetworkSettings();
}
@@ -681,6 +696,8 @@
maxWordsTextField.setValue(params.getDefaultMaxWords());
clusterCutoffTextField.setValue(params.getDefaultClusterCutoff());
cmbStyle.setSelectedItem(params.getDefaultDisplayStyle());
+
+ this.refreshNetworkSettings();
this.updateUI();
}
@@ -693,13 +710,12 @@
cmb = ((DefaultComboBoxModel)cmbRemoval.getModel());
cmb.removeAllElements();
- CloudParameters params =
SemanticSummaryManager.getInstance().getCurCloud();
- SemanticSummaryParameters networkParams =
params.getNetworkParams();
+ SemanticSummaryParameters networkParams =
SemanticSummaryManager.getInstance().getCurNetwork();
WordFilter curFilter = networkParams.getFilter();
- //Check if we are dealing with the Null CloudParameters
+ //Check if we are dealing with the Null
SemanticSummaryParameters
Boolean isNull = false;
- if
(params.equals(SemanticSummaryManager.getInstance().getNullCloudParameters()))
+ if
(networkParams.equals(SemanticSummaryManager.getInstance().getNullSemanticSummary()))
isNull = true;
//Added words
@@ -773,8 +789,28 @@
cmbRemoval.repaint();
}
+ /**
+ * Sets the numExclusion checkbox based on the current network.
+ */
+ private void updateNumExclusionBox()
+ {
+ SemanticSummaryParameters networkParams =
SemanticSummaryManager.getInstance().getCurNetwork();
+ WordFilter curFilter = networkParams.getFilter();
+ Boolean val = curFilter.getFilterNums();
+ numExclusion.setSelected(val);
+ }
/**
+ * Refreshes everything in the input panel that is on the network level.
+ */
+ public void refreshNetworkSettings()
+ {
+ this.refreshRemovalCMB();
+ this.updateNumExclusionBox();
+ }
+
+
+ /**
* Update the attribute list in the attribute combobox.
*/
private void updateCMBAttributes()
@@ -820,17 +856,8 @@
{
DefaultComboBoxModel cmb;
- /*
cmb = ((DefaultComboBoxModel)cmbStyle.getModel());
cmb.removeAllElements();
-
cmb.addElement(SemanticSummaryManager.getInstance().getNullCloudParameters().getDefaultDisplayStyle());
- cmb.addElement("Gray Boxes");
- cmb.addElement("No Clustering");
-
cmbStyle.setSelectedItem(SemanticSummaryManager.getInstance().getNullCloudParameters().getDefaultDisplayStyle());
- cmbStyle.repaint();
- */
- cmb = ((DefaultComboBoxModel)cmbStyle.getModel());
- cmb.removeAllElements();
cmb.addElement(CloudDisplayStyles.CLUSTERED_STANDARD);
cmb.addElement(CloudDisplayStyles.CLUSTERED_BOXES);
cmb.addElement(CloudDisplayStyles.NO_CLUSTERING);
@@ -922,6 +949,7 @@
}//end if combo box
}
+
/**
* Handles button presses in the Input Panel.
* @param ActionEvent - event that triggered this method.
@@ -946,17 +974,14 @@
!selectItem.equalsIgnoreCase(flaggedSeparator) ||
!selectItem.equalsIgnoreCase(stopSeparator))
{
- CloudParameters params =
SemanticSummaryManager.getInstance().getCurCloud();
- SemanticSummaryParameters
networkParams = params.getNetworkParams();
+ SemanticSummaryParameters
networkParams = SemanticSummaryManager.getInstance().getCurNetwork();
WordFilter curFilter =
networkParams.getFilter();
//Remove from filter
curFilter.remove(selectItem);
- //Reset Flags
-
params.setCountInitialized(false);
- params.setSelInitialized(false);
-
params.setRatiosInitialized(false);
+ //Reset flags
+ networkParams.networkChanged();
//Refresh word removal list
this.refreshRemovalCMB();
@@ -972,17 +997,14 @@
else if (value.matches("[\\w]*"))
{
- //add value to cloud parameters filter
and update
- CloudParameters params =
SemanticSummaryManager.getInstance().getCurCloud();
- SemanticSummaryParameters networkParams
= params.getNetworkParams();
+ //add value to filter and update
+ SemanticSummaryParameters networkParams
= SemanticSummaryManager.getInstance().getCurNetwork();
WordFilter curFilter =
networkParams.getFilter();
value.toLowerCase();
curFilter.add(value);
//Reset flags
- params.setCountInitialized(false);
- params.setSelInitialized(false);
- params.setRatiosInitialized(false);
+ networkParams.networkChanged();
//Refresh view
this.refreshRemovalCMB();
@@ -998,10 +1020,26 @@
}
}
}//end button
+ else if (_actionObject instanceof JCheckBox)
+ {
+ JCheckBox _box = (JCheckBox)_actionObject;
+
+ if (_box == numExclusion)
+ {
+ Boolean selected = numExclusion.isSelected();
+
+ //add value to filter and update
+ SemanticSummaryParameters networkParams =
SemanticSummaryManager.getInstance().getCurNetwork();
+ WordFilter curFilter =
networkParams.getFilter();
+ curFilter.setFilterNums(selected);
+
+ //Reset flags
+ networkParams.networkChanged();
+ }
+ }
}
-
//Getters and Setters
public JFormattedTextField getNetWeightTextField()
{
@@ -1064,7 +1102,17 @@
return handler;
}
+ public JCheckBox getNumExclusion()
+ {
+ return numExclusion;
+ }
+ public void setNumExclusion(JCheckBox box)
+ {
+ numExclusion = box;
+ }
+
+
/**
* Private Class to ensure that text fields are being set properly
*/
Modified:
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryManager.java
===================================================================
---
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryManager.java
2010-07-22 23:16:42 UTC (rev 21003)
+++
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryManager.java
2010-07-22 23:19:04 UTC (rev 21004)
@@ -248,7 +248,7 @@
getCloudWindow().clearCloud();
getInputWindow().setUserDefaults();
getInputWindow().refreshAttributeCMB();
- getInputWindow().refreshRemovalCMB();
+ getInputWindow().refreshNetworkSettings();
getInputWindow().loadCurrentCloud(curCloud);
Modified:
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryParameters.java
===================================================================
---
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryParameters.java
2010-07-22 23:16:42 UTC (rev 21003)
+++
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryParameters.java
2010-07-22 23:19:04 UTC (rev 21004)
@@ -61,6 +61,7 @@
//String Delimeters
private static final String NODEDELIMITER = "SSParamNodeDelimiter";
+ //Filter stuff
private WordFilter filter;
//CONSTRUCTORS
@@ -376,4 +377,5 @@
{
filter = aFilter;
}
+
}
Modified:
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryPlugin.java
===================================================================
---
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryPlugin.java
2010-07-22 23:16:42 UTC (rev 21003)
+++
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/SemanticSummaryPlugin.java
2010-07-22 23:19:04 UTC (rev 21004)
@@ -429,7 +429,7 @@
}//end loop through all props files
- //Initialize the panel appropriately
+ //Set current network and Initialize the panel
appropriately
SemanticSummaryManager.getInstance().setupCurrentNetwork();
}//end try
Modified:
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/UpdateCloudAction.java
===================================================================
---
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/UpdateCloudAction.java
2010-07-22 23:16:42 UTC (rev 21003)
+++
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/UpdateCloudAction.java
2010-07-22 23:19:04 UTC (rev 21004)
@@ -84,7 +84,7 @@
CyNetworkView view = Cytoscape.getCurrentNetworkView();
//Update network if necessary
- if (networkParams.networkHasChanged(network));
+ if (networkParams.networkHasChanged(network))
networkParams.updateParameters(network);
//Get set of selected and compare to saved
Modified:
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/WordFilter.java
===================================================================
---
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/WordFilter.java
2010-07-22 23:16:42 UTC (rev 21003)
+++
csplugins/trunk/soc/layla/SemanticSummary/src/cytoscape/csplugins/semanticsummary/WordFilter.java
2010-07-22 23:19:04 UTC (rev 21004)
@@ -57,7 +57,9 @@
private HashSet<String> stopWords = new HashSet<String>(); //Stop words
private HashSet<String> flaggedWords = new HashSet<String>();//Flagged
words
- private HashSet<String> addedWords = new HashSet<String>();
+ private HashSet<String> addedWords = new HashSet<String>(); //User
added words
+ private HashSet<String> numberWords = new HashSet<String>();
+ private Boolean filterNums = false;
final static public String stopWordFile = "StopWords.txt";
final static public String flaggedWordFile = "FlaggedWords.txt";
final static public String separator = "/";
@@ -82,6 +84,7 @@
this.initialize(stopPath, stopWords);
this.initialize(flaggedPath, flaggedWords);
+ this.initializeNums();
}
/**
@@ -141,6 +144,14 @@
addedWords.add(curWord);
}
}
+
+ //Rebuild number list
+ this.initializeNums();
+ value = props.get("FilterNums");
+ if (value != null)
+ {
+ this.filterNums = Boolean.parseBoolean(value);
+ }
}
@@ -160,7 +171,14 @@
return true;
else if (addedWords.contains(aWord))
return true;
- else
+ else if (filterNums)
+ {
+ if (numberWords.contains(aWord))
+ return true;
+ else
+ return false;
+ }
+ else
return false;
}
@@ -294,9 +312,28 @@
filterVariables.append("AddedWords\t" +
output.toString() + "\n");
}
+ filterVariables.append("FilterNums\t" + filterNums + "\n");
+
return filterVariables.toString();
}
+ /**
+ * Builds the hashmap that contains the string values of the numbers 0
+ * to 999 to check for exclusion if this option is set to true.
+ */
+ private void initializeNums()
+ {
+ //Clears old values
+ numberWords = new HashSet<String>();
+
+ for (int i = 0; i < 1000; i++)
+ {
+ String value = Integer.toString(i);
+ numberWords.add(value);
+ }
+ }
+
+
//Getters and Setters
public HashSet<String> getStopWords()
{
@@ -312,4 +349,19 @@
{
return addedWords;
}
+
+ public HashSet<String> getNumWords()
+ {
+ return numberWords;
+ }
+
+ public Boolean getFilterNums()
+ {
+ return filterNums;
+ }
+
+ public void setFilterNums(Boolean val)
+ {
+ filterNums = val;
+ }
}
--
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en.