RFC Name : ... |
Editor(s): ... |
<<TableOfContents: execution failed [Argument "maxdepth" must be an integer value, not "[2]"] (see also the log)>>
About this document
This is an official Request for Comment (RFC) for Filters UI Redesign. For details on RFCs in general, check out the Wikipedia Entry: Request for Comments (RFCs)
Description: Cytoscape is able to visualize very large network with thousands of nodes and edges. Filter, a Cytoscape plugin, is a powerful selection tool, which is able to do selection based on complex criterion. However, the feedback from Biologist is that “it is useful, but hard to use”. For example, (1) filters are saved globally only, not in session; (2) Filter names are generated automatically, which is not meaningful to human; (3) the text field does not have Google suggestion/ not dynamic, as QuickFind does. Therefore, it is necessary to redesign the UI of the filter and make it more user friendly.
Status
Open for public comment
How to Comment
To view/add comments, click on any of 'Comment' links below. By adding your ideas to the Wiki directly, we can more easily organize everyone's ideas, and keep clear records. Be sure to include today's date and your name for each comment. Here is an example to get things started: /Comment.
Try to keep your comments as concrete and constructive as possible. For example, if you find a part of the RFC makes no sense, please say so, but don't stop there. Take the extra step and propose alternatives.
Proposal
The goal of this RFC is to provide a new design of filter UI, which use familiar GUI components to represent each filter. The new design should have the following characteristics,
1. filter panel will be placed in CytoPanel_3
2. filter name will be given by user
3. user has the option to save the filter in session or globally
4. Single Filter type will be determined automatically by the data type of the attribute, string type- -> text field, numeric type (including Boolean type) --> RangeSlider bar.
5. Composite filter will be consist of a list of single filters with logical “AND” relationship
6. Suggestions will be added for each text field as in QuickFind
Biological Questions / Use Cases
Scenario: A user already imported network and attributes into Cytoscape, he/she want to select a set of nodes whose attribute “Unique identifier” has pattern “YL*” and its attribute “gal1RGexp” < 0.05.
1. Click the filter icon on the tool bar
2. CytoPanel_3 shows up on the right side of the Cytoscape main window. TabbedPane “Advanced selection” is selected.
3. Click the option icon, a pulldown menu shows “create, delete, rename, copy”. select “create”
4. Filter creation dialog shows up. Type in “My first filter” and click OK button.
5. A combobox for attribute selection show up, choose “Unique Identifier” and click add button
6. A text field with label “Unique identifier” show up.
7. Choose “gal1RGexp” at the attribute combobox and click the “Add” button
8. A rangeSliderBar shows up. Define the range of the value by moving the bars.
9. When user type in the text on the textfield and move the slider bar, the selection on the canvas is changing accordingly.
Design
1. The initial state
2. The composite filter
Note:
(1) The Advanced panel holds the default settings, it is collapsed by default.
(2) Suggestion will be added to the textfield as QuickFind does
(3) The JSliderBar will be replaced by JRangeSliderBar.
(4). Boolean meta – multiple sliders, logical “and” only
(5). The “Apply” button will show up for large network only (>1000 nodes)
3. String filter/Numeric filer/ Interaction filter
They are all special cases of the composite filter, i.e. only one attribute is selected.
4. Alternative design
Deferred Items
• Topology filter -- will use local attribute (network specific)
• Complex Boolean operation (how to handle?)
Open Issues
Expected growth and plan for growth
Will replace both RFilter and QuickFind
Implementation Plan
Filters/select/QuickFind should work together, try not to duplicate the code
1. Combine RFilter and QuickFind plugins, rename the package to “cytoscape.filters”. (Note: “filters” will replace both RFilter and QuickFind in the future, but just RFilter for now. QuickFind should be included, because RangeSliderBar and indexing within QuickFind will be reused.)
2. Make filter UI (cytoscape.filters.view.FilterMainPanel.java) based on the mockup screens in the design and call the API stubs
3. Define a set of filter API, including the following, a. cytoscape.filters.Filter/StringFilter/NumericFilter/BooleanFilter/TopologyFilter b. cytoscape.filters.util.getFilterListFromProp(pLocation) pLocation = “session” or “global” c. cytoscape.filters.util.saveFilterList(pFilterList, pLocation) d. cytoscape.filters.util.applyFilter(pFilter) Filter = StringFilter || NumericFilter || CompositeFilter || topologyFilter e. cytoscape.filters.util.create/delete/copy/renameFilter(theFilter)
4. Implement the filter APIs based on the existing functions in RFilter plugin
5. Add dynamic suggestions to textfields in the “FilterMainPanel.java” as in QuickFind
6. Define the filter plugin following the new plugin development guideline, to enable automatic registration and automatic updating. Replace the existing filter.
7. (Optional –do it only if time permits) implement topology filter as an artificial attribute of the network (generate dynamicly), peer to other network attributes. UI will be the same as RangeBar in numeric filter
8. Make screen shots and manual
Comments
From: Guy Warner, Yeyejide Adeleye & Andrew Garrow, Unilever 05/11/2007
Just a few comments from a User's point of view...
This looks like a great improvement on the current approach to using filters. Please see below for our comments as requested:
Proposal 3. Saving filter in session or globally:
Would it also be possible to export filters (assuming we can't already do it) in order to transfer between users or when new versions of Cytoscape are release & installed.
Proposal 5. Composite filters using AND relationship:
What if there is a Use Case in which one wishes to select genes with high or low expression (e.g. >2 or <0.5 log ratio) but nothing in between. How would this be done? Is it possible to have "invert selection" on the RangeSlider? Another Use Case could be if one wanted everything that did not have the pattern "YL" in the unique identifier - would it be possible to have "invert selection" on the Text Fields too?
- What if there is a Use Case in which one wishes to select more than one node (e.g. IL6, MHC and TNFa). Can the same attribute be used more than once in the Filter Definition or would a complex regular expression be used in the text field instead (e.g. "IL6" OR "MHC" OR "TNFa").
- Is it possible to have a "use/don't use attribute for filtering". This would allow interactive selection, de-selection of network objects allowing the user to more easily see them in the network?
Proposal 6: Suggestions added as in QuickFind:
Does this mean that all attributes will be indexed automatically? If so, what will the effects be on loading very large graphs (>20k nodes) with many attributes (>20 per node, >10 per edge)?
Use Cases 2: Tabbed pane "Advanced Selection":
- The name of this tab is a little confusing. There are no other tabs in the window so could it just be called "Filters" or "Configure Filters".
Use Cases 5: A ComboBox for attribute selection shows up:
- Does this also include the edge attributes? How does the UI distinguish between edge and node attributes?
Design 2.1: Composite Filter, Advanced panel:
- This is a little confusing. What is the effect of selecting Node/Edge for "Select" and Source/Target for "Interaction"?
Design 3: String/Numeric/Interaction filter
- What's an Interaction filter?
Design 4: Alternative Design
- Looks OK but the feedback from the team here is that we prefer the first option with the drop down list and the "Add" Button.
Expected growth and plan for growth: Will replace both RFilter and QuickFind
The QuickFind search function in the toolbar is a useful feature and it would be a shame to have to go through the filter dialogue in order to access it. Could it remain in the Toolbar?
From Peng-Liang Wang, 05/11/2007 -
Thank you for your comments, here are the answers to some of the questions,
Yes, it’s possible to have “Import/Export Filters” menu items. They can be either in File menu pulldown or in the Option menu of the FilterMainPanel.
- Boolean operation. Right now we are focusing on the “AND” relationship between atomic filters only. We still haven’t decided how to design GUI for complex Boolean operations. We will do it in the future version for “AND”, “OR”, “NOT”, “XOR”, but not for 2.5.
- Indexing will happen only if the attribute is selected.
- Will change “Advanced Selection” to “Filters”
- Attributes in combobox will have a prefix “node” or “edge”
- Composite, advanced panel. The concepts and terms are from the existing filters. They are confusing. But we don’t have better terms yet. The effect of “select Node/Edge” will be either Node or Edge will be selected based on the selection criteria. If “Source” is selected and “Target” not selected, then only “Source” nodes will be selected from the direct graph.
- Interaction filter is “Select either Source or target” from direct graph. The concept is from the existing filters.
- We will implement option 1, thanks.
Expected growth. “Combine RFilter and QuickFind”, means, we will combine the two Jar files, the UI won’t be affected. The QuickFind will still be there where it is. The reason we’d like to combine them is because RFilter and QuickFind share the code, such as GUI widget SliderRanger and indexing classes. By combining them together, we only need maintain one copy of the source code.