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')
-rw-r--r--wqflask/wqflask/do_search.py316
1 files changed, 177 insertions, 139 deletions
diff --git a/wqflask/wqflask/do_search.py b/wqflask/wqflask/do_search.py
index 00636563..761ae326 100644
--- a/wqflask/wqflask/do_search.py
+++ b/wqflask/wqflask/do_search.py
@@ -17,7 +17,7 @@ from utility.logger import getLogger
 logger = getLogger(__name__)
 
 
-class DoSearch(object):
+class DoSearch:
     """Parent class containing parameters/functions used for all searches"""
 
     # Used to translate search phrases into classes
@@ -26,14 +26,16 @@ class DoSearch(object):
     def __init__(self, search_term, search_operator=None, dataset=None, search_type=None):
         self.search_term = search_term
         # Make sure search_operator is something we expect
-        assert search_operator in (None, "=", "<", ">", "<=", ">="), "Bad search operator"
+        assert search_operator in (
+            None, "=", "<", ">", "<=", ">="), "Bad search operator"
         self.search_operator = search_operator
         self.dataset = dataset
         self.search_type = search_type
 
         if self.dataset:
-            #Get group information for dataset and the species id
-            self.species_id = webqtlDatabaseFunction.retrieve_species_id(self.dataset.group.name)
+            # Get group information for dataset and the species id
+            self.species_id = webqtlDatabaseFunction.retrieve_species_id(
+                self.dataset.group.name)
 
     def execute(self, query):
         """Executes query and returns results"""
@@ -73,6 +75,7 @@ class DoSearch(object):
         else:
             return None
 
+
 class MrnaAssaySearch(DoSearch):
     """A search within an expression dataset, including mRNA, protein, SNP, but not phenotype or metabolites"""
 
@@ -103,12 +106,13 @@ class MrnaAssaySearch(DoSearch):
         search_string = escape(self.search_term[0])
 
         if self.search_term[0] != "*":
-            match_clause = """((MATCH (ProbeSet.symbol) AGAINST ('%s' IN BOOLEAN MODE))) and """ % (search_string)
+            match_clause = """((MATCH (ProbeSet.symbol) AGAINST ('%s' IN BOOLEAN MODE))) and """ % (
+                search_string)
         else:
             match_clause = ""
 
-        where_clause = (match_clause +
-            """ProbeSet.Id = ProbeSetXRef.ProbeSetId
+        where_clause = (match_clause
+                        + """ProbeSet.Id = ProbeSetXRef.ProbeSetId
                and ProbeSetXRef.ProbeSetFreezeId = %s
                         """ % (escape(str(self.dataset.id))))
 
@@ -130,30 +134,30 @@ class MrnaAssaySearch(DoSearch):
         else:
             match_clause = ""
 
-        where_clause = (match_clause +
-            """ProbeSet.Id = ProbeSetXRef.ProbeSetId
+        where_clause = (match_clause
+                        + """ProbeSet.Id = ProbeSetXRef.ProbeSetId
                and ProbeSetXRef.ProbeSetFreezeId = %s
                         """ % (escape(str(self.dataset.id))))
 
         return where_clause
 
-    def compile_final_query(self, from_clause = '', where_clause = ''):
+    def compile_final_query(self, from_clause='', where_clause=''):
         """Generates the final query string"""
 
         from_clause = self.normalize_spaces(from_clause)
 
         query = (self.base_query +
-            """%s
+                 """%s
                 WHERE %s
                     and ProbeSet.Id = ProbeSetXRef.ProbeSetId
                     and ProbeSetXRef.ProbeSetFreezeId = %s
                 ORDER BY ProbeSet.symbol ASC
                             """ % (escape(from_clause),
-                                    where_clause,
-                                    escape(str(self.dataset.id))))
+                                   where_clause,
+                                   escape(str(self.dataset.id))))
         return query
 
-    def run_combined(self, from_clause = '', where_clause = ''):
+    def run_combined(self, from_clause='', where_clause=''):
         """Generates and runs a combined search of an mRNA expression dataset"""
 
         logger.debug("Running ProbeSetSearch")
@@ -162,14 +166,14 @@ class MrnaAssaySearch(DoSearch):
         from_clause = self.normalize_spaces(from_clause)
 
         query = (self.base_query +
-            """%s
+                 """%s
                 WHERE %s
                     and ProbeSet.Id = ProbeSetXRef.ProbeSetId
                     and ProbeSetXRef.ProbeSetFreezeId = %s
                 ORDER BY ProbeSet.symbol ASC
                             """ % (escape(from_clause),
-                                    where_clause,
-                                    escape(str(self.dataset.id))))
+                                   where_clause,
+                                   escape(str(self.dataset.id))))
 
         return self.execute(query)
 
@@ -195,15 +199,15 @@ class PhenotypeSearch(DoSearch):
                 FROM Phenotype, PublishFreeze, Publication, PublishXRef """
 
     search_fields = ('Phenotype.Post_publication_description',
-                    'Phenotype.Pre_publication_description',
-                    'Phenotype.Pre_publication_abbreviation',
-                    'Phenotype.Post_publication_abbreviation',
-                    'Phenotype.Lab_code',
-                    'Publication.PubMed_ID',
-                    'Publication.Abstract',
-                    'Publication.Title',
-                    'Publication.Authors',
-                    'PublishXRef.Id')
+                     'Phenotype.Pre_publication_description',
+                     'Phenotype.Pre_publication_abbreviation',
+                     'Phenotype.Post_publication_abbreviation',
+                     'Phenotype.Lab_code',
+                     'Publication.PubMed_ID',
+                     'Publication.Abstract',
+                     'Publication.Title',
+                     'Publication.Authors',
+                     'PublishXRef.Id')
 
     header_fields = ['Index',
                      'Record',
@@ -218,53 +222,56 @@ class PhenotypeSearch(DoSearch):
     def get_where_clause(self):
         """Generate clause for WHERE portion of query"""
 
-        #Todo: Zach will figure out exactly what both these lines mean
-        #and comment here
+        # Todo: Zach will figure out exactly what both these lines mean
+        # and comment here
 
-        #if "'" not in self.search_term[0]:
-        search_term = "[[:<:]]" + self.handle_wildcard(self.search_term[0]) + "[[:>:]]"
+        # if "'" not in self.search_term[0]:
+        search_term = "[[:<:]]" + \
+            self.handle_wildcard(self.search_term[0]) + "[[:>:]]"
         if "_" in self.search_term[0]:
             if len(self.search_term[0].split("_")[0]) == 3:
-                search_term = "[[:<:]]" + self.handle_wildcard(self.search_term[0].split("_")[1]) + "[[:>:]]"
+                search_term = "[[:<:]]" + self.handle_wildcard(
+                    self.search_term[0].split("_")[1]) + "[[:>:]]"
 
         # This adds a clause to the query that matches the search term
         # against each field in the search_fields tuple
         where_clause_list = []
         for field in self.search_fields:
-            where_clause_list.append('''%s REGEXP "%s"''' % (field, search_term))
+            where_clause_list.append('''%s REGEXP "%s"''' %
+                                     (field, search_term))
         where_clause = "(%s) " % ' OR '.join(where_clause_list)
 
         return where_clause
 
-    def compile_final_query(self, from_clause = '', where_clause = ''):
+    def compile_final_query(self, from_clause='', where_clause=''):
         """Generates the final query string"""
 
         from_clause = self.normalize_spaces(from_clause)
 
         if self.search_term[0] == "*":
             query = (self.base_query +
-                    """%s
+                     """%s
                         WHERE PublishXRef.InbredSetId = %s
                         and PublishXRef.PhenotypeId = Phenotype.Id
                         and PublishXRef.PublicationId = Publication.Id
                         and PublishFreeze.Id = %s
                         ORDER BY PublishXRef.Id""" % (
-                            from_clause,
-                            escape(str(self.dataset.group.id)),
-                            escape(str(self.dataset.id))))
+                         from_clause,
+                         escape(str(self.dataset.group.id)),
+                         escape(str(self.dataset.id))))
         else:
             query = (self.base_query +
-                    """%s
+                     """%s
                         WHERE %s
                         and PublishXRef.InbredSetId = %s
                         and PublishXRef.PhenotypeId = Phenotype.Id
                         and PublishXRef.PublicationId = Publication.Id
                         and PublishFreeze.Id = %s
                         ORDER BY PublishXRef.Id""" % (
-                            from_clause,
-                            where_clause,
-                            escape(str(self.dataset.group.id)),
-                            escape(str(self.dataset.id))))
+                         from_clause,
+                         where_clause,
+                         escape(str(self.dataset.group.id)),
+                         escape(str(self.dataset.id))))
 
         return query
 
@@ -276,26 +283,27 @@ class PhenotypeSearch(DoSearch):
         from_clause = self.normalize_spaces(from_clause)
 
         query = (self.base_query +
-                """%s
+                 """%s
                     WHERE %s
                     PublishXRef.InbredSetId = %s and
                     PublishXRef.PhenotypeId = Phenotype.Id and
                     PublishXRef.PublicationId = Publication.Id and
                     PublishFreeze.Id = %s""" % (
-                        from_clause,
-                        where_clause,
-                        escape(str(self.dataset.group.id)),
-                        escape(str(self.dataset.id))))
+                     from_clause,
+                     where_clause,
+                     escape(str(self.dataset.group.id)),
+                     escape(str(self.dataset.id))))
 
         return self.execute(query)
 
     def run(self):
         """Generates and runs a simple search of a phenotype dataset"""
 
-        query = self.compile_final_query(where_clause = self.get_where_clause())
+        query = self.compile_final_query(where_clause=self.get_where_clause())
 
         return self.execute(query)
 
+
 class GenotypeSearch(DoSearch):
     """A search within a genotype dataset"""
 
@@ -328,45 +336,46 @@ class GenotypeSearch(DoSearch):
         for field in self.search_fields:
             where_clause.append('''%s REGEXP "%s"''' % ("%s.%s" % self.mescape(self.dataset.type,
                                                                                field),
-                                                                               self.search_term))
+                                                        self.search_term))
         logger.debug("hello ;where_clause is:", pf(where_clause))
         where_clause = "(%s) " % ' OR '.join(where_clause)
 
         return where_clause
 
-    def compile_final_query(self, from_clause = '', where_clause = ''):
+    def compile_final_query(self, from_clause='', where_clause=''):
         """Generates the final query string"""
 
         from_clause = self.normalize_spaces(from_clause)
 
-
         if self.search_term[0] == "*":
-            query = (self.base_query +
-                    """WHERE Geno.Id = GenoXRef.GenoId
+            query = (self.base_query
+                     + """WHERE Geno.Id = GenoXRef.GenoId
                         and GenoXRef.GenoFreezeId = GenoFreeze.Id
-                        and GenoFreeze.Id = %s"""% (escape(str(self.dataset.id))))
+                        and GenoFreeze.Id = %s""" % (escape(str(self.dataset.id))))
         else:
             query = (self.base_query +
-                    """WHERE %s
+                     """WHERE %s
                         and Geno.Id = GenoXRef.GenoId
                         and GenoXRef.GenoFreezeId = GenoFreeze.Id
-                        and GenoFreeze.Id = %s"""% (where_clause,
-                                                escape(str(self.dataset.id))))
+                        and GenoFreeze.Id = %s""" % (where_clause,
+                                                     escape(str(self.dataset.id))))
 
         return query
 
     def run(self):
         """Generates and runs a simple search of a genotype dataset"""
-        #Todo: Zach will figure out exactly what both these lines mean
-        #and comment here
+        # Todo: Zach will figure out exactly what both these lines mean
+        # and comment here
 
         if self.search_term[0] == "*":
             self.query = self.compile_final_query()
         else:
-            self.query = self.compile_final_query(where_clause = self.get_where_clause())
+            self.query = self.compile_final_query(
+                where_clause=self.get_where_clause())
 
         return self.execute(self.query)
 
+
 class RifSearch(MrnaAssaySearch):
     """Searches for traits with a Gene RIF entry including the search term."""
 
@@ -390,10 +399,11 @@ class RifSearch(MrnaAssaySearch):
 
         return self.execute(query)
 
+
 class WikiSearch(MrnaAssaySearch):
     """Searches GeneWiki for traits other people have annotated"""
 
-    DoSearch.search_types['ProbeSet_WIKI'] =  "WikiSearch"
+    DoSearch.search_types['ProbeSet_WIKI'] = "WikiSearch"
 
     def get_from_clause(self):
         return ", GeneRIF "
@@ -403,7 +413,7 @@ class WikiSearch(MrnaAssaySearch):
             and GeneRIF.versionId=0 and GeneRIF.display>0
             and (GeneRIF.comment REGEXP '%s' or GeneRIF.initial = '%s')
                 """ % (self.dataset.type,
-                       "[[:<:]]"+str(self.search_term[0])+"[[:>:]]",
+                       "[[:<:]]" + str(self.search_term[0]) + "[[:>:]]",
                        str(self.search_term[0]))
         return where_clause
 
@@ -415,10 +425,11 @@ class WikiSearch(MrnaAssaySearch):
 
         return self.execute(query)
 
+
 class GoSearch(MrnaAssaySearch):
     """Searches for synapse-associated genes listed in the Gene Ontology."""
 
-    DoSearch.search_types['ProbeSet_GO'] =  "GoSearch"
+    DoSearch.search_types['ProbeSet_GO'] = "GoSearch"
 
     def get_from_clause(self):
         from_clause = """, db_GeneOntology.term as GOterm,
@@ -429,7 +440,7 @@ class GoSearch(MrnaAssaySearch):
 
     def get_where_clause(self):
         field = 'GOterm.acc'
-        go_id = 'GO:' + ('0000000'+self.search_term[0])[-7:]
+        go_id = 'GO:' + ('0000000' + self.search_term[0])[-7:]
 
         statements = ("""%s.symbol=GOgene_product.symbol and
            GOassociation.gene_product_id=GOgene_product.id and
@@ -448,7 +459,9 @@ class GoSearch(MrnaAssaySearch):
 
         return self.execute(query)
 
-#ZS: Not sure what the best way to deal with LRS searches is
+# ZS: Not sure what the best way to deal with LRS searches is
+
+
 class LrsSearch(DoSearch):
     """Searches for genes with a QTL within the given LRS values
 
@@ -486,17 +499,18 @@ class LrsSearch(DoSearch):
             assert isinstance(self.search_term, (list, tuple))
             lrs_min, lrs_max = self.search_term[:2]
             if self.search_type == "LOD":
-                lrs_min = lrs_min*4.61
-                lrs_max = lrs_max*4.61
+                lrs_min = lrs_min * 4.61
+                lrs_max = lrs_max * 4.61
 
             where_clause = """ %sXRef.LRS > %s and
                              %sXRef.LRS < %s """ % self.mescape(self.dataset.type,
-                                                                min(lrs_min, lrs_max),
+                                                                min(lrs_min,
+                                                                    lrs_max),
                                                                 self.dataset.type,
                                                                 max(lrs_min, lrs_max))
 
             if len(self.search_term) > 2:
-                #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 the user typed, for example "Chr4", the "Chr" substring needs to be removed so that all search elements can be converted to floats
                 chr_num = self.search_term[2]
                 if "chr" in self.search_term[2].lower():
                     chr_num = self.search_term[2].lower().replace("chr", "")
@@ -512,27 +526,27 @@ class LrsSearch(DoSearch):
                 where_clause += """ and %sXRef.Locus = Geno.name and
                                                     Geno.SpeciesId = %s
                                                     """ % self.mescape(self.dataset.type,
-                                                           self.species_id)
+                                                                       self.species_id)
         else:
             # Deal with >, <, >=, and <=
             logger.debug("self.search_term is:", self.search_term)
             lrs_val = self.search_term[0]
             if self.search_type == "LOD":
-                lrs_val = lrs_val*4.61
+                lrs_val = lrs_val * 4.61
 
             where_clause = """ %sXRef.LRS %s %s """ % self.mescape(self.dataset.type,
-                                                                        self.search_operator,
-                                                                        self.search_term[0])
+                                                                   self.search_operator,
+                                                                   self.search_term[0])
 
         return where_clause
 
-
     def run(self):
 
         self.from_clause = self.get_from_clause()
         self.where_clause = self.get_where_clause()
 
-        self.query = self.compile_final_query(self.from_clause, self.where_clause)
+        self.query = self.compile_final_query(
+            self.from_clause, self.where_clause)
 
         return self.execute(self.query)
 
@@ -546,10 +560,12 @@ class MrnaLrsSearch(LrsSearch, MrnaAssaySearch):
         self.from_clause = self.get_from_clause()
         self.where_clause = self.get_where_clause()
 
-        self.query = self.compile_final_query(from_clause = self.from_clause, where_clause = self.where_clause)
+        self.query = self.compile_final_query(
+            from_clause=self.from_clause, where_clause=self.where_clause)
 
         return self.execute(self.query)
 
+
 class PhenotypeLrsSearch(LrsSearch, PhenotypeSearch):
 
     for search_key in ('LRS', 'LOD'):
@@ -560,7 +576,8 @@ class PhenotypeLrsSearch(LrsSearch, PhenotypeSearch):
         self.from_clause = self.get_from_clause()
         self.where_clause = self.get_where_clause()
 
-        self.query = self.compile_final_query(from_clause = self.from_clause, where_clause = self.where_clause)
+        self.query = self.compile_final_query(
+            from_clause=self.from_clause, where_clause=self.where_clause)
 
         return self.execute(self.query)
 
@@ -587,7 +604,8 @@ class CisTransLrsSearch(DoSearch):
             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]]
+                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 = int(chromosome[3:])
@@ -599,19 +617,19 @@ class CisTransLrsSearch(DoSearch):
                 lrs_max = lrs_max * 4.61
 
             sub_clause = """ %sXRef.LRS > %s and
-                %sXRef.LRS < %s  and """  % (
-                    escape(self.dataset.type),
-                    escape(str(min(lrs_min, lrs_max))),
-                    escape(self.dataset.type),
-                    escape(str(max(lrs_min, lrs_max)))
-                )
+                %sXRef.LRS < %s  and """ % (
+                escape(self.dataset.type),
+                escape(str(min(lrs_min, lrs_max))),
+                escape(self.dataset.type),
+                escape(str(max(lrs_min, lrs_max)))
+            )
         else:
             # Deal with >, <, >=, and <=
-            sub_clause = """ %sXRef.LRS %s %s and """  % (
-                    escape(self.dataset.type),
-                    escape(self.search_operator),
-                    escape(self.search_term[0])
-                )
+            sub_clause = """ %sXRef.LRS %s %s and """ % (
+                escape(self.dataset.type),
+                escape(self.search_operator),
+                escape(self.search_term[0])
+            )
 
         if cis_trans == "cis":
             where_clause = sub_clause + """
@@ -619,36 +637,42 @@ class CisTransLrsSearch(DoSearch):
                     %sXRef.Locus = Geno.name and
                     Geno.SpeciesId = %s and
                     %s.Chr = Geno.Chr""" % (
-                        escape(self.dataset.type),
-                        the_operator,
-                        escape(str(self.mb_buffer)),
-                        escape(self.dataset.type),
-                        escape(str(self.species_id)),
-                        escape(self.dataset.type)
-                        )
+                escape(self.dataset.type),
+                the_operator,
+                escape(str(self.mb_buffer)),
+                escape(self.dataset.type),
+                escape(str(self.species_id)),
+                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)
+                                                                                                                                                      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), escape(self.dataset.type))
+                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), escape(self.dataset.type))
             where_clause = sub_clause + """
                     %sXRef.Locus = Geno.name and
                     Geno.SpeciesId = %s and
                     (%s)""" % (
-                        escape(self.dataset.type),
-                        escape(str(self.species_id)),
-                        location_clause
-                        )
+                escape(self.dataset.type),
+                escape(str(self.species_id)),
+                location_clause
+            )
 
         return where_clause
 
+
 class CisLrsSearch(CisTransLrsSearch, MrnaAssaySearch):
     """
     Searches for genes on a particular chromosome with a cis-eQTL within the given LRS values
@@ -667,7 +691,7 @@ class CisLrsSearch(CisTransLrsSearch, MrnaAssaySearch):
     """
 
     for search_key in ('LRS', 'LOD'):
-        DoSearch.search_types['ProbeSet_CIS'+search_key] = "CisLrsSearch"
+        DoSearch.search_types['ProbeSet_CIS' + search_key] = "CisLrsSearch"
 
     def get_where_clause(self):
         return CisTransLrsSearch.get_where_clause(self, "cis")
@@ -676,10 +700,12 @@ class CisLrsSearch(CisTransLrsSearch, MrnaAssaySearch):
         self.from_clause = self.get_from_clause()
         self.where_clause = self.get_where_clause()
 
-        self.query = self.compile_final_query(self.from_clause, self.where_clause)
+        self.query = self.compile_final_query(
+            self.from_clause, self.where_clause)
 
         return self.execute(self.query)
 
+
 class TransLrsSearch(CisTransLrsSearch, MrnaAssaySearch):
     """Searches for genes on a particular chromosome with a cis-eQTL within the given LRS values
 
@@ -697,7 +723,7 @@ class TransLrsSearch(CisTransLrsSearch, MrnaAssaySearch):
     """
 
     for search_key in ('LRS', 'LOD'):
-        DoSearch.search_types['ProbeSet_TRANS'+search_key] = "TransLrsSearch"
+        DoSearch.search_types['ProbeSet_TRANS' + search_key] = "TransLrsSearch"
 
     def get_where_clause(self):
         return CisTransLrsSearch.get_where_clause(self, "trans")
@@ -706,7 +732,8 @@ class TransLrsSearch(CisTransLrsSearch, MrnaAssaySearch):
         self.from_clause = self.get_from_clause()
         self.where_clause = self.get_where_clause()
 
-        self.query = self.compile_final_query(self.from_clause, self.where_clause)
+        self.query = self.compile_final_query(
+            self.from_clause, self.where_clause)
 
         return self.execute(self.query)
 
@@ -725,14 +752,15 @@ class MeanSearch(MrnaAssaySearch):
 
             where_clause = """ %sXRef.mean > %s and
                              %sXRef.mean < %s """ % self.mescape(self.dataset.type,
-                                                                min(self.mean_min, self.mean_max),
-                                                                self.dataset.type,
-                                                                max(self.mean_min, self.mean_max))
+                                                                 min(self.mean_min,
+                                                                     self.mean_max),
+                                                                 self.dataset.type,
+                                                                 max(self.mean_min, self.mean_max))
         else:
             # Deal with >, <, >=, and <=
             where_clause = """ %sXRef.mean %s %s """ % self.mescape(self.dataset.type,
-                                                                        self.search_operator,
-                                                                        self.search_term[0])
+                                                                    self.search_operator,
+                                                                    self.search_term[0])
 
         return where_clause
 
@@ -740,10 +768,11 @@ class MeanSearch(MrnaAssaySearch):
         self.where_clause = self.get_where_clause()
         logger.debug("where_clause is:", pf(self.where_clause))
 
-        self.query = self.compile_final_query(where_clause = self.where_clause)
+        self.query = self.compile_final_query(where_clause=self.where_clause)
 
         return self.execute(self.query)
 
+
 class RangeSearch(MrnaAssaySearch):
     """Searches for genes with a range of expression varying between two values"""
 
@@ -775,10 +804,11 @@ class RangeSearch(MrnaAssaySearch):
     def run(self):
         self.where_clause = self.get_where_clause()
 
-        self.query = self.compile_final_query(where_clause = self.where_clause)
+        self.query = self.compile_final_query(where_clause=self.where_clause)
 
         return self.execute(self.query)
 
+
 class PositionSearch(DoSearch):
     """Searches for genes/markers located within a specified range on a specified chromosome"""
 
@@ -786,7 +816,8 @@ class PositionSearch(DoSearch):
         DoSearch.search_types[search_key] = "PositionSearch"
 
     def get_where_clause(self):
-        self.search_term = [float(value) if is_number(value) else value for value in self.search_term]
+        self.search_term = [float(value) if is_number(
+            value) else value for value in self.search_term]
         chr, self.mb_min, self.mb_max = self.search_term[:3]
         self.chr = str(chr).lower()
         self.get_chr()
@@ -796,11 +827,11 @@ class PositionSearch(DoSearch):
                                 %s.Mb < %s """ % self.mescape(self.dataset.type,
                                                               self.chr,
                                                               self.dataset.type,
-                                                              min(self.mb_min, self.mb_max),
+                                                              min(self.mb_min,
+                                                                  self.mb_max),
                                                               self.dataset.type,
                                                               max(self.mb_min, self.mb_max))
 
-
         return where_clause
 
     def get_chr(self):
@@ -815,36 +846,39 @@ class PositionSearch(DoSearch):
     def run(self):
 
         self.get_where_clause()
-        self.query = self.compile_final_query(where_clause = self.where_clause)
+        self.query = self.compile_final_query(where_clause=self.where_clause)
 
         return self.execute(self.query)
 
+
 class MrnaPositionSearch(PositionSearch, MrnaAssaySearch):
     """Searches for genes located within a specified range on a specified chromosome"""
 
     for search_key in ('POSITION', 'POS', 'MB'):
-        DoSearch.search_types['ProbeSet_'+search_key] = "MrnaPositionSearch"
+        DoSearch.search_types['ProbeSet_' + search_key] = "MrnaPositionSearch"
 
     def run(self):
 
         self.where_clause = self.get_where_clause()
-        self.query = self.compile_final_query(where_clause = self.where_clause)
+        self.query = self.compile_final_query(where_clause=self.where_clause)
 
         return self.execute(self.query)
 
+
 class GenotypePositionSearch(PositionSearch, GenotypeSearch):
     """Searches for genes located within a specified range on a specified chromosome"""
 
     for search_key in ('POSITION', 'POS', 'MB'):
-        DoSearch.search_types['Geno_'+search_key] = "GenotypePositionSearch"
+        DoSearch.search_types['Geno_' + search_key] = "GenotypePositionSearch"
 
     def run(self):
 
         self.where_clause = self.get_where_clause()
-        self.query = self.compile_final_query(where_clause = self.where_clause)
+        self.query = self.compile_final_query(where_clause=self.where_clause)
 
         return self.execute(self.query)
 
+
 class PvalueSearch(MrnaAssaySearch):
     """Searches for traits with a permutationed p-value between low and high"""
 
@@ -859,25 +893,26 @@ class PvalueSearch(MrnaAssaySearch):
             self.pvalue_min, self.pvalue_max = self.search_term[:2]
             self.where_clause = """ %sXRef.pValue > %s and %sXRef.pValue < %s
                                     """ % self.mescape(
-                                        self.dataset.type,
-                                        min(self.pvalue_min, self.pvalue_max),
-                                        self.dataset.type,
-                                        max(self.pvalue_min, self.pvalue_max))
+                self.dataset.type,
+                min(self.pvalue_min, self.pvalue_max),
+                self.dataset.type,
+                max(self.pvalue_min, self.pvalue_max))
         else:
             # Deal with >, <, >=, and <=
             self.where_clause = """ %sXRef.pValue %s %s
                                     """ % self.mescape(
-                                        self.dataset.type,
-                                        self.search_operator,
-                                        self.search_term[0])
+                self.dataset.type,
+                self.search_operator,
+                self.search_term[0])
 
         logger.debug("where_clause is:", pf(self.where_clause))
 
-        self.query = self.compile_final_query(where_clause = self.where_clause)
+        self.query = self.compile_final_query(where_clause=self.where_clause)
 
         logger.sql(self.query)
         return self.execute(self.query)
 
+
 class AuthorSearch(PhenotypeSearch):
     """Searches for phenotype traits with specified author(s)"""
 
@@ -888,7 +923,7 @@ class AuthorSearch(PhenotypeSearch):
         self.where_clause = """ Publication.Authors REGEXP "[[:<:]]%s[[:>:]]" and
                                 """ % (self.search_term[0])
 
-        self.query = self.compile_final_query(where_clause = self.where_clause)
+        self.query = self.compile_final_query(where_clause=self.where_clause)
 
         return self.execute(self.query)
 
@@ -900,6 +935,7 @@ def is_number(s):
     except ValueError:
         return False
 
+
 def get_aliases(symbol, species):
     if species == "mouse":
         symbol_string = symbol.capitalize()
@@ -909,7 +945,8 @@ def get_aliases(symbol, species):
         return []
 
     filtered_aliases = []
-    response = requests.get(GN2_BASE_URL + "/gn3/gene/aliases/" + symbol_string)
+    response = requests.get(
+        GN2_BASE_URL + "/gn3/gene/aliases/" + symbol_string)
     if response:
         alias_list = json.loads(response.content)
 
@@ -923,9 +960,10 @@ def get_aliases(symbol, species):
 
     return filtered_aliases
 
+
 if __name__ == "__main__":
-    ### Usually this will be used as a library, but call it from the command line for testing
-    ### And it runs the code below
+    # Usually this will be used as a library, but call it from the command line for testing
+    # And it runs the code below
 
     import MySQLdb
     import sys