aboutsummaryrefslogtreecommitdiff
path: root/wqflask
diff options
context:
space:
mode:
Diffstat (limited to 'wqflask')
-rw-r--r--wqflask/base/trait.py44
-rw-r--r--wqflask/wqflask/gsearch.py166
-rwxr-xr-xwqflask/wqflask/templates/gsearch_gene.html121
-rw-r--r--wqflask/wqflask/update_search_results.py129
-rw-r--r--wqflask/wqflask/views.py12
5 files changed, 319 insertions, 153 deletions
diff --git a/wqflask/base/trait.py b/wqflask/base/trait.py
index 6c5ca8b2..af22b5a1 100644
--- a/wqflask/base/trait.py
+++ b/wqflask/base/trait.py
@@ -308,14 +308,54 @@ class GeneralTrait(object):
if isinstance(trait_info[i], basestring):
holder = unicode(trait_info[i], "utf8", "ignore")
setattr(self, field, holder)
+<<<<<<< HEAD
+
+ description_string = unicode(str(self.description).strip(codecs.BOM_UTF8), 'utf-8')
+ target_string = unicode(str(self.probe_target_description).strip(codecs.BOM_UTF8), 'utf-8')
+
+ if len(description_string) > 1 and description_string != 'None':
+ description_display = description_string
+ else:
+ description_display = self.symbol
+
+ if (len(description_display) > 1 and description_display != 'N/A' and
+ len(target_string) > 1 and target_string != 'None'):
+ description_display = description_display + '; ' + target_string.strip()
+
+ # Save it for the jinja2 template
+ self.description_display = description_display
+
+ #XZ: trait_location_value is used for sorting
+ trait_location_repr = 'N/A'
+ trait_location_value = 1000000
+
+ if self.chr and self.mb:
+ #Checks if the chromosome number can be cast to an int (i.e. isn't "X" or "Y")
+ #This is so we can convert the location to a number used for sorting
+ trait_location_value = convert_location_to_value(self.chr, self.mb)
+ #try:
+ # trait_location_value = int(self.chr)*1000 + self.mb
+ #except ValueError:
+ # if self.chr.upper() == 'X':
+ # trait_location_value = 20*1000 + self.mb
+ # else:
+ # trait_location_value = (ord(str(self.chr).upper()[0])*1000 +
+ # self.mb)
+
+ #ZS: Put this in function currently called "convert_location_to_value"
+ self.location_repr = 'Chr%s: %.6f' % (self.chr, float(self.mb))
+ self.location_value = trait_location_value
+
+=======
+>>>>>>> e0c5c1aae3aaaa1d81bcec36835a97e169dcc2e2
if self.dataset.type == 'Publish':
self.confidential = 0
if self.pre_publication_description and not self.pubmed_id:
self.confidential = 1
-
- description = self.post_publication_description
+ description = self.post_publication_description
+
#If the dataset is confidential and the user has access to confidential
#phenotype traits, then display the pre-publication description instead
#of the post-publication description
diff --git a/wqflask/wqflask/gsearch.py b/wqflask/wqflask/gsearch.py
index 4cd3874c..4f9dc316 100644
--- a/wqflask/wqflask/gsearch.py
+++ b/wqflask/wqflask/gsearch.py
@@ -1,94 +1,94 @@
from __future__ import absolute_import, print_function, division
from flask import Flask, g
-from base.data_set import create_dataset
-from base.trait import GeneralTrait
-from dbFunction import webqtlDatabaseFunction
+#from base.data_set import create_dataset
+#from base.trait import GeneralTrait
+#from dbFunction import webqtlDatabaseFunction
-from utility.benchmark import Bench
+#from utility.benchmark import Bench
class GSearch(object):
def __init__(self, kw):
self.type = kw['type']
self.terms = kw['terms']
- if self.type == "gene":
- sql = """
- SELECT
- Species.`Name` AS species_name,
- InbredSet.`Name` AS inbredset_name,
- Tissue.`Name` AS tissue_name,
- ProbeSetFreeze.Name AS probesetfreeze_name,
- ProbeSet.Name AS probeset_name,
- ProbeSet.Symbol AS probeset_symbol,
- ProbeSet.`description` AS probeset_description,
- ProbeSet.Chr AS chr,
- ProbeSet.Mb AS mb,
- ProbeSetXRef.Mean AS mean,
- ProbeSetXRef.LRS AS lrs,
- ProbeSetXRef.`Locus` AS locus,
- ProbeSetXRef.`pValue` AS pvalue,
- ProbeSetXRef.`additive` AS additive
- FROM Species, InbredSet, ProbeSetXRef, ProbeSet, ProbeFreeze, ProbeSetFreeze, Tissue
- WHERE InbredSet.`SpeciesId`=Species.`Id`
- AND ProbeFreeze.InbredSetId=InbredSet.`Id`
- AND ProbeFreeze.`TissueId`=Tissue.`Id`
- AND ProbeSetFreeze.ProbeFreezeId=ProbeFreeze.Id
- AND ( MATCH (ProbeSet.Name,ProbeSet.description,ProbeSet.symbol,alias,GenbankId, UniGeneId, Probe_Target_Description) AGAINST ('%s' IN BOOLEAN MODE) )
- AND ProbeSet.Id = ProbeSetXRef.ProbeSetId
- AND ProbeSetXRef.ProbeSetFreezeId=ProbeSetFreeze.Id
- AND ProbeSetFreeze.public > 0
- ORDER BY species_name, inbredset_name, tissue_name, probesetfreeze_name, probeset_name
- LIMIT 6000
- """ % (self.terms)
- with Bench("Running query"):
- re = g.db.execute(sql).fetchall()
- self.trait_list = []
- with Bench("Creating trait objects"):
- for line in re:
- dataset = create_dataset(line[3], "ProbeSet", get_samplelist=False)
- trait_id = line[4]
- #with Bench("Building trait object"):
- this_trait = GeneralTrait(dataset=dataset, name=trait_id, get_qtl_info=True, get_sample_info=False)
- self.trait_list.append(this_trait)
+ # if self.type == "gene":
+ # sql = """
+ # SELECT
+ # Species.`Name` AS species_name,
+ # InbredSet.`Name` AS inbredset_name,
+ # Tissue.`Name` AS tissue_name,
+ # ProbeSetFreeze.Name AS probesetfreeze_name,
+ # ProbeSet.Name AS probeset_name,
+ # ProbeSet.Symbol AS probeset_symbol,
+ # ProbeSet.`description` AS probeset_description,
+ # ProbeSet.Chr AS chr,
+ # ProbeSet.Mb AS mb,
+ # ProbeSetXRef.Mean AS mean,
+ # ProbeSetXRef.LRS AS lrs,
+ # ProbeSetXRef.`Locus` AS locus,
+ # ProbeSetXRef.`pValue` AS pvalue,
+ # ProbeSetXRef.`additive` AS additive
+ # FROM Species, InbredSet, ProbeSetXRef, ProbeSet, ProbeFreeze, ProbeSetFreeze, Tissue
+ # WHERE InbredSet.`SpeciesId`=Species.`Id`
+ # AND ProbeFreeze.InbredSetId=InbredSet.`Id`
+ # AND ProbeFreeze.`TissueId`=Tissue.`Id`
+ # AND ProbeSetFreeze.ProbeFreezeId=ProbeFreeze.Id
+ # AND ( MATCH (ProbeSet.Name,ProbeSet.description,ProbeSet.symbol,alias,GenbankId, UniGeneId, Probe_Target_Description) AGAINST ('%s' IN BOOLEAN MODE) )
+ # AND ProbeSet.Id = ProbeSetXRef.ProbeSetId
+ # AND ProbeSetXRef.ProbeSetFreezeId=ProbeSetFreeze.Id
+ # AND ProbeSetFreeze.public > 0
+ # ORDER BY species_name, inbredset_name, tissue_name, probesetfreeze_name, probeset_name
+ # LIMIT 6000
+ # """ % (self.terms)
+ # with Bench("Running query"):
+ # re = g.db.execute(sql).fetchall()
+ # self.trait_list = []
+ # with Bench("Creating trait objects"):
+ # for line in re:
+ # dataset = create_dataset(line[3], "ProbeSet", get_samplelist=False)
+ # trait_id = line[4]
+ # with Bench("Building trait object"):
+ # this_trait = GeneralTrait(dataset=dataset, name=trait_id, get_qtl_info=True, get_sample_info=False)
+ # self.trait_list.append(this_trait)
- elif self.type == "phenotype":
- sql = """
- SELECT
- Species.`Name`,
- InbredSet.`Name`,
- PublishFreeze.`Name`,
- PublishXRef.`Id`,
- Phenotype.`Post_publication_description`,
- Publication.`Authors`,
- Publication.`Year`,
- PublishXRef.`LRS`,
- PublishXRef.`Locus`,
- PublishXRef.`additive`
- FROM Species,InbredSet,PublishFreeze,PublishXRef,Phenotype,Publication
- WHERE PublishXRef.`InbredSetId`=InbredSet.`Id`
- AND PublishFreeze.`InbredSetId`=InbredSet.`Id`
- AND InbredSet.`SpeciesId`=Species.`Id`
- AND PublishXRef.`PhenotypeId`=Phenotype.`Id`
- AND PublishXRef.`PublicationId`=Publication.`Id`
- AND (Phenotype.Post_publication_description REGEXP "[[:<:]]%s[[:>:]]"
- OR Phenotype.Pre_publication_description REGEXP "[[:<:]]%s[[:>:]]"
- OR Phenotype.Pre_publication_abbreviation REGEXP "[[:<:]]%s[[:>:]]"
- OR Phenotype.Post_publication_abbreviation REGEXP "[[:<:]]%s[[:>:]]"
- OR Phenotype.Lab_code REGEXP "[[:<:]]%s[[:>:]]"
- OR Publication.PubMed_ID REGEXP "[[:<:]]%s[[:>:]]"
- OR Publication.Abstract REGEXP "[[:<:]]%s[[:>:]]"
- OR Publication.Title REGEXP "[[:<:]]%s[[:>:]]"
- OR Publication.Authors REGEXP "[[:<:]]%s[[:>:]]"
- OR PublishXRef.Id REGEXP "[[:<:]]%s[[:>:]]")
- ORDER BY Species.`Name`, InbredSet.`Name`, PublishXRef.`Id`
- LIMIT 6000
- """ % (self.terms, self.terms, self.terms, self.terms, self.terms, self.terms, self.terms, self.terms, self.terms, self.terms)
- re = g.db.execute(sql).fetchall()
- self.trait_list = []
- with Bench("Creating trait objects"):
- for line in re:
- dataset = create_dataset(line[2], "Publish")
- trait_id = line[3]
- this_trait = GeneralTrait(dataset=dataset, name=trait_id, get_qtl_info=True, get_sample_info=False)
- self.trait_list.append(this_trait)
+ # elif self.type == "phenotype":
+ # sql = """
+ # SELECT
+ # Species.`Name`,
+ # InbredSet.`Name`,
+ # PublishFreeze.`Name`,
+ # PublishXRef.`Id`,
+ # Phenotype.`Post_publication_description`,
+ # Publication.`Authors`,
+ # Publication.`Year`,
+ # PublishXRef.`LRS`,
+ # PublishXRef.`Locus`,
+ # PublishXRef.`additive`
+ # FROM Species,InbredSet,PublishFreeze,PublishXRef,Phenotype,Publication
+ # WHERE PublishXRef.`InbredSetId`=InbredSet.`Id`
+ # AND PublishFreeze.`InbredSetId`=InbredSet.`Id`
+ # AND InbredSet.`SpeciesId`=Species.`Id`
+ # AND PublishXRef.`PhenotypeId`=Phenotype.`Id`
+ # AND PublishXRef.`PublicationId`=Publication.`Id`
+ # AND (Phenotype.Post_publication_description REGEXP "[[:<:]]%s[[:>:]]"
+ # OR Phenotype.Pre_publication_description REGEXP "[[:<:]]%s[[:>:]]"
+ # OR Phenotype.Pre_publication_abbreviation REGEXP "[[:<:]]%s[[:>:]]"
+ # OR Phenotype.Post_publication_abbreviation REGEXP "[[:<:]]%s[[:>:]]"
+ # OR Phenotype.Lab_code REGEXP "[[:<:]]%s[[:>:]]"
+ # OR Publication.PubMed_ID REGEXP "[[:<:]]%s[[:>:]]"
+ # OR Publication.Abstract REGEXP "[[:<:]]%s[[:>:]]"
+ # OR Publication.Title REGEXP "[[:<:]]%s[[:>:]]"
+ # OR Publication.Authors REGEXP "[[:<:]]%s[[:>:]]"
+ # OR PublishXRef.Id REGEXP "[[:<:]]%s[[:>:]]")
+ # ORDER BY Species.`Name`, InbredSet.`Name`, PublishXRef.`Id`
+ # LIMIT 6000
+ # """ % (self.terms, self.terms, self.terms, self.terms, self.terms, self.terms, self.terms, self.terms, self.terms, self.terms)
+ # re = g.db.execute(sql).fetchall()
+ # self.trait_list = []
+ # with Bench("Creating trait objects"):
+ # for line in re:
+ # dataset = create_dataset(line[2], "Publish")
+ # trait_id = line[3]
+ # this_trait = GeneralTrait(dataset=dataset, name=trait_id, get_qtl_info=True, get_sample_info=False)
+ # self.trait_list.append(this_trait)
diff --git a/wqflask/wqflask/templates/gsearch_gene.html b/wqflask/wqflask/templates/gsearch_gene.html
index 7cc9a1bd..92b0b411 100755
--- a/wqflask/wqflask/templates/gsearch_gene.html
+++ b/wqflask/wqflask/templates/gsearch_gene.html
@@ -2,10 +2,6 @@
{% block title %}Search Results{% endblock %}
{% block css %}
<link rel="stylesheet" type="text/css" href="/static/new/packages/DataTables/css/jquery.dataTables.css" />
- <link rel="stylesheet" type="text/css" href="/static/packages/DT_bootstrap/DT_bootstrap.css" />
- <link rel="stylesheet" type="text/css" href="/static/packages/TableTools/media/css/TableTools.css" />
- <link rel="stylesheet" type="text/css" href="/static/new/packages/DataTables/extensions/dataTables.fixedHeader.css" >
- <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/fixedcolumns/3.0.4/css/dataTables.fixedColumns.css">
<link rel="stylesheet" type="text/css" href="/static/new/packages/DataTables/extensions/buttons.bootstrap.css" />
{% endblock %}
{% block content %}
@@ -13,6 +9,7 @@
<div class="container">
+ <p>You searched for {{ terms }}.</p>
<p>To study a record, click on its ID below.<br />Check records below and click Add button to add to selection.</p>
<div>
@@ -26,46 +23,28 @@
<br />
<br />
- <table width="2000px" class="table table-hover table-striped" id="trait_table">
+ <div style="width: 2000px;">
+ <table width="2000px" id="trait_table" class="table table-hover table-striped" >
<thead>
- <tr>
- <th style="width: 30px;"></th>
- <th>Index</th>
- <th>Species</th>
- <th>Group</th>
- <th>Tissue</th>
- <th>Dataset</th>
- <th>Record</th>
- <th>Symbol</th>
- <th>Description</th>
- <th>Location</th>
- <th>Mean</th>
- <th style="text-align: right;">Max&nbsp;&nbsp;<br>LRS<a href="http://genenetwork.org//glossary.html#L" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
- <th>Max LRS Location</th>
- <th style="text-align: right;">Additive<br>Effect<a href="http://genenetwork.org//glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
- </tr>
- </thead>
- <tbody>
- {% for this_trait in trait_list %}
- <TR id="trait:{{ this_trait.name }}:{{ this_trait.dataset.name }}">
- <TD><INPUT TYPE="checkbox" NAME="searchResult" class="checkbox trait_checkbox" style="transform: scale(1.5);" VALUE="{{ data_hmac('{}:{}'.format(this_trait.name, this_trait.dataset.name)) }}"></TD>
- <TD>{{ loop.index }}</TD>
- <TD>{{ this_trait.dataset.group.species }}</TD>
- <TD>{{ this_trait.dataset.group.name }}</TD>
- <TD>{{ this_trait.dataset.tissue }}</TD>
- <TD>{{ this_trait.dataset.fullname }}</TD>
- <TD><a href="{{ url_for('show_trait_page', trait_id = this_trait.name, dataset = this_trait.dataset.name)}}">{{ this_trait.name }}</a></TD>
- <TD>{{ this_trait.symbol }}</TD>
- <TD>{{ this_trait.description_display }}</TD>
- <TD>{{ this_trait.location_repr }}</TD>
- <TD align="right">{{ '%0.3f' % this_trait.mean|float }}</TD>
- <TD align="right">{{ '%0.3f' % this_trait.LRS_score_repr|float }}</TD>
- <TD>{{ this_trait.LRS_location_repr }}</TD>
- <TD align="right">{{ '%0.3f' % this_trait.additive|float }}</TD>
- </TR>
- {% endfor %}
- </tbody>
- </table>
+ <tr>
+ <th></th>
+ <th>Index</th>
+ <th>Species</th>
+ <th>Group</th>
+ <th>Tissue</th>
+ <th>Dataset</th>
+ <th>Record</th>
+ <th>Symbol</th>
+ <th>Description</th>
+ <th>Location</th>
+ <th>Mean</th>
+ <th>Max<br>LRS<a href="http://genenetwork.org/glossary.html#L" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+ <th>Max LRS Location</th>
+ <th>Additive<br>Effect<a href="http://genenetwork.org/glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+ </tr>
+ </thead>
+ </table>
+ </div>
</div>
</div>
@@ -156,23 +135,18 @@
console.time("Creating table");
$('#trait_table').DataTable( {
- "columns": [
- { "type": "natural" },
- { "type": "natural" },
- { "type": "natural" },
- { "type": "cust-txt" },
- { "type": "natural" },
- { "type": "natural" },
- { "type": "natural" },
- { "type": "natural" },
- { "type": "natural", "width": "15%" },
- { "type": "natural" },
- { "type": "natural" },
- { "type": "natural" },
- { "type": "natural" },
- { "type": "cust-txt" }
- ],
- "order": [[ 1, "asc" ]],
+ "processing": true,
+ "serverSide": true,
+ "paging": false,
+ "ajax": {
+ "url": "/gsearch_updating?terms={{ terms }}&type={{ type }}",
+ "type": "POST",
+ "dataType": "json",
+ "contentType": "application/json; charset=utf-8",
+ "data": function ( args ) {
+ return { "args": JSON.stringify( args ) };
+ }
+ },
"buttons": [
{
extend: 'csvHtml5',
@@ -184,15 +158,26 @@
}
}
],
- "sDom": "RZBtir",
+ "columns": [
+ { "data": "checkbox", "orderable" : false },
+ { "data": "index", "orderable" : true },
+ { "data": "species", "orderable" : true },
+ { "data": "group", "orderable" : true },
+ { "data": "tissue", "orderable" : true },
+ { "data": "dataset", "orderable" : true },
+ { "data": "record", "orderable" : true },
+ { "data": "symbol", "orderable" : true },
+ { "data": "description", "orderable" : true },
+ { "data": "location", "orderable" : true },
+ { "data": "mean", "orderable" : true },
+ { "data": "max_lrs", "orderable" : true },
+ { "data": "max_lrs_location", "orderable" : true },
+ { "data": "additive_effect", "orderable" : true }
+ ],
+ "sDom": "Bfrti",
"autoWidth": false,
- "bLengthChange": true,
- "bDeferRender": true,
- "scrollCollapse": false,
- "colResize": {
- "tableWidthFixed": false,
- },
- "paging": false
+ "scrollY": "800px",
+ "bDeferRender": true
} );
console.timeEnd("Creating table");
diff --git a/wqflask/wqflask/update_search_results.py b/wqflask/wqflask/update_search_results.py
new file mode 100644
index 00000000..ffd7fd51
--- /dev/null
+++ b/wqflask/wqflask/update_search_results.py
@@ -0,0 +1,129 @@
+from __future__ import absolute_import, print_function, division
+
+import json
+
+from flask import Flask, g
+from base.data_set import create_dataset
+from base.trait import GeneralTrait
+from dbFunction import webqtlDatabaseFunction
+
+from utility.benchmark import Bench
+
+class GSearch(object):
+
+ def __init__(self, kw):
+ self.type = kw['type']
+ self.terms = kw['terms']
+ #self.row_range = kw['row_range']
+ if self.type == "gene":
+ sql = """
+ SELECT
+ Species.`Name` AS species_name,
+ InbredSet.`Name` AS inbredset_name,
+ Tissue.`Name` AS tissue_name,
+ ProbeSetFreeze.Name AS probesetfreeze_name,
+ ProbeSet.Name AS probeset_name,
+ ProbeSet.Symbol AS probeset_symbol,
+ ProbeSet.`description` AS probeset_description,
+ ProbeSet.Chr AS chr,
+ ProbeSet.Mb AS mb,
+ ProbeSetXRef.Mean AS mean,
+ ProbeSetXRef.LRS AS lrs,
+ ProbeSetXRef.`Locus` AS locus,
+ ProbeSetXRef.`pValue` AS pvalue,
+ ProbeSetXRef.`additive` AS additive
+ FROM Species, InbredSet, ProbeSetXRef, ProbeSet, ProbeFreeze, ProbeSetFreeze, Tissue
+ WHERE InbredSet.`SpeciesId`=Species.`Id`
+ AND ProbeFreeze.InbredSetId=InbredSet.`Id`
+ AND ProbeFreeze.`TissueId`=Tissue.`Id`
+ AND ProbeSetFreeze.ProbeFreezeId=ProbeFreeze.Id
+ AND ( MATCH (ProbeSet.Name,ProbeSet.description,ProbeSet.symbol,alias,GenbankId, UniGeneId, Probe_Target_Description) AGAINST ('%s' IN BOOLEAN MODE) )
+ AND ProbeSet.Id = ProbeSetXRef.ProbeSetId
+ AND ProbeSetXRef.ProbeSetFreezeId=ProbeSetFreeze.Id
+ AND ProbeSetFreeze.public > 0
+ ORDER BY species_name, inbredset_name, tissue_name, probesetfreeze_name, probeset_name
+ LIMIT 6000
+ """ % (self.terms)
+ with Bench("Running query"):
+ re = g.db.execute(sql).fetchall()
+ self.trait_list = []
+ with Bench("Creating trait objects"):
+ for line in re:
+ dataset = create_dataset(line[3], "ProbeSet", get_samplelist=False)
+ trait_id = line[4]
+ #with Bench("Building trait object"):
+ this_trait = GeneralTrait(dataset=dataset, name=trait_id, get_qtl_info=True, get_sample_info=False)
+ self.trait_list.append(this_trait)
+
+ elif self.type == "phenotype":
+ sql = """
+ SELECT
+ Species.`Name`,
+ InbredSet.`Name`,
+ PublishFreeze.`Name`,
+ PublishXRef.`Id`,
+ Phenotype.`Post_publication_description`,
+ Publication.`Authors`,
+ Publication.`Year`,
+ PublishXRef.`LRS`,
+ PublishXRef.`Locus`,
+ PublishXRef.`additive`
+ FROM Species,InbredSet,PublishFreeze,PublishXRef,Phenotype,Publication
+ WHERE PublishXRef.`InbredSetId`=InbredSet.`Id`
+ AND PublishFreeze.`InbredSetId`=InbredSet.`Id`
+ AND InbredSet.`SpeciesId`=Species.`Id`
+ AND PublishXRef.`PhenotypeId`=Phenotype.`Id`
+ AND PublishXRef.`PublicationId`=Publication.`Id`
+ AND (Phenotype.Post_publication_description REGEXP "[[:<:]]%s[[:>:]]"
+ OR Phenotype.Pre_publication_description REGEXP "[[:<:]]%s[[:>:]]"
+ OR Phenotype.Pre_publication_abbreviation REGEXP "[[:<:]]%s[[:>:]]"
+ OR Phenotype.Post_publication_abbreviation REGEXP "[[:<:]]%s[[:>:]]"
+ OR Phenotype.Lab_code REGEXP "[[:<:]]%s[[:>:]]"
+ OR Publication.PubMed_ID REGEXP "[[:<:]]%s[[:>:]]"
+ OR Publication.Abstract REGEXP "[[:<:]]%s[[:>:]]"
+ OR Publication.Title REGEXP "[[:<:]]%s[[:>:]]"
+ OR Publication.Authors REGEXP "[[:<:]]%s[[:>:]]"
+ OR PublishXRef.Id REGEXP "[[:<:]]%s[[:>:]]")
+ ORDER BY Species.`Name`, InbredSet.`Name`, PublishXRef.`Id`
+ LIMIT 6000
+ """ % (self.terms, self.terms, self.terms, self.terms, self.terms, self.terms, self.terms, self.terms, self.terms, self.terms)
+ re = g.db.execute(sql).fetchall()
+ self.trait_list = []
+ with Bench("Creating trait objects"):
+ for line in re:
+ dataset = create_dataset(line[2], "Publish")
+ trait_id = line[3]
+ this_trait = GeneralTrait(dataset=dataset, name=trait_id, get_qtl_info=True, get_sample_info=False)
+ self.trait_list.append(this_trait)
+
+ self.results = self.convert_to_json()
+
+ def convert_to_json(self):
+ json_dict = {}
+ #json_dict['draw'] = self.draw,
+ json_dict['recordsTotal'] = len(self.trait_list),
+ json_dict['data'] = []
+
+ for i, trait in enumerate(self.trait_list):
+ trait_row = { "checkbox": "<INPUT TYPE=\"checkbox\" NAME=\"searchResult\" class=\"checkbox trait_checkbox\" style=\"transform: scale(1.5);\" VALUE=\"{}:{}\">".format(trait.name, trait.dataset.name),
+ "index": i+1,
+ "species": trait.dataset.group.species,
+ "group": trait.dataset.group.name,
+ "tissue": trait.dataset.tissue,
+ "dataset": trait.dataset.fullname,
+ "record": "<a href=\"/show_trait?trait_id=" + trait.name + "&dataset=" + trait.dataset.name + "\" target=\"_blank\">" + trait.name + "</a>",
+ "symbol": trait.symbol,
+ "description": trait.description_display,
+ "location": trait.location_repr,
+ "mean": trait.mean,
+ "max_lrs": trait.LRS_score_repr,
+ "max_lrs_location": trait.LRS_location_repr,
+ "additive_effect": trait.additive}
+ json_dict['data'].append(trait_row)
+
+ json_results = json.dumps(json_dict)
+ return json_results
+
+
+
+
diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index bd2fff50..7854b0df 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -34,6 +34,7 @@ from flask import (render_template, request, make_response, Response,
from wqflask import search_results
from wqflask import gsearch
+from wqflask import update_search_results
from wqflask import docs
from wqflask import news
from base.data_set import DataSet # Used by YAML in marker_regression
@@ -169,6 +170,17 @@ def gsearchact():
return render_template("gsearch_gene.html", **result)
elif type == "phenotype":
return render_template("gsearch_pheno.html", **result)
+
+@app.route("/gsearch_updating", methods=('POST',))
+def gsearch_updating():
+ print("REQUEST ARGS:", request.values)
+ result = update_search_results.GSearch(request.args).__dict__
+ return result['results']
+ # type = request.args['type']
+ # if type == "gene":
+ # return render_template("gsearch_gene_updating.html", **result)
+ # elif type == "phenotype":
+ # return render_template("gsearch_pheno.html", **result)
@app.route("/docedit")
def docedit():