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:
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
orbuild/launch4j
.
miranda is very simple to use:
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.
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.
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.
miranda uses a dynamic programming scheme.
It actually implements Nussinov algorithm.
It relies on the computation of each base pair energy, with 4 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).
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.
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.
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! 😉