## These are wiki comments - leave them in so that people can see them when editing the page ## This template may be useful for documenting use cases ## Developed in response to a hackathon request for formalized, detailed use cases ## to help direct implementation proposals || '''Use Case Name''' : Named List of Genes || || '''For Feature''' : Groups || || '''Editors''': Alex Pico || ## EXAMPLE: ## Use Case Name: Representation of Protein Complex ## For Feature: Grouping Function ## Editors: Mr. Knowitall <> == Summary == ## Provide a one paragraph description of the use case Sometimes you want to be able to annotate a group of genes without being reflected in the view in any way, but rather just assigning a name to the group for reference or maybe selection (and subsequent attribute browsing, moving, new network or for a plugin, etc). == Step-by-Step User Action == ## Provide a step-by-step account of how the user would execute the use case. For example: (1) right click on node, (2) choose "expand" from context menu, (3) new view is created, etc... ==== Manual Selection ==== 1. Select two or more nodes 1. Choose "form named group" from context menu 1. Add the newly named group to panel (Cyto''''''Panel_1: Groups?) 1. Allow selection of group via panel 1. Allow renaming the group and destroying the group ==== Attribute-based Selection ==== 1. Menu option: "Group by attribute" 1. Select Attribute and value (or multiple values, including all values) 1. Add newly formed group(s) to panel (Cyto''''''Panel_1: Groups?) 1. Same as 4 and 5 above == Visual Aides == ## Provide attachments to images to illustrate the use case (screenshots, mock-ups, storyboards, etc) {{attachment:LOTR_groups.jpg}} In this application you can group objects to make future selections easier and to apply functions to all children of the group :) == Requirements for Cytoscape == ## List the components/functions already in Cytoscape that are relevant to the use case and possible implementations (e.g., "current context menus can be used accomplish step 2 above") ## Also list components/functions that are needed in Cytoscape to execute the use case (e.g., "cytoscape needs to allow for multiple views of the same network for this to work") * The current Group API can already perform the create and destroy * Need to add item to context menu for group selection * Need to provide a panel to display the group names and some functionality * Can potentially use the Attribute selection GUI from Ethan's Quick''''''Find (also used in Bubble''''''Router plugin) * Need to support storing named groups in xGMML == Importance == ## Describe whether this use case is critical and how frequently users would come across it. Describe common work flows that might involve the use case (e.g., "this use case comes up regularly, on a weekly basis, whenever we want to analyze our protein superfamily networks"). This one seems low priority to me. I think this function will overlap with other more complex grouping use cases and won't require special attention. IOW, we'll get this functionality for free in the implementation of the other more specific use cases. == Other Examples == ## List other applications or relevant examples outside of Cytoscape that provide some or all of the desired functionality (e.g., "You can do this using the group function in PowerPoint"). * geWorkbench was mentioned at the hackathon: http://magnet.c2b2.columbia.edu/geworkbench.php * Some turn-based strategy games have a similiar function, where you can select a number of characters (troops, tanks, orcs, whatever) and assign them to a group, allowing you to simplify the command structure (e.g., go attack that village). These groups can also be assigned to hotkeys for quick selection, for example. == Comments ==