added pubchem search
This commit is contained in:
parent
ca50f9cb69
commit
a76126e01e
|
@ -52,4 +52,4 @@ class generatePDBQTS(FlaskForm):
|
||||||
name = StringField('Compound Name (Optional)')
|
name = StringField('Compound Name (Optional)')
|
||||||
|
|
||||||
class PyMedSearch(FlaskForm):
|
class PyMedSearch(FlaskForm):
|
||||||
query = StringField('Search Query for PubMed',default="Covid-19",validators=[DataRequired()])
|
query = StringField('Search Query for PubMed',default="Query",validators=[DataRequired()])
|
|
@ -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.
|
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.
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
{% block main %}
|
{% block main %}
|
||||||
<h2>Oh Snap! An error occured</h2>
|
<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>
|
<p>Error Description: {{description}}</p>
|
||||||
<!--<section>
|
<!--<section>
|
||||||
<style>
|
<style>
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
<h3>Researching</h3>
|
<h3>Researching</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="{{ url_for('pubmed') }}">PubMed Search</a> - Handy PubMed search with direct download links</li>
|
<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>
|
<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>
|
</ul>
|
||||||
|
|
||||||
|
|
|
@ -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 %}
|
16
app/views.py
16
app/views.py
|
@ -14,6 +14,8 @@ from datetime import datetime,date
|
||||||
import json
|
import json
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import logzero
|
import logzero
|
||||||
from logzero import logger
|
from logzero import logger
|
||||||
|
@ -100,6 +102,20 @@ def pubmed():
|
||||||
flash_errors(form)
|
flash_errors(form)
|
||||||
return render_template('search.html',form=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'])
|
@app.route('/Status',methods=['GET','POST'])
|
||||||
def status():
|
def status():
|
||||||
taskStatusForm = statusForm()
|
taskStatusForm = statusForm()
|
||||||
|
|
Loading…
Reference in New Issue