nrnb / GoogleSummerOfCode

Main documentation site for NRNB GSoC project ideas and resources
114 stars 38 forks source link

Visual biology with Escher #59

Closed draeger closed 8 years ago

draeger commented 8 years ago

Background

The web-based graphical editor for biological networks Escher (King et al. 2015) enjoys growing popularity and is being used for modeling, documentation, and visualization of measurement data. As a typical web-based program, Escher uses a JSON-based data structure to represent its pathways. A separate application allows users to convert these JSON files to the community formats SBML and SBGN-ML.

Goal

The aim of this project is to develop a web-based import and export function for community standards (SBML and SBGN-ML) that will replace the already existing EscherConverter.

Technologies

JavaScript, Java, JSON, SBML, SBGN-ML

Potential mentors

Zachary A. King, Andreas Dräger

Contact

Zachary A. King, Andreas Dräger

Useful pointers to documentation related to GSOC for student on the main NRNB web site :

devkhan commented 8 years ago

I'm interested in taking up this project. I have experience in JS, Java, JSON, and a little bit in Escher. Can you guide me how to get started in knowing more about this project? I will try to learn more about SBML and SBGN.

khanspers commented 8 years ago

Hi Devesh, the mentors have referenced several resources above with additional information. Please review those and then contact the mentors directly via their emails above. They may not see messages here immediately.

draeger commented 8 years ago

Hi @khanspers, @devkhan, and @zakandrewking! Thanks, we had already direct e-mail contact. So please, just click on the e-mail links if there are any questions. Many thanks!

devkhan commented 8 years ago

@draeger I'm unable to find the source for EscherConverter. There's only a download link in the docs. Isn't the source available?

draeger commented 8 years ago

@devkhan I will provide you with the source code. For your application, however, you will not need to do programming yet.

devkhan commented 8 years ago

Thanks. I know, but I need to study the current implementation as it will help me better grasp the concepts.

draeger commented 8 years ago

Actually, the main idea is to create a bipartite matching between two different data formats. EscherConverter reads JSON, recursively goes through that data structure and while reading fills in corresponding entries in SBML or SBGN-ML.

An optimal implementation would use the Builder Pattern for this and have specific handler interfaces for objects. This separation allows us to create of diverse output data formats while reusing the reader function as a common framework.

Summarizing, what a file format converter needs to do is:

  1. Read the input file format.
  2. Recognize concepts, i.e., data structures.
  3. Call build methods on a specific builder for output file formats and pass those structures to the builder.
  4. Write the output file format.

The rest are details. I recommend reading about design patterns (in particular the builder pattern) as well as introduction to SBML and the Layout Extension, SBGN-ML and JSON, rather than going through Java™ source code (which I think is more difficult and less helpful).

khanspers commented 8 years ago

Chosen as GSoC 2016 project.

devkhan commented 8 years ago

Hosted here: https://github.com/SBRG/EscherConverter