From 93c1742a91c478667b8645c458cce2108eb24b14 Mon Sep 17 00:00:00 2001
From: Pjotr Prins
Date: Thu, 23 Jun 2016 05:20:34 +0000
Subject: Refactored dir name dbFunction to db

---
 wqflask/db/__init__.py               |   0
 wqflask/db/webqtlDatabaseFunction.py | 267 +++++++++++++++++++++++++++++++++++
 2 files changed, 267 insertions(+)
 create mode 100644 wqflask/db/__init__.py
 create mode 100644 wqflask/db/webqtlDatabaseFunction.py

(limited to 'wqflask/db')

diff --git a/wqflask/db/__init__.py b/wqflask/db/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/wqflask/db/webqtlDatabaseFunction.py b/wqflask/db/webqtlDatabaseFunction.py
new file mode 100644
index 00000000..e30929d2
--- /dev/null
+++ b/wqflask/db/webqtlDatabaseFunction.py
@@ -0,0 +1,267 @@
+# Copyright (C) University of Tennessee Health Science Center, Memphis, TN.
+#
+# This program is free software: you can redistribute it and/or modify it
+# under the terms of the GNU Affero General Public License
+# as published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU Affero General Public License for more details.
+#
+# This program is available from Source Forge: at GeneNetwork Project
+# (sourceforge.net/projects/genenetwork/).
+#
+# Contact Drs. Robert W. Williams and Xiaodong Zhou (2010)
+# at rwilliams@uthsc.edu and xzhou15@uthsc.edu
+#
+#
+#
+# This module is used by GeneNetwork project (www.genenetwork.org)
+
+from inspect import stack
+from flask import Flask, g
+
+import MySQLdb
+import string
+import urllib2
+import json
+from base import webqtlConfig
+from utility.tools import USE_GN_SERVER, LOG_SQL
+from utility.benchmark import Bench
+
+from utility.logger import getLogger
+logger = getLogger(__name__ )
+
+###########################################################################
+#output: cursor instance
+#function: connect to database and return cursor instance
+###########################################################################
+def getCursor():
+    try:
+        logger.warning("Creating new MySQLdb cursor")
+        con = MySQLdb.Connect(db=webqtlConfig.DB_NAME, host=webqtlConfig.MYSQL_SERVER, user=webqtlConfig.DB_USER, passwd=webqtlConfig.DB_PASSWD)
+        cursor = con.cursor()
+        return cursor
+    except:
+        return None
+
+def fetchone(query):
+    """Return tuple containing one row by calling SQL directly
+
+    """
+    with Bench("SQL",LOG_SQL):
+        def helper(query):
+            res = g.db.execute(query)
+            return res.fetchone()
+        callername = stack()[1][3]
+        return logger.sql(callername, query, helper)
+
+def gn_server(path):
+    """Return JSON record by calling GN_SERVER
+
+    """
+    with Bench("GN_SERVER",LOG_SQL):
+        res = urllib2.urlopen("http://localhost:8880/"+path)
+        rest = res.read()
+        res2 = json.loads(rest)
+        logger.info(res2)
+        return res2
+
+def retrieve_species(group):
+    """Get the species of a group (e.g. returns string "mouse" on "BXD"
+
+    """
+    if USE_GN_SERVER:
+        result = gn_server("/cross/"+group+".json")
+        return result["species"]
+    else:
+        result = fetchone("select Species.Name from Species, InbredSet where InbredSet.Name = '%s' and InbredSet.SpeciesId = Species.Id" % (group))
+        return result[0]
+
+def getMappingMethod(cursor=None, groupName=None):
+    if USE_GN_SERVER:
+        return gn_server("/cross/"+group+".json")["mapping_method_id"]
+    else:
+        return fetchone("select MappingMethodId from InbredSet where Name= '%s'" % groupName)
+
+###########################################################################
+#input: cursor, inbredSetId (int), strainId (int)
+#output: isMappingId (bull) info, value will be 0,1,2 or else, 0 or Null means
+# "can not do mapping", >0 means "can do mapping", >1 means "there exsists
+# redundant data, user needs to choose one to do mapping function"
+#function: retrieve isMappingId info from StrainXRef table
+###########################################################################
+
+def isMapping(cursor=None, inbredSetId=None, strainId=None):
+    cursor.execute("select IsMapping from StrainXRef where InbredSetId='%d' and StrainId = '%d'" %(inbredSetId, strainId))
+    isMappingId = cursor.fetchone()[0]
+    return isMappingId
+
+###########################################################################
+#input: cursor, groupName (string)
+#output: all species data info (array), value will be Null or else
+#function: retrieve all species info from Species table
+###########################################################################
+
+def getAllSpecies(cursor=None):
+    cursor.execute("select Id, Name, MenuName, FullName, TaxonomyId,OrderId from Species Order by OrderId")
+    allSpecies = cursor.fetchall()
+    return allSpecies
+
+
+def retrieve_species_id(group):
+    return g.db.execute("select SpeciesId from InbredSet where Name = %s", (group)).fetchone()[0]
+
+
+def getTissueDataSet(cursor=None):
+    """Retrieve all TissueProbeSetFreezeId,Name,FullName info from
+TissueProbeSetFreeze table.  These data will listed in the dropdown
+menu in the first page of Tissue Correlation
+
+    """
+    tissProbeSetFreezeIdList=[]
+    nameList =[]
+    fullNameList = []
+
+    query = "select Id,Name,FullName from TissueProbeSetFreeze; "
+    try:
+        cursor.execute(query)
+        result = cursor.fetchall()
+
+        for row in result:
+            tissProbeSetFreezeIdList.append(row[0])
+            nameList.append(row[1])
+            fullNameList.append(row[2])
+    except:
+        return None
+
+    return tissProbeSetFreezeIdList,nameList,fullNameList
+
+###########################################################################
+# input: cursor,GeneSymbol (string), and TissueProbeSetFreezeId (string)
+# output: geneId (string), dataId (string)
+# function: retrieve geneId and DataId from TissueProbeSetXRef table
+###########################################################################
+
+def getGeneIdDataIdForTissueBySymbol(cursor=None, GeneSymbol=None, TissueProbeSetFreezeId= 0):
+    query ="select GeneId, DataId from TissueProbeSetXRef where Symbol = '%s' and TissueProbeSetFreezeId=%s order by Mean desc" %(GeneSymbol,TissueProbeSetFreezeId)
+    try:
+        cursor.execute(query)
+        result = cursor.fetchone()
+        geneId = result[0]
+        dataId = result[1]
+    except:
+        geneId = 0
+        dataId = 0
+
+    return geneId,dataId
+
+###########################################################################
+# input: cursor, TissueProbeSetFreezeId (int)
+# output: chipId (int)
+# function: retrieve chipId from TissueProbeFreeze table
+###########################################################################
+
+def getChipIdByTissueProbeSetFreezeId(cursor=None, TissueProbeSetFreezeId=None):
+    query = "select TissueProbeFreezeId from TissueProbeSetFreeze where Id =%s" % TissueProbeSetFreezeId
+    try:
+        cursor.execute(query)
+        result = cursor.fetchone()
+        TissueProbeFreezeId = result[0]
+    except:
+        TissueProbeFreezeId =0
+
+    query1 = "select ChipId from TissueProbeFreeze where Id =%s" % TissueProbeFreezeId
+    try:
+        cursor.execute(query1)
+        result1 = cursor.fetchone()
+        chipId = result1[0]
+    except:
+        chipId =0
+
+    return chipId
+
+###########################################################################
+# input: cursor, TissueProbeSetFreezeId (int)
+# output: TissueCount (int)
+# function: retrieve how many tissue used in the specific dataset based on TissueProbeSetFreezeId
+###########################################################################
+def getTissueCountByTissueProbeSetFreezeId(cursor=None, TissueProbeSetFreezeId=None):
+    query1 ="select DataId from TissueProbeSetXRef where TissueProbeSetFreezeId =%s limit 1" % TissueProbeSetFreezeId
+    try:
+        cursor.execute(query1)
+        result1 = cursor.fetchone()
+        DataId = result1[0]
+
+        query2 =" select count(*) from TissueProbeSetData where Id=%s" % DataId
+        try:
+            cursor.execute(query2)
+            result2 = cursor.fetchone()
+            TissueCount = result2[0]
+        except:
+            TissueCount =0
+    except:
+        TissueCount =0
+
+    return TissueCount
+
+###########################################################################
+# input: cursor, TissueProbeSetFreezeId (int)
+# output: DataSetName(string),DataSetFullName(string)
+# function: retrieve DataSetName, DataSetFullName based on TissueProbeSetFreezeId
+###########################################################################
+def getDataSetNamesByTissueProbeSetFreezeId(cursor=None, TissueProbeSetFreezeId=None):
+    query ="select Name, FullName from TissueProbeSetFreeze where Id=%s" % TissueProbeSetFreezeId
+    try:
+        cursor.execute(query)
+        result = cursor.fetchone()
+        DataSetName = result[0]
+        DataSetFullName =result[1]
+    except:
+        DataSetName =None
+        DataSetFullName =None
+
+    return DataSetName, DataSetFullName
+
+###########################################################################
+# input: cursor, geneIdLst (list)
+# output: geneIdSymbolPair(dict),key is geneId, value is geneSymbol
+# function: retrieve GeneId, GeneSymbol based on geneId List
+###########################################################################
+def getGeneIdSymbolPairByGeneId(cursor=None, geneIdLst =None):
+    geneIdSymbolPair={}
+    for geneId in geneIdLst:
+        geneIdSymbolPair[geneId]=None
+
+    query ="select GeneId,GeneSymbol from GeneList where GeneId in (%s)" % string.join(geneIdLst, ", ")
+    try:
+        cursor.execute(query)
+        results = cursor.fetchall()
+        for item in results:
+            geneId =item[0]
+            geneSymbol =item[1]
+            geneIdSymbolPair[geneId]=geneSymbol
+    except:
+        geneIdSymbolPair=None
+
+    return geneIdSymbolPair
+
+
+def updateTissueProbesetXRefByProbesetId(cursor=None, probesetId=None):
+    query ="select Symbol,GeneId,Chr,Mb,description, Probe_Target_Description from ProbeSet where Id =%s"%probesetId
+    try:
+        cursor.execute(query)
+        result =cursor.fetchone()
+
+        updateQuery ='''
+                        Update TissueProbeSetXRef
+                        Set Symbol='%s',GeneId='%s', Chr='%s', Mb='%s', description ='%s',Probe_Target_Description='%s'
+                        where ProbesetId=%s
+                        '''%(result[0],result[1],result[2],result[3],result[4],result[5],probesetId)
+
+        cursor.execute(updateQuery)
+
+    except:
+        return None
-- 
cgit v1.2.3