aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNavan Chauhan <navanchauhan@gmail.com>2020-08-24 16:02:32 +0530
committerNavan Chauhan <navanchauhan@gmail.com>2020-08-24 16:02:32 +0530
commitae27a5c9996f34487ee0f2669104b30dee263189 (patch)
treefa21e14016105d3932c3e2df1163263e52bcb621
parentc9a140900dd82e5e68c49a299371e45511e2410b (diff)
added pubmed search
-rw-r--r--README.md3
-rw-r--r--app/forms.py5
-rw-r--r--app/templates/search.html50
-rw-r--r--app/views.py27
-rw-r--r--requirements.txt9
5 files changed, 91 insertions, 3 deletions
diff --git a/README.md b/README.md
index 231bbec..232e35e 100644
--- a/README.md
+++ b/README.md
@@ -5,6 +5,9 @@
[![DeepSource](https://static.deepsource.io/deepsource-badge-dark-mini.svg)](https://deepsource.io/gh/navanchauhan/Curie-Web/?ref=repository-badge)
+**Do Not Forget To Change DB Host configuration!**
+
+
```
export PATH=$PATH:/home/pi/Desktop/Curie-Web/app/src/scripts
diff --git a/app/forms.py b/app/forms.py
index 44dadfc..975b3ad 100644
--- a/app/forms.py
+++ b/app/forms.py
@@ -36,4 +36,7 @@ class statusForm(FlaskForm):
class generateSMILES(FlaskForm):
n = IntegerField('Number of Molecules to Generate',default=1,validators=[DataRequired()])
- #modelSelection = SelectField('Model',choices=[("alpha","Alpha"),("beta","Beta")]) \ No newline at end of file
+ #modelSelection = SelectField('Model',choices=[("alpha","Alpha"),("beta","Beta")])
+
+class PyMedSearch(FlaskForm):
+ query = StringField('Search Query for PubMed',default="Covid-19",validators=[DataRequired()]) \ No newline at end of file
diff --git a/app/templates/search.html b/app/templates/search.html
new file mode 100644
index 0000000..1faf151
--- /dev/null
+++ b/app/templates/search.html
@@ -0,0 +1,50 @@
+{% extends 'base.html' %}
+
+{% block main %}
+ <h1>Curie Search</h1>
+ <p>Search PubMed articles.</p>
+ <form action="{{ url_for('pubmed') }}" 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">
+ <p class="card-text"><b>DOI: </b><a href="https://doi.org/{{result[x]['doi']}}">{{result[x]['doi']}}</a></p>
+ <p class="card-text"><b>PubMed ID: </b><a href="https://pubmed.ncbi.nlm.nih.gov/{{result[x]['pubmed_id']}}">{{result[x]['pubmed_id']}}</a></p>
+ <p class="card-text"><b>Download: </b><a href="https://sci-hub.tw/{{result[x]['doi']}}">Sci-Hub</a></p>
+ <p class="card-text"><b>Journal: </b>{{result[x]['journal']}}</p>
+ </div>
+ </div>
+ <div class="col-md-8">
+ <div class="card-body">
+ <h5 class="card-title">{{result[x]["title"]}}</h5>
+ <p class="card-text"><b>Abstract: </b>{{result[x]["abstract"]}}</p>
+ <p class="card-text"><small class="text-muted">Published on {{result[x]['publication_date']}}</small></p>
+ </div>
+ </div>
+ </div>
+ </div>
+ {% endfor %}
+ {% endif %}
+
+{% endblock %} \ No newline at end of file
diff --git a/app/views.py b/app/views.py
index 0f544b1..89b0374 100644
--- a/app/views.py
+++ b/app/views.py
@@ -9,10 +9,13 @@ from flask import render_template, request, flash
from werkzeug.utils import secure_filename
from random import choice, shuffle
from string import digits, ascii_lowercase
+from pymed import PubMed
+from datetime import datetime
+import json
# Note: that when using Flask-WTF we need to import the Form Class that we created
# in forms.py
-from .forms import MyForm, curieForm, statusForm, generateSMILES
+from .forms import MyForm, curieForm, statusForm, generateSMILES, PyMedSearch
def gen_word(N, min_N_dig, min_N_low):
choose_from = [digits]*min_N_dig + [ascii_lowercase]*min_N_low
@@ -47,6 +50,26 @@ def visualise():
"""Render visualisation page."""
return render_template('visualise.html')
+@app.route('/Search',methods=['GET','POST'])
+def pubmed():
+ """Query PubMed"""
+ form = PyMedSearch()
+ pubmed = PubMed(tool="Curie", email="navanchauhan@gmail.com")
+
+ if request.method == 'POST' and form.validate_on_submit():
+ q = form.query.data
+ print(form)
+ print(pubmed)
+ results = pubmed.query(q,max_results=100)
+ search = []
+ for x in results:
+ search.append(x.toDict())
+
+ return render_template('search.html',result=search,form=form)
+
+ flash_errors(form)
+ return render_template('search.html',form=form)
+
@app.route('/Status',methods=['GET','POST'])
def status():
taskStatusForm = statusForm()
@@ -110,7 +133,7 @@ def wtform():
flash_errors(myform)
return render_template('wtform.html', form=myform)
-tfWorking = -1
+tfWorking = 0
if tfWorking == -1:
try:
diff --git a/requirements.txt b/requirements.txt
index d031e0e..8fb62fd 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -16,3 +16,12 @@ uvicorn
tensorflow-cpu==2.2.0
bunch
tqdm
+prettytable
+gradio
+git+https://github.com/bp-kelley/descriptastorus
+pandas_flavor
+subword_nmt
+wget
+lifelines
+scikit-plot
+pymed \ No newline at end of file