From f6196ac068280e76e096ff6a1c66e584ec8cbaa7 Mon Sep 17 00:00:00 2001 From: Navan Chauhan Date: Wed, 2 Sep 2020 18:15:21 +0530 Subject: added instructions in README and deleted misc file --- README.md | 75 +++++++++++++++++++++++++++++++++++++++++++++---- app/run_docking.py | 82 ------------------------------------------------------ app/run_local.py | 82 ------------------------------------------------------ app/views.py | 3 +- 4 files changed, 72 insertions(+), 170 deletions(-) delete mode 100644 app/run_docking.py delete mode 100644 app/run_local.py diff --git a/README.md b/README.md index 232e35e..ab6bfda 100644 --- a/README.md +++ b/README.md @@ -4,15 +4,80 @@ ![Database Tests](https://github.com/navanchauhan/Curie-Web/workflows/Test%20Database/badge.svg) [![DeepSource](https://static.deepsource.io/deepsource-badge-dark-mini.svg)](https://deepsource.io/gh/navanchauhan/Curie-Web/?ref=repository-badge) +Tested on: +* macOS 10.15 (Catalina) +* Ubuntu 20.04 - Raspberry Pi 4 **Do Not Forget To Change DB Host configuration!** +## 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` + +## 2. Changing the Configuration + +Replace the values in `app/__init__.py`, `app/dock-single.py` and `app/dock-docker.py` + +## 3. Enabling LSTM Generator + +Open `app/views.py` + +Make sure you have installed Tensorflow. Replace the following: + +```python +tfWorking = 0 ``` -export PATH=$PATH:/home/pi/Desktop/Curie-Web/app/src/scripts -export PYTHONPATH=$PYTHONPATH:/home/pi/Desktop/Curie-Web/app/src -alias plip="python3 /home/pi/Desktop/Curie-Web/app/src/plip/plipcmd.py" -chmod +x /home/pi/Desktop/Curie-Web/app/src/scripts/*.sh -chmod +x /home/pi/Desktop/Curie-Web/app/src/scripts/*.py + +with + +```python +tfWorking = -1 ``` + +## 4. 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, run the following: + +``` +cp COLLADA2GLTF-bin /usr/local/bin/collada2gltf +``` + +## 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"` \ No newline at end of file diff --git a/app/run_docking.py b/app/run_docking.py deleted file mode 100644 index 1b86d92..0000000 --- a/app/run_docking.py +++ /dev/null @@ -1,82 +0,0 @@ -import mysql.connector as con - -mycon = con.connect(host="sql12.freesqldatabase.com",user="sql12352288",password="7X35JENbK3",port=3306,database="sql12352288") -mycursor = mycon.cursor() - -sql_select_Query = "select * from curie where done=0 LIMIT 1" -mycursor.execute(sql_select_Query) - -records = mycursor.fetchall() - -def email(zipArchive): - import smtplib - from email.mime.multipart import MIMEMultipart - from email.mime.text import MIMEText - from email.mime.base import MIMEBase - from email import encoders - - fromaddr = "navanchauhan@gmail.com" - toaddr = toEmail - - msg = MIMEMultipart() - msg['From'] = fromaddr - msg['To'] = toaddr - msg['Subject'] = "Curie Web Results for Job ID " + str(jobID) - body = "Attached Zip contains the docked files, PLIP report and PyMOL Visualisations. If the ZIP file does not contain these files, please report this issue by replying to this email. Job was submitted on {} with the description {}".format(date, description) - - msg.attach(MIMEText(body, 'plain')) - filename = "Curie_Web_Results_Job_ID_" + str(jobID) + ".zip" - p = MIMEBase('application', 'octet-stream') - with open((str(zipArchive) + ".zip"), "rb") as attachment: - p.set_payload((attachment).read()) - encoders.encode_base64(p) - p.add_header('Content-Disposition', "attachment; filename= %s" % filename) - msg.attach(p) - - s = smtplib.SMTP('smtp.gmail.com', 587) - s.starttls() - s.login(fromaddr, 'ircd mday avbc tice') - - text = msg.as_string() - - s.sendmail(fromaddr, toaddr, text) - s.quit() - - -print(records[0]) -r = records[0] -jobID = r[0] -toEmail = r[1] -target = r[2] -ligand = r[3] -config = r[4] -date = r[5] -description = r[6] - -import os -cd = os.getcwd() -f = os.path.join(cd,"static/uploads") -t = os.path.join(f,"receptor",target) -r = os.path.join(f,"ligands",ligand) -c = os.path.join(f,"configs",config) -print(f) -import tempfile -from shutil import copy -from shutil import make_archive - -with tempfile.TemporaryDirectory() as directory: - print('The created temporary directory is %s' % directory) - os.chdir(directory) - copy(t,os.getcwd()) - copy(r,os.getcwd()) - copy(c, os.getcwd()) - os.system("docker run --rm -v ${PWD}:/results -w /results -u $(id -u ${USER}):$(id -g ${USER}) navanchauhan/curie-cli -r %s -l %s -c %s -dpi" % (target,ligand,config)) - #copy("report.pdf",f) - z = "Curie_Web_Result_"+str(jobID) - zi = os.path.join(f,z) - make_archive(zi, 'zip', directory) - #copy(("Curie_Web_Result_"+str(jobID)),f) - email(zi) - #print((str(zi) + ".zip")) - mycursor.execute("UPDATE curie set done=1 where id={}".format(jobID)) - mycon.commit() \ No newline at end of file diff --git a/app/run_local.py b/app/run_local.py deleted file mode 100644 index 4b902d2..0000000 --- a/app/run_local.py +++ /dev/null @@ -1,82 +0,0 @@ -import mysql.connector as con - -mycon = con.connect(host="sql12.freesqldatabase.com",user="sql12352288",password="7X35JENbK3",port=3306,database="sql12352288") -mycursor = mycon.cursor() - -sql_select_Query = "select * from curie where done=0 LIMIT 1" -mycursor.execute(sql_select_Query) - -records = mycursor.fetchall() - -def email(zipArchive): - import smtplib - from email.mime.multipart import MIMEMultipart - from email.mime.text import MIMEText - from email.mime.base import MIMEBase - from email import encoders - - fromaddr = "navanchauhan@gmail.com" - toaddr = toEmail - - msg = MIMEMultipart() - msg['From'] = fromaddr - msg['To'] = toaddr - msg['Subject'] = "Curie Web Results for Job ID " + str(jobID) - body = "Attached Zip contains the docked files, PLIP report and PyMOL Visualisations. If the ZIP file does not contain these files, please report this issue by replying to this email. Job was submitted on {} with the description {}".format(date, description) - - msg.attach(MIMEText(body, 'plain')) - filename = "Curie_Web_Results_Job_ID_" + str(jobID) + ".zip" - p = MIMEBase('application', 'octet-stream') - with open((str(zipArchive) + ".zip"), "rb") as attachment: - p.set_payload((attachment).read()) - encoders.encode_base64(p) - p.add_header('Content-Disposition', "attachment; filename= %s" % filename) - msg.attach(p) - - s = smtplib.SMTP('smtp.gmail.com', 587) - s.starttls() - s.login(fromaddr, 'ircd mday avbc tice') - - text = msg.as_string() - - s.sendmail(fromaddr, toaddr, text) - s.quit() - - -print(records[0]) -r = records[0] -jobID = r[0] -toEmail = r[1] -target = r[2] -ligand = r[3] -config = r[4] -date = r[5] -description = r[6] - -import os -cd = os.getcwd() -f = os.path.join(cd,"static/uploads") -t = os.path.join(f,"receptor",target) -r = os.path.join(f,"ligands",ligand) -c = os.path.join(f,"configs",config) -print(f) -import tempfile -from shutil import copy -from shutil import make_archive - -with tempfile.TemporaryDirectory() as directory: - print('The created temporary directory is %s' % directory) - os.chdir(directory) - copy(t,os.getcwd()) - copy(r,os.getcwd()) - copy(c, os.getcwd()) - os.system("main_local.sh -r %s -l %s -c %s -dpi" % (target,ligand,config)) - #copy("report.pdf",f) - z = "Curie_Web_Result_"+str(jobID) - zi = os.path.join(f,z) - make_archive(zi, 'zip', directory) - #copy(("Curie_Web_Result_"+str(jobID)),f) - email(zi) - #print((str(zi) + ".zip")) - mycursor.execute("UPDATE curie set done=1 where id={}".format(jobID)) - mycon.commit() diff --git a/app/views.py b/app/views.py index 65dd4a9..86a01fd 100644 --- a/app/views.py +++ b/app/views.py @@ -222,7 +222,8 @@ def dock_upload(): mycon.commit() print("Description",description) - + cwd = os.path.join(os.getcwd(),"app") + subprocess.Popen(['python3', 'dock-docker.py'],cwd=cwd) return render_template('display_result.html', filename="OwO", description=description,job=jobID) flash_errors(form) -- cgit v1.2.3