Notes from Cytoscape Hackathon

Observations on Cytoscape Usability (Melissa)

Motivations: assess Cytoscape usability from biologists perspective, address stumbling blocks in the UI, assess biologists respeonse to vizmapper and filters.

Interviews with 9 users, conducted in workspace, presented in context of users' data and analyses, observed how users worked with software and explore new functionality.

Ran a brainstorming/prototyping workshop with users from usability studies, 2 groups, each group selected one topic to prototype with screen-dumps, post-its, etc. and were videotaped.

Issues raised were:


PDF-format manual too monolithic, HTML preferred

Online tutorials not used -- they want tutorials oriented around biological tasks, not software functionality

Data Import and Export

exporting data from Excel into Cytoscape is a big bottleneck.

PSI-MI now has an excel template that we could use when importing protein-protein interactions.

input file requirements not clearly understood

why don't users look at the sample data?

Connectivity to External Databases

all users would benefit from improved connectivity for network and attribute data. Benefits: user doesn't have to search web for data, format translation performed automatically. Suggestion: provide generalized database wrappers.

GenMapp to provide 'back-page' functionality to multiple databases for Cytoscape. Much of this can come from Ensemble, which has become very efficient for data base provision. GenMAPP would provide a Gene database.

General User Interface Issues

lots of confusion with the menu system. typically they scan the menus from right to left to relocate menu options. Suggestion: move more things to right-click menu and simplify global menu.

not enough feedback in operations like selection or filtering; in import operations, make clear when the import is done.

some ambiguity, can close a task bar and an import will still work.

lots of menu items that don't do anything unless some conditions are met. Suggestions: disable menu items when input conditions are not met. Would want a library of tools that handles enabling/disabling of menu items.

Vizmapper intimidates new users

"Calculators" and "Map attributes" reflect programmer thi;nking, not user thinging. Suggestion: provide direct controsl tying attribute values to visual properties.

"Define", "Delete", "Duplicate" visual style scares users


Everybody wants them but no one -- not one -- ahve been suggessful with them. Incremental laytering of filters (a la topological filter) natural for Computer types, but not for biologis.

Search/filtering are similar. Cytoscape design should reflect tis.

Graph Layout

Every single user was comfortable with graph layout est

Unresolved use case: how to represent a conditional edge -- advanced user studying closely-related networks, certain edges exist in only some experiments. Some sort of visual filter might be useful. Or use some gradation via translucency.

Plugin architecture

users not aware of plugins: suggestion: incorporate some plugin documentation into manual. Or provide something along the lines of "eclipse update".

users not comfortable installing JAR files. Suggestion: provide template install scripots.

users find the separation of "core" and "plugin" strange. It's all Cytoscape. Suggestion: break the convention that plugins use plugin menu. Need some structuring of plugins. Perhaps another look at menu items to see if all types of plugins can be handled by a small set of menu items.

Suggestion: have a plugin management system that maintains information about the plugin and handles loading of plugins.

Suggestion: use the term "Extension" rather than "plugin". Mimic foxfire's handling of plugins. Have a "search for new features" capability.

Suggestion: provide feedback about what plugins (and versions of them) are loaded.

Advanced User workarounds

For one user who wanted to view conditional edges, he: 1. used Cytoscape to generate GML, hen used script to construct PDB file from GML, the cmpared PDB files with ta molecular modeling viewer.

Another user had plugin that specified node by name, node is fetched from a larger network, with right-click menu user can extend network with first neighbors. Node border indicates if there are any neighbors not shown. Use edge typoe to reference publication documenting interactions. Visual properties are assigned using edge classes.

users choosing not to update their Cytoscape installation

many users at ISB still run Cytoscape 1.X

why? key plugins no longer compatible with core. Changes to input file specs. Other changes to key concepts, not always obvious.

Brainstorming/Prototyping workshop

30 minutes of open brainstorming, followed by construction with screen shots, markers, post-it notes.

include users that are already familiar with the process.

main categories: filtering/selection/attributes, data import/export/management, installation and architecture, graph layout, combining multiple networks and multiple heterogeneous networks.

brainstorming ideas: dynamic filtering, global network annotation, integration w/ public dbs, multiple heterogeneous networks, multi-level analysis (e.g. motifs/domains in the proteins of the network).

multi-level network (network, protein complex, protein, domain, peptide, GO term). Nodes replaced by corresponding domains. Similar domains merged into one node.


ideas are simple but not communicated clearly

simplify the process of improt

simplify visual property management, even if it means losing some flexibility

integrate plugins more closely with the core.

2 - Foundation Architecture (GINY Refactoring) - Mike Smoot


  1. However, type is an attribute and this can be changed by the user, which is not good for the purpose of computing edge identifiers.
    • Solution, action item: make the edge type attribute immutable
  2. Edge name is annoying to create in edge attribute files i.e. "source (edge type) target" - this is solvable by import code (which can support other file formats for edge attributes)
  3. There is a create identifier method in CyNode and CyEdge classes, but these can only be used once - do we need these methods? This should be refactored so that there is a clear constructor like Cytoscape.getCyEdge.

Action item: getCyEdge needs to be refactored - it has a for loop, which makes it slow. Maybe a hashmap would be better?

        public static CyEdge getCyEdge(Node source, Node target, String attribute, Object attribute_value, boolean create, boolean directed)

2a - Network specific (local) node and edge attributes - Mike Smoot

2b - Memory management- Mike Smoot

2c - Plugin Architecture- Mike Smoot

Further discussion of overall package architecture. Mike showed a Cytoscape representation of the dependencies among packages (made using jdepend). We should go through the libraries that we use to see how much we are using them. If we are only using a small part of a library, we may want to reimplement that part and save on using the whole library.

3 - BioDataServer


4 - Event handling - Mike Creech

5 - Integration of Hyperedges and Groups APIs into the core


Shared version of groups will be identical networks; if changes are desired in one copy, the the group is made into a copy and they are no longer shared. The shared implementation will be easier to implement with copy functionality added on top.

==== Brainstorm Session == Update use cases and design phase on GroupAPI page November 15th Due Date!

VizMapper discussion

Annotation discussion

Layout discussion

CytoscapeRetreat2006/Hackathon/HackathonNotes (last edited 2009-02-12 01:03:44 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