Giter Site home page Giter Site logo

lifetiles's Introduction

LifeTiles Build Status Coverage Status

LifeTiles is a tool for interactive visualization of DNA sequence graphs to represent the genome architecture of organisms of interest. The application mainly consists of a Graph Viewer and a Tree Viewer but also a Sequence Viewer used for additional overview.

  • The Graph Viewer shows the contents of the graph in the structure of a tile lane diagram. It is able to visualize multiple DNA strands and the mutations between those DNA strands if a reference is selected.
  • The Tree Viewer shows the contents of the phylogenetic tree in the structure of a Sunburst diagram. This shows the relation between the different samples used in the program.
  • The Sequence Viewer shows all sequences names so the user has an overview of the data which is currently viewed.

The LifeTiles application was made as a group project for the Programming Life section of the TI2806 Context Project TU Delft course.

Features

  • View a single or multiple DNA strands as a graph to research the structure. In a unified form where every sequence segment has the same coordinate system and empty sequence segments are also visualized.
  • Display a phylogenetic tree based on several DNA strands so that the user can compare them and observe the timeline and the common ancestors of several functionalities.
  • Make interaction between the Tree Viewer and the Graph Viewer interactive by giving the user the ability to select subsets in the graph or in the tree which are synchronized.
  • Indicate mutation types through colours based on a reference sequence.
  • Filter certain types of mutations so that the user can identify specific types of mutations: SNP, insertion, deletion, inversion, translocation and duplication.
  • Select the level of detail of the viewport of DNA so that the user can see the relevant parts of DNA using semantic zooming.

Installation

The application can be executed by downloading or cloning the source.

To start researching your DNA sequence graph you need two identical named files in the graph format, a file with .node.graph and a file with .edge.graph as extension. For example simple_graph.node.graph and simple_graph.edge.graph. The phylogenetic tree files must be in the Newick file format. Newick files have the .nwk extension.

lifetiles's People

Contributors

alangerak avatar albert-smit avatar jorenham avatar joswinter avatar rutgervandenberg avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

lifetiles's Issues

Refactor package structure into modular mvc

For the sake of modularity, the package structure needs to be refactored. An example of this:

├── nl.tudelft.lifetiles
│   ├── graph
│   │   ├── model
│   │   ├── view
│   │   ├── controller
│   ├── tree
│   │   ├── model
│   │   ├── view
│   │   ├── controller
│   ├── strains
│   │   ├── model
│   │   ├── view
│   │   ├── controller

Sequence Parser Bug

Parser returns wrong data, not sequences but segment coordinates, must be looked at. Add test and solve.

Refactor package structure

The package structure has become a mess again.

  • nl.tudelft.lifetiles.graph.models.sequence should be merged into nl.tudelft.lifetiles.sequence.
  • The graph and tile classes should be merged.
  • Make the plural package names (i.e. models) singular.

Specific DNA strain selection

When the user clicks on a specific tile, the graph view should only display the strains containing the strains "passing through" that tile and update the sunburst diagram accordingly.

Calculate sequences when parsing

Currently SequenceGenerator does this, but it has to traverse the graph. To avoid this, sequences can be generated when parsing directly (and put into the graph object).

Segment bookmarks

Save a location of the sequence inside the graph viewer to the bookmarks so that the user can find that location back easily.

Display errors in the GUI.

Currently the user isn't informed of an error, the program just terminates or silently throws an exception. This isn't desired behaviour.

Implement bucket caching

Buckets contain the references to the DNA strains at some index. Because of the strain subset selection feature, these buckets need to be cached due to performance.

Refactor controller structure

Currently it uses the singleton ViewController for communication between controllers. By decentralizing the controller communication, this can be refactored into a more MVC adhering structure. It will also improve performance, since ViewController is very slow.

Fix vertical scaling of the MainView

Currently the main view does not scale vertically properly; it is fixed. The panes need to be fixed so that they scale in the right way. The sequence & tree views ought to have a fixed height, but the graph view should scale vertically too.

Throwing appropriate exceptions in parser

The parser throws a NullPointerException whenever the file to parse is not found. This, among other exception handling kinks, need to be improved so that these error messages eventually can be properly displayed to the user.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.