Building a client for visualizing graphs, in a browser

A graph has a set of vertices and a set of edges. An edge is a relationship between two vertices.

If you take Facebook, the vertices are people and the edges are friendships. If you take two people on Facebook, they are probably connected by just a few links -- like in pretty much every discrete systems known to mankind. A path (like that path between two people) is the second class of interesting objects for visualizing a given system, the first class being the graphs.

With graphs and paths, it is possible to describe numerous discrete systems.

In Ray Cloud Browser -- a graph visualizer for genomics, vocabulary terms were carefully selected. In Ray Cloud Browser, the 4 main object types are maps, sections, regions, and locations. A map is a graph in genomics. The vertices of a map are DNA sequences (like GATTACA), and edges are direct neighbourhood relationships (such as GATTACA -> ATTACAG). A section is really just a bunch of paths in the graph. The paths in the map are called regions. Several locations can be explored in a region.

The geometrical landscape of data in Ray Cloud Browser is quite easy to browse because any map has an index associated to it, and it's the same for sections, regions, and locations. For instance, {"map": 0, "section": 3, "region": 5, "location": 3000} will get you somewhere in a genome.

Mathematically, there is a injection between the set of locations -- that is a 4-tuple containing 4 integers (map, section, region, location) -- and the union of all possible sequences and the set containing only the nil object. For a given sequence, a set of 4-tuples (like those described above) can be obtained.

When the operator is at the end of a given region (for example, a contig), it is insightful to obtain what are the nearby regions in the map. To do so, the web service must have an action to search regions associated to any sequence (remember, sequences are vertices in the map).

This is about to become a reality in Ray Cloud Browser. This is exciting to reach this significant milestone after 4 months of relentless work.

In my backlog, I have only 5 tasks remaining ! Yay !

I will use this new powerful feature to better understand what's going on in various Ray issues.

  • store path data inside Region class (data engine) (20 min)
  • push other paths in region list when receiving annotations (data engine) (30 min)
  • do readahead for other paths too (data engine) (30 min) 
  • select region in menu (UI) (30 min) 
  • paths in other colors (rendering) (30 min)


Popular posts from this blog

Adding ZVOL VIRTIO disks to a guest running on a host with the FreeBSD BHYVE hypervisor

Changing the capacity of each VDEV in a ZPOOL without losing data and no downtime with ZFS

Le tissu adipeux brun, la thermogénèse, et les bains froids