about summary refs log tree commit diff
diff options
context:
space:
mode:
authorzsloan2019-12-09 14:09:32 -0600
committerzsloan2019-12-09 14:09:32 -0600
commitaace2f31197115fa201a1a924d3d663ba43d0511 (patch)
tree3bede35be1f0130bc734c97caa1cee67c709b39c
parent1da41f1c60b0f7f170841ad9584447a703cf4f06 (diff)
downloadgenenetwork2-aace2f31197115fa201a1a924d3d663ba43d0511.tar.gz
Added optional fourth term to cis/transLRS searches so you can specify which chromosome you want the max LRS to be on
-rw-r--r--wqflask/wqflask/do_search.py31
1 files changed, 21 insertions, 10 deletions
diff --git a/wqflask/wqflask/do_search.py b/wqflask/wqflask/do_search.py
index 9aa41a87..12338401 100644
--- a/wqflask/wqflask/do_search.py
+++ b/wqflask/wqflask/do_search.py
@@ -577,21 +577,26 @@ class CisTransLrsSearch(DoSearch):
         return ", Geno"
 
     def get_where_clause(self, cis_trans):
-        self.search_term = [float(value) for value in self.search_term]
         self.mb_buffer = 5  # default
+        chromosome = None
         if cis_trans == "cis":
             the_operator = "<"
         else:
             the_operator = ">"
 
         if self.search_operator == "=":
+            if len(self.search_term) == 2 or len(self.search_term) == 3:
+                self.search_term = [float(value) for value in self.search_term]
             if len(self.search_term) == 2:
                 lrs_min, lrs_max = self.search_term
                 #[int(value) for value in self.search_term]
-
             elif len(self.search_term) == 3:
                 lrs_min, lrs_max, self.mb_buffer = self.search_term
-
+            elif len(self.search_term) == 4:
+                lrs_min, lrs_max, self.mb_buffer = [float(value) for value in self.search_term[:3]]
+                chromosome = self.search_term[3]
+                if "Chr" in chromosome or "chr" in chromosome:
+                    chromosome = float(chromosome[3:])
             else:
                 SomeError
 
@@ -628,18 +633,24 @@ class CisTransLrsSearch(DoSearch):
                         escape(self.dataset.type)
                         )
         else:
+            if chromosome:
+                location_clause = "(%s.Chr = %s and %s.Chr = Geno.Chr and ABS(%s.Mb-Geno.Mb) %s %s) or (%s.Chr != Geno.Chr and Geno.Chr = %s)" % (escape(self.dataset.type),
+                                                                                                                                                  chromosome,
+                                                                                                                                                  escape(self.dataset.type),
+                                                                                                                                                  escape(self.dataset.type),
+                                                                                                                                                  the_operator,
+                                                                                                                                                  escape(str(self.mb_buffer)),
+                                                                                                                                                  escape(self.dataset.type),
+                                                                                                                                                  chromosome)
+            else:
+                location_clause = "(ABS(%s.Mb-Geno.Mb) %s %s and %s.Chr = Geno.Chr) or (%s.Chr != Geno.Chr)" % (escape(self.dataset.type), the_operator, escape(str(self.mb_buffer)), escape(self.dataset.type))
             where_clause = sub_clause + """
                     %sXRef.Locus = Geno.name and
                     Geno.SpeciesId = %s and
-                    ((ABS(%s.Mb-Geno.Mb) %s %s and %s.Chr = Geno.Chr) or
-                    (%s.Chr != Geno.Chr))""" % (
+                    (%s)""" % (
                         escape(self.dataset.type),
                         escape(str(self.species_id)),
-                        escape(self.dataset.type),
-                        the_operator,
-                        escape(str(self.mb_buffer)),
-                        escape(self.dataset.type),
-                        escape(self.dataset.type)
+                        location_clause
                         )
 
         return where_clause