https://github.com/hobywan/miranda
A software to predict miRNA secondary structure regarding conformation energy and matching size.
https://github.com/hobywan/miranda
java-ui javafx mirna research
Last synced: 10 months ago
JSON representation
A software to predict miRNA secondary structure regarding conformation energy and matching size.
- Host: GitHub
- URL: https://github.com/hobywan/miranda
- Owner: hobywan
- License: apache-2.0
- Created: 2019-04-14T21:22:15.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2019-04-22T11:17:58.000Z (almost 7 years ago)
- Last Synced: 2025-02-04T11:04:46.597Z (12 months ago)
- Topics: java-ui, javafx, mirna, research
- Language: Java
- Homepage:
- Size: 3.1 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

[](https://travis-ci.com/hobywan/miranda)
[](https://ci.appveyor.com/project/hobywan/miranda)
[](https://www.codacy.com/app/hobywan/miranda?utm_source=github.com&utm_medium=referral&utm_content=hobywan/miranda&utm_campaign=Badge_Grade)
**miranda** is a [nucleobase](https://en.wikipedia.org/wiki/Nucleobase) sequence analyzer written in Java.
It computes a probable [miRNA](https://en.wikipedia.org/wiki/MicroRNA) [secondary structure](https://en.wikipedia.org/wiki/Nucleic_acid_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](https://openjfx.io):

###### Table of contents
- [Build instructions](#build)
- [Feature and algorithm](#feature)
- [How to contribute](#license)
---
### Build and use
###### Build
[](https://travis-ci.com/hobywan/miranda)
[](https://ci.appveyor.com/project/hobywan/miranda)
**miranda** is cross-platform.
It requires a [recent](https://www.oracle.com/technetwork/java/javase/downloads/index.html) Java SE to be built from sources (at least 11).
It relies on [gradle](https://gradle.org) toolchain to build binaries, but it is self-managed though.
To build and run it, just open a terminal and type:
```bash
./gradlew run # on macOS or Linux
gradlew.bat run # on Windows
```
If you want to create executables, type:
```bash
./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:

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.
-----
###### Basic background
[DNA](https://en.wikipedia.org/wiki/DNA) and [RNA](https://en.wikipedia.org/wiki/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](https://en.wikipedia.org/wiki/MicroRNA) is a small [non-coding](https://en.wikipedia.org/wiki/Non-coding_RNA) RNA, which dysregulation can lead to known [diseases](https://en.wikipedia.org/wiki/MicroRNA#Disease) 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](https://en.wikipedia.org/wiki/Nucleic_acid_structure#Primary_structure) simply refers to its base sequence.
Its [secondary structure](https://en.wikipedia.org/wiki/Nucleic_acid_structure#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](https://en.wikipedia.org/wiki/Pseudoknot)-free strand.
###### Algorithm
**miranda** uses a [dynamic programming](https://en.wikipedia.org/wiki/Dynamic_programming) scheme.
It actually implements [Nussinov](http://math.mit.edu/classes/18.417/Slides/rna-prediction-nussinov.pdf) 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.
###### 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.
-------
### License
###### Copyright 2014, Hoby Rakotoarivelo
[](https://www.apache.org/licenses/LICENSE-2.0)
**miranda** is released under the [Apache](https://www.apache.org/licenses/LICENSE-2.0) 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](https://github.com/hobywan/miranda/issues).
- submit code contributions using feature branches and [pull requests](https://github.com/hobywan/miranda/pulls).
Enjoy! 😉