This repository contains our project work for reducing the RNA design problem to SAT. It uses pysat
(SAT solver) to find the boolean variables assignment which corresponds to the solution of the RNA design problem, if it exists. The solution to the RNA design problem is a sequence of nucleotides which uniquely folds into the input secondary structure. Any alternative structure that the sequence can fold into must contain strictly fewer base pairs than the input secondary structure.
The file enumeration.py
contains the code for solving the RNA design problem using the naive enumeration method.
The file sat.py
contains the code for reducing the RNA design problem to SAT and then solving it.
We have hosted our RNA Design SAT Solver at https://rna-design-web-server.uw.r.appspot.com. You can use this web server to design your own RNA sequences for a target secondary structure.
Alternatively, you can run the code on your local machine by following the instructions below.
- Python 3.6+
pip
(Python package installer)pysat
libraryFlask
web framework
-
Clone the repository to your local machine:
git clone https://github.com/1998apoorvmalik/rna-design-sat-reduction cd rna-design-sat-reduction
-
[Optional] Create and activate a virtual environment:
python3 -m venv venv source venv/bin/activate
-
Install the required packages:
pip install -r requirements.txt
-
Run the Flask development server:
python main.py
-
Open your web browser and navigate to:
http://127.0.0.1:5000/
We welcome contributions to improve the project. Please submit a pull request or open an issue to discuss changes.
If you have any questions or need further assistance, feel free to contact us at [malikap@oregonstate.edu], [ameyass@oregonstate.edu].