aboutsummaryrefslogtreecommitdiff
path: root/wqflask/base/webqtlTrait.py
diff options
context:
space:
mode:
authorZachary Sloan2012-11-29 18:44:01 -0600
committerZachary Sloan2012-11-29 18:44:01 -0600
commit94300b4488aa334ced34981981ad5d0ecdec01d6 (patch)
tree2e1c67ccf85dc66b1d0100ca11d2c3378ee43ae0 /wqflask/base/webqtlTrait.py
parent8540859f868a5fa6827f35d7fa5cc14e97360850 (diff)
downloadgenenetwork2-94300b4488aa334ced34981981ad5d0ecdec01d6.tar.gz
Changed a number of variables (riset to group, db to dataset)
Put most of the code for cisLRS and transLRS searches into the class CisTransLrsSearch (might change this name to something else later) Simplified escape code for searches in do_search.py Got search_results working again after some changes
Diffstat (limited to 'wqflask/base/webqtlTrait.py')
-rwxr-xr-xwqflask/base/webqtlTrait.py146
1 files changed, 74 insertions, 72 deletions
diff --git a/wqflask/base/webqtlTrait.py b/wqflask/base/webqtlTrait.py
index 29087721..cc0e2321 100755
--- a/wqflask/base/webqtlTrait.py
+++ b/wqflask/base/webqtlTrait.py
@@ -24,11 +24,11 @@ class webqtlTrait:
print("in webqtlTrait")
self.db_conn = db_conn
self.cursor = self.db_conn.cursor()
- self.db = None # database object
+ self.dataset = None # database object
self.name = '' # Trait ID, ProbeSet ID, Published ID, etc.
self.cellid = ''
self.identification = 'un-named trait'
- self.riset = ''
+ self.group = ''
self.haveinfo = 0
self.sequence = '' # Blat sequence, available for ProbeSet
self.data = {}
@@ -41,22 +41,22 @@ class webqtlTrait:
elif name == 'fullname':
name2 = value.split("::")
if len(name2) == 2:
- self.db, self.name = name2
+ self.dataset, self.name = name2
elif len(name2) == 3:
- self.db, self.name, self.cellid = name2
+ self.dataset, self.name, self.cellid = name2
else:
raise KeyError, repr(value) + ' parameter format error.'
else:
raise KeyError, repr(name) + ' not a valid parameter for this class.'
- if self.db and isinstance(self.db, basestring):
+ if self.dataset and isinstance(self.dataset, basestring):
assert self.cursor, "Don't have a cursor"
- self.db = create_dataset(self.db_conn, self.db)
+ self.dataset = create_dataset(self.db_conn, self.dataset)
- #if self.db == None, not from a database
- print("self.db is:", self.db, type(self.db))
- if self.db:
- if self.db.type == "Temp":
+ #if self.dataset == None, not from a database
+ print("self.dataset is:", self.dataset, type(self.dataset))
+ if self.dataset:
+ if self.dataset.type == "Temp":
self.cursor.execute('''
SELECT
InbredSet.Name
@@ -66,9 +66,11 @@ class webqtlTrait:
Temp.InbredSetId = InbredSet.Id AND
Temp.Name = "%s"
''', self.name)
- self.riset = self.cursor.fetchone()[0]
+ self.group = self.cursor.fetchone()[0]
else:
- self.riset = self.db.get_group()
+ self.group = self.dataset.get_group()
+
+ print("trinity, self.group is:", self.group)
#
# In ProbeSet, there are maybe several annotations match one sequence
@@ -82,8 +84,8 @@ class webqtlTrait:
# The variable self.sequence should be changed to self.BlatSeq
# It also should be changed in other places where it are used.
- if self.db:
- if self.db.type == 'ProbeSet':
+ if self.dataset:
+ if self.dataset.type == 'ProbeSet':
print("Doing ProbeSet Query")
query = '''
SELECT
@@ -95,7 +97,7 @@ class webqtlTrait:
ProbeSetFreeze.Id = ProbeSetXRef.ProbeSetFreezeId and
ProbeSet.Name = %s and
ProbeSetFreeze.Name = %s
- ''', (self.name, self.db.name)
+ ''', (self.name, self.dataset.name)
print("query is:", query)
self.cursor.execute(*query)
self.sequence = self.cursor.fetchone()[0]
@@ -104,8 +106,8 @@ class webqtlTrait:
def getName(self):
str = ""
- if self.db and self.name:
- str = "%s::%s" % (self.db, self.name)
+ if self.dataset and self.name:
+ str = "%s::%s" % (self.dataset, self.name)
if self.cellid:
str += "::" + self.cellid
else:
@@ -124,8 +126,8 @@ class webqtlTrait:
#
def getGivenName(self):
str = self.name
- if self.db and self.name:
- if self.db.type=='Temp':
+ if self.dataset and self.name:
+ if self.dataset.type=='Temp':
self.cursor.execute('SELECT description FROM Temp WHERE Name=%s', self.name)
desc = self.cursor.fetchone()[0]
if desc.__contains__('PCA'):
@@ -137,16 +139,16 @@ class webqtlTrait:
def displayName(self):
str = ""
- if self.db and self.name:
- if self.db.type=='Temp':
+ if self.dataset and self.name:
+ if self.dataset.type=='Temp':
desc = self.description
if desc.__contains__('PCA'):
desc = desc[desc.rindex(':')+1:].strip()
else:
desc = desc[:desc.index('entered')].strip()
- str = "%s::%s" % (self.db, desc)
+ str = "%s::%s" % (self.dataset, desc)
else:
- str = "%s::%s" % (self.db, self.name)
+ str = "%s::%s" % (self.dataset, self.name)
if self.cellid:
str += "::" + self.cellid
else:
@@ -156,7 +158,7 @@ class webqtlTrait:
#def __str__(self):
- # #return "%s %s" % (self.getName(), self.riset)
+ # #return "%s %s" % (self.getName(), self.group)
# return self.getName()
#__str__ = getName
#__repr__ = __str__
@@ -207,7 +209,7 @@ class webqtlTrait:
#
def getSequence(self):
assert self.cursor
- if self.db.type == 'ProbeSet':
+ if self.dataset.type == 'ProbeSet':
self.cursor.execute('''
SELECT
ProbeSet.BlatSeq
@@ -218,7 +220,7 @@ class webqtlTrait:
ProbeSetFreeze.Id = ProbeSetXRef.ProbSetFreezeId and
ProbeSet.Name = %s
ProbeSetFreeze.Name = %s
- ''', self.name, self.db.name)
+ ''', self.name, self.dataset.name)
#self.cursor.execute(query)
results = self.fetchone()
@@ -230,9 +232,9 @@ class webqtlTrait:
if samplelist == None:
samplelist = []
- assert self.db and self.cursor
+ assert self.dataset and self.cursor
- if self.db.type == 'Temp':
+ if self.dataset.type == 'Temp':
query = '''
SELECT
Strain.Name, TempData.value, TempData.SE, TempData.NStrain, TempData.Id
@@ -246,7 +248,7 @@ class webqtlTrait:
Strain.Name
''' % self.name
#XZ, 03/02/2009: Xiaodong changed Data to PublishData, SE to PublishSE
- elif self.db.type == 'Publish':
+ elif self.dataset.type == 'Publish':
query = '''
SELECT
Strain.Name, PublishData.value, PublishSE.error, NStrain.count, PublishData.Id
@@ -263,7 +265,7 @@ class webqtlTrait:
PublishFreeze.Id = %d AND PublishData.StrainId = Strain.Id
Order BY
Strain.Name
- ''' % (self.name, self.db.id)
+ ''' % (self.name, self.dataset.id)
#XZ, 03/02/2009: Xiaodong changed Data to ProbeData, SE to ProbeSE
elif self.cellid:
@@ -287,9 +289,9 @@ class webqtlTrait:
ProbeData.StrainId = Strain.Id
Order BY
Strain.Name
- ''' % (self.cellid, self.name, self.db.name)
+ ''' % (self.cellid, self.name, self.dataset.name)
#XZ, 03/02/2009: Xiaodong added this block for ProbeSetData and ProbeSetSE
- elif self.db.type == 'ProbeSet':
+ elif self.dataset.type == 'ProbeSet':
#ProbeSet Data
query = '''
SELECT
@@ -306,7 +308,7 @@ class webqtlTrait:
ProbeSetData.StrainId = Strain.Id
Order BY
Strain.Name
- ''' % (self.name, self.db.name)
+ ''' % (self.name, self.dataset.name)
#XZ, 03/02/2009: Xiaodong changeded Data to GenoData, SE to GenoSE
else:
#Geno Data
@@ -326,7 +328,7 @@ class webqtlTrait:
GenoData.StrainId = Strain.Id
Order BY
Strain.Name
- ''' % (webqtlDatabaseFunction.retrieveSpeciesId(self.cursor, self.db.riset), self.name, self.db.name)
+ ''' % (webqtlDatabaseFunction.retrieveSpeciesId(self.cursor, self.dataset.group), self.name, self.dataset.name)
self.cursor.execute(query)
@@ -341,7 +343,7 @@ class webqtlTrait:
if not samplelist or (samplelist and name in samplelist):
#if value != None:
# num_cases = None
- # if self.db.type in ('Publish', 'Temp'):
+ # if self.dataset.type in ('Publish', 'Temp'):
# ndata = item[3]
name = item[0]
self.data[name] = webqtlCaseData(*item) #name, value, variance, num_cases)
@@ -352,7 +354,7 @@ class webqtlTrait:
# if val != None:
# var = item[2]
# ndata = None
- # if self.db.type in ('Publish', 'Temp'):
+ # if self.dataset.type in ('Publish', 'Temp'):
# ndata = item[3]
# self.data[item[0]] = webqtlCaseData(val, var, ndata)
# #end for
@@ -370,9 +372,9 @@ class webqtlTrait:
# return self.__dict__.items()
def retrieveInfo(self, QTL = None):
- assert self.db and self.cursor
- if self.db.type == 'Publish':
- #self.db.DisField = ['Name','PubMed_ID','Phenotype','Abbreviation','Authors','Title',\
+ assert self.dataset and self.cursor
+ if self.dataset.type == 'Publish':
+ #self.dataset.DisField = ['Name','PubMed_ID','Phenotype','Abbreviation','Authors','Title',\
# 'Abstract', 'Journal','Volume','Pages','Month','Year','Sequence',\
# 'Units', 'comments']
query = '''
@@ -393,11 +395,11 @@ class webqtlTrait:
Publication.Id = PublishXRef.PublicationId AND
PublishXRef.InbredSetId = PublishFreeze.InbredSetId AND
PublishFreeze.Id =%s
- ''' % (self.name, self.db.id)
+ ''' % (self.name, self.dataset.id)
#XZ, 05/08/2009: Xiaodong add this block to use ProbeSet.Id to find the probeset instead of just using ProbeSet.Name
#XZ, 05/08/2009: to avoid the problem of same probeset name from different platforms.
- elif self.db.type == 'ProbeSet':
- display_fields_string = ',ProbeSet.'.join(self.db.display_fields)
+ elif self.dataset.type == 'ProbeSet':
+ display_fields_string = ',ProbeSet.'.join(self.dataset.display_fields)
display_fields_string = 'ProbeSet.' + display_fields_string
query = """
SELECT %s
@@ -407,11 +409,11 @@ class webqtlTrait:
ProbeSetXRef.ProbeSetId = ProbeSet.Id AND
ProbeSetFreeze.Name = '%s' AND
ProbeSet.Name = '%s'
- """ % (display_fields_string, self.db.name, self.name)
+ """ % (display_fields_string, self.dataset.name, self.name)
#XZ, 05/08/2009: We also should use Geno.Id to find marker instead of just using Geno.Name
# to avoid the problem of same marker name from different species.
- elif self.db.type == 'Geno':
- display_fields_string = string.join(self.db.display_fields,',Geno.')
+ elif self.dataset.type == 'Geno':
+ display_fields_string = string.join(self.dataset.display_fields,',Geno.')
display_fields_string = 'Geno.' + display_fields_string
query = """
SELECT %s
@@ -421,10 +423,10 @@ class webqtlTrait:
GenoXRef.GenoId = Geno.Id AND
GenoFreeze.Name = '%s' AND
Geno.Name = '%s'
- """ % (display_fields_string, self.db.name, self.name)
+ """ % (display_fields_string, self.dataset.name, self.name)
else: #Temp type
query = 'SELECT %s FROM %s WHERE Name = "%s"' % \
- (string.join(self.db.display_fields,','), self.db.type, self.name)
+ (string.join(self.dataset.display_fields,','), self.dataset.type, self.name)
self.cursor.execute(query)
@@ -433,16 +435,16 @@ class webqtlTrait:
self.haveinfo = 1
#XZ: assign SQL query result to trait attributes.
- for i, field in enumerate(self.db.display_fields):
+ for i, field in enumerate(self.dataset.display_fields):
setattr(self, field, traitInfo[i])
- if self.db.type == 'Publish':
+ if self.dataset.type == 'Publish':
self.confidential = 0
if self.pre_publication_description and not self.pubmed_id:
self.confidential = 1
self.homologeneid = None
- if self.db.type == 'ProbeSet' and self.riset and self.geneid:
+ if self.dataset.type == 'ProbeSet' and self.group and self.geneid:
#XZ, 05/26/2010: From time to time, this query get error message because some geneid values in database are not number.
#XZ: So I have to test if geneid is number before execute the query.
#XZ: The geneid values in database should be cleaned up.
@@ -463,7 +465,7 @@ class webqtlTrait:
InbredSet.Name = '%s' AND
InbredSet.SpeciesId = Species.Id AND
Species.TaxonomyId = Homologene.TaxonomyId
- """ % (self.geneid, self.riset)
+ """ % (self.geneid, self.group)
self.cursor.execute(query)
result = self.cursor.fetchone()
else:
@@ -473,7 +475,7 @@ class webqtlTrait:
self.homologeneid = result[0]
if QTL:
- if self.db.type == 'ProbeSet' and not self.cellid:
+ if self.dataset.type == 'ProbeSet' and not self.cellid:
query = '''
SELECT
ProbeSetXRef.Locus, ProbeSetXRef.LRS, ProbeSetXRef.pValue, ProbeSetXRef.mean
@@ -483,14 +485,14 @@ class webqtlTrait:
ProbeSetXRef.ProbeSetId = ProbeSet.Id AND
ProbeSet.Name = "%s" AND
ProbeSetXRef.ProbeSetFreezeId =%s
- ''' % (self.name, self.db.id)
+ ''' % (self.name, self.dataset.id)
self.cursor.execute(query)
traitQTL = self.cursor.fetchone()
if traitQTL:
self.locus, self.lrs, self.pvalue, self.mean = traitQTL
else:
self.locus = self.lrs = self.pvalue = self.mean = ""
- if self.db.type == 'Publish':
+ if self.dataset.type == 'Publish':
query = '''
SELECT
PublishXRef.Locus, PublishXRef.LRS
@@ -500,7 +502,7 @@ class webqtlTrait:
PublishXRef.Id = %s AND
PublishXRef.InbredSetId = PublishFreeze.InbredSetId AND
PublishFreeze.Id =%s
- ''' % (self.name, self.db.id)
+ ''' % (self.name, self.dataset.id)
self.cursor.execute(query)
traitQTL = self.cursor.fetchone()
if traitQTL:
@@ -514,7 +516,7 @@ class webqtlTrait:
if not self.haveinfo:
self.retrieveInfo()
- if self.db.type == 'Publish':
+ if self.dataset.type == 'Publish':
PubMedLink = ""
if self.pubmed_id:
PubMedLink = HT.Href(text="PubMed %d : " % self.pubmed_id,
@@ -524,10 +526,10 @@ class webqtlTrait:
if formName:
setDescription2 = HT.Href(url="javascript:showDatabase3('%s','%s','%s','')" %
- (formName, self.db.name, self.name), Class = "fs14")
+ (formName, self.dataset.name, self.name), Class = "fs14")
else:
setDescription2 = HT.Href(url="javascript:showDatabase2('%s','%s','')" %
- (self.db.name,self.name), Class = "fs14")
+ (self.dataset.name,self.name), Class = "fs14")
if self.confidential and not webqtlUtil.hasAccessToConfidentialPhenotypeTrait(privilege=privilege, userName=userName, authorized_users=authorized_users):
setDescription2.append('RecordID/%s - %s' % (self.name, self.pre_publication_description))
@@ -545,20 +547,20 @@ class webqtlTrait:
setDescription2.append(HT.Italic('%s, and colleagues' % a1))
setDescription = HT.Span(PubMedLink, setDescription2)
- elif self.db.type == 'Temp':
+ elif self.dataset.type == 'Temp':
setDescription = HT.Href(text="%s" % (self.description),url="javascript:showDatabase2\
- ('%s','%s','')" % (self.db.name,self.name), Class = "fs14")
+ ('%s','%s','')" % (self.dataset.name,self.name), Class = "fs14")
setDescription = HT.Span(setDescription)
- elif self.db.type == 'Geno': # Genome DB only available for single search
+ elif self.dataset.type == 'Geno': # Genome DB only available for single search
if formName:
setDescription = HT.Href(text="Locus %s [Chr %s @ %s Mb]" % (self.name,self.chr,\
'%2.3f' % self.mb),url="javascript:showDatabase3('%s','%s','%s','')" % \
- (formName, self.db.name, self.name), Class = "fs14")
+ (formName, self.dataset.name, self.name), Class = "fs14")
else:
setDescription = HT.Href(text="Locus %s [Chr %s @ %s Mb]" % (self.name,self.chr,\
'%2.3f' % self.mb),url="javascript:showDatabase2('%s','%s','')" % \
- (self.db.name,self.name), Class = "fs14")
+ (self.dataset.name,self.name), Class = "fs14")
setDescription = HT.Span(setDescription)
@@ -566,20 +568,20 @@ class webqtlTrait:
if self.cellid:
if formName:
setDescription = HT.Href(text="ProbeSet/%s/%s" % (self.name, self.cellid),url=\
- "javascript:showDatabase3('%s','%s','%s','%s')" % (formName, self.db.name,self.name,self.cellid), \
+ "javascript:showDatabase3('%s','%s','%s','%s')" % (formName, self.dataset.name,self.name,self.cellid), \
Class = "fs14")
else:
setDescription = HT.Href(text="ProbeSet/%s/%s" % (self.name,self.cellid),url=\
- "javascript:showDatabase2('%s','%s','%s')" % (self.db.name,self.name,self.cellid), \
+ "javascript:showDatabase2('%s','%s','%s')" % (self.dataset.name,self.name,self.cellid), \
Class = "fs14")
else:
if formName:
setDescription = HT.Href(text="ProbeSet/%s" % self.name, url=\
- "javascript:showDatabase3('%s','%s','%s','')" % (formName, self.db.name,self.name), \
+ "javascript:showDatabase3('%s','%s','%s','')" % (formName, self.dataset.name,self.name), \
Class = "fs14")
else:
setDescription = HT.Href(text="ProbeSet/%s" % self.name, url=\
- "javascript:showDatabase2('%s','%s','')" % (self.db.name,self.name), \
+ "javascript:showDatabase2('%s','%s','')" % (self.dataset.name,self.name), \
Class = "fs14")
if self.symbol and self.chr and self.mb:
setDescription.append(' [')
@@ -591,9 +593,9 @@ class webqtlTrait:
setDescription.append('; %s' % self.probe_target_description)
setDescription = HT.Span(setDescription)
- if self.db.type != 'Temp' and dispFromDatabase:
+ if self.dataset.type != 'Temp' and dispFromDatabase:
setDescription.append( ' --- FROM : ')
- setDescription.append(self.db.genHTML(Class='cori'))
+ setDescription.append(self.dataset.genHTML(Class='cori'))
return setDescription
@property
@@ -654,13 +656,13 @@ class webqtlTrait:
select ProbeFreeze.Name from ProbeFreeze, ProbeSetFreeze
where
ProbeFreeze.Id = ProbeSetFreeze.ProbeFreezeId AND
- ProbeSetFreeze.Id = %d""" % thisTrait.db.id)
+ ProbeSetFreeze.Id = %d""" % thisTrait.dataset.id)
probeDBName = self.cursor.fetchone()[0]
return dict(name = probeDBName,
url = None)
else:
- return dict(name = self.db.fullname,
- url = webqtlConfig.INFOPAGEHREF % self.db.name)
+ return dict(name = self.dataset.fullname,
+ url = webqtlConfig.INFOPAGEHREF % self.dataset.name)
def calculate_correlation(self, values, method):
"""Calculate the correlation value and p value according to the method specified"""