about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--wqflask/wqflask/snp_browser/snp_browser.py207
1 files changed, 102 insertions, 105 deletions
diff --git a/wqflask/wqflask/snp_browser/snp_browser.py b/wqflask/wqflask/snp_browser/snp_browser.py
index 43bb55b5..cd47f293 100644
--- a/wqflask/wqflask/snp_browser/snp_browser.py
+++ b/wqflask/wqflask/snp_browser/snp_browser.py
@@ -1,5 +1,3 @@
-from flask import Flask, g, url_for
-
 import string
 from PIL import (Image)
 
@@ -152,112 +150,111 @@ class SnpBrowser:
 
     def get_browser_results(self):
         self.snp_list = None
+        __query = ""
+        __vars = None
+        with database_connection() as conn, conn.cursor() as cursor:
+            if self.gene_name != "":
+                if self.species_id != 0:
+                    __query = ("SELECT geneSymbol, chromosome, txStart, "
+                               "txEnd FROM GeneList WHERE SpeciesId = %s "
+                               "AND geneSymbol = %s")
+                    __vars = (self.species_id, self.gene_name,)
+                else:
+                    __query = ("SELECT geneSymbol, chromosome, txStart, "
+                               "txEnd FROM GeneList WHERE geneSymbol = %s")
+                    __vars = (self.gene_name,)
+                cursor.execute(__query, __vars)
 
-        if self.gene_name != "":
-            if self.species_id != 0:
-                query = "SELECT geneSymbol, chromosome, txStart, txEnd FROM GeneList WHERE SpeciesId = %s AND geneSymbol = '%s'" % (
-                    self.species_id, self.gene_name)
-            else:
-                query = "SELECT geneSymbol, chromosome, txStart, txEnd FROM GeneList WHERE geneSymbol = '%s'" % (
-                    self.gene_name)
-            result = g.db.execute(query).fetchone()
-            if result:
-                self.gene_name, self.chr, self.start_mb, self.end_mb = result
-            else:
-                result_snp = None
-                if self.variant_type == "SNP":
-                    if self.gene_name[:2] == "rs":
-                        query = "SELECT Id, Chromosome, Position, Position+0.000001 FROM SnpAll WHERE Rs = '%s'" % self.gene_name
-                    else:
-                        if self.species_id != 0:
-                            query = "SELECT Id, Chromosome, Position, Position+0.000001 FROM SnpAll where SpeciesId = %s AND SnpName = '%s'" % (
-                                self.species_id, self.gene_name)
-                        else:
-                            query = "SELECT Id, Chromosome, Position, Position+0.000001 FROM SnpAll where SnpName = '%s'" % (
-                                self.gene_name)
-                    result_snp = g.db.execute(query).fetchall()
-                    if result_snp:
-                        self.snp_list = [item[0] for item in result_snp]
-                        self.chr = result_snp[0][1]
-                        self.start_mb = result_snp[0][2]
-                        self.end_mb = result_snp[0][3]
-                    else:
-                        return []
-                elif self.variant_type == "InDel":
-                    if self.gene_name[0] == "I":
-                        if self.species_id != 0:
-                            query = "SELECT Id, Chromosome, Mb_start, Mb_end FROM IndelAll WHERE SpeciesId = %s AND Name = '%s'" % (
-                                self.species_id, self.gene_name)
+                if result := cursor.fetchone():
+                    self.gene_name, self.chr, self.start_mb, self.end_mb = result
+                else:
+                    if self.variant_type in ["SNP", "InDel"]:
+                        result_snp = None
+                        __vars = (self.gene_name,)
+                        if self.variant_type == "SNP":
+                            if self.gene_name[:2] == "rs":
+                                __query = ("SELECT Id, Chromosome, Position, "
+                                           "Position+0.000001 FROM SnpAll "
+                                           "WHERE Rs = %s")
+                            else:
+                                if self.species_id != 0:
+                                    __query = (
+                                        "SELECT Id, Chromosome, Position, "
+                                        "Position+0.000001 FROM SnpAll WHERE "
+                                        "SpeciesId = %s AND SnpName = %s")
+                                    __vars = (self.species_id, self.gene_name,)
+                                else:
+                                    __query = (
+                                        "SELECT Id, Chromosome, Position, "
+                                        "Position+0.000001 FROM SnpAll "
+                                        "WHERE SnpName = %s")
+                            cursor.execute(__query, __vars)
+                            result_snp = cursor.fetchall()
+                        else:  # variant_type == InDel
+                            if self.gene_name[0] == "I":
+                                if self.species_id != 0:
+                                    __query = (
+                                        "SELECT Id, Chromosome, Mb_start, "
+                                        "Mb_end FROM IndelAll WHERE "
+                                        "SpeciesId = %s AND Name = %s")
+                                    __vars = (self.species_id, self.gene_name,)
+                                else:
+                                    __query = (
+                                        "SELECT Id, Chromosome, Mb_start, "
+                                        "Mb_end FROM IndelAll WHERE Name = %s",)
+                                    __vars = (self.gene_name,)
+                                cursor.execute(__query, __vars)
+                                result_snp = cursor.fetchall()
+                        if result_snp:
+                            self.snp_list = [item[0] for item in result_snp]
+                            self.chr = result_snp[0][1]
+                            self.start_mb = result_snp[0][2]
+                            self.end_mb = result_snp[0][3]
                         else:
-                            query = "SELECT Id, Chromosome, Mb_start, Mb_end FROM IndelAll WHERE Name = '%s'" % (
-                                self.gene_name)
-                        result_snp = g.db.execute(query).fetchall()
-                    if result_snp:
-                        self.snp_list = [item[0] for item in result_snp]
-                        self.chr = result_snp[0][1]
-                        self.start_mb = result_snp[0][2]
-                        self.end_mb = result_snp[0][3]
-                    else:
-                        return []
+                            return []
 
-        if self.variant_type == "SNP":
-            mouse_query = """
-                       SELECT
-                           a.*, b.*
-                       FROM
-                           SnpAll a, SnpPattern b
-                       WHERE
-                           a.SpeciesId = %s AND a.Chromosome = '%s' AND
-                           a.Position >= %.6f AND a.Position < %.6f AND
-                           a.Id = b.SnpId
-                       ORDER BY a.Position
-                    """ % (self.species_id, self.chr, self.start_mb, self.end_mb)
-
-            rat_query = """
-                       SELECT
-                           a.*, b.*
-                       FROM
-                           SnpAll a, RatSnpPattern b
-                       WHERE
-                           a.SpeciesId = %s AND a.Chromosome = '%s' AND
-                           a.Position >= %.6f AND a.Position < %.6f AND
-                           a.Id = b.SnpId
-                       ORDER BY a.Position
-                    """ % (self.species_id, self.chr, self.start_mb, self.end_mb)
-            if self.species_id == 1:
-                query = mouse_query
-            elif self.species_id == 2:
-                query = rat_query
-
-        elif self.variant_type == "InDel":
-            if self.species_id != 0:
-                query = """
-                           SELECT
-                               DISTINCT a.Name, a.Chromosome, a.SourceId, a.Mb_start, a.Mb_end, a.Strand, a.Type, a.Size, a.InDelSequence, b.Name
-                           FROM
-                               IndelAll a, SnpSource b
-                           WHERE
-                               a.SpeciesId = '%s' AND a.Chromosome = '%s' AND
-                               a.Mb_start >= %2.6f AND a.Mb_start < (%2.6f+.0010) AND
-                               b.Id = a.SourceId
-                           ORDER BY a.Mb_start
-                        """ % (self.species_id, self.chr, self.start_mb, self.end_mb)
-            else:
-                query = """
-                           SELECT
-                               DISTINCT a.Name, a.Chromosome, a.SourceId, a.Mb_start, a.Mb_end, a.Strand, a.Type, a.Size, a.InDelSequence, b.Name
-                           FROM
-                               IndelAll a, SnpSource b
-                           WHERE
-                               a.Chromosome = '%s' AND
-                               a.Mb_start >= %2.6f AND a.Mb_start < (%2.6f+.0010) AND
-                               b.Id = a.SourceId
-                           ORDER BY a.Mb_start
-                        """ % (self.chr, self.start_mb, self.end_mb)
-
-        results_all = g.db.execute(query).fetchall()
-
-        return self.filter_results(results_all)
+            if self.variant_type == "SNP":
+                __vars = (self.species_id, self.chr,
+                          f"{self.start_mb:.6f}",
+                          f"{self.end_mb:.6f}",)
+                if self.species_id == 1:  # Mouse
+                    __query = ("SELECT a.*, b.* FROM SnpAll a, SnpPattern b "
+                               "WHERE a.SpeciesId = %s AND a.Chromosome = %s "
+                               "AND a.Position >= %s AND a.Position < %s "
+                               "AND a.Id = b.SnpId ORDER BY a.Position")
+                elif self.species_id == 2:  # Rat
+                    __query = (
+                        "SELECT a.*, b.* FROM SnpAll a, RatSnpPattern b "
+                        "WHERE a.SpeciesId = %s AND a.Chromosome = %s "
+                        "AND a.Position >= %s AND a.Position < %s "
+                        "AND a.Id = b.SnpId ORDER BY a.Position")
+
+            elif self.variant_type == "InDel":
+                if self.species_id != 0:
+                    __query = (
+                        "SELECT DISTINCT a.Name, a.Chromosome, a.SourceId, "
+                        "a.Mb_start, a.Mb_end, a.Strand, a.Type, a.Size, "
+                        "a.InDelSequence, b.Name FROM IndelAll a, "
+                        "SnpSource b WHERE a.SpeciesId = %s AND "
+                        "a.Chromosome = %s AND a.Mb_start >= %s "
+                        "AND a.Mb_start < %s AND b.Id = a.SourceId "
+                        "ORDER BY a.Mb_start")
+                    __vars = (self.species_id,
+                              self.chr, f"{self.start_mb:2.6f}",
+                         f"{self.end_mb+0.0010:2.6f}",)
+                    cursor.execute(__query, __vars)
+                else:
+                    __query = (
+                        "SELECT DISTINCT a.Name, a.Chromosome, a.SourceId, "
+                        "a.Mb_start, a.Mb_end, a.Strand, a.Type, a.Size, "
+                        "a.InDelSequence, b.Name FROM IndelAll a, "
+                        "SnpSource b WHERE a.Chromosome = %s AND "
+                        "a.Mb_start >= %2.6f AND a.Mb_start < (%2.6f+.0010) "
+                        "AND b.Id = a.SourceId ORDER BY a.Mb_start")
+                    __vars = (self.chr, f"{self.start_mb:2.6f}",
+                              f"{self.end_mb+0.0010:2.6f}",)
+            cursor.execute(__query, __vars)
+            return self.filter_results(cursor.fetchall())
 
     def filter_results(self, results):
         filtered_results = []