[BioC] proposed: a bridge between R and Cytoscape

Paul Shannon pshannon at systemsbiology.org
Mon Jun 21 23:21:43 CEST 2010

Many years ago, a couple of us wrote the first version of Cytoscape.  That project has subsequently, in the hands of others, developed into a fairly popular bioinformatics network exploration tool, with a variety of analytical and layout plugins.

I, myself, have spent most of the intervening years analyzing data with R and Bioconductor, doing network visualization with an ad hoc, home-grown rJava & RMI connection I ginned up to an old version of cytoscape.

I propose, now, to redo that, probably using sockets (a la the IGV/R bridge) from R, connecting to, and controlling Cytoscape 2.7 via a new plugin.

I propose to provide a 'little language' in a bioconductor package, which allows graphs (nodes, edges, and arbitrary attributes) to be passed back and forth; to be laid out; rendered; animated (for example, with time course experimental data); along with some simple manipulations.  My little language is excerpted below.

The Cytoscape community has expressed some enthusiasm for this idea, and offered some assistance.  I hope to find similar interest (and maybe occasional support) from the Bioc and general R communities as well.

If you have any comments or suggestions on this idea, I'd love to hear them.  I want to do this in such a way that it will be useful to lots of people.

 - Paul Shannon
   Institute for Systems Biology

--- the existing R/cytoscape little language

send (graph)
get ()        # current subnetwork displayed in Cytoscape
select (node.names) 
selectFirstNeighbors ()
clear ()     # clears all current selections 
invert ()    # inverts the current selection 
hide ()      # hides selected nodes 
unhide ()    # reveals everything hidden 
deleteSelection ()
destroy ()   # deletes the current graph 
layout ()    # asks that the current layout be applied;  actual 
write.gml (filename)  # save current graph to file 
render ()    # applies all visual mapping ('vizmap') rules, see below 

--- vizmap rules:  specify node and edge rendering, in which the specified attribute controls visual appearance 

nodeLabel (graph, nodeAttributeName) 
nodeFontSize (newSize) 
nodeShape (graph, nodeAttributeName, keyValuePairs) 
defaultNodeShape (graph, shape) 
defaultNodeSize (graph, size) 
nodeSize (graph, nodeAttributeName, keyValuePairs) 
nodeColor (graph, nodeAttributeName, keyValuePairs) 
nodeColorDiscrete (graph, nodeAttributeName, keyValuePairs) 
defaultNodeColor (graph, color) 
nodeBorderStyle (graph, nodeAttributeName, keyValuePairs) 
defaultNodeBorderStyle (graph, style) 
nodeBorderColor (graph, nodeAttributeName, keyValuePairs) 
defaultNodeBorderColor (graph, color) 
edgeColor (graph, edgeAttributeName, keyValuePairs) 
edgeColorDiscrete (graph, edgeAttributeName, keyValuePairs) 
defaultEdgeColor (graph, color) 
edgeStyle (graph, edgeAttributeName, keyValuePairs) 
defaultEdgeStyle (graph, style) 
targetArrow (graph, edgeAttributeName, keyValuePairs) 
defaultTargetArrow (graph, arrow) 
sourceArrow (graph, edgeAttributeName, keyValuePairs) 
defaultSourceArrow (graph, arrow) 

More information about the Bioconductor mailing list