added pubchem search
This commit is contained in:
parent
ca50f9cb69
commit
a76126e01e
|
@ -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()])
|
|
@ -10,3 +10,5 @@ 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
|
||||
|
||||
PC00 = Could not find any compound on PubChem matching the query.
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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 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()
|
||||
|
|
Loading…
Reference in New Issue