https://github.com/merck/mrnaid
https://github.com/merck/mrnaid
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/merck/mrnaid
- Owner: Merck
- License: other
- Created: 2022-04-05T16:44:15.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-05-06T05:07:01.000Z (almost 2 years ago)
- Last Synced: 2025-03-29T16:51:14.344Z (about 1 year ago)
- Language: Jupyter Notebook
- Size: 1.91 MB
- Stars: 14
- Watchers: 8
- Forks: 12
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# mRNAid: mRNA optimization tool

mRNAid is an experimentally validated open-source tool for optimization and visualisation of mRNA molecules. It features
different optimization strategies based on user preferences.
mRNAid is available at: [https://mrnaid.dichlab.org](https://mrnaid.dichlab.org)
More information about the tool and experiments performed for its evaluation is available in the following publication:
> Nikita Vostrosablin, Shuhui Lim, Pooja Gopal, Kveta Brazdilova, Sushmita Parajuli, Xiaona Wei, Anna Gromek,
>Martin Spale, Anja Muzdalo, Constance Yeo, Joanna Wardyn, Petr Mejzlik, Brian Henry, Anthony W Partridge and
>Danny A. Bitton: **mRNAid, an Open-Source Platform for Therapeutic mRNA Design and Optimization Strategies**, 2022
>
>[bioRxiv link](https://www.biorxiv.org/content/10.1101/2022.04.04.486952v1)
You can find brief manual on how to use the tool [here](./usage_manual/Manual.md).
## Command-line interface setup
Install mRNAid with pip:
```bash
pip install mRNAid
```
See help using:
```bash
mrnaid optimize --help
```
Example:
```bash
mrnaid optimize \
--output example.json \
--optimization-criterion codon_usage \
--five-end ATG \
--three-end CGG \
--input-mRNA AGCAGAGAAGGCGGAAGCAGTGGCGTCCGCAGCTGGGGCTTGGCCTGCGGGCGGCCAGCGAAGGTGGCGAAGGCTCCCACTGGATCCAGAGTTTGCCGTCCAAGCAGCCTCGTCTCGGCGCGCAGTGTCTGTGTCCGTCCTCTACCAGCGCCTTGGCTGAGCGGAGTCGTGCGGTTGGTGGGGGAGCCCTGCCCTCCTGGTTCGGCCTCCCCGCGCACTAGAACGATCATGAACTTCTGAAGGGACCCAGCTTTCTTTGTGTGCTCCAAGTGATTTGCACAAATAATAATATATATATTTATTGAAGGAGAGAATCAGAGCAAGTGATAATCAAGTTACTATGAGTCTGCTAAACTGTGAAAACAGCTGTGGATCCAGCCAGTCTGAAAGTGACTGCTGTGTGGCCATGGCCAGCTCCTGTAGCGCTGTAACAAAAGATGATAGTGTGGGTGGAACTGCCAGCACGGGGAACCTCTCCAGCTCATTTATGGAGGAGATCCAGGGATATGATGTAGAGTTTGACCCACCCCTGGAAAGCAAGTATGAATGCCCCATCTGCTTGATGGCATTACGAGAAGCAGTGCAAACGCCATGCGGCCATAGGTTCTGCAAAGCCTGCATCATAAAATCAATAAGGGATGCAGGTCACAAATGTCCAGTTGACAATGAAATACTGCTGGAAAATCAACTATTTCCAGACAATTTTGCAAAACGTGAGATTCTTTCTCTGATGGTGAAATGTCCAAATGAAGGTTGTTTGCACAAGATGGAACTGAGACATCTTGAGGATCATCAAGCACATTGTGAGTTTGCTCTTATGGATTGTCCCCAATGCCAGCGTCCCTTCCAAAAATTCCATATTAATATTCACATTCTGAAGGATTGTCCAAGGAGACAGGTTTCTTGTGACAACTGTGCTGCATCAATGGCATTTGAAGATAAAGAGATCCATGACCAGAACTGTCCTTTGGCAAATGTCATCTGTGAATACTGCAATACTATACTCATCAGAGAACAGATGCCTAATCATTATGATCTAGACTGCCCTACAGCCCCAATTCCATGCACATTCAGTACTTTTGGTTGCCATGAAAAGATGCAGAGGAATCACTTGGCACGCCACCTACAAGAGAACACCCAGTCACACATGAGAATGTTGGCCCAGGCTGTTCATAGTTTGAGCGTTATACCCGACTCTGGGTATATCTCAGAGGTCCGGAATTTCCAGGAAACTATTCACCAGTTAGAGGGTCGCCTTGTAAGACAAGACCATCAAATCCGGGAGCTGACTGCTAAAATGGAAACTCAGAGTATGTATGTAAGTGAGCT
# See all arguments using mrnaid optimize --help
```
The results will be stored in the output JSON file, see example [here](notebooks/01_mRNAid_example_usage.ipynb).
You can also invoke mRNAid directly from Python:
```python
from mrnaid import optimize
optimize(
input_mrna='AGCAGAGAAGGCGGAAGCAGTGGCGTCCGCAGCTGGGGCTTGGCCTGCGGGCGGCCAGCGAAGGTGGCGAAGGCTCCCACTGGATCCAGAGTTTGCCGTCCAAGCAGCCTCGTCTCGGCGCGCAGTGTCTGTGTCCGTCCTCTACCAGCGCCTTGGCTGAGCGGAGTCGTGCGGTTGGTGGGGGAGCCCTGCCCTCCTGGTTCGGCCTCCCCGCGCACTAGAACGATCATGAACTTCTGAAGGGACCCAGCTTTCTTTGTGTGCTCCAAGTGATTTGCACAAATAATAATATATATATTTATTGAAGGAGAGAATCAGAGCAAGTGATAATCAAGTTACTATGAGTCTGCTAAACTGTGAAAACAGCTGTGGATCCAGCCAGTCTGAAAGTGACTGCTGTGTGGCCATGGCCAGCTCCTGTAGCGCTGTAACAAAAGATGATAGTGTGGGTGGAACTGCCAGCACGGGGAACCTCTCCAGCTCATTTATGGAGGAGATCCAGGGATATGATGTAGAGTTTGACCCACCCCTGGAAAGCAAGTATGAATGCCCCATCTGCTTGATGGCATTACGAGAAGCAGTGCAAACGCCATGCGGCCATAGGTTCTGCAAAGCCTGCATCATAAAATCAATAAGGGATGCAGGTCACAAATGTCCAGTTGACAATGAAATACTGCTGGAAAATCAACTATTTCCAGACAATTTTGCAAAACGTGAGATTCTTTCTCTGATGGTGAAATGTCCAAATGAAGGTTGTTTGCACAAGATGGAACTGAGACATCTTGAGGATCATCAAGCACATTGTGAGTTTGCTCTTATGGATTGTCCCCAATGCCAGCGTCCCTTCCAAAAATTCCATATTAATATTCACATTCTGAAGGATTGTCCAAGGAGACAGGTTTCTTGTGACAACTGTGCTGCATCAATGGCATTTGAAGATAAAGAGATCCATGACCAGAACTGTCCTTTGGCAAATGTCATCTGTGAATACTGCAATACTATACTCATCAGAGAACAGATGCCTAATCATTATGATCTAGACTGCCCTACAGCCCCAATTCCATGCACATTCAGTACTTTTGGTTGCCATGAAAAGATGCAGAGGAATCACTTGGCACGCCACCTACAAGAGAACACCCAGTCACACATGAGAATGTTGGCCCAGGCTGTTCATAGTTTGAGCGTTATACCCGACTCTGGGTATATCTCAGAGGTCCGGAATTTCCAGGAAACTATTCACCAGTTAGAGGGTCGCCTTGTAAGACAAGACCATCAAATCCGGGAGCTGACTGCTAAAATGGAAACTCAGAGTATGTATGTAAGTGAGCT',
five_end='ATG',
three_end='CGG',
optimization_criterion='codon_usage',
)
```
See [mrnaid/cli/optimize.py](mrnaid/cli/optimize.py) for all available parameters.
See [notebooks/01_mRNAid_example_usage.ipynb](notebooks/01_mRNAid_example_usage.ipynb) for usage and output format example.
## Local web server setup
If you don't want to use public server you can install this tool locally on your machine.
### 1. Using docker-compose
The easiest way to run the tool locally is to use `docker`. You will have to install docker first and it should either
contain `docker-compose` utility as a part of the distribution or you will need to
[install it](https://docs.docker.com/compose/install/) separately.
Navigate to the project folder and execute:
```bash
docker-compose up --build
```
The tool will be available at [http://localhost/](http://localhost/)
### 2. Without docker
To be able to run the tool without `docker` you will need to run frontend and backend separately.
#### Backend
You need [Conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/download.html) or one of
the alternatives ([Miniconda](https://docs.conda.io/en/latest/miniconda.html), [Miniforge](https://github.com/conda-forge/miniforge))
being installed.
First, navigate to the `./mrnaid/backend/flask_app/` directory and execute following commands:
```bash
cd ./mrnaid/backend/flask_app/
```
* Create a new virtual environment:
```bash
make env-create
```
* Install redis database
```bash
make redis-install
```
- In separate terminals execute following commands:
1. Start redis server: `make redis-run`
2. Start uwsgi server: `make uwsgi-run`
3. Start celery: `make celery-run`
- After these steps are executed, the job submission is available at the "optimize" API url: http://localhost/api/v1/optimize.
Example of the json submitted to the "optimize" end point:
```json
{
"config": {
"avoided_motifs": ["EcoRI", "UUU"],
"codon_usage_frequency_threshold": 0.1,
"max_GC_content": 0.9,
"min_GC_content": 0.5,
"GC_window_size": 100,
"organism": "m_musculus",
"entropy_window": 30,
"number_of_sequences": 2
},
"dinucleotides": false,
"match_codon_pair": false,
"uridine_depletion": true,
"CAI": false,
"precise_MFE_algorithm": true,
"file_name": "test",
"sequences": {
"five_end_flanking_sequence": "UGAAUUCAGCAAUCU",
"gene_of_interest": "AAUCAAAUAGGGUUAAGUCUAGGAUUGUUAGUCUGCUAAGGUCUGCAGUUACUGUGUCUACUGAUGAUAGUUCGCAUUGACAAU",
"three_end_flanking_sequence": "GC"
}
}
```
- The job execution results are available at: http://localhost/api/v1/status/task-id, where `task-id` should be
replaced with actual task id received after the request is submitted to the "optimize" API
##### Running the tests
To be able to execute tests for backend with pytest, you need to set up following environmental variables in the corresponding
environment:
- PYTHONPATH=..:../common:../flask_app
- LOG_FILE=../flask_app/logs/logs.log
- BACKEND_OBJECTIVES_DATA=../common/objectives/data
Tests can be found in `backend/tests/` directory
#### Frontend
Install [Node.js](https://nodejs.org/en/download/) and [Nginx](https://www.nginx.com/resources/wiki/start/topics/tutorials/install/)
web server.
* Navigate to `frontend` directory
* Build a package:
```bash
npm ci && npm run build
```
* Remove default nginx configurations from nginx system directory
```bash
# location may vary based on your system and installation
rm /etc/nginx/conf.d/default.conf
```
* Replace deleted configs with custom ones
```bash
# target location may vary based on your system and installation
cp ./config/nginx.conf /etc/nginx/conf.d/
```
* Move build files to the corresponding nginx directory
```bash
cp -R ./build/* /usr/share/nginx/html
```
* Restart nginx web server
## Contributing
mRNAid is an open platform, please propose your changes and improvements. This can be done through the [Issues](link)
tab.
## License
Released under MIT License