HyperEdge Linking Strategies
This document considers the behavior of linking one HyperEdge to another (one of the Nodes in one HyperEdge is the ConnectorNode of another HyperEdge).
The following discussion assumes three CyNetworks net1, net2, and net3. net1 contains HyperEdge he1. net2 contains HyperEdge he2. and net3 contains he1 and he2.
Here are three possible approaches to linking HyperEdges:
Restrict connections to one CyNetwork In this scheme, HyperEdges can only be connected if they exist in one CyNetwork. Attempting to connect HyperEdges that exist in multiple or different Networks would throw an exception. Also, once linked no attempt can be made to add either HyperEdge to another CyNetwork. In our example, this approach would throw an exception. Instead, he1 and he2 would have to only exist in net3. If you want connected HyperEdges to exist in multiple CyNetworks, the HyperEdges would have to be copied. This is a "wait and see" strategy since it follows expected behavior within one CyNetwork and should be backwards compatible with any future multi-network approach that is decided. For the Cytoscape 2.5 release, we have initially chosen this approach.
- Tight sharing of connections
In this approach, once two HyperEdges are connected, they both exist in the same CyNetworks. In our example, this means that after connection, he1 and he2 would exist in net1, net2, and net3. This approach is the most consistent with regular sharing of HyperEdges, but may not be intuitively obvious--HyperEdges will just spring into being within other CyNetworks. Another issue is what should happen when an attempt is made to remove one of the HyperEdges from an existing CyNetwork--should the other attached HyperEdge also be removed (e.g., if we remove he1 from net1, should he2 be removed from net1)?
- Always copy when connecting
In this approach, connected HyperEdges are never shared. So, in our example, he1 and he2 are copied and connected within he3. Thus, there would be four HyperEdges--he1 in net1, he2 in net2, he1p and he2p in net3 (he1 and he2 would be removed from net3). Care must be taken to copy all "regular" CyEdges that connected to the he1 and he2 ConnectorNode within he3. These would be copied to the corresponding he1p and he2p ConnectorNodes.