added pubchem search

This commit is contained in:
Navan Chauhan 2020-09-16 20:00:35 +05:30
parent ca50f9cb69
commit a76126e01e
6 changed files with 70 additions and 3 deletions

View File

@ -52,4 +52,4 @@ class generatePDBQTS(FlaskForm):
name = StringField('Compound Name (Optional)')
class PyMedSearch(FlaskForm):
query = StringField('Search Query for PubMed',default="Covid-19",validators=[DataRequired()])
query = StringField('Search Query for PubMed',default="Query",validators=[DataRequired()])

View File

@ -9,4 +9,6 @@ PL01 = Failed to fetch the PDB, please check the PDB Code
DB01 = This Job ID does not exist 😠. If you think this is an error, please contact us.
CW01 = Looks like an invalid PDB ID
CW01 = Looks like an invalid PDB ID
PC00 = Could not find any compound on PubChem matching the query.

View File

@ -3,7 +3,7 @@
{% block main %}
<h2>Oh Snap! An error occured</h2>
<p>Error Code: {{code}}</p>
<div class="alert alert-warning" role="alert">Error Code: {{code}}</div>
<p>Error Description: {{description}}</p>
<!--<section>
<style>

View File

@ -18,6 +18,7 @@
<h3>Researching</h3>
<ul>
<li><a href="{{ url_for('pubmed') }}">PubMed Search</a> - Handy PubMed search with direct download links</li>
<li><a href="{{url_for('pubchem')}}">PubChem Search</a> - Get Compound SMILES</li>
<li>Qrious App - You can enter a question for a set of papers (e.g. ChemRxiv preprints) and it uses AI to answer it for each individual paper based on their abstract</li>
</ul>

View File

@ -0,0 +1,48 @@
{% extends 'base.html' %}
{% block main %}
<h1>SMILES Search</h1>
<p>Get Compound SMILES through PubChem.</p>
<form action="{{ url_for('pubchem') }}" method="post" enctype="multipart/form-data">
{% include 'flash_messages.html' %}
{{ form.csrf_token }}
<div class="form-row">
{{ form.query.label }}
{{ form.query(class="form-control")}}
</div>
<!--<div class="form-row">
{\{ form.modelSelection.label }}
{\{ form.modelSelection(class="form-control")}}
</div>-->
<br>
<div class="form-row">
<button type="submit" class="btn btn-primary">Search</button>
</div>
</form>
{% if result %}
<h3>Search Results</h3>
{% for x in range(result|length) %}
<!--<i>{\{result}}</i>-->
<!--<p>{{result[x]}}</p>-->
<div class="card mb-3">
<div class="row no-gutters">
<div class="col-md-4 text-white bg-dark">
<div class="card-body">
<img src="https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/{{result[x]['CID']}}/PNG" class="card-img">
</div>
</div>
<div class="col-md-8">
<div class="card-body">
<h5 class="card-title"><b>CID:</b> <a href="https://pubchem.ncbi.nlm.nih.gov/compound/{{result[x]['CID']}}">{{result[x]["CID"]}}</a></h5>
<p class="card-text"><b>Canonical SMILES: </b>{{result[x]["CanonicalSMILES"]}}</p>
<p class="card-text"><b>Isomeric SMILES: </b>{{result[x]["IsomericSMILES"]}}</p>
<p class="card-text"><b>2D Fingerprint </b>{{result[x]["Fingerprint2D"]}}</p>
</div>
</div>
</div>
</div>
{% endfor %}
{% endif %}
{% endblock %}

View File

@ -14,6 +14,8 @@ from datetime import datetime,date
import json
import subprocess
import requests
import logging
import logzero
from logzero import logger
@ -100,6 +102,20 @@ def pubmed():
flash_errors(form)
return render_template('search.html',form=form)
@app.route('/Compound-Search',methods=['GET','POST'])
def pubchem():
form = PyMedSearch()
if request.method == 'POST' and form.validate_on_submit():
q = form.query.data
response = requests.get('https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/name/%s/property/Fingerprint2D,CanonicalSMILES,IsomericSMILES/JSON' % q.strip())
if response.status_code == 404:
return render_template('error.html',code="PC00",description=errors["PC00"])
search = response.json()["PropertyTable"]["Properties"]
print(search)
return render_template('search-pubchem.html',result=search,form=form)
return render_template('search-pubchem.html',form=form)
@app.route('/Status',methods=['GET','POST'])
def status():
taskStatusForm = statusForm()