about summary refs log tree commit diff
path: root/wqflask/wqflask/do_search.py
diff options
context:
space:
mode:
Diffstat (limited to 'wqflask/wqflask/do_search.py')
-rwxr-xr-xwqflask/wqflask/do_search.py44
1 files changed, 23 insertions, 21 deletions
diff --git a/wqflask/wqflask/do_search.py b/wqflask/wqflask/do_search.py
index fc8db204..02e73bb0 100755
--- a/wqflask/wqflask/do_search.py
+++ b/wqflask/wqflask/do_search.py
@@ -534,7 +534,14 @@ class LrsSearch(DoSearch):
     DoSearch.search_types['LRS'] = 'LrsSearch'
 
     def get_from_clause(self):
-        if self.search_operator == "=":
+        #If the user typed, for example "Chr4", the "Chr" substring needs to be removed so that all search elements can be converted to floats
+        if len(self.search_term) > 2 and "Chr" in self.search_term[2]:
+            chr_num = self.search_term[2].replace("Chr", "")
+            self.search_term[2] = chr_num
+
+        self.search_term = [float(value) for value in self.search_term]
+
+        if len(self.search_term) > 2:
             from_clause = ", Geno"
         else:
             from_clause = ""
@@ -542,41 +549,36 @@ class LrsSearch(DoSearch):
         return from_clause
 
     def get_where_clause(self):
-        self.search_term = [float(value) for value in self.search_term]
-
         if self.search_operator == "=":
             assert isinstance(self.search_term, (list, tuple))
-            self.lrs_min, self.lrs_max = self.search_term[:2]
+            lrs_min, lrs_max = self.search_term[:2]
 
-            self.sub_clause = """ %sXRef.LRS > %s and
-                             %sXRef.LRS < %s and """ % self.mescape(self.dataset.type,
-                                                                min(self.lrs_min, self.lrs_max),
+            where_clause = """ %sXRef.LRS > %s and
+                             %sXRef.LRS < %s """ % self.mescape(self.dataset.type,
+                                                                min(lrs_min, lrs_max),
                                                                 self.dataset.type,
-                                                                max(self.lrs_min, self.lrs_max))
+                                                                max(lrs_min, lrs_max))
 
             if len(self.search_term) > 2:
-                self.chr_num = self.search_term[2]
-                self.sub_clause += """ Geno.Chr = %s and """ % (self.chr_num)
+                chr_num = self.search_term[2]
+                where_clause += """ and Geno.Chr = %s """ % (chr_num)
                 if len(self.search_term) == 5:
-                    self.mb_low, self.mb_high = self.search_term[3:]
-                    self.sub_clause += """ Geno.Mb > %s and
-                                                  Geno.Mb < %s and
-                                            """ % self.mescape(min(self.mb_low, self.mb_high),
-                                                               max(self.mb_low, self.mb_high))
-            print("self.sub_clause is:", pf(self.sub_clause))
-
-            #%s.Chr = Geno.Chr
-            where_clause = self.sub_clause + """ %sXRef.Locus = Geno.name and
+                    mb_low, mb_high = self.search_term[3:]
+                    where_clause += """ and Geno.Mb > %s and
+                                                  Geno.Mb < %s
+                                            """ % self.mescape(min(mb_low, mb_high),
+                                                               max(mb_low, mb_high))
+
+                where_clause += """ and %sXRef.Locus = Geno.name and
                                                     Geno.SpeciesId = %s
                                                     """ % self.mescape(self.dataset.type,
                                                            self.species_id)
         else:
             # Deal with >, <, >=, and <=
             print("self.search_term is:", self.search_term)
-            self.sub_clause = """ %sXRef.LRS %s %s """ % self.mescape(self.dataset.type,
+            where_clause = """ %sXRef.LRS %s %s """ % self.mescape(self.dataset.type,
                                                                         self.search_operator,
                                                                         self.search_term[0])
-            where_clause = self.sub_clause
        
         return where_clause