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.