Author: clopes
Date: 2012-09-19 12:11:46 -0700 (Wed, 19 Sep 2012)
New Revision: 30384
Added:
core3/impl/trunk/io-impl/impl/src/test/resources/testData/xgmml/nested_groups_283.xgmml
Modified:
core3/impl/trunk/group-impl/src/test/java/org/cytoscape/group/GroupTestSupport.java
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/ReadDataManager.java
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/util/GroupUtil.java
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/AbstractNetworkReaderTest.java
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReaderTest.java
Log:
Added tests for and fixed importing XGMML files with nested groups.
Modified:
core3/impl/trunk/group-impl/src/test/java/org/cytoscape/group/GroupTestSupport.java
===================================================================
---
core3/impl/trunk/group-impl/src/test/java/org/cytoscape/group/GroupTestSupport.java
2012-09-19 18:40:54 UTC (rev 30383)
+++
core3/impl/trunk/group-impl/src/test/java/org/cytoscape/group/GroupTestSupport.java
2012-09-19 19:11:46 UTC (rev 30384)
@@ -10,16 +10,20 @@
public class GroupTestSupport {
protected CyGroupFactory groupFactory;
+ protected CyGroupManagerImpl groupManager;
public GroupTestSupport() {
final CyEventHelper help = mock(CyEventHelper.class);
final CyServiceRegistrar serviceRegistrar =
mock(CyServiceRegistrar.class);
- final CyGroupManagerImpl groupMgr = new
CyGroupManagerImpl(help);
-
- this.groupFactory = new CyGroupFactoryImpl(help, groupMgr,
serviceRegistrar);
+ groupManager = new CyGroupManagerImpl(help);
+ groupFactory = new CyGroupFactoryImpl(help, groupManager,
serviceRegistrar);
}
public CyGroupFactory getGroupFactory() {
return groupFactory;
}
+
+ public CyGroupManagerImpl getGroupManager() {
+ return groupManager;
+ }
}
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/ReadDataManager.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/ReadDataManager.java
2012-09-19 18:40:54 UTC (rev 30383)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/ReadDataManager.java
2012-09-19 19:11:46 UTC (rev 30384)
@@ -27,6 +27,9 @@
*/
package org.cytoscape.io.internal.read.xgmml.handler;
+import static org.cytoscape.io.internal.util.GroupUtil.EXTERNAL_EDGE_ATTRIBUTE;
+import static org.cytoscape.io.internal.util.GroupUtil.GROUP_STATE_ATTRIBUTE;
+
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -62,9 +65,6 @@
public class ReadDataManager {
- public final static String GROUP_STATE_ATTRIBUTE="__groupState";
- public final static String
EXTERNAL_EDGE_ATTRIBUTE="__externalEdges.SUID";
-
protected final static String XLINK = "http://www.w3.org/1999/xlink";
/* RDF Data */
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/util/GroupUtil.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/util/GroupUtil.java
2012-09-19 18:40:54 UTC (rev 30383)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/util/GroupUtil.java
2012-09-19 19:11:46 UTC (rev 30384)
@@ -24,20 +24,20 @@
public class GroupUtil {
// 3.x group attributes
- private final String EXTERNAL_EDGE_ATTRIBUTE="__externalEdges.SUID";
- private final String GROUP_COLLAPSED_ATTRIBUTE="__groupCollapsed.SUID";
- private final String GROUP_NETWORKS_ATTRIBUTE="__groupNetworks.SUID";
- private final String GROUP_ATTRIBUTE="__isGroup";
- private final String ISMETA_EDGE_ATTR="__isMetaEdge";
- private final String X_LOCATION_ATTR="__xLocation";
- private final String Y_LOCATION_ATTR="__yLocation";
+ public static final String
EXTERNAL_EDGE_ATTRIBUTE="__externalEdges.SUID";
+ public static final String
GROUP_COLLAPSED_ATTRIBUTE="__groupCollapsed.SUID";
+ public static final String
GROUP_NETWORKS_ATTRIBUTE="__groupNetworks.SUID";
+ public static final String GROUP_ATTRIBUTE="__isGroup";
+ public static final String ISMETA_EDGE_ATTR="__isMetaEdge";
+ public static final String X_LOCATION_ATTR="__xLocation";
+ public static final String Y_LOCATION_ATTR="__yLocation";
// 2.x group attributes
- private final String GROUP_STATE_ATTRIBUTE="__groupState";
- private final String GROUP_ISLOCAL_ATTRIBUTE="__groupIsLocal";
- private final String GROUP_NODEX_ATTRIBUTE="__metanodeHintX";
- private final String GROUP_NODEY_ATTRIBUTE="__metanodeHintY";
- private final String X_OFFSET_ATTR="__xOffset";
- private final String Y_OFFSET_ATTR="__yOffset";
+ public static final String GROUP_STATE_ATTRIBUTE="__groupState";
+ public static final String GROUP_ISLOCAL_ATTRIBUTE="__groupIsLocal";
+ public static final String GROUP_NODEX_ATTRIBUTE="__metanodeHintX";
+ public static final String GROUP_NODEY_ATTRIBUTE="__metanodeHintY";
+ public static final String X_OFFSET_ATTR="__xOffset";
+ public static final String Y_OFFSET_ATTR="__yOffset";
private final CyGroupManager groupMgr;
private final CyGroupFactory groupFactory;
@@ -148,6 +148,9 @@
!hnRow.isSet(GROUP_ATTRIBUTE))
continue;
+ // Check for nested groups recursively
+ createGroups((CySubNetwork) netPointer, null);
+
boolean collapsed = false;
boolean cy2group = false;
Modified:
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/AbstractNetworkReaderTest.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/AbstractNetworkReaderTest.java
2012-09-19 18:40:54 UTC (rev 30383)
+++
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/AbstractNetworkReaderTest.java
2012-09-19 19:11:46 UTC (rev 30384)
@@ -1,5 +1,7 @@
package org.cytoscape.io.internal.read;
+import static org.cytoscape.model.CyNetwork.NAME;
+import static org.cytoscape.model.subnetwork.CyRootNetwork.SHARED_NAME;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@@ -19,6 +21,7 @@
import org.cytoscape.model.CyNetworkManager;
import org.cytoscape.model.CyNode;
import org.cytoscape.model.NetworkTestSupport;
+import org.cytoscape.model.subnetwork.CyRootNetwork;
import org.cytoscape.model.subnetwork.CyRootNetworkManager;
import org.cytoscape.property.CyProperty;
import org.cytoscape.property.CyProperty.SavePolicy;
@@ -134,4 +137,22 @@
return net;
}
+
+ protected CyNode getNodeByName(CyNetwork net, String name) {
+ for (CyNode n : net.getNodeList()) {
+ if (name.equals(net.getRow(n).get(NAME, String.class)))
+ return n;
+ }
+
+ return null;
+ }
+
+ protected CyEdge getEdgeByName(CyNetwork net, String name) {
+ for (CyEdge e : net.getEdgeList()) {
+ if (name.equals(net.getRow(e).get(NAME, String.class)))
+ return e;
+ }
+
+ return null;
+ }
}
Modified:
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReaderTest.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReaderTest.java
2012-09-19 18:40:54 UTC (rev 30383)
+++
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReaderTest.java
2012-09-19 19:11:46 UTC (rev 30384)
@@ -56,6 +56,7 @@
CyNetworkFactory networkFactory;
CyRootNetworkManager rootNetworkMgr;
CyNetworkTableManager netTablMgr;
+ CyGroupManager groupMgr;
CyTableFactory tableFactory;
RenderingEngineManager renderingEngineMgr;
ReadDataManager readDataMgr;
@@ -87,10 +88,10 @@
GroupTestSupport groupTestSupport = new GroupTestSupport();
CyGroupFactory grFactory = groupTestSupport.getGroupFactory();
- CyGroupManager grMgr = mock(CyGroupManager.class);
+ groupMgr = groupTestSupport.getGroupManager();
readCache = new ReadCache(netTablMgr);
- groupUtil = new GroupUtil(grMgr, grFactory);
+ groupUtil = new GroupUtil(groupMgr, grFactory);
suidUpdater = new SUIDUpdater();
readDataMgr = new ReadDataManager(readCache, suidUpdater,
mock(EquationCompiler.class), networkFactory,
rootNetworkMgr, groupUtil);
@@ -237,11 +238,18 @@
List<CyNetworkView> views = getViews("group_2x_expanded.xgmml");
// The group network should not be registered, so the network
list must contain only the base network
assertEquals(1, reader.getNetworks().length);
+
CyNetwork net = checkSingleNetwork(views, 3, 2);
- CyNode grNode = check2xGroupMetadata(net, true);
+ CyRootNetwork rootNet = rootNetworkMgr.getRootNetwork(net);
+ CyNode grNode = getNodeByName(rootNet, "metanode 1");
+ check2xGroupMetadata(net, grNode, true);
+
assertCustomColumnsAreMutable(rootNetworkMgr.getRootNetwork(net));
assertCustomColumnsAreMutable(net);
assertCustomColumnsAreMutable(grNode.getNetworkPointer());
+
+ assertEquals(1, groupMgr.getGroupSet(net).size());
+ assertTrue(groupMgr.isGroup(grNode, net));
}
@Test
@@ -250,17 +258,40 @@
// The group network should not be registered, so the network
list must contain only the base network
assertEquals(1, reader.getNetworks().length);
CyNetwork net = checkSingleNetwork(views, 2, 1);
- CyNode grNode = check2xGroupMetadata(net, false);
+ CyRootNetwork rootNet = rootNetworkMgr.getRootNetwork(net);
+ CyNode grNode = getNodeByName(rootNet, "metanode 1");
+ check2xGroupMetadata(net, grNode, false);
+
// Check group network data
CyNetwork grNet = grNode.getNetworkPointer();
for (CyNode n : grNet.getNodeList()) {
assertNotNull(grNet.getRow(n,
HIDDEN_ATTRS).get("__metanodeHintX", Double.class));
assertNotNull(grNet.getRow(n,
HIDDEN_ATTRS).get("__metanodeHintY", Double.class));
}
-
assertCustomColumnsAreMutable(rootNetworkMgr.getRootNetwork(net));
+
+ assertCustomColumnsAreMutable(rootNet);
assertCustomColumnsAreMutable(net);
assertCustomColumnsAreMutable(grNet);
+
+ assertEquals(1, groupMgr.getGroupSet(net).size());
+ assertTrue(groupMgr.isGroup(grNode, net));
}
+
+ @Test
+ public void testParseNestedGroupsFrom2x() throws Exception {
+ List<CyNetworkView> views = getViews("nested_groups_283.xgmml");
+ CyNetwork net = checkSingleNetwork(views, 3, 3);
+ // The group network should not be registered, so the network
list must contain only the base network
+ assertEquals(1, reader.getNetworks().length);
+
+ CyNode grNode2 = getNodeByName(net, "Meta 2");
+ assertTrue(groupMgr.isGroup(grNode2, net));
+ CyNode grNode1 = getNodeByName(grNode2.getNetworkPointer(),
"Meta 1"); // Nested group node
+ assertTrue(groupMgr.isGroup(grNode1,
grNode2.getNetworkPointer()));
+
+ assertEquals(1, groupMgr.getGroupSet(net).size());
+ assertEquals(1,
groupMgr.getGroupSet(grNode2.getNetworkPointer()).size());
+ }
@Test
public void testIsLockedVisualProperty() throws Exception {
@@ -384,34 +415,27 @@
}
}
- private CyNode check2xGroupMetadata(final CyNetwork net, final boolean
expanded) {
+ private void check2xGroupMetadata(final CyNetwork net, final CyNode gn,
final boolean expanded) {
+ assertNotNull("The group node is null", gn);
+
// Test 2.x group parsed as network pointer
- CyNode gn = null;
-
if (!expanded) {
- int npCount = 0;
for (CyNode n : net.getNodeList()) {
- if (net.getRow(n,
CyNetwork.HIDDEN_ATTRS).isSet(ReadDataManager.GROUP_STATE_ATTRIBUTE)) {
- gn = n;
- if (++npCount > 1) fail("There should
be only one group node!");
- } else { // The other nodes have no network
pointer!
+ if (net.getRow(n,
CyNetwork.HIDDEN_ATTRS).isSet(GroupUtil.GROUP_STATE_ATTRIBUTE))
+ assertNotNull(n.getNetworkPointer());
+ else // The other nodes have no network pointer!
assertNull(n.getNetworkPointer());
- }
}
} else {
- int npCount = 0;
CyRootNetwork rootNet =
((CySubNetwork)net).getRootNetwork();
for (CyNode n : rootNet.getNodeList()) {
- if (rootNet.getRow(n,
CyNetwork.HIDDEN_ATTRS).isSet(ReadDataManager.GROUP_STATE_ATTRIBUTE)) {
- gn = n;
- if (++npCount > 1) fail("There should
be only one group node!");
- } else { // The other nodes have no network
pointer!
+ if (rootNet.getRow(n,
CyNetwork.HIDDEN_ATTRS).isSet(GroupUtil.GROUP_STATE_ATTRIBUTE))
+ assertNotNull(n.getNetworkPointer());
+ else // The other nodes have no network pointer!
assertNull(n.getNetworkPointer());
- }
}
}
- assertNotNull("The group node cannot be found", gn);
CyNetwork np = gn.getNetworkPointer();
assertNotNull(np);
assertEquals(2, np.getNodeCount());
@@ -423,13 +447,11 @@
// Check external edges metadata (must be added by the reader!)
CyRow nphRow = np.getRow(np, HIDDEN_ATTRS);
- List<Long> extEdgeIds =
nphRow.getList(ReadDataManager.EXTERNAL_EDGE_ATTRIBUTE, Long.class);
+ List<Long> extEdgeIds =
nphRow.getList(GroupUtil.EXTERNAL_EDGE_ATTRIBUTE, Long.class);
assertEquals(1, extEdgeIds.size());
CyRootNetwork rootNet = rootNetworkMgr.getRootNetwork(np);
assertNotNull(rootNet.getEdge(extEdgeIds.get(0)));
-
- return gn;
}
private List<CyNetworkView> getViews(String file) throws Exception {
Added:
core3/impl/trunk/io-impl/impl/src/test/resources/testData/xgmml/nested_groups_283.xgmml
===================================================================
---
core3/impl/trunk/io-impl/impl/src/test/resources/testData/xgmml/nested_groups_283.xgmml
(rev 0)
+++
core3/impl/trunk/io-impl/impl/src/test/resources/testData/xgmml/nested_groups_283.xgmml
2012-09-19 19:11:46 UTC (rev 30384)
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<graph label="Network" xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cy="http://www.cytoscape.org" xmlns="http://www.cs.rpi.edu/XGMML"
directed="1">
+ <att name="documentVersion" value="1.1"/>
+ <att name="networkMetadata">
+ <rdf:RDF>
+ <rdf:Description rdf:about="http://www.cytoscape.org/">
+ <dc:type>Protein-Protein Interaction</dc:type>
+ <dc:description>N/A</dc:description>
+ <dc:identifier>N/A</dc:identifier>
+ <dc:date>2012-09-19 14:23:33</dc:date>
+ <dc:title>Network</dc:title>
+ <dc:source>http://www.cytoscape.org/</dc:source>
+ <dc:format>Cytoscape-XGMML</dc:format>
+ </rdf:Description>
+ </rdf:RDF>
+ </att>
+ <att type="string" name="backgroundColor" value="#ffffff"/>
+ <att type="real" name="GRAPH_VIEW_ZOOM" value="1.0"/>
+ <att type="real" name="GRAPH_VIEW_CENTER_X" value="0.0"/>
+ <att type="real" name="GRAPH_VIEW_CENTER_Y" value="0.0"/>
+ <att type="boolean" name="NODE_SIZE_LOCKED" value="true"/>
+ <node label="node4" id="-5">
+ <att type="string" name="NODE_TYPE" value="DefaultNode"/>
+ <att type="string" name="canonicalName" value="node4"/>
+ <graphics type="ELLIPSE" h="40.0" w="40.0" x="-111.0" y="118.0"
fill="#99ff99" width="2" outline="#009900"
cy:nodeTransparency="0.5882352941176471" cy:nodeLabelFont="SansSerif-0-13"
cy:nodeLabel="node4" cy:borderLineType="solid"/>
+ </node>
+ <node label="node2" id="-3">
+ <att type="string" name="NODE_TYPE" value="DefaultNode"/>
+ <att type="string" name="canonicalName" value="node2"/>
+ <graphics type="ELLIPSE" h="40.0" w="40.0" x="108.0" y="15.0"
fill="#99ff99" width="2" outline="#009900"
cy:nodeTransparency="0.5882352941176471" cy:nodeLabelFont="SansSerif-0-13"
cy:nodeLabel="node2" cy:borderLineType="solid"/>
+ </node>
+ <node label="Meta 2" id="-7">
+ <att type="integer" name="NumChildren" value="2"/>
+ <att type="integer" name="NumDescendents" value="4"/>
+ <att type="boolean" name="__MetanodeAggregationEnabled" value="false"
cy:hidden="true"/>
+ <att type="boolean" name="__groupIsLocal" value="true"/>
+ <att type="integer" name="__groupState" value="2" cy:hidden="true"/>
+ <att type="string" name="__groupViewer" value="metaNode" cy:hidden="true"/>
+ <att type="string" name="canonicalName" value="Meta 2"/>
+ <att type="string" name="node.opacity" value="100.0"/>
+ <att>
+ <graph>
+ <node label="node3" id="-4">
+ <att type="string" name="NODE_TYPE" value="DefaultNode"/>
+ <att type="real" name="__metanodeHintX" value="26.0"
cy:hidden="true"/>
+ <att type="real" name="__metanodeHintY" value="-61.0"
cy:hidden="true"/>
+ <att type="string" name="canonicalName" value="node3"/>
+ </node>
+ <node label="Meta 1" id="-6">
+ <att type="integer" name="NumChildren" value="2"/>
+ <att type="integer" name="NumDescendents" value="2"/>
+ <att type="boolean" name="__MetanodeAggregationEnabled"
value="false" cy:hidden="true"/>
+ <att type="boolean" name="__groupIsLocal" value="true"/>
+ <att type="integer" name="__groupState" value="2" cy:hidden="true"/>
+ <att type="string" name="__groupViewer" value="metaNode"
cy:hidden="true"/>
+ <att type="real" name="__metanodeHintX" value="-25.0"
cy:hidden="true"/>
+ <att type="real" name="__metanodeHintY" value="62.0"
cy:hidden="true"/>
+ <att type="string" name="canonicalName" value="Meta 1"/>
+ <att type="string" name="node.opacity" value="100.0"/>
+ <att>
+ <graph>
+ <node label="node0" id="-1">
+ <att type="string" name="NODE_TYPE" value="DefaultNode"/>
+ <att type="real" name="__metanodeHintX" value="50.0"
cy:hidden="true"/>
+ <att type="real" name="__metanodeHintY" value="0.0"
cy:hidden="true"/>
+ <att type="string" name="canonicalName" value="node0"/>
+ </node>
+ <node label="node1" id="-2">
+ <att type="string" name="NODE_TYPE" value="DefaultNode"/>
+ <att type="real" name="__metanodeHintX" value="-49.0"
cy:hidden="true"/>
+ <att type="real" name="__metanodeHintY" value="0.0"
cy:hidden="true"/>
+ <att type="string" name="canonicalName" value="node1"/>
+ </node>
+ <edge label="node0 (DirectedEdge) node1" source="-1" target="-2">
+ <att type="string" name="canonicalName" value="node0
(DirectedEdge) node1"/>
+ <att type="string" name="interaction" value="DirectedEdge"
cy:editable="false"/>
+ </edge>
+ <edge label="node1 (DirectedEdge) node2" source="-2" target="-3">
+ <att type="string" name="canonicalName" value="node1
(DirectedEdge) node2"/>
+ <att type="string" name="interaction" value="DirectedEdge"
cy:editable="false"/>
+ </edge>
+ <edge label="node0 (DirectedEdge) node3" source="-1" target="-4">
+ <att type="string" name="canonicalName" value="node0
(DirectedEdge) node3"/>
+ <att type="string" name="interaction" value="DirectedEdge"
cy:editable="false"/>
+ </edge>
+ </graph>
+ </att>
+ </node>
+ <edge label="Meta 1 (meta-DirectedEdge) node3" source="-6" target="-4">
+ <att type="boolean" name="__isMetaEdge" value="true"
cy:hidden="true"/>
+ <att type="string" name="canonicalName" value="Meta 1
(meta-DirectedEdge) node3"/>
+ <att type="string" name="interaction" value="meta-DirectedEdge"
cy:editable="false"/>
+ </edge>
+ <edge label="node4 (DirectedEdge) node3" source="-5" target="-4">
+ <att type="string" name="canonicalName" value="node4 (DirectedEdge)
node3"/>
+ <att type="string" name="interaction" value="DirectedEdge"
cy:editable="false"/>
+ </edge>
+ <edge label="node3 (DirectedEdge) node4" source="-4" target="-5">
+ <att type="string" name="canonicalName" value="node3 (DirectedEdge)
node4"/>
+ <att type="string" name="interaction" value="DirectedEdge"
cy:editable="false"/>
+ </edge>
+ <edge label="Meta 1 (meta-DirectedEdge) node2" source="-6" target="-3">
+ <att type="boolean" name="__isMetaEdge" value="true"
cy:hidden="true"/>
+ <att type="string" name="canonicalName" value="Meta 1
(meta-DirectedEdge) node2"/>
+ <att type="string" name="interaction" value="meta-DirectedEdge"
cy:editable="false"/>
+ </edge>
+ </graph>
+ </att>
+ <graphics type="ELLIPSE" h="40.0" w="40.0" x="-86.0" y="-25.0"
fill="#99ff99" width="2" outline="#009900" cy:nodeTransparency="1.0"
cy:nodeLabelFont="SansSerif-0-13" cy:nodeLabel="Meta 2"
cy:borderLineType="solid"/>
+ </node>
+ <edge label="Meta 2 (meta-meta-DirectedEdge) node2" source="-7" target="-3">
+ <att type="boolean" name="__isMetaEdge" value="true" cy:hidden="true"/>
+ <att type="string" name="canonicalName" value="Meta 2
(meta-meta-DirectedEdge) node2"/>
+ <att type="string" name="interaction" value="meta-meta-DirectedEdge"
cy:editable="false"/>
+ <graphics width="2" fill="#333333" cy:sourceArrow="0" cy:targetArrow="0"
cy:sourceArrowColor="#000000" cy:targetArrowColor="#000000"
cy:edgeLabelFont="SanSerif-0-10" cy:edgeLabel="" cy:edgeLineType="SOLID"
cy:curved="STRAIGHT_LINES"/>
+ </edge>
+ <edge label="Meta 2 (meta-DirectedEdge) node4" source="-7" target="-5">
+ <att type="boolean" name="__isMetaEdge" value="true" cy:hidden="true"/>
+ <att type="string" name="canonicalName" value="Meta 2 (meta-DirectedEdge)
node4"/>
+ <att type="string" name="interaction" value="meta-DirectedEdge"
cy:editable="false"/>
+ <graphics width="2" fill="#333333" cy:sourceArrow="0" cy:targetArrow="0"
cy:sourceArrowColor="#000000" cy:targetArrowColor="#000000"
cy:edgeLabelFont="SanSerif-0-10" cy:edgeLabel="" cy:edgeLineType="SOLID"
cy:curved="STRAIGHT_LINES"/>
+ </edge>
+ <edge label="node4 (meta-DirectedEdge) Meta 2" source="-5" target="-7">
+ <att type="boolean" name="__isMetaEdge" value="true" cy:hidden="true"/>
+ <att type="string" name="canonicalName" value="node4 (meta-DirectedEdge)
Meta 2"/>
+ <att type="string" name="interaction" value="meta-DirectedEdge"
cy:editable="false"/>
+ <graphics width="2" fill="#333333" cy:sourceArrow="0" cy:targetArrow="0"
cy:sourceArrowColor="#000000" cy:targetArrowColor="#000000"
cy:edgeLabelFont="SanSerif-0-10" cy:edgeLabel="" cy:edgeLineType="SOLID"
cy:curved="STRAIGHT_LINES"/>
+ </edge>
+</graph>
--
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.