RFC Name : Excentric Labeling in Cytoscape |
Editor(s): Allan Kuchinsky, Ethan Cerami |
Status: Open to comment |
<<TableOfContents: execution failed [Argument "maxdepth" must be an integer value, not "[2]"] (see also the log)>>
Proposal
This is an RFC to create a Cytoscape plugin that will support "Excentric Labeling".
First off, what exactly is "Excentric Labeling"?
- "Excentric labeling is a dynamic technique of neighborhood labeling for data visualization. When the cursor stays more than one second over an area where objects are available, all labels in the neighborhood of the cursor are shown without overlap, and aligned to facilitate rapid reading. A circle centered on the position of the cursor defines the neighborhood or focus region. A line connects each label to the corresponding object."[1]
Here is an example, taken from [1]:
Background
This RFC is the result of Allan Kuchinsky's initial exploration / evaluation of the InfoVis_Toolkit. As part of his evaluation, Allan built several prototypes, including one which demonstrates the excentric label features provided by InfoVis. There is a movie of the prototype available on the InfoVis_Toolkit page.
Status of Code
The plugin is currently available as a prototype, and is available in Subversion:
http://chianti.ucsd.edu/svn/csplugins/trunk/agilent/kuchinsky/ExcentricLabelsPlugin/
Biological Questions / Use Cases
Large networks and pathways can be difficult to interpret and navigate because of the difficulty in identifying individual nodes. QuickFind helps end users quickly find nodes of interest, but does not help users identify neighboring nodes of interest. Excentric labeling provides a dynamic method of quickly identifying nodes within a neighborhood, and will help end users interpret and navigate biological networks and pathways.
Feature List
The following is a list of feature questions, which we should discuss:
- How will users activate/de-activate the plugin?
AJK: Since the functionality is related to QuickFind and Filters, should there perhaps be a button on the Toolbar that, when clicked, results in a control panel being brought up on West CytoPanel. Options on the control panel would include on/off, radius, max labels.
- Should we make this a core plugin or a "regular" plugin?
AJK: I'm leaning towards a 'regular' plugin in that it is an advanced user interface feature that is not for everybody, particularly if it impacted performance.
[IMPLEMENTED] Do we want to enable interactive setting of excentric label parameters, e.g. the "lens" size and the maximum number of labels shown? Seems like a good idea, but fewer options might keep the feature much more intuitive.
AJK: as an information visualization tool, its controls should be very accessible to the end user. Every time I've used the tool so far, I've ended up tinkering with the radius and max labels. I think these are values the end users will want to be able to manipulate interactively.
[IMPLEMENTED] Do we want to enable interactive setting of label content? For example, a pull-down menu, where a user can choose which attribute is shown within the label.
AJK: Yes, on the control panel.
- Should we provide an mechanism whereby each graph reader can register a default attribute for label content? For example, the BioPAX graph reader would probably want to use biopax.node_label as the default.
[IMPLEMENTED] What should we do about really long labels? Truncate them.
- Should we provide support for multi-line labels? Or, HTML within the labels, so that we can provide node "summaries"?
AJK: I'd opt for HTML within the labels.
- Can we integrate with the vizmapper? For example, if you roll-over a red node, should the label border also be red?
Technical Issues
The following is a list of issues / limitations of the current prototype plugin. These will need to be addressed:
[RESOLVED] It has been difficult to get the endpoints of the lines emanating from the excentric labels to coincide exactly with the centerpoints of CyNodes that they correspond to. This is due to limitations of the Cytoscape renderer. There are methods for mapping a point in CytoscapeDesktop coordinates to the corresponding position in CyNetwork coordinates, but no inverse methods for mapping a point in CyNetwork coordinates back to CytoscapeDesktop. Allan has attempted to build such methods, without success. One source of difficulty is that the mapping of desktop to network coordinates is destructive of the original transforms.
My past lack of success may have been do to my shallow understanding of the Renderer code. Having studied this code with the Renderer stud group, I think that I may be able to user AffineTransforms to accomplish this mapping from CyNetwork to desktop coordinates.
[RESOLVED] There is a flickering effect when the density of the labels in an area is over a certain amount. It's possible that the labels are overwriting each other on the display.
[POSSIBLY RESOLVED; REQUIRES FURTHER TESTING] Cytoscape slows appreciably when the excentric labels are activated. This may likely be due to faulty logic in the prototype code itself, possibly the unintentional introduction of tight loops. Some profiling is needed to better characterize the problem.
It's also quite possible that the InfoVis toolkit may be the source of the performance problem. I ran the test examples provided by the author and observed that the CPU utilization of the System went way up when excentric labels were enabled.
- Code currently only works with exactly one network. We need to be able to handle multiple networks.
- Code currently does not function properly when the viewport is resized.
I think this is a straightforward fix and we could draw from some of the BubbleRouter code.
Is the InfoVis jar file big? If so, could we extract only those classes we need for the Excentric label feature?
References
[1] Jean-Daniel Fekete and Catherine Plaisant, Excentric Labeling: Dynamic Neighborhood Labeling for Data Visualization, HCIL Technical Report 99-09 (December 1998); http://www.cs.umd.edu/hcil CHI’99 Pittsburgh, PA, USA, May 15-20, 1999, 512-519.
Comments
How to Comment
Edit the page and add your comments under the provided header. 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. 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.
Add your comments below...