Equation Attributes : … |
Editor(s): Johannes Ruscheinski |
Date: … |
Open for comment: … |
Proposal
Add the ability to Cytoscape to describe attributes as being derived or computed based on expression which may involve references to other attributes.
Background
This capability would seem to be a natural extension in the attribute browser. Especially for numerical-valued attributes it seems obvious that Cytoscape users might want to derive new quantities based on the values of other attributes. A similar argument holds for boolean attributes.
Use Cases
Allows users to easily colour a node based on a threshold value. Example: Given a Double attribute "someValue" and a threshold called "someThreshold" we could create a new boolean attribute called "exceedsThreshold" which would be defined by an equation attribute that is "$(someValue) > someThreshold". Many more complex examples can be easily construed.
Implementation Plan
- Define a syntax for the expressions (Cull this as a subset from some programming language's grammar?)
- Write a parser (LR1 grammar, recursive descent) implementing the syntax and error handling (Pay special attention to easy extension with more built-in functions.)
- Test and debug the stand-alone parser
- Identify the location in the Cytoscape code base for integration and integrate the parser
- Test and debug the new capability within Cytoscape
Project Management
Project Timeline
- Define Syntax (est. 1/2 day to 1 day)
- Implement and test stand-alone parser (3 to 4 days)
- Integrate the parser into the Cytoscape code base (3 to 4 days)
Total time: 6 1/2 to 9 days.
Tasks and Milestones
Outline the major milestones and tasks involved in implementation.
Milestone 1: …
- 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.
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.