Author: kono
Date: 2012-06-01 05:05:37 -0700 (Fri, 01 Jun 2012)
New Revision: 29418

Modified:
   
csplugins/trunk/ucsd/kono/PSIQUICUniversalClient/src/org/cytoscape/webservice/psicquic/PSI25VisualStyleBuilder.java
   
csplugins/trunk/ucsd/kono/PSIQUICUniversalClient/src/org/cytoscape/webservice/psicquic/PSICQUICUniversalClient.java
   
csplugins/trunk/ucsd/kono/PSIQUICUniversalClient/src/org/cytoscape/webservice/psicquic/mapper/Mitab25Mapper.java
Log:
Optimized Visual Style.  Still needs some more tuning.

Modified: 
csplugins/trunk/ucsd/kono/PSIQUICUniversalClient/src/org/cytoscape/webservice/psicquic/PSI25VisualStyleBuilder.java
===================================================================
--- 
csplugins/trunk/ucsd/kono/PSIQUICUniversalClient/src/org/cytoscape/webservice/psicquic/PSI25VisualStyleBuilder.java
 2012-05-31 23:55:14 UTC (rev 29417)
+++ 
csplugins/trunk/ucsd/kono/PSIQUICUniversalClient/src/org/cytoscape/webservice/psicquic/PSI25VisualStyleBuilder.java
 2012-06-01 12:05:37 UTC (rev 29418)
@@ -10,7 +10,6 @@
 import java.util.Map;
 
 import org.cytoscape.webservice.psicquic.mapper.Mitab25Mapper;
-import org.omg.CORBA.PRIVATE_MEMBER;
 
 import cytoscape.visual.EdgeAppearanceCalculator;
 import cytoscape.visual.GlobalAppearanceCalculator;
@@ -29,20 +28,34 @@
 public class PSI25VisualStyleBuilder {
 
        // Default visual style name
-       private static final String DEF_VS_NAME = "PSI-MI 25 Style";
+       private static final String DEF_VS_NAME = "PSIMI 25 Style";
 
-       // Prefix for all PSI-MI 25 attributes
-       public static final String ATTR_PREFIX = "PSI-MI-25.";
-
        // Top level interaction types
        private static final String[] ITR_TYPE_ROOT_TERMS = { "MI:0208", 
"MI:0403", "MI:0914" };
 
        // Presets
-       private static final Color OBJECT_COLOR = new Color(0, 128, 128);
-       
-       
-       
-       
+       private static final Color NODE_COLOR = new Color(0xee, 0xee, 0xee);
+       private static final Color EDGE_COLOR = new Color(0x9c, 0x9c, 0x9c);
+       private static final Color EDGE_LABEL_COLOR = new Color(0xA2, 0xB5, 
0xCD);
+       private static final int EDGE_LABEL_OPACITY = 130;
+       private static final int EDGE_LABEL_SIZE = 9;
+
+       // Color presets for some model organisms
+       private static final Color COLOR_HUMAN = new Color(0x43, 0x6E, 0xEE);
+
+       private static final Color COLOR_MOUSE = new Color(0xEE, 0x76, 0x21);
+       private static final Color COLOR_RAT = new Color(0xFF, 0xA5, 0x00);
+
+       private static final Color COLOR_FLY = new Color(0x93, 0x70, 0xDB);
+
+       private static final Color COLOR_WORM = new Color(0x6B, 0x8E, 0x23);
+
+       private static final Color COLOR_YEAST = new Color(0x9C, 0x9C, 0x9C);
+
+       private static final Color COLOR_ECOLI = new Color(0xB0, 0xE2, 0xFF);
+
+       private static final Color COLOR_ARABIDOPSIS = new Color(0xFF, 0xF5, 
0xEE);
+
        private static final Map<String, String> type = new HashMap<String, 
String>();
 
        private static VisualStyle defStyle;
@@ -67,21 +80,19 @@
 
                // Default values
                final int edgeOp = 110;
-               final Color nodeColor = OBJECT_COLOR;
                final Color nodeLineColor = new Color(40, 40, 40);
                final Color nodeLabelColor = new Color(30, 30, 30);
 
                final Color nodeCompoundColor = new Color(100, 100, 100);
                final Color nodeNestedColor = Color.white;
 
-               final Color edgeColor = OBJECT_COLOR;
+               final Color edgeColor = NODE_COLOR;
                final Font nodeLabelFont = new Font("Helvetica", Font.PLAIN, 
14);
                // final Color nodeLabelColor = new Color(105,105,105);
 
                gac.setDefaultBackgroundColor(Color.white);
 
                final PassThroughMapping m = new 
PassThroughMapping(String.class, Mitab25Mapper.PREDICTED_GENE_NAME);
-
                final Calculator calc = new BasicCalculator(DEF_VS_NAME + "-" + 
"NodeLabelMapping", m, NODE_LABEL);
                // PassThroughMapping me = new PassThroughMapping("", 
ATTR_PREFIX +
                // "interaction type");
@@ -89,7 +100,7 @@
                // EdgeCalculator calce = new EdgeCalculator(DEF_VS_NAME + "-"
                // + "EdgeLabelMapping", me, null, EDGE_LABEL);
                nac.setCalculator(calc);
-               
nac.getDefaultAppearance().set(VisualPropertyType.NODE_FILL_COLOR, nodeColor);
+               
nac.getDefaultAppearance().set(VisualPropertyType.NODE_FILL_COLOR, NODE_COLOR);
                nac.getDefaultAppearance().set(VisualPropertyType.NODE_SHAPE, 
NodeShape.RECT);
                nac.getDefaultAppearance().set(VisualPropertyType.NODE_OPACITY, 
120);
                
nac.getDefaultAppearance().set(VisualPropertyType.NODE_BORDER_OPACITY, 200);
@@ -107,15 +118,22 @@
                
nac.getDefaultAppearance().set(VisualPropertyType.NODE_FONT_SIZE, 14);
                nac.setNodeSizeLocked(false);
 
-               DiscreteMapping nodeColorMapping = new 
DiscreteMapping(nodeColor, ATTR_PREFIX + "interactor type",
-                               ObjectMapping.NODE_MAPPING);
-               nodeColorMapping.putMapValue("compound", nodeCompoundColor);
-               nodeColorMapping.putMapValue("nested", nodeNestedColor);
+               // Node Color Mapping based on species name
+               DiscreteMapping nodeColorMapping = new 
DiscreteMapping(Color.class, Mitab25Mapper.SPECIES_ATTR_NAME);
+               nodeColorMapping.putMapValue("9606", COLOR_HUMAN);
+               nodeColorMapping.putMapValue("10090", COLOR_MOUSE);
+               nodeColorMapping.putMapValue("10116", COLOR_RAT);
+               nodeColorMapping.putMapValue("111?", COLOR_FLY);
+               nodeColorMapping.putMapValue("10116", COLOR_WORM);
+               nodeColorMapping.putMapValue("4932", COLOR_YEAST);
+               nodeColorMapping.putMapValue("83333", COLOR_ECOLI);
+               nodeColorMapping.putMapValue("3702", COLOR_ARABIDOPSIS);
+
                final Calculator nodeColorCalc = new 
BasicCalculator(DEF_VS_NAME + "-" + "NodeColorMapping", nodeColorMapping,
                                VisualPropertyType.NODE_FILL_COLOR);
                nac.setCalculator(nodeColorCalc);
 
-               DiscreteMapping nodeShapeMapping = new 
DiscreteMapping(NodeShape.RECT, ATTR_PREFIX + "interactor type",
+               DiscreteMapping nodeShapeMapping = new 
DiscreteMapping(NodeShape.RECT, Mitab25Mapper.ATTR_PREFIX + "interactor type",
                                ObjectMapping.NODE_MAPPING);
                nodeShapeMapping.putMapValue("compound", NodeShape.ELLIPSE);
                nodeShapeMapping.putMapValue("nested", NodeShape.ROUND_RECT);
@@ -123,14 +141,14 @@
                                VisualPropertyType.NODE_SHAPE);
                nac.setCalculator(nodeShapeCalc);
 
-               DiscreteMapping nodeWidthMapping = new DiscreteMapping(30, 
ATTR_PREFIX + "interactor type",
+               DiscreteMapping nodeWidthMapping = new DiscreteMapping(30, 
Mitab25Mapper.ATTR_PREFIX + "interactor type",
                                ObjectMapping.NODE_MAPPING);
                nodeWidthMapping.putMapValue("compound", 15);
                nodeWidthMapping.putMapValue("nested", 100);
                final Calculator nodeWidthCalc = new 
BasicCalculator(DEF_VS_NAME + "-" + "NodeWidthMapping", nodeWidthMapping,
                                VisualPropertyType.NODE_WIDTH);
                nac.setCalculator(nodeWidthCalc);
-               DiscreteMapping nodeHeightMapping = new DiscreteMapping(30, 
ATTR_PREFIX + "interactor type",
+               DiscreteMapping nodeHeightMapping = new DiscreteMapping(30, 
Mitab25Mapper.ATTR_PREFIX + "interactor type",
                                ObjectMapping.NODE_MAPPING);
                nodeHeightMapping.putMapValue("compound", 15);
                nodeHeightMapping.putMapValue("nested", 100);
@@ -138,25 +156,27 @@
                                nodeHeightMapping, 
VisualPropertyType.NODE_HEIGHT);
                nac.setCalculator(nodeHeightCalc);
 
+               final PassThroughMapping edgeLabelMapping = new 
PassThroughMapping(String.class, Mitab25Mapper.INTERACTION_TYPE_ATTR_NAME);
+               final Calculator edgeCalc = new BasicCalculator(DEF_VS_NAME + 
"-" + "EdgeLabelMapping", edgeLabelMapping, VisualPropertyType.EDGE_LABEL);
+               eac.setCalculator(edgeCalc);
+               
                // eac.setCalculator(calce);
-               eac.getDefaultAppearance().set(VisualPropertyType.EDGE_COLOR, 
edgeColor);
-               
eac.getDefaultAppearance().set(VisualPropertyType.EDGE_LABEL_COLOR, Color.red);
-               
eac.getDefaultAppearance().set(VisualPropertyType.EDGE_FONT_SIZE, 5);
+               eac.getDefaultAppearance().set(VisualPropertyType.EDGE_COLOR, 
EDGE_COLOR);
+               
eac.getDefaultAppearance().set(VisualPropertyType.EDGE_LABEL_COLOR, 
EDGE_LABEL_COLOR);
+               
eac.getDefaultAppearance().set(VisualPropertyType.EDGE_FONT_SIZE, 
EDGE_LABEL_SIZE);
 
                eac.getDefaultAppearance().set(VisualPropertyType.EDGE_OPACITY, 
edgeOp);
                
eac.getDefaultAppearance().set(VisualPropertyType.EDGE_SRCARROW_OPACITY, 
edgeOp);
                
eac.getDefaultAppearance().set(VisualPropertyType.EDGE_TGTARROW_OPACITY, 
edgeOp);
-               // 
eac.getDefaultAppearance().set(VisualPropertyType.EDGE_LABEL_OPACITY,
-               // 80);
+               
eac.getDefaultAppearance().set(VisualPropertyType.EDGE_LABEL_OPACITY, 
EDGE_LABEL_OPACITY);
                
eac.getDefaultAppearance().set(VisualPropertyType.EDGE_LINE_WIDTH, 1);
-               eac.getDefaultAppearance().set(VisualPropertyType.EDGE_LABEL, 
"");
 
                // Interaction Type mapping
-               DiscreteMapping lineStyle = new 
DiscreteMapping(LineStyle.SOLID, ATTR_PREFIX + "interaction type",
+               DiscreteMapping lineStyle = new 
DiscreteMapping(LineStyle.SOLID, Mitab25Mapper.ATTR_PREFIX + "interaction type",
                                ObjectMapping.EDGE_MAPPING);
-               DiscreteMapping lineWidth = new DiscreteMapping(1.0, 
ATTR_PREFIX + "interaction type",
+               DiscreteMapping lineWidth = new DiscreteMapping(1.0, 
Mitab25Mapper.ATTR_PREFIX + "interaction type",
                                ObjectMapping.EDGE_MAPPING);
-               DiscreteMapping edgeColorMap = new DiscreteMapping(Color.black, 
ATTR_PREFIX + "interaction type",
+               DiscreteMapping edgeColorMap = new DiscreteMapping(Color.black, 
Mitab25Mapper.ATTR_PREFIX + "interaction type",
                                ObjectMapping.EDGE_MAPPING);
                generateInteractionTypeMap(lineStyle, lineWidth, edgeColorMap);
 

Modified: 
csplugins/trunk/ucsd/kono/PSIQUICUniversalClient/src/org/cytoscape/webservice/psicquic/PSICQUICUniversalClient.java
===================================================================
--- 
csplugins/trunk/ucsd/kono/PSIQUICUniversalClient/src/org/cytoscape/webservice/psicquic/PSICQUICUniversalClient.java
 2012-05-31 23:55:14 UTC (rev 29417)
+++ 
csplugins/trunk/ucsd/kono/PSIQUICUniversalClient/src/org/cytoscape/webservice/psicquic/PSICQUICUniversalClient.java
 2012-06-01 12:05:37 UTC (rev 29418)
@@ -298,7 +298,7 @@
                        nestedNode.setNestedNetwork(net);
 
                        
Cytoscape.getNodeAttributes().setAttribute(nestedNode.getIdentifier(),
-                                       PSI25VisualStyleBuilder.ATTR_PREFIX + 
"interactor type", "nested");
+                                       Mitab25Mapper.ATTR_PREFIX + "interactor 
type", "nested");
 
                        parentNetwork.addNode(nestedNode);
                        parentNetwork.addEdge(Cytoscape.getCyEdge(nestedNode, 
centerNode, "interaction", "query_result", true));

Modified: 
csplugins/trunk/ucsd/kono/PSIQUICUniversalClient/src/org/cytoscape/webservice/psicquic/mapper/Mitab25Mapper.java
===================================================================
--- 
csplugins/trunk/ucsd/kono/PSIQUICUniversalClient/src/org/cytoscape/webservice/psicquic/mapper/Mitab25Mapper.java
    2012-05-31 23:55:14 UTC (rev 29417)
+++ 
csplugins/trunk/ucsd/kono/PSIQUICUniversalClient/src/org/cytoscape/webservice/psicquic/mapper/Mitab25Mapper.java
    2012-06-01 12:05:37 UTC (rev 29418)
@@ -23,13 +23,13 @@
        private static final CyLogger logger = CyLogger.getLogger();
 
        public static final String PREDICTED_GENE_NAME = "predicted gene name";
-       
+
        // Separator for multiple entries.
        private static final String SEPARATOR = "\\|";
        private static final String TAB = "\t";
        private static final String DB_ID = "\\:";
        private static final String DESCRIPTION = "(\\S?)";
-       private static final String ATTR_PREFIX = "PSIMI25.";
+       public static final String ATTR_PREFIX = "PSIMI25.";
 
        // PSIMI25 specification contains 15 columns.
        private static final int COLUMN_COUNT = 15;
@@ -67,6 +67,9 @@
 
        private static final String ENTREZ_GENE_ATTR_NAME = ATTR_PREFIX + 
ENTREZ_GENE;
        private static final String UNIPROT_ATTR_NAME = ATTR_PREFIX + 
"uniprotkb";
+       private static final String STRING_ATTR_NAME = ATTR_PREFIX + "string";
+       public static final String SPECIES_ATTR_NAME = ATTR_PREFIX + "taxid";
+       public static final String INTERACTION_TYPE_ATTR_NAME = ATTR_PREFIX + 
"interaction type.name";
        private static final String CHEBI = "chebi";
 
        private static final String INTERACTOR_TYPE = ATTR_PREFIX + "interactor 
type";
@@ -336,43 +339,51 @@
                return miName;
        }
 
-       private void guessHumanReadableName(CyNode node) {
+       private void guessHumanReadableName(final CyNode node) {
                final String id = node.getIdentifier();
+               boolean found = false;
+
+               // Special handler for STRING. This is a hack... Need some more 
smarter
+               // code in 3.
+               final List<String> stringList = nodeAttr.getListAttribute(id, 
STRING_ATTR_NAME);
+               if (stringList != null)
+                       found = findHumanReadableName(id, stringList, 
ncbiPattern, true);
+               
+               if(found)
+                       return;
                // try NCBI
                final List<String> ncbiList = nodeAttr.getListAttribute(id, 
ENTREZ_GENE_ATTR_NAME);
-               String candidateString = null;
-               if (ncbiList != null) {
-                       for (final String geneID : ncbiList) {
-                               if (ncbiPattern.matcher(geneID).find()) {
-                                       candidateString = geneID;
-                                       break;
-                               }
-                       }
-                       if (candidateString != null) {
-                               nodeAttr.setAttribute(id, PREDICTED_GENE_NAME, 
candidateString);
-                               return;
-                       }
-               }
+               if (ncbiList != null)
+                       found = findHumanReadableName(id, ncbiList, 
ncbiPattern, true);
+
+               if(found)
+                       return;
                
                // Try Uniprot
                final List<String> uniprotList = nodeAttr.getListAttribute(id, 
UNIPROT_ATTR_NAME);
-               if (uniprotList != null) {
-                       for (final String geneID : uniprotList) {
-                               if (uniprotPattern.matcher(geneID).find() == 
false) {
-                                       candidateString = geneID;
-                                       break;
-                               }
+               if (uniprotList != null)
+                       found = findHumanReadableName(id, uniprotList, 
uniprotPattern, false);
+
+               if (found == false) {
+                       // Give up. Use primary key
+                       nodeAttr.setAttribute(id, PREDICTED_GENE_NAME, 
node.getIdentifier());
+               }
+       }
+
+       private boolean findHumanReadableName(final String id, final 
List<String> attrList, Pattern pattern, boolean exist) {
+               String candidateString = null;
+               for (final String geneID : attrList) {
+                       if (pattern.matcher(geneID).find() == exist) {
+                               candidateString = geneID;
+                               break;
                        }
-                       if (candidateString != null) {
-                               nodeAttr.setAttribute(id, PREDICTED_GENE_NAME, 
candidateString);
-                               return;
-                       }
                }
+               if (candidateString != null) {
+                       nodeAttr.setAttribute(id, PREDICTED_GENE_NAME, 
candidateString);
+                       return true;
+               }
 
-               // TODO: try String
-               
-               // Give up.  Use primary key
-               nodeAttr.setAttribute(id, PREDICTED_GENE_NAME, 
node.getIdentifier());
+               return false;
        }
 
 }

-- 
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.

Reply via email to