{"id":22670171,"url":"https://github.com/hobywan/miranda","last_synced_at":"2025-03-29T11:41:17.247Z","repository":{"id":91786433,"uuid":"181370572","full_name":"hobywan/miranda","owner":"hobywan","description":"A software to predict miRNA secondary structure regarding conformation energy and matching size.","archived":false,"fork":false,"pushed_at":"2019-04-22T11:17:58.000Z","size":3252,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-04T11:04:46.597Z","etag":null,"topics":["java-ui","javafx","mirna","research"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hobywan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-04-14T21:22:15.000Z","updated_at":"2019-04-22T11:17:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"73779cfd-6279-4317-8b3c-ca199cbddbdb","html_url":"https://github.com/hobywan/miranda","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hobywan%2Fmiranda","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hobywan%2Fmiranda/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hobywan%2Fmiranda/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hobywan%2Fmiranda/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hobywan","download_url":"https://codeload.github.com/hobywan/miranda/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246180898,"owners_count":20736459,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java-ui","javafx","mirna","research"],"created_at":"2024-12-09T15:52:28.251Z","updated_at":"2025-03-29T11:41:17.029Z","avatar_url":"https://github.com/hobywan.png","language":"Java","readme":"\u003cimg src=\"docs/figures/logo.png\" alt=\"logo\" width=\"160\"\u003e\n\n[![Build Status](https://travis-ci.com/hobywan/miranda.svg?branch=master)](https://travis-ci.com/hobywan/miranda)\n[![Build status](https://ci.appveyor.com/api/projects/status/9cjdc6mgnqast9nr?svg=true)](https://ci.appveyor.com/project/hobywan/miranda)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/fff486680a6b4ac8b2d0a52f38ef5dcf)](https://www.codacy.com/app/hobywan/miranda?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=hobywan/miranda\u0026amp;utm_campaign=Badge_Grade)\n\u003c!--[![license](https://img.shields.io/badge/license-apache-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)\n--\u003e\n\n**miranda** is a [nucleobase](https://en.wikipedia.org/wiki/Nucleobase) sequence analyzer written in Java.  \nIt 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,  \nregarding the released conformation energy and the number of matched bases.  \nIt is endowed with a graphical user interface based on [JavaFX](https://openjfx.io):\n\n\u003cimg src=\"docs/figures/screen.png\" alt=\"screenshot\" width=\"600\"\u003e\n\n###### Table of contents\n\n- [Build instructions](#build)\n- [Feature and algorithm](#feature)\n- [How to contribute](#license)\n\n---\n\n### Build and use \u003ca name=\"build\"\u003e\u003c/a\u003e\n###### Build\n\n[![Build Status](https://travis-ci.com/hobywan/miranda.svg?branch=master)](https://travis-ci.com/hobywan/miranda)\n[![Build status](https://ci.appveyor.com/api/projects/status/9cjdc6mgnqast9nr?svg=true)](https://ci.appveyor.com/project/hobywan/miranda)\n\n**miranda** is cross-platform.   \nIt requires a [recent](https://www.oracle.com/technetwork/java/javase/downloads/index.html) Java SE to be built from sources (at least 11).  \nIt relies on [gradle](https://gradle.org) toolchain to build binaries, but it is self-managed though.  \nTo build and run it, just open a terminal and type:\n\n```bash\n./gradlew run                 # on macOS or Linux\ngradlew.bat run               # on Windows\n```\n\nIf you want to create executables, type:\n\n```bash\n./gradlew createApp           # on macOS  \ngradlew.bat createExe         # on Windows\n```\n\u003e They will be located under `build/macApp` or `build/launch4j`.\n\n###### Use\n\n**miranda** is very simple to use:\n\n\u003cimg src=\"docs/figures/use.gif\" alt=\"gui\" width=\"600\"\u003e\n\nIts user interface enables to:\n\n- import and run a given `.txt` sequence file.\n- display predicted miRNA secondary structure pattern.\n- select conformation energy criterion.\n- show stats and conformation energy matrix.\n\n\u003e You can save results by a drag-and-drop to a file.\n\n-----\n\n### Feature \u003ca name=\"feature\"\u003e\u003c/a\u003e\n\n###### Basic background\n[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.  \nThey differ in their chemical structure since RNA is single-stranded as opposed to DNA.  \nA [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.  \nIt tends to fold to itself while attempting to reach stability that is:\n\n- a maximal number of matched bases,\n- a minimal released energy induced by the conformation process.\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"docs/figures/rna.jpg\" alt=\"RNA\" width=\"120\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"docs/figures/mirna.jpg\" alt=\"RNA\" width=\"250\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\nA nucleic acid [primary structure](https://en.wikipedia.org/wiki/Nucleic_acid_structure#Primary_structure) simply refers to its base sequence.  \nIts [secondary structure](https://en.wikipedia.org/wiki/Nucleic_acid_structure#Secondary_structure) refers to its planar conformation.  \nIts topology can be quite complex, but is simplified for miRNAs.  \nIndeed, it would consist of simple [pseudoknots](https://en.wikipedia.org/wiki/Pseudoknot)-free strand.\n\n###### Algorithm\n\n**miranda** uses a [dynamic programming](https://en.wikipedia.org/wiki/Dynamic_programming) scheme.  \nIt actually implements [Nussinov](http://math.mit.edu/classes/18.417/Slides/rna-prediction-nussinov.pdf) algorithm.  \nIt relies on the computation of each base pair energy, with 4 cases:\n\n\u003cimg src=\"docs/figures/nussinov.png\" alt=\"nussinov-cases\" width=\"420\"\u003e  \n\nThe energy of a given secondary structure is just the sum of matched pairs ones.  \nHence an optimal conformation is an instance which minimizes this energy (which can be multiple).\n\n\u003cimg src=\"docs/figures/energy_total.png\" alt=\"energy\" width=\"520\"\u003e    \n\nIn fact, redundant recursive calls are avoided since only the three cases are taken into account.  \nThe resolution algorithm involves three steps:\n\n- remove all impossible pairs.\n- fill energy and matched pairs matrices (diagonal by diagonal).   \n- retrieve index path by backtracking from the very last cell.\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"docs/figures/step1.png\" alt=\"step1\" width=\"130\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"docs/figures/step2.png\" alt=\"step2\" width=\"130\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"docs/figures/step3.png\" alt=\"step3\" width=\"130\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n###### Future works\n\nNotice that computed solutions are just miRNA **candidates**.  \nI will integrate _k_ optimal and suboptimal solutions retrievals for a given _k_.  \nIt will enable to consider and retrieve all isomorphic solutions.\n\n\n-------\n### \u003ca name=\"license\"\u003eLicense\u003c/a\u003e\n\n###### Copyright 2014, Hoby Rakotoarivelo\n\n[![license](https://img.shields.io/badge/license-apache-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)\n\n**miranda** is released under the [Apache](https://www.apache.org/licenses/LICENSE-2.0) license.  \nIt was written for experimental purposes, and improvements are welcome.    \nTo get involved, you can:\n\n-    report bugs or request features by submitting an [issue](https://github.com/hobywan/miranda/issues).\n-    submit code contributions using feature branches and [pull requests](https://github.com/hobywan/miranda/pulls).\n\nEnjoy! 😉","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhobywan%2Fmiranda","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhobywan%2Fmiranda","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhobywan%2Fmiranda/lists"}