Differences between revisions 5 and 7 (spanning 2 versions)
Revision 5 as of 2006-03-07 00:38:57
Size: 3307
Editor: gamay
Comment:
Revision 7 as of 2006-03-08 01:04:59
Size: 4718
Editor: pix39
Comment:
Deletions are marked like this. Additions are marked like this.
Line 15: Line 15:
 * IlianaAvila - What alternative term could we use from a programmers perspective? If we use {{{subnetwork}}}, how would our interface and method names look? And, are these clear to a novice Cytoscape programmer that is trying to group subnetworks? Here is an attempt to use {{{subnetwork}}}:
  * {{{SubnetworkManager.tagSubnetwork(CyNetwork net, CyNetwork subnet); SubnetworkManager.getTaggedSubnetworks(CyNetwork net);}}}
  * {{{SubnetworkVisualizer}}}: visualize subnetworks (interface)
  * {{{SubnetworkModeler}}}: change the model to represent a subnetwork (interface)
 
Line 16: Line 22:
Line 21: Line 28:
   * IlianaAvila - Done. I revised the API to use these new method names.
Line 25: Line 33:
 * That sounds like a nice feature to allow the group to be a node or not. When you are using a compound graph, the group is always a node (as we require for BioPAX mapping). It would be better if there was a specific method for this type of operation, since it would be common for those users using a compound graph. Also, if the group was a node, then there would have to be a CyNode created in the model, where this would not be the case for a non-node group, which could just be created in the view. However, this may be too complex and we may always want the group to be a CyNode (created in model and view). The model/view separation is still not clear to me - are there some use cases that require a model, but no view (or vice versa)?
  • GaryBader - What is the definition of a group in Cytoscape? Is it just a set? If so, what things can be in the set? Is this correct? "A group is a set of one or more nodes (CyNode) and zero or more edges (CyEdge) that connect nodes in the group. A group can be treated as a node (CyNode) itself by being the source or target of an edge."

I said one or more nodes because I assume it doesn't make sense for a group to have zero nodes - is that true? Maybe there is a case for a group to have zero nodes.

This is different than the hyperedge, which is a set of two or more nodes. The hyperedge cannot contain other edges and cannot be treated as a node itself. (I'm assuming that it doesn't make sense to create a hyperedge with 0 or 1 nodes).

  • IlianaAvila - In the interfaces I created, the word group is always closely tied to the relationship between a subnetwork and its containing network:

    • GroupManager.addGroupToNetwork(network, subnetwork): record the fact that subnetwork is a group in network

    • GroupingStrategy.group(network, subnetwork): depict subnetwork as a group in network

The reason why I don't simply call a group a subnetwork or a network is because the word group suggests that the nodes and edges contained in it are held together by a special relationship that other subnetworks in the containing network don't have. So, the word group could also be seen as an adjective for subnetwork: a grouped subnetwork is a subnetwork that has been deemed to be a special subnetwork (because its nodes and/or edges are related to each other in some special way) in the containing network. Does that make sense? I hope so...

  • MikeSmoot: I understand your point, but I worry that we're conflating the user experience with the programmer experience when deciding these terms. It is reasonable to me that a cytoscape user would want to see dialog boxes or menu items presented in terms of groups. From the user perspective there is something special about a particular subnetwork so it seems reasonable to refer to a group as something different than a subnetwork. However, from a programmers perspective, is the terminology necessary? Is there any distinction that a programmer sees between a subnetwork and a group?

  • IlianaAvila - What alternative term could we use from a programmers perspective? If we use subnetwork, how would our interface and method names look? And, are these clear to a novice Cytoscape programmer that is trying to group subnetworks? Here is an attempt to use subnetwork:

    • SubnetworkManager.tagSubnetwork(CyNetwork net, CyNetwork subnet); SubnetworkManager.getTaggedSubnetworks(CyNetwork net);

    • SubnetworkVisualizer: visualize subnetworks (interface)

    • SubnetworkModeler: change the model to represent a subnetwork (interface)

BR

would the interface make more sense if the methods looked like this?:

  • GroupManager.markSubnetworkAsGroup(network,subnetwork)

  • GroupingStrategy.groupSubnetwork(network, subnetwork)

    • MikeSmoot: Yes! (Assuming that we stick with the grouping terminology (see my note above) and assuming that we really aren't adding new nodes and edges to a network.)

    • IlianaAvila - Done. I revised the API to use these new method names.

BR

  • GaryBader - Can a group be used as a CyNode? Can I create a CyEdge that has a group as a source or target?

  • IlianaAvila - You should be able to. To depict a group as a CyNode you use the COLLAPSING_STRATEGY. Then, there needs to be a way of the user obtaining the CyNode that represents the group. This could be done in a number of ways. One of them could be changing the returned object of the GroupingStrategy.group(network,subnetwork) method from a boolean to an Object that the user should cast to the appropriate type.

  • That sounds like a nice feature to allow the group to be a node or not. When you are using a compound graph, the group is always a node (as we require for BioPAX mapping). It would be better if there was a specific method for this type of operation, since it would be common for those users using a compound graph. Also, if the group was a node, then there would have to be a CyNode created in the model, where this would not be the case for a non-node group, which could just be created in the view. However, this may be too complex and we may always want the group to be a CyNode (created in model and view). The model/view separation is still not clear to me - are there some use cases that require a model, but no view (or vice versa)?

API/CommentSemantics (last edited 2009-02-12 01:03:38 by localhost)

Funding for Cytoscape is provided by a federal grant from the U.S. National Institute of General Medical Sciences (NIGMS) of the Na tional Institutes of Health (NIH) under award number GM070743-01. Corporate funding is provided through a contract from Unilever PLC.

MoinMoin Appliance - Powered by TurnKey Linux