RFC Name : Cytoscape Projects |
Editor(s): ScooterMorris & SarahKillcoyne |
Date: Oct 23, 2007 |
Status: Draft |
Proposal
Expand the concept of Session and the presentation of networks in the Control Panel to introduce the concept of a Project. Initially, a Project would include nothing more than the information associated with a session, including a limited amount of information about the files that were loaded to create the session. For example, a Project would "remember" that a network (saved as an XGMML file) was created by reading in a SIF file, and associating three node attribute files and two edge attribute files with it. The goal would be data provenance, not to be able to recreate the initial data sets. Moving forward, Projects could include logs (Cytoscape 3.0 logging), user created scripts, workflows, etc. While the Projects panel might list all available projects, only one project would be opened at a time. As a result, a project could replace a Cytoscape Session as the main mechanism for saving state.
Background
It seems pretty clear that our users think of their work in terms of projects. This was apparent in the information we received from the users who were interviewed at ISB in preparation for the Cytoscape 3.0 discussion, and anecdotally from other user communities. In addition, Cytoscape does nothing to help users track their data provenance. Where did these attributes come from? How was this network created? What steps were performed to expand the network? All of these are legitimate questions that Cytoscape provides no means of assisting users to remember.
Use Cases
Provide examples of how the products of this project will be used.
Implementation Plan
There are two major pieces to this implementation and a phased approach is certainly viable in this instance. The general approach to the implementation is to begin by expanding the definition of a session to include some limited data provenance information. Specifically, this would involve including hooks into the network loaders, Cytoscape editor, attribute loaders and the attribute browser editor that would update a network attribute that lists the sources that make up the network.
The second major piece is to provide a visual representation of the data provenance in the project panel (which would replace the network panel). The vision is to have a JTree-style interface where underneath the network itself, you would have the views on that network, as well as the information about what data made up that network. The data fields would provide limited information (date, time, path?), but would still serve as a useful reminder of the elements of the network. Future enhancements might include adding a network-specific log which would function as a sort of laboratory notebook. In additional to potentially recording the execution and results of Cytoscape actions, it could also take user-generated comments. Beyond that, it might be reasonable to associate scripts and workflows with specific networks.
Project Management
Project Timeline
Provide a timeline for implementation. Insert a graphic if you can. Try this free online tool for making project timelines -> [http://www.helpuplan.com/index.asp Help-u-Plan] (create a new chart; modify; right-click to save gif; then attach to this page)
Tasks and Milestones
Outline the major milestones and tasks involved in implementation.
Milestone 1: Backend Design
- Task 1:
- Task 2: ...
Milestone 2: …
Project Dependencies
Outline and projects that depend on this project, link to relevant RFC's and note at what point dependent projects could be started.
Related RFCs
Link to other related RFCs
Issues
List any issues, conflict, or dependencies raised by this proposal
Comments
Add comment here…
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.