Differences between revisions 44 and 67 (spanning 23 versions)
Revision 44 as of 2005-10-04 19:45:22
Size: 2898
Editor: mskresolve-b
Comment: Reformatting page
Revision 67 as of 2009-02-12 01:04:12
Size: 4163
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
== Cytoscape RFC #1: Replacing Graph Obj Attributes == <<TableOfContents([2])>>
Line 5: Line 5:
This is an official Request for Comment (RFC) for replacing {{{GraphObjAttributes}}}. === About this Document ===

This is an official Request for Comment (RFC) for replacing {{{GraphObjAttributes}}}. RFCs represent one possible mechanism for soliciting feedback for core features / refactoring. For details on RFCs in general, check out the [[http://www.answers.com/main/ntquery?method=4&dsid=2222&dekey=Request+for+Comments&gwp=8&curtab=2222_1&linktext=Request%20for%20Comments|Wikipedia Entry: Request for Comments (RFCs)]]
Line 9: Line 11:
9/30/2005, Version 0.1 of the proposal is below. This represents Ethan's first stab at creating a new API. '''On 10/13/2005, the Cytoscape Developers group unanimously voted to accept {{{CyAttributes}}} into the Cytoscape core. Work on implementation has begun, and the RFC is now officially __closed to public comment__. You can still add comments, but we can't guarantee that those comments will be accepted into the API until our next Cytoscape release.'''
Line 11: Line 13:
=== How to Comment: === === How to Comment ===
Line 13: Line 15:
To view/add comments, click on any of 'Comment' links below. 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. Here is an example to get things started: ["/RFC1 Comment Name"]. To view/add comments, click on any of 'Comment' links below. 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. Here is an example to get things started: [[/RFC1_Comment_Name]].
Line 17: Line 19:
=== General Notes: === === Proposed API ===
Line 19: Line 21:
  * I propose that the interface be called {{{AttributeData}}}, rather than {{{CytoscapeData}}}. I think this is more descriptive, and besides, not all our classes have to have the word Cytoscape in it. ["/RFC1 Comment Name"]   * Version 0.2 of {{{CyAttributes}}} is now checked in CVS at: src/cytoscape/data/
  * [[http://cbio.mskcc.org/~cerami/cyto/docs/cytoscape/data/CyAttributes.html|View Proposed JavaDocs]]
Line 21: Line 24:
  * We provide several overloaded version of setAttribute, one for each basic data type, e.g. {{{setAttribute(String id, String attributeName, double value)}}}. We also provide several varients of getAttribute, e.g. {{{Double getDoubleAttribute(String id, String attributeName)}}}. ["/RFC1 Comment Getters Setters"] === General Notes ===
Line 23: Line 26:
  * {{{AttributeData}}} provides support for 'simple' lists. By simple, I mean that each list can only contain Objects of type: Boolean, Integer, Double and String, and each item must be of the same data type. {{{AttributeData}}} enforces this requirement explicitly. See proposed API below. ["/RFC1 Comment Lists"] The following represents Version 0.2 notes, as agreed by Nerius, Iliana and Ethan:
Line 25: Line 28:
  * {{{AttributeData}}} provides support for 'simple' maps. By simple, I mean that all keys in the map must be of type String, and all values must be of the same type, and must be one of: Boolean, Integer, Double, and String. {{{AttributeData}}} enforces these requirement explicitly. See proposed API below. ["/RFC1 Comment Maps"]   * The new interface is now called {{{CyAttributes}}}. [[/RFC1_Comment_Name]]
 
  * {{{CyData}}} is now called {{{MultiHashMap}}}. We wanted to give it a name that reflected its role as a core data structure. [[/RFC1_Comment_CyData_Name]]
Line 27: Line 32:
  * To do complicated things, such as create arbitarily complex data structures, you can obtain a copy of {{{CyData}}} and {{{CyDataDefinition}}} from {{{AttributeData}}}. Advanced users who need this functionality can read through the {{{CyData}}} and {{{CyDataDefinition}}} Javadocs. ["/RFC1 Comment Complex Data Structures"]   * {{{CyAttributes}}} uses a {{{MultiHashMap}}} as a back-end data store, but does not extend {{{MultiHashMap}}}. [[/RFC1_Comment_Complex_Data_Structures]]
Line 29: Line 34:
  * Item not yet covered: Event / Listener Framework ["/RFC1 Comment Event Framework"]   * {{{CyAttributes}}} provides several overloaded versions of {{{setAttribute}}}, one for each basic data type, e.g. {{{setAttribute(String id, String attributeName, Double value)}}}. It also provides several varients of getAttribute, e.g. {{{Double getDoubleAttribute(String id, String attributeName)}}}. [[/RFC1_Comment_Getters_Setters]]
Line 31: Line 36:
  * Item not yet covered: support for Labels (Rowan has this feature in the current implementation of {{{CytoscapeData}}}) ["/RFC1 Comment Labels"]   * {{{CyAttributes}}} provides support for 'simple' lists. A 'simple' list is defined as follows:
     * All items within the list are of the same type, and are chosen from one of the following: Boolean, Integer, Double or String. [[/RFC1_Comment_Lists]]
Line 33: Line 39:
  * Item not yet covered: recommended attribute names ["/RFC1 Comment Attribute Names"]   * {{{CyAttributes}}} provides support for 'simple' maps. A 'simple' map is defined as follows:
    * All keys within the map are of type: String.
    * All values within the map are of the same type, and are chosen from one of the following: Boolean, Integer, Double or String. [[/RFC1_Comment_Maps]]
Line 35: Line 43:
 ["/RFC1 Comment API"]   * To do complicated things, such as create arbitarily complex data structures, you can obtain the {{{MultiHashMap}}} and {{{MultiHashMapDataDefinition}}} from {{{CyAttributes}}}. [[/RFC1_Comment_Complex_Data_Structures]]
Line 37: Line 45:
=== Proposed API: Version 0.1 ===   * Event / Listener Framework: Coders who wish to register for attribute events can use the existing listener API provided by {{{MultiHashMap}}}. [[/RFC1_Comment_Event_Framework]]

  * Misc items that didn't fit in any existing category: [[/RFC1_Comment_API]]

  * '''Open Item:''' how to access global node / edge attributes [[/RFC1_Comment_Global_Attribute_Access]]

=== Deferred Items ===

  * Recommended attribute names. [[/RFC1_Comment_Attribute_Names]]

  * Support for attribute labels or categories. [[/RFC1_Comment_Labels]]

=== References ===
  
  * [[http://java.sun.com/j2se/1.5.0/docs/guide/javadoc/deprecation/deprecation.html|How and When To Deprecate APIs]] (Java Sun Site).

=== Implementation Plan ===

  * [[/RFC1_Implementation_Plan]]

<<TableOfContents: execution failed [Argument "maxdepth" must be an integer value, not "[2]"] (see also the log)>>

About this Document

This is an official Request for Comment (RFC) for replacing GraphObjAttributes. RFCs represent one possible mechanism for soliciting feedback for core features / refactoring. For details on RFCs in general, check out the Wikipedia Entry: Request for Comments (RFCs)

Status

On 10/13/2005, the Cytoscape Developers group unanimously voted to accept CyAttributes into the Cytoscape core. Work on implementation has begun, and the RFC is now officially closed to public comment. You can still add comments, but we can't guarantee that those comments will be accepted into the API until our next Cytoscape release.

How to Comment

To view/add comments, click on any of 'Comment' links below. 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. Here is an example to get things started: /RFC1_Comment_Name.

Try to keep your comments as concrete and constructive as possible. For example, if you find a part of the API makes no sense, please say so, but don't stop there. Take the extra step and propose alternatives.

Proposed API

General Notes

The following represents Version 0.2 notes, as agreed by Nerius, Iliana and Ethan:

  • The new interface is now called CyAttributes. /RFC1_Comment_Name

  • CyData is now called MultiHashMap. We wanted to give it a name that reflected its role as a core data structure. /RFC1_Comment_CyData_Name

  • CyAttributes uses a MultiHashMap as a back-end data store, but does not extend MultiHashMap. /RFC1_Comment_Complex_Data_Structures

  • CyAttributes provides several overloaded versions of setAttribute, one for each basic data type, e.g. setAttribute(String id, String attributeName, Double value). It also provides several varients of getAttribute, e.g. Double getDoubleAttribute(String id, String attributeName). /RFC1_Comment_Getters_Setters

  • CyAttributes provides support for 'simple' lists. A 'simple' list is defined as follows:

    • All items within the list are of the same type, and are chosen from one of the following: Boolean, Integer, Double or String. /RFC1_Comment_Lists

  • CyAttributes provides support for 'simple' maps. A 'simple' map is defined as follows:

    • All keys within the map are of type: String.
    • All values within the map are of the same type, and are chosen from one of the following: Boolean, Integer, Double or String. /RFC1_Comment_Maps

  • To do complicated things, such as create arbitarily complex data structures, you can obtain the MultiHashMap and MultiHashMapDataDefinition from CyAttributes. /RFC1_Comment_Complex_Data_Structures

  • Event / Listener Framework: Coders who wish to register for attribute events can use the existing listener API provided by MultiHashMap. /RFC1_Comment_Event_Framework

  • Misc items that didn't fit in any existing category: /RFC1_Comment_API

  • Open Item: how to access global node / edge attributes /RFC1_Comment_Global_Attribute_Access

Deferred Items

References

Implementation Plan

RFC_1 (last edited 2009-02-12 01:04:12 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