In our meeting on Monday, we decided to start using the graphspace_interface (which basically builds up on a networkx object) rather than building raw nested dictionaries to store the graph/GPML file.
Hence I worked on porting the code of https://github.com/Murali-group/GraphSpace/pull/162 to work with the networkx object. As a result the code is much cleaner and legible 🙂 This was pretty easy, but got stuck in debugging at various points
This week we will work on completing the GPML support with all the documentation update.
Now we have a PR in for review that extends the functionality of GraphSpace with adding support for GPML file format. https://github.com/Murali-group/GraphSpace/pull/162
Thanks to Ted for an initial review of the PR.
Some issues we are still facing:
- Curved edges; it is possible to have curved edges using cytoscape JS but they haven’t be used in GraphSpace yet and are not exposed for edges. We need to further look into this.
- Right now, the starting and ending points of edges are independent nodes (edge end nodes are invisible right now). So if you try to move a node it will move independently without affecting the edge it should have been connected to. We face this issue because the edges in GPML format only have their coordinates position not the source and target nodes. A solution could be look radially outwards from the end points of edges to find the nearest node and bind that edge end point to it.
- Third issue that we are facing, albeit minor, is the rotation of shapes which is not possible in cytoscape JS
Everything else looks good 🙂
Mid terms already here. Summer going really fast. Hoping to get this PR completed by then. 🙂
Now we have something that resembles the GPML file on wiki pathways.
The pathway as shown on wiki pathways.
Right now on GraphSpace
There are still a few issues that need to be dealt with, like with the representation of interaction, example: we can’t have curved edges on GraphSpace, to deal with it right now we have broke it into two different edges, as we have three node points available in the GPML file to draw the interaction.
The GPML functionality will be further improved in coming week 🙂
Layout variable is set.
And it took five lines of code. >.< That’s embarrassing.
For this to make sense, let starts from the start.
On Monday during our hangout we decided to make a crude version of the GPML uploader for GraphSpace. We know that the graph is randomly generated every time we upload it but we can’t afford to do this with GPML so we decided to set a default layout when we are uploading it.
Parsing the GPML was the easy part which was done without any problems. But then came the hiccup, setting the layout variable. I had a rough idea how to proceed on this and so I proceeded to do the straight forward thing. BUT, I couldn’t make it work
Well, then started the frustrating part, combing through the codebase to pin point the problem. I wasted a lot of time on that
Well now we can upload GPML file and GraphSpace will recognize the DataNode fields as nodes of a graph. Currently I have hard coded the layout for testing purpose. I’ll update the code to use the x, y coordinates as specified in the GPML file.
But it works 🙂
There are still a lot of things I need to discuss with my mentors.
We will probably have a better working uploader for GPML next week 🙂
First Week 🙂
Here it goes!!
After discussion with my mentor, we decided to start working on GPML format which is extensively used as a file format for biological pathways.
We decided to work with sample files available on http://www.wikipathways.org/index.php/WikiPathways. To parse the file we used https://docs.python.org/2/library/xml.etree.elementtree.html and extracted all the information available like various data nodes, interactions, groups, etc.
One major difference is that in formats like cytoscape JSON the edges(interaction) are defined between two nodes but in the case of GPML they are defined only by the coordinates. So we need to create an initial layout for the network so it can be rendered properly by GraphSpace.
GraphSpace uses cytoscape web in the backend to render graphs. To solve the problem of creating groups we can use http://cytoscapeweb.cytoscape.org/tutorial#section/Compound_Nodes provided by cytoscape web.
By next week I plan to have a working prototype of the GPML upload function.
The official coding period of GSoC 2016 starts tomorrow, 23rd May. Yay!!
I’ll start working on creating a parser for GraphML format. Users of GraphSpace will be able to upload their graphs in GraphML format without having to convert it to JSON or cyjs (cytoscape JSON).
GraphML is based on XML, hence we’ll use the standard XML python parser https://docs.python.org/2/library/xml.etree.elementtree.html
Implementing this may require changing the GraphSpace JSON spec, which will be further discussed with my mentors.
We also make sure to extensively document the new functionality (using the PyDoc format).
My mentors Murali, Ted and Divit will be able to view a dev version of GraphSpace on the dev server shared with them.
I’ll regularly update this blog with the progress through the summer. 🙂
My proposal has been accepted by National Resource of Network Biology under the Google Summer of Code 2016 program. Yay!!!
I’ll be working on GraphSpace with my mentor T. M. Murali over the summer to extend its import and export capabilities. I’ll be updating this blog regularly with my progress. Coding period starts from 23rd May and I plan to study various network representation formats during the community bonding period.
Looking forward to a fun summer 🙂
My proposal abstract:
GraphSpace is a tool for storing, sharing, and visualising graphs in order to help collaborative research. Users can upload graphs and share it with other collaborators. Most of its users work in computational biology. One may represent biological interactions through the use of nodes and edges. For example, a node may be thought of as a protein. If there exists an edge between two nodes in the graph, this may indicate that the two proteins interact.Currently GraphSpace can import JSON and .cyjs (Cytsocape JSON) files. It has a REST API to allow automatic uploads of multiple files in these formats. The overall goal of this project is to expand the user communities for GraphSpace by extending its import and export capabilities.The first part of this project will focus on adding import (and export) functionality for various graph file formats like GraphML, GPML, BioPAX to allow a much wider set of graphs to be imported into GraphSpace. The second part of this project will deal with enhancing the Cytoscape JSON parser such that it can store the various properties of the layout like x, y coordinates, color, shape, etc. The third part of this project will be to add a PDF exporter.
RSS feed: https://summercode2016.wordpress.com/feed/