diff --git a/Proposal/cyto_proposal_draft.htm b/Proposal/cyto_proposal_draft.htm new file mode 100644 index 0000000..ebd0776 --- /dev/null +++ b/Proposal/cyto_proposal_draft.htm @@ -0,0 +1,481 @@ + + +
+ + + + + + + + +JavaScript JSON convertors for Cytoscape 3.0 file formats
+ ++ +
+ +
The project title is: JavaScript JSON convertors for +Cytoscape 3.0 file formats.
+ +The idea is based upon suggested Idea 19: JavaScript JSON +convertors for graph file formats, but I would like to drop the word “graph” +from it, because this project will support virtually all formats accepted by +Cytoscape 3.0 .
+ ++ +
This project deals with the conversion of different graph +and other formats used in Cytoscape 3.0 to Json used in cytoscape.js and vice +versa.
+ +Cytoscape 3.0 accepts file formats like xgmml, graphml, gml, +nnf, sif, xls, sif, csv whereas cytoscape.js currently accepts only json +representations of the data. It is not an easy task to create json +representation of a required graph by hand. This is where this project comes +in. I will develop some converters using JavaScript which will automate this generation +of json representation. Cytoscape-web, the predecessor of Cytoscape.js +supported only sif files, but this project will support import and export to +all the formats mentioned earlier.
+ ++ +
The Cytoscape 3.0 file formats that will be supported are:
+ +Xgmml, Graphml, Sif, Nnf, Gml (,Csv, Xlsx).
+ +They are arranged according to their priority and so this is +the order in which their json converters will be implemented. The last two (in +bracket) will be kept as extras, meaning that they will be implemented only if +the project is finished well before the deadline (see the timeline for details) +.
+ +Now, this is how I plan to deal with each of them.
+ +1. +Xgmml: This is the top priority format and hence will be dealt with +first. Xml parsers available in native javascript and jquery will be used for +parsing the xgmml file. Then some JavaScript code (using looping and if needed, +regular expressions) will deal with the parsed xml file to convert them +correctly into javascript variables and objects. Finally, they can be used to +generate its json representation. (Maybe, take some inspiration from this +library in Gremlin (written in java): https://github.com/tinkerpop/blueprints/wiki/GraphSON-Reader-and-Writer-Library +)
+ +This required some separate +functions which can:
+ +· +convert parsed xml to jS variables and objects
+ +· +create xml from given jS variables and objects
+ +· +save given jS variables and objects as json
+ +· +convert json into given jS variables and objects
+ ++ +
2. Graphml: +Graphml is also a xml-based format, so the implementation process is same as +that of the previous one. Only the code will be different to take care of the +syntax difference of these formats.
+ ++ +
Before I move on to the other ones, here +is a small chart for reference:
+ ++ +
3. Sif +and Nnf: Very simple jS code needs to be written to take care of these file +formats. There is already a python-based implementation of these converters +(written by me) available at https://github.com/bendtherules/GSOC_13/tree/master/nnf_and_sif_to_json_py + . Nnf files will be stripped off its network information and treated just +like a Sif file (Possible problem with multi-network files ??)
+ +4. GML: +A custom-made parser needs to be built based on regular expressions (native js +or possibly using xregexp library http://xregexp.com/ +). The rest of the plan is the same as that of xgmml, only this new parser will +be used.
+ +Few words on the extras:
+ +These extras will be done only if there is ample time left +after the completion of the whole project, so there is no way that they will +harm the main project. I am aware that new GSOC applicants like me tend to +propose a lot more than they can actually complete, so I have tried not to fall +in that trap. But these extras are here, because I plan to do them in the +future, within or after GSOC. Also, as a side note, in future, I wish to +release this codes as a separate jS library for converting customized-xml +formats into json (I hope my mentoring org will allow this).
+ +5. Csv: +Use any well-documented csv parser and rest is the same.
+ +6. Xlsx: +This is the most challenging part. I wouldn’t have tried this if there was no +cross-browser external library to read and write xlsx format. But thankfully +and quite surprisingly, there is one called Xlsx.js https://github.com/stephen-hardy/xlsx.js +. I am not much sure if I can pull off this part, but I am still including this +in the proposal mostly for my inspiration than anything else. Also, I know that +the Cytoscape project originally supported .xls, but I think its best kept to +Microsoft Excel for converting .xls into .xlsx .
+ ++ +
+ +
1. +Before June 17 :
+ +o Learn +more about:
+ +o Jquery, +xregexp, csv-parser, json, xlsx.js and the graph formats.
+ +o Set up +development environment
+ +2. +June 17 – July 6 (18 days): Implement xgmml converter
+ +o June 17 – +June 29 (12 days): Implement xgmml parser
+ +o July 30 – +July 5 (6 days): Rest of the converter
+ +3. +July 5 – July 7 (3 days): Test converter with different xgmml +files.
+ +4. +July 8 – July 25 (18 days): Implement graphml converter
+ +o July 8 – +July 19 (12 days): Implement graphml parser
+ +o July 20 – +July 25 (6 days): Rest of the converter
+ +5. + July 26 – July 28 (3 days): Test graphml converter
+ +6. +July 29 (Mid-term evaluation): Deliver fully-implemented xgmml +and graphml parser.
+ +7. +July 30: Take a day off from coding and analyze what went right +and wrong in the first-term. (How about a blog post? :D)
+ +8. +July 31 – August 2 (3 days): Implement and test Sif and Nnf +converter.
+ +9. +August 3 – August 20 (18 days): Implement Gml converter (First 12 +days for the parser).
+ +10. +August 21 – August 23 (3 days): Test Gml converter
+ +11. +August 24 – August 27 (4 days): Put all the converters together +and test them (Packaging).
+ +12. +August 28 – September 3 (10 days): Prepare documentation and add +inline comments in the code.
+ +13. +September 4 – September 16 (13 days): Buffer time (If everything +is working, work on the extras)
+ +(Feedback will be obtained for all the converters from the +community and they will be of more importance than the extras)
+ ++ +
1. +Json handler in Cytoscape.js might not be able to handle objects +within the “data” section. If so, request the developer or send a patch to the +core project so that it is supported.
+ +2. +Make sure the regular-expression based Gml parser is not buggy.
+ +3. +The input graph formats might not be well-formed (if manually +created). (Maybe, add a xml-checker and discard non well-formed files. Such a +checker might not be possible in case of non-xml based formats. )
+ ++ +
ü +Yes, I am committed in working hard for this GSOC project this +summer. I do not have any other commitment during the summer other than my +college internals for the next session which should be held near the end of +August or the start of September. I am not yet sure about the date, but I will +ask for a one-week break during that time. I hope it won’t be much of a +problem.
+ +ü +Being my first GSOC project, I am also super-excited about it, +can’t wait to have a fruitful summer this year.
+ +ü +I wish to learn some more about the core Cytoscape project but as +I am not a Java developer, I wish to linger with the Cytoscape.js project.
+ +