|| '''RFC Name''' : Web Front End (proof of principle)|| '''Editor(s)''': Sarah Killcoyne, Allan Kuchinsky || '''Date''': October 24, 2007 ||'''Status''': draft || <> == Proposal == Cytoscape offers a lot of functionality for a desktop user, but more and more scientific work and collaboration is done via the web. Many popular applications also offer both a web and desktop version.Biologists find the web browser user interface an intuitive way to get things done. Since they are already familiar with the web user interface, there is less of a learning curve that the user needs to climb before being able to use the application. In order to allow Cytoscape users to use the web for their work, a basic web front end can be added to Cytoscape after relayering of the core has been finished to provide simple access to the model and to parts of the core. === Background === This is a proof of principle project that will be done after the relayering of Cytoscape ([[CytoscapeLayerRefactor| RFC 46]]). Some aspects of the design of the project, e.g. learning about and deciding upon a choice of alternative web-based graphical rendering packages (e.g. AJAX, GWT, Flash), can be done concurrently with the relayering of Cytoscape. == Use Cases == * Institution wide server version of Cytoscape, encouraging wider usage * Facilitate collaboration through simple sharing of networks and data * Basic network functions available to new users * Simplify collaborator usage, such as http://t1dbase.org or http://www.reactome.org Scenario: collaboration via simple sharing of networks and data. You and I are molecular biologists investigating cardiovascular disease. We work in different labs in different institutions. I have been using Cytoscape for two years, as a standalone application. You have never heard of Cytoscape and generally try to avoid installing and learning complicated new software. You use the web daily for literature searches, email. We both use microarrays and statistical data analysis programs. I have done some time course studies using microarrays, have built a biological network via literature search using a list of most differentially regulated genes in the microarray data, and have identified a small number of genes which appear to be acting as switches for regions of activity -- they are highly connected in the network and tend to be up-regulated when their neighbors in the network are down-regulated, and vice versa. This hypothesis is consistent with what I observe when I overlay my data on the network. When my putative targets are up-regulated, their neighbors are down-regulated, and vice versa. I want to corroborate my hypothesis by sending my biological network with you and having you perform the same kinds of data overlay using microarray data that you have generated independently. I email you a URL, which, when you traverse it, downloads my Cytoscape network and displays it in your web browser. You select a microarray data file in your Finder window and drag/drop it onto the web browser page. The browser client reads in the file, parses it, and presents a spreadsheet (or heatmap) view of the data. You step through the spreadsheet (or heatmap), selecting a column at a time and observing how the node colors change. You notice a similar pattern ''except'' in the case of one group of samples which have been drawn from patients who had been treated with a certain drug. You feel that this is an anomaly worth further study and tell me so in your email response to me. You also take a closer look at one gene which you think is particularly interesting. You perform a control-click mouse gesture and see a context menu that lists the names of a number of database resources. You select one of the menu items and a browser window is brought up with detailed information about the gene of interest. In the meantime, I run another literature search, this time adding the name of the drug into the search context, which generates a new network, which has noticeable differences from the first one. I overlay my microarray data on this new network and we do another couple of iterations of data visualization and network inference in this manner. == Implementation Plan == The view and application layers of Cytoscape can be swapped out to provide a web front end through use of web technologies including Tomcat, SVG and/or the [[http://code.google.com/webtoolkit/|Google web toolkit]]. The scenario above requires the following functionality in Cytoscape browser client: * import a network by retrieving it from a server, given a URL * perform some simple graph layout algorithm to generate node coordinate positions * display the network -- read only, no editing needed. We also assume relatively small networks initially. * lookup detailed information about nodes of interest -- via linkout or equivalent technology. * import attributes into the browser client interest and map the attributes to nodes in the network. * overlay data using a fixed visual style with fixed mappings and a simple spreadsheet-like interface. Selecting anywhere in a column of the spreadsheet causes the nodes in the network to light up according to their data values in the selected column. A first implementation of this front end would be limited to the minimum software required to support the functionality of the scenario above. Additional functionality could be phased in to support capabilities such as: * user definition of visual properties using the vizmapper * simple filtering * editing networks * panning/zooming * small subset of layout algorithms * support for decent rendering speed on larger networks * analysis and visualization plugins available as web services. These would probably provide their own browser-based UIs, but Cytoscape Web front end could provide some common services, such as menus. The goal is '''not''' to duplicate the full functionality of Cytoscape in a web front end, but rather to provide a subset of Cytoscape that is sufficient to support a ''conventional'' workflow for a non-computer-oriented life user. == Project Management == === Project Timeline === It is estimated that a basic implementation could be provided in 6-8 weeks after relayering has been done. After a prototype has been worked out a release version could be done in 12-16 weeks time. An actual timeline can be worked when the relayering gets to a point that the correct hooks are available for Views/Applications to be added. === Tasks and Milestones === 1. Prototype web front end (est 6-8 weeks) 1. Write new RFC describing release version (est 1 week) 1. Release version (est 12-16 weeks) == Related RFCs == [[CytoscapeLayerRefactor| RFC 46 - Cytoscape Refactor]] == Issues == 1. Are we assuming that this is an infrequent user? 1. Are we assuming that this user always works in collaboration with a user who has full version of Cytoscape? 1. What are the further implications of 1 and 2 above? == 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.'''