From 4d736528dd650793a498b24909567638972d2d08 Mon Sep 17 00:00:00 2001
From: Zachary Sloan
Date: Wed, 10 Apr 2013 21:19:08 +0000
Subject: Created template for quick search page
Fixed a couple bugs with quick_search_table.py
---
wqflask/maintenance/quick_search_table.py | 64 +++++----
wqflask/wqflask/search_results.py | 7 +-
wqflask/wqflask/templates/quick_search.html | 215 ++++++++++++++++++++++++++++
3 files changed, 256 insertions(+), 30 deletions(-)
create mode 100644 wqflask/wqflask/templates/quick_search.html
diff --git a/wqflask/maintenance/quick_search_table.py b/wqflask/maintenance/quick_search_table.py
index a6ca6265..75bc7d00 100644
--- a/wqflask/maintenance/quick_search_table.py
+++ b/wqflask/maintenance/quick_search_table.py
@@ -24,6 +24,8 @@ from sqlalchemy.orm import scoped_session, sessionmaker, relationship, backref
from sqlalchemy.orm.exc import NoResultFound
from sqlalchemy.ext.declarative import declarative_base
+from pprint import pformat as pf
+
import zach_settings as settings
Engine = sa.create_engine(settings.SQLALCHEMY_DATABASE_URI,
@@ -124,6 +126,7 @@ class PublishXRef(Base):
"description",
"lrs",
"publication_id",
+ "pubmed_id",
"year",
"authors"
).from_statement(
@@ -133,6 +136,7 @@ class PublishXRef(Base):
"Phenotype.Original_description as description, "
"PublishXRef.LRS as lrs, "
"PublishXRef.PublicationId as publication_id, "
+ "Publication.PubMed_ID"
"Publication.Year as year, "
"Publication.Authors as authors "
"FROM PublishXRef, "
@@ -173,7 +177,7 @@ class PublishXRef(Base):
return json_results
class GenoXRef(Base):
- __tablename__ = 'ProbeSetXRef'
+ __tablename__ = 'GenoXRef'
GenoFreezeId = sa.Column(sa.Integer, primary_key=True)
GenoId = sa.Column(sa.Integer, primary_key=True)
@@ -191,14 +195,16 @@ class GenoXRef(Base):
values['the_key'] = json.dumps([item.GenoId, item.GenoFreezeId])
values['terms'] = cls.get_unique_terms(item.GenoId)
print("terms is:", values['terms'])
- values['result_fields'] = cls.get_result_fields(item.GenoId, item.GenoFreezeId)
- ins = QuickSearch.insert().values(**values)
- conn.execute(ins)
+ if values['terms']:
+ values['result_fields'] = cls.get_result_fields(item.GenoId, item.GenoFreezeId)
+ ins = QuickSearch.insert().values(**values)
+ conn.execute(ins)
counter += 1
print("Done:", counter)
@staticmethod
def get_unique_terms(geno_id):
+ print("geno_id: ", geno_id)
results = Session.query(
"name",
"marker_name"
@@ -208,23 +214,26 @@ class GenoXRef(Base):
"FROM Geno "
"WHERE Geno.Id = :geno_id ").params(geno_id=geno_id).all()
+ print("results: ", pf(results))
+
unique = set()
- for item in results[0]:
- #print("locals:", locals())
- if not item:
- continue
- for token in item.split():
- if len(token) > 2:
- try:
- # This hopefully ensures that the token is utf-8
- token = token.encode('utf-8')
- print(" ->", token)
- except UnicodeDecodeError:
- print("\n-- UDE \n")
- # Can't get it into utf-8, we won't use it
- continue
-
- unique.add(token)
+ if len(results):
+ for item in results[0]:
+ #print("locals:", locals())
+ if not item:
+ continue
+ for token in item.split():
+ if len(token) > 2:
+ try:
+ # This hopefully ensures that the token is utf-8
+ token = token.encode('utf-8')
+ print(" ->", token)
+ except UnicodeDecodeError:
+ print("\n-- UDE \n")
+ # Can't get it into utf-8, we won't use it
+ continue
+
+ unique.add(token)
print("\nUnique terms are: {}\n".format(unique))
return " ".join(unique)
@@ -233,18 +242,13 @@ class GenoXRef(Base):
def get_result_fields(geno_id, dataset_id):
results = Session.query(
"name",
- "species",
+ "marker_name",
"group_name",
+ "species",
"dataset",
"dataset_name",
- "symbol",
- "description",
"chr", "mb",
- "lrs",
- "genbank_id",
- "gene_id",
- "chip_id",
- "chip_name"
+ "source"
).from_statement(
"SELECT Geno.Name as name, "
"Geno.Marker_Name as marker_name, "
@@ -374,7 +378,7 @@ class ProbeSetXRef(Base):
"symbol",
"description",
"chr", "mb",
- "lrs",
+ "lrs", "mean",
"genbank_id",
"gene_id",
"chip_id",
@@ -390,6 +394,7 @@ class ProbeSetXRef(Base):
"ProbeSet.Chr as chr, "
"ProbeSet.Mb as mb, "
"ProbeSetXRef.LRS as lrs, "
+ "ProbeSetXRef.mean as mean, "
"ProbeSet.GenbankId as genbank_id, "
"ProbeSet.GeneId as gene_id, "
"ProbeSet.ChipId as chip_id, "
@@ -463,6 +468,7 @@ def page_query(q):
def main():
+ GenoXRef.run()
ProbeSetXRef.run()
PublishXRef.run()
diff --git a/wqflask/wqflask/search_results.py b/wqflask/wqflask/search_results.py
index 499782ac..dc872a8b 100644
--- a/wqflask/wqflask/search_results.py
+++ b/wqflask/wqflask/search_results.py
@@ -39,8 +39,13 @@ from utility import formatting
#from base.JinjaPage import JinjaEnv, JinjaPage
+#class QuickSearchResult(object):
+ #def __init__(self, key, result_fields):
+ # self.key = key
+ # self.result_fields = result_fields
+
-class SearchResultPage():
+class SearchResultPage(object):
#maxReturn = 3000
diff --git a/wqflask/wqflask/templates/quick_search.html b/wqflask/wqflask/templates/quick_search.html
new file mode 100644
index 00000000..d50b4937
--- /dev/null
+++ b/wqflask/wqflask/templates/quick_search.html
@@ -0,0 +1,215 @@
+{% extends "base.html" %}
+{% block title %}QuickSearch Results{% endblock %}
+{% block content %}
+
+
+ GeneNetwork found {{ numify(results|count, "record", "records") }}.
+ QuickSearch Results
+
We across all data sets to find all records that match:
+ +To study a record, click on its ID below.
+ Check records below and click Add button to add to selection.
Id | +Species | +Group | +Description | +LRS | +Year | +Authors | +
---|---|---|---|---|---|---|
{{ result['phenotype_id'] }} | +{{ result['species'] }} | +{{ result['group_name'] }} | +{{ result['description'] }} | +{{ result['lrs'] }} | ++ + {{ result['year'] }} + + | +{{ result['authors'] }} | + {% endfor %} +
Record ID | +Species | +Group | +Data Set | +Symbol | +Description | +Location | +Mean Expr | +Max LRS | +
---|---|---|---|---|---|---|---|---|
+ + | +{{ result['species'] }} | +{{ result['group_name'] }} | +{{ result['dataset_name'] }} | +{{ result['symbol'] }} | +{{ result['description'] }} | +{{ result['chr'] }} : {{ result['mb'] }} | +{{ result['mean'] }} | +{{ result['lrs'] }} | + {% endfor %} +
Marker | +Species | +Group | +Data Set | +Location | +
---|---|---|---|---|
+ + {{ result['marker_name'] }} + + | +{{ result['species'] }} | +{{ result['group_name'] }} | +{{ result['dataset_name'] }} | +{{ result['chr'] }} : {{ result['mb'] }} | + {% endfor %} +