# Curie-Web ![Database and Backend](https://github.com/navanchauhan/Curie-Web/workflows/Test%20Database%20and%20Backend/badge.svg) ![Curie-Web Cover](./misc/Title.png) Tested on: * macOS 10.15 (Catalina) * Ubuntu 20.04 - Raspberry Pi 4 # Quick Start (Docker-Compose) You can quickly get started and test Curie-Web without needing to manage dependencies by using the `docker-compose` image. This has all features except AR/3D Model support. Otherwise, it is production ready. ``` git clone https://github.com/navanchauhan/Curie-Web cd Curie-Web docker-compose up ``` Do not forget to edit `config.ini` for the email section. Do not change the database settings for running it via docker. ## Caveat(s): * This does not support generating a 3D Model and thus, AR viewer will not work on the Job Status page. # Installation ## 1. Installing Dependencies ### 1.1 Docker Once you have installed docker, make sure to pull the following images (Otherwise, these will automatically get downloaded when you run the web-server) * navanchauhan/curie-cli (amd64/aarch64) * navanchauhan/usd-from-gltf (aarch64) * leon/usd-from-gltf (amd64) ### 1.2 PLIP Install from [pharmai/plip](https://github.com/pharmai/plip). In case you have problems installing it, install it from the forked repo [navanchauhan/plip](https://github.com/navanchauhan/plip) ### 1.3 PyMOL with Python Bindings (version >= 2.0) * macOS users can use Homebrew to install it via `brew install pymol` * Users using apt can install it via `sudo apt install pymol` ### 1.4 Open-Babel (version >= 3.0) macOS users can use Homebrew to install it via `brew install open-babel` Users using apt can install it via `sudo apt install openbabel python3-openbabel` ### 1.5 Tensorflow (Optional) Please ensure you install Tensorflow 2.x. If tensorflow is not properly installed, it will automatically disable the LSTM Module. ## 2. Changing the Configuration Replace the values in `config.ini` Default Values: ```ini [DATABASE] HOST = navanspi.duckdns.org PORT = 3306 USER = curieweb PASSWORD = curie-web-russian-54 NAME = curie [SMTP] SERVER = smtp.gmail.com PORT = 587 EMAIL = navanchauhan@gmail.com PASSWORD = okrs shoc ahtk idui [LOGS] LOG = True SAVE_LOGS = False [FILES] UPLOAD_FOLDER = ./app/static/uploads LOG_FOLDER = ./app/logs/ [EXECUTION] INSTANT = True [FEATURES] LSTM = False ``` ### **Database** | Name | Description | |----------|---------------------| | HOST | MySQL Database Host | | PORT | MySQL Database Port | | USER | Username | | PASSWORD | Password | | NAME | MySQL Database Name | ### **SMTP** | Name | Description | |----------|-------------| | SERVER | SMTP Server | | PORT | SMTP Port | | EMAIL | Email | | PASSWORD | Password | ### **LOGS** | Name | Description | |-----------|-------------| | LOG | Log | | SAVE_LOGS | SAVE LOGS | ### **FILES** | Name | Description | |---------------|-----------------------| | UPLOAD_FOLDER | Folder to store files | | LOG_FOLDER | Folder to store logs | ### **EXECUTION** | Name | Description | |---------------|-----------------------| | INSTANT | Whether to run the docking jobs instantly (True or False) | ### **FEATURES** | Name | Description | |---------------|-----------------------| | LSTM | Enable LSTM Generator (True or False) | ## 3. Adding AR Model Support Make sure you have PyMOL 2.0 or higher Either download the precompiled binaries from [COLLADA2GLTF](https://github.com/KhronosGroup/COLLADA2GLTF) or compile it on your own Once you have the `COLLADA2GLTF-bin` file, copy the file: ``` cp COLLADA2GLTF-bin /usr/local/bin/collada2gltf ``` ## 4. Setting up the Database You will first need to create a database and grant all priviliges to a user. Make sure you have correctly configured the `config.ini` file. After tha simply run the following commands. This will create the table(s) and check if the backend is working or not. ``` cd tests python3 dbTestFiller.py python3 backendTest.py python3 removeSample.py ``` ## 5. Running ### Without FastAPI `gunicorn api:app -b "0.0.0.0:7589"` ### With FastAPI `gunicorn api:app -k uvicorn.workers.UvicornWorker -b "0.0.0.0:7589"` ### systemd **There is a sample systemd file in the misc folder** * Configure the file and then copy it to `/etc/systemd/system` * You can start the server by running `sudo systemctl start curie` * To enable the server to start on boot run `sudo systemctl enable curie` ## Misc. ### Fine-Tuning the LSTM Module Currently the base model has been trained on 1.5 million compounds and took ~4 hours to train on Google Colab's GPU runtime. *Information to be added soon*