Giter VIP home page Giter VIP logo

miranda's Introduction

logo

Build Status Build status Codacy Badge

miranda is a nucleobase sequence analyzer written in Java.
It computes a probable miRNA secondary structure from a given sequence,
regarding the released conformation energy and the number of matched bases.
It is endowed with a graphical user interface based on JavaFX:

screenshot

Table of contents

Build and use

Build

Build Status Build status

miranda is cross-platform.
It requires a recent Java SE to be built from sources (at least 11).
It relies on gradle toolchain to build binaries, but it is self-managed though.
To build and run it, just open a terminal and type:

./gradlew run                 # on macOS or Linux
gradlew.bat run               # on Windows

If you want to create executables, type:

./gradlew createApp           # on macOS  
gradlew.bat createExe         # on Windows

They will be located under build/macApp or build/launch4j.

Use

miranda is very simple to use:

gui

Its user interface enables to:

  • import and run a given .txt sequence file.
  • display predicted miRNA secondary structure pattern.
  • select conformation energy criterion.
  • show stats and conformation energy matrix.

You can save results by a drag-and-drop to a file.


Feature

Basic background

DNA and RNA are nucleic acids which are major macromolecules for all forms of life.
They differ in their chemical structure since RNA is single-stranded as opposed to DNA.
A miRNA is a small non-coding RNA, which dysregulation can lead to known diseases and cancer.
It tends to fold to itself while attempting to reach stability that is:

  • a maximal number of matched bases,
  • a minimal released energy induced by the conformation process.
RNA RNA

A nucleic acid primary structure simply refers to its base sequence.
Its secondary structure refers to its planar conformation.
Its topology can be quite complex, but is simplified for miRNAs.
Indeed, it would consist of simple pseudoknots-free strand.

Algorithm

miranda uses a dynamic programming scheme.
It actually implements Nussinov algorithm.
It relies on the computation of each base pair energy, with 4 cases:

nussinov-cases

The energy of a given secondary structure is just the sum of matched pairs ones.
Hence an optimal conformation is an instance which minimizes this energy (which can be multiple).

energy

In fact, redundant recursive calls are avoided since only the three cases are taken into account.
The resolution algorithm involves three steps:

  • remove all impossible pairs.
  • fill energy and matched pairs matrices (diagonal by diagonal).
  • retrieve index path by backtracking from the very last cell.
step1 step2 step3
Future works

Notice that computed solutions are just miRNA candidates.
I will integrate k optimal and suboptimal solutions retrievals for a given k.
It will enable to consider and retrieve all isomorphic solutions.


Copyright 2014, Hoby Rakotoarivelo

license

miranda is released under the Apache license.
It was written for experimental purposes, and improvements are welcome.
To get involved, you can:

  • report bugs or request features by submitting an issue.
  • submit code contributions using feature branches and pull requests.

Enjoy! ๐Ÿ˜‰

miranda's People

Contributors

hobywan avatar

Stargazers

 avatar

Watchers

 avatar

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.