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.


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.


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.


1. The initial state

2. The composite filter


(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


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:

Proposal 5. Composite filters using AND relationship:

Proposal 6: Suggestions added as in QuickFind:

Use Cases 2: Tabbed pane "Advanced Selection":

Use Cases 5: A ComboBox for attribute selection shows up:

Design 2.1: Composite Filter, Advanced panel:

Design 3: String/Numeric/Interaction filter

Design 4: Alternative Design

Expected growth and plan for growth: Will replace both RFilter and QuickFind

From Peng-Liang Wang, 05/11/2007 -

Thank you for your comments, here are the answers to some of the questions,

  1. 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.

  2. 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.
  3. Indexing will happen only if the attribute is selected.
  4. Will change “Advanced Selection” to “Filters”
  5. Attributes in combobox will have a prefix “node” or “edge”
  6. 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.
  7. Interaction filter is “Select either Source or target” from direct graph. The concept is from the existing filters.
  8. We will implement option 1, thanks.
  9. 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.

Filters_UI_Redesign (last edited 2009-02-12 01:04:01 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