diff options
author | Navan Chauhan <navanchauhan@gmail.com> | 2020-08-24 16:02:32 +0530 |
---|---|---|
committer | Navan Chauhan <navanchauhan@gmail.com> | 2020-08-24 16:02:32 +0530 |
commit | ae27a5c9996f34487ee0f2669104b30dee263189 (patch) | |
tree | fa21e14016105d3932c3e2df1163263e52bcb621 | |
parent | c9a140900dd82e5e68c49a299371e45511e2410b (diff) |
added pubmed search
-rw-r--r-- | README.md | 3 | ||||
-rw-r--r-- | app/forms.py | 5 | ||||
-rw-r--r-- | app/templates/search.html | 50 | ||||
-rw-r--r-- | app/views.py | 27 | ||||
-rw-r--r-- | requirements.txt | 9 |
5 files changed, 91 insertions, 3 deletions
@@ -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 |