about summary refs log tree commit diff
diff options
context:
space:
mode:
authorArtem Tarasov2015-05-13 14:16:14 +0300
committerArtem Tarasov2015-05-13 14:16:14 +0300
commit73be62c9e5ef5c4b3a87d3fcdc46f338679bf5e1 (patch)
treeda7faca70491e4c71ea23ca44154e5488e078601
parentee84f921331e7e68df0d57a1bc285b5f91780135 (diff)
downloadgenenetwork2-73be62c9e5ef5c4b3a87d3fcdc46f338679bf5e1.tar.gz
combine three similar queries into one
-rwxr-xr-xwqflask/base/data_set.py59
1 files changed, 30 insertions, 29 deletions
diff --git a/wqflask/base/data_set.py b/wqflask/base/data_set.py
index f5bd5cb8..706b193d 100755
--- a/wqflask/base/data_set.py
+++ b/wqflask/base/data_set.py
@@ -319,38 +319,39 @@ class DatasetGroup(object):
         dataset_menu = []
         print("[tape4] webqtlConfig.PUBLICTHRESH:", webqtlConfig.PUBLICTHRESH)
         print("[tape4] type webqtlConfig.PUBLICTHRESH:", type(webqtlConfig.PUBLICTHRESH))
-        results = g.db.execute("""SELECT PublishFreeze.FullName,PublishFreeze.Name FROM
-                PublishFreeze,InbredSet WHERE PublishFreeze.InbredSetId = InbredSet.Id
-                and InbredSet.Name = %s and PublishFreeze.public > %s""",
-                (self.name, webqtlConfig.PUBLICTHRESH))
-        for item in results.fetchall():
-            dataset_menu.append(dict(tissue=None,
-                                     datasets=[item]))
-
-        results = g.db.execute("""SELECT GenoFreeze.FullName,GenoFreeze.Name FROM GenoFreeze,
-                InbredSet WHERE GenoFreeze.InbredSetId = InbredSet.Id and InbredSet.Name =
-                %s and GenoFreeze.public > %s""",
-                (self.name, webqtlConfig.PUBLICTHRESH))
-        for item in results.fetchall():
-            dataset_menu.append(dict(tissue=None,
-                                datasets=[item]))
-
-        #03/09/2009: Xiaodong changed the SQL query to order by Name as requested by Rob.
         results = g.db.execute('''
-            SELECT Tissue.Name, ProbeSetFreeze.FullName,ProbeSetFreeze.Name
-            FROM ProbeSetFreeze, ProbeFreeze, InbredSet, Tissue
-            WHERE ProbeSetFreeze.ProbeFreezeId = ProbeFreeze.Id and
-                  ProbeFreeze.TissueId = Tissue.Id and
-                  ProbeSetFreeze.public > %s and
-                  ProbeFreeze.InbredSetId = InbredSet.Id and
-                  InbredSet.Name like %s
-            ORDER BY Tissue.Name, ProbeSetFreeze.CreateTime desc, ProbeSetFreeze.AvgId
-            ''', (webqtlConfig.PUBLICTHRESH, "%" + self.name + "%"))
+             (SELECT '#PublishFreeze',PublishFreeze.FullName,PublishFreeze.Name
+              FROM PublishFreeze,InbredSet
+              WHERE PublishFreeze.InbredSetId = InbredSet.Id
+                and InbredSet.Name = %s
+                and PublishFreeze.public > %s)
+             UNION
+             (SELECT '#GenoFreeze',GenoFreeze.FullName,GenoFreeze.Name
+              FROM GenoFreeze, InbredSet
+              WHERE GenoFreeze.InbredSetId = InbredSet.Id
+                and InbredSet.Name = %s
+                and GenoFreeze.public > %s)
+             UNION
+             (SELECT Tissue.Name, ProbeSetFreeze.FullName,ProbeSetFreeze.Name
+              FROM ProbeSetFreeze, ProbeFreeze, InbredSet, Tissue
+              WHERE ProbeSetFreeze.ProbeFreezeId = ProbeFreeze.Id
+                and ProbeFreeze.TissueId = Tissue.Id
+                and ProbeFreeze.InbredSetId = InbredSet.Id
+                and InbredSet.Name like %s
+                and ProbeSetFreeze.public > %s
+              ORDER BY Tissue.Name, ProbeSetFreeze.CreateTime desc, ProbeSetFreeze.AvgId)
+            ''', (self.name, webqtlConfig.PUBLICTHRESH,
+                  self.name, webqtlConfig.PUBLICTHRESH,
+                  "%" + self.name + "%", webqtlConfig.PUBLICTHRESH))
 
         for tissue_name, dataset in itertools.groupby(results.fetchall(), itemgetter(0)):
-            dataset_sub_menu = [item[1:] for item in dataset]
-            dataset_menu.append(dict(tissue=tissue_name,
-                                     datasets=dataset_sub_menu))
+            if tissue_name in ['#PublishFreeze', '#GenoFreeze']:
+                for item in dataset:
+                    dataset_menu.append(dict(tissue=None, datasets=[item[1:]]))
+            else:
+                dataset_sub_menu = [item[1:] for item in dataset]
+                dataset_menu.append(dict(tissue=tissue_name,
+                                    datasets=dataset_sub_menu))
 
         Redis.set(key, pickle.dumps(dataset_menu, pickle.HIGHEST_PROTOCOL))
         Redis.expire(key, 60*5)