Differences between revisions 1 and 8 (spanning 7 versions)
Revision 1 as of 2006-03-03 16:46:45
Size: 756
Editor: GaryBader
Comment:
Revision 8 as of 2009-02-12 01:03:38
Size: 4718
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
* 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."  * 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."
Line 6: Line 6:

 * 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)?
  • 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)


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.


  • 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