aboutsummaryrefslogtreecommitdiff
path: root/web/webqtl/qtlminer/GeneUtil.py
diff options
context:
space:
mode:
Diffstat (limited to 'web/webqtl/qtlminer/GeneUtil.py')
-rwxr-xr-xweb/webqtl/qtlminer/GeneUtil.py658
1 files changed, 0 insertions, 658 deletions
diff --git a/web/webqtl/qtlminer/GeneUtil.py b/web/webqtl/qtlminer/GeneUtil.py
deleted file mode 100755
index 3ae7f3c0..00000000
--- a/web/webqtl/qtlminer/GeneUtil.py
+++ /dev/null
@@ -1,658 +0,0 @@
-import string
-import os
-
-
-from base import webqtlConfig
-
-
-#Just return a list of dictionaries
-#each dictionary contains sub-dictionary
-def loadGenes(cursor, chrName, diffCol, startMb, endMb, webqtlDb =None, species='mouse'):
- #cursor.execute("desc GeneList")
- #results = cursor.fetchall()
- #fetchFields = map(lambda X:X[0], results)
- fetchFields = ['SpeciesId', 'Id', 'GeneSymbol', 'GeneDescription', 'Chromosome', 'TxStart', 'TxEnd',
- 'Strand', 'GeneID', 'NM_ID', 'kgID', 'GenBankID', 'UnigenID', 'ProteinID', 'AlignID',
- 'exonCount', 'exonStarts', 'exonEnds', 'cdsStart', 'cdsEnd']
-
- ##List All Species in the Gene Table
- speciesDict = {}
- cursor.execute("select Species.Name, GeneList.SpeciesId from Species, GeneList where \
- GeneList.SpeciesId = Species.Id group by GeneList.SpeciesId")
- results = cursor.fetchall()
- for item in results:
- speciesDict[item[0]] = item[1]
-
- ##List current Species and other Species
- speciesId = speciesDict[species]
- otherSpecies = map(lambda X: [X, speciesDict[X]], speciesDict.keys())
- otherSpecies.remove([species, speciesId])
-
- cursor.execute("""SELECT %s from GeneList
- where
- SpeciesId = %d AND Chromosome = '%s' AND
- ((TxStart > %f and TxStart <= %f) OR (TxEnd > %f and TxEnd <= %f))
- order by txStart
- """
- % (string.join(fetchFields, ", "), speciesId, chrName, startMb, endMb, startMb, endMb))
- results = cursor.fetchall()
- GeneList = []
-
- if results:
- for result in results:
- newdict = {}
- for j, item in enumerate(fetchFields):
- newdict[item] = result[j]
- #count SNPs if possible
- if diffCol and species=='mouse':
- cursor.execute("""
- select
- count(*) from BXDSnpPosition
- where
- Chr = '%s' AND Mb >= %2.6f AND Mb < %2.6f AND
- StrainId1 = %d AND StrainId2 = %d
- """ % (chrName, newdict["TxStart"], newdict["TxEnd"], diffCol[0], diffCol[1]))
- newdict["snpCount"] = cursor.fetchone()[0]
- newdict["snpDensity"] = newdict["snpCount"]/(newdict["TxEnd"]-newdict["TxStart"])/1000.0
- else:
- newdict["snpDensity"] = newdict["snpCount"] = 0
-
- try:
- newdict['GeneLength'] = 1000.0*(newdict['TxEnd'] - newdict['TxStart'])
- except:
- pass
-
- #load gene from other Species by the same name
- for item in otherSpecies:
- othSpec, othSpecId = item
- newdict2 = {}
-
- cursor.execute("SELECT %s from GeneList where SpeciesId = %d and geneSymbol= '%s' limit 1" %
- (string.join(fetchFields, ", "), othSpecId, newdict["GeneSymbol"]))
- resultsOther = cursor.fetchone()
- if resultsOther:
- for j, item in enumerate(fetchFields):
- newdict2[item] = resultsOther[j]
-
- #count SNPs if possible, could be a separate function
- if diffCol and othSpec == 'mouse':
- cursor.execute("""
- select
- count(*) from BXDSnpPosition
- where
- Chr = '%s' AND Mb >= %2.6f AND Mb < %2.6f AND
- StrainId1 = %d AND StrainId2 = %d
- """ % (chrName, newdict["TxStart"], newdict["TxEnd"], diffCol[0], diffCol[1]))
-
-
-
- newdict2["snpCount"] = cursor.fetchone()[0]
- newdict2["snpDensity"] = newdict2["snpCount"]/(newdict2["TxEnd"]-newdict2["TxStart"])/1000.0
- else:
- newdict2["snpDensity"] = newdict2["snpCount"] = 0
-
- try:
- newdict2['GeneLength'] = 1000.0*(newdict2['TxEnd'] - newdict2['TxStart'])
- except:
- pass
-
- newdict['%sGene' % othSpec] = newdict2
-
- GeneList.append(newdict)
-
- return GeneList
-
-
-
-
-
-
-def loadGenesForQTLminer(cursor, chrName, diffCol, startMb, endMb, webqtlDb =None, species='mouse', databaseA='HC_M2_0606_P', databaseB='HC_M2CB_1205_R', databaseC='Illum_LXS_Hipp_loess0807', str1='C57BL/6J', str2='DBA/2J'):
- #cursor.execute("desc GeneList")
- #results = cursor.fetchall()
- #fetchFields = map(lambda X:X[0], results)
- fetchFields = ['SpeciesId', 'Id', 'GeneSymbol', 'GeneDescription', 'Chromosome', 'TxStart', 'TxEnd',
- 'Strand', 'GeneID', 'NM_ID', 'kgID', 'GenBankID', 'UnigenID', 'ProteinID', 'AlignID',
- 'exonCount', 'exonStarts', 'exonEnds', 'cdsStart', 'cdsEnd']
-
- ##List All Species in the Gene Table
- speciesDict = {}
- cursor.execute("select Species.Name, GeneList.SpeciesId from Species, GeneList where \
- GeneList.SpeciesId = Species.Id group by GeneList.SpeciesId")
- results = cursor.fetchall()
- for item in results:
- speciesDict[item[0]] = item[1]
-
-
-# fpText = open(os.path.join(webqtlConfig.TMPDIR, "strains") + str(j) + '.txt','wb')
-# fpText.write("strain: '%d' \n" % thisone )
-# fpText.close()
-# strainids.append(thisone)
-
-
-
-
- ##List current Species and other Species
- speciesId = speciesDict[species]
- otherSpecies = map(lambda X: [X, speciesDict[X]], speciesDict.keys())
- otherSpecies.remove([species, speciesId])
-
- cursor.execute("""SELECT %s from GeneList
- where
- SpeciesId = %d AND Chromosome = '%s' AND
- ((TxStart > %f and TxStart <= %f) OR (TxEnd > %f and TxEnd <= %f))
- order by txStart
- """
- % (string.join(fetchFields, ", "), speciesId, chrName, startMb, endMb, startMb, endMb))
- results = cursor.fetchall()
- GeneList = []
-
- if results:
- for result in results:
- newdict = {}
- for j, item in enumerate(fetchFields):
- newdict[item] = result[j]
-
-## get pathways
-
- cursor.execute("""
- select
- pathway
- FROM
- kegg.mmuflat
- where
- gene = '%s'
- """ % (newdict["GeneID"]) )
-
- resAAA = cursor.fetchall()
- if resAAA:
- myFields = ['pathways']
- for j, item in enumerate(myFields):
- temp = []
- for k in resAAA:
- temp.append(k[j])
- newdict["pathways"] = temp
-
- cursor.execute("""
- select
- name
- FROM
- kegg.mmuflat
- where
- gene = '%s'
- """ % (newdict["GeneID"]) )
-
- resAAA = cursor.fetchall()
- if resAAA:
- myFields = ['pathwaynames']
- for j, item in enumerate(myFields):
- temp = []
- for k in resAAA:
- temp.append(k[j])
- newdict["pathwaynames"] = temp
-
-## get GO terms
-
- cursor.execute("""
- SELECT
- distinct go.term.name
- FROM go.gene_product
- INNER JOIN go.dbxref ON (go.gene_product.dbxref_id=go.dbxref.id)
- INNER JOIN go.association ON (go.gene_product.id=go.association.gene_product_id)
- INNER JOIN go.term ON (go.association.term_id=go.term.id)
- WHERE
- go.dbxref.xref_key = (select mgi from go.genemgi where gene='%s' limit 1)
- AND
- go.dbxref.xref_dbname = 'MGI'
- AND
- go.term.term_type='biological_process'
- """ % (newdict["GeneID"]) )
-
- resAAA = cursor.fetchall()
- if resAAA:
- myFields = ['goterms']
- for j, item in enumerate(myFields):
- temp = []
- for k in resAAA:
- temp.append(k[j])
- newdict["goterms"] = temp
-
-
-
-
-
-
- newdict["snpDensity"] = newdict["snpCount"] = newdict["snpCountall"] = newdict["snpCountmis"] = newdict["snpCountBXD"] = newdict["snpCountmissel"] = 0
-
- #count SNPs if possible
- if diffCol and species=='mouse':
- cursor.execute("""
- select
- count(*) from BXDSnpPosition
- where
- Chr = '%s' AND Mb >= %2.6f AND Mb < %2.6f AND
- StrainId1 = %d AND StrainId2 = %d
- """ % (chrName, newdict["TxStart"], newdict["TxEnd"], diffCol[0], diffCol[1]))
- newdict["snpCount"] = cursor.fetchone()[0]
- newdict["snpDensity"] = newdict["snpCount"]/(newdict["TxEnd"]-newdict["TxStart"])/1000.0
- else:
- newdict["snpDensity"] = newdict["snpCount"] = 0
-
- try:
- newdict['GeneLength'] = 1000.0*(newdict['TxEnd'] - newdict['TxStart'])
- except:
- pass
-
-
-
-#self.cursor.execute("SELECT geneSymbol, chromosome, txStart, txEnd from GeneList where SpeciesId= 1 and geneSymbol = %s", opt.geneName)
-
-
-
-
- ## search with gene name... doesnt matter. it changed to start and end position anyway
- ##self.cursor.execute("SELECT geneSymbol, chromosome, txStart, txEnd from GeneList where SpeciesId= 1 and geneSymbol = %s", newdict["GeneSymbol"])
-
-
- #count SNPs for all strains
- cursor.execute("""
- SELECT
- distinct SnpAll.Id
- from
- SnpAll
- where
- SpeciesId = '1' and SnpAll.Chromosome = '%s' AND
- SnpAll.Position >= %2.6f and SnpAll.Position < %2.6f AND
- SnpAll.Exon='Y'
- """ % (newdict["Chromosome"], newdict["TxStart"], newdict["TxEnd"]))
- snpfetch = cursor.fetchall()
- newdict["snpCountmis"] = len(snpfetch)
-
-## # count SNPs for selected strains
-
- sql = """SELECT
- distinct SnpAll.Id, `%s`, `%s`
- from
- SnpAll, SnpPattern
- where
- SpeciesId = '1' and SnpAll.Chromosome = '%s' AND
- SnpAll.Position >= %2.6f and SnpAll.Position < %2.6f and SnpAll.Id = SnpPattern.SnpId AND
- SnpPattern.`%s` != SnpPattern.`%s` AND
- SnpAll.Exon='Y'
- """ % (str1, str2, newdict["Chromosome"], newdict["TxStart"], newdict["TxEnd"], str1, str2)
- cursor.execute(sql)
- ressnp = cursor.fetchall()
- newdict["snpCountmissel"] = len(ressnp)
- newdict["hassnp"] = 'n'
- if len(ressnp)>0 :
- newdict["hassnp"]= 'y'
-## ####################################### NEW NEW NEW
-
-
-
-
-
-
-
- # count Indels for BXD mice
- cursor.execute("""
- SELECT
- distinct IndelAll.Name, IndelAll.Chromosome, IndelAll.SourceId, IndelAll.Mb_start,
- IndelAll.Mb_end, IndelAll.Strand, IndelAll.Type, IndelAll.Size, IndelAll.InDelSequence,
- SnpSource.Name
- from
- SnpSource, IndelAll
- where
- IndelAll.SpeciesId = '1' and IndelAll.Chromosome = '%s' AND
- IndelAll.Mb_start >= %2.6f and IndelAll.Mb_start < (%2.6f+.0010) AND
- SnpSource.Id = IndelAll.SourceId
- order by IndelAll.Mb_start
- """ % (newdict["Chromosome"], newdict["TxStart"], newdict["TxEnd"]))
-
- ressnp = cursor.fetchall()
- newdict["indelCountBXD"] = len(ressnp)
- newdict["hasindel"] = 'n'
- newdict["hasexpr"] = 'n'
- newdict["hascis"] = 'n'
- newdict["score"] = 0
- if len(ressnp)>0 :
- newdict["hasindel"]= 'y'
-
-## # cursor.execute("""
-## # select
-## # Name from ProbeSet
-## # where
-## # GeneId = '%s' AND ChipId=4 limit 1
-## # """ % (newdict["GeneID"]))
-## # if species=='mouse':
-## # cursor.execute("""
-## # select
-## # Name from ProbeSet
-## # where
-## # GeneId = '%s' AND ChipId=4
-## # """ % (newdict["GeneID"]))
-## # results = cursor.fetchall()
-## # psets = []
-## # for item in results:
-## # psets.append(item)
-## # newdict["probeset"] = psets
-## #
-## # else:
-## # newdict["probeset"] = "empty"
-
-
-
-
- if species=='mouse':
- cursor.execute("""
- select
- distinct 0,
- ProbeSet.Name as TNAME,
- round(ProbeSetXRef.Mean,1) as TMEAN,
- round(ProbeSetXRef.LRS,1) as TLRS,
- ProbeSet.Chr_num as TCHR_NUM,
- ProbeSet.Mb as TMB,
- ProbeSet.Symbol as TSYMBOL,
- ProbeSet.name_num as TNAME_NUM
- FROM ProbeSetXRef, ProbeSetFreeze, ProbeSet
- where
- ( MATCH (ProbeSet.Name,ProbeSet.description,ProbeSet.symbol,
- alias,GenbankId,UniGeneId, Probe_Target_Description)
- AGAINST ('%s' IN BOOLEAN MODE) )
- and ProbeSet.symbol = '%s'
- and ProbeSet.Id = ProbeSetXRef.ProbeSetId
- and ProbeSetXRef.ProbeSetFreezeId = ProbeSetFreeze.Id
- and ProbeSetFreeze.Id = (select Id from ProbeSetFreeze where Name='%s' limit 1)
- """ % (newdict["GeneSymbol"],newdict["GeneSymbol"],databaseA))
- resA = cursor.fetchall()
-
- if resA:
- myFields = ['dummyA','probesetA','meanA','newlrsA','probesetchrA','probesetmbA','probesetsymbolA','probesetnamenumA']
-
-# fpText = open(os.path.join(webqtlConfig.TMPDIR, "res") + '.txt','wb')
- #fpText.write("newdictgeneid '%s' \n" % newdict["GeneId"])
- for j, item in enumerate(myFields):
- temp = []
- for k in resA:
- # fpText.write("j: result: '%s' \n" % k[j])
- temp.append(k[j])
- newdict[item] = temp
- # fpText.close()
-
-
- # put probesetcisA here
-
- cursor.execute("""
- select
- distinct 0,
- if( (ProbeSet.Chr = Geno.Chr AND ProbeSetXRef.LRS > 10.0000000 and ABS(ProbeSet.Mb-Geno.Mb) < 10.0000000 ) , concat('yes(',round(ProbeSetXRef.LRS,1),')') , 'no') as cis
- FROM Geno, ProbeSetXRef, ProbeSetFreeze, ProbeSet
- where
- ( MATCH (ProbeSet.Name,ProbeSet.description,ProbeSet.symbol,
- alias,GenbankId,UniGeneId, Probe_Target_Description)
- AGAINST ('%s' IN BOOLEAN MODE) )
- and ProbeSet.symbol = '%s'
- and ProbeSet.Id = ProbeSetXRef.ProbeSetId
- and Geno.SpeciesId=1 #XZ: I add this line to speed up query
- and ProbeSetXRef.Locus = Geno.name
- and ProbeSetXRef.ProbeSetFreezeId = ProbeSetFreeze.Id
- and ProbeSetFreeze.Id = (select Id from ProbeSetFreeze where Name='%s' limit 1)
- """ % (newdict["GeneSymbol"],newdict["GeneSymbol"],databaseA))
-
- resA2 = cursor.fetchall()
- if resA2:
- myFields = ['dummyA2','probesetcisA']
- for j, item in enumerate(myFields):
- temp = []
- for k in resA2:
- # fpText.write("j: result: '%s' \n" % k[j])
- temp.append(k[j])
- newdict[item] = temp
- else:
- newdict['probesetcisA'] = ''
-
-
-
- # specially for this dataset only
- newdict["hasexpr"] = 'n'
- if len(newdict["meanA"])>0:
- for mym in newdict["meanA"]:
- if mym>8:
- newdict["hasexpr"] = 'y'
-
- # specially for this dataset only
- newdict["hascis"] = 'n'
- if len(newdict["probesetcisA"])>0:
- for mym in newdict["probesetcisA"]:
- if mym != 'no':
- newdict["hascis"] = 'y'
-
- else:
- myFields = ['dummyA','probesetA,''meanA','newlrsA','probesetchrA','probesetmbA','probesetsymbolA','probesetnamenumA', 'probesetcisA']
- for j, item in enumerate(myFields):
- newdict[item] = "--"
-
- # specially for this dataset only
- newdict["hasexpr"] = 'n'
- newdict["hascis"] = 'n'
- newdict["score"] = 0
-
-########################## FOR B
-
- newdict["score"] = 0
- if newdict["hassnp"] == 'y':
- newdict["score"] = newdict["score"] + 1
- if newdict["hasexpr"] == 'y':
- newdict["score"] = newdict["score"] + 1
- if newdict["hasindel"] == 'y':
- newdict["score"] = newdict["score"] + 1
- if newdict["hascis"] == 'y':
- newdict["score"] = newdict["score"] + 1
-
-
-
- if species=='mouse':
- cursor.execute("""
- select
- distinct 0,
- ProbeSet.Name as TNAME,
- round(ProbeSetXRef.Mean,1) as TMEAN,
- round(ProbeSetXRef.LRS,1) as TLRS,
- ProbeSet.Chr_num as TCHR_NUM,
- ProbeSet.Mb as TMB,
- ProbeSet.Symbol as TSYMBOL,
- ProbeSet.name_num as TNAME_NUM
- FROM ProbeSetXRef, ProbeSetFreeze, ProbeSet
- where
- ( MATCH (ProbeSet.Name,ProbeSet.description,ProbeSet.symbol,
- alias,GenbankId,UniGeneId, Probe_Target_Description)
- AGAINST ('%s' IN BOOLEAN MODE) )
- and ProbeSet.symbol = '%s'
- and ProbeSet.Id = ProbeSetXRef.ProbeSetId
- and ProbeSetXRef.ProbeSetFreezeId = ProbeSetFreeze.Id
- and ProbeSetFreeze.Id = (select Id from ProbeSetFreeze where Name='%s' limit 1)
- """ % (newdict["GeneSymbol"],newdict["GeneSymbol"],databaseB))
-
- resB = cursor.fetchall()
- if resB:
- myFields = ['dummyB','probesetB','meanB','newlrsB','probesetchrB','probesetmbB','probesetsymbolB','probesetnamenumB']
-
-# fpText = open(os.path.join(webqtlConfig.TMPDIR, "res") + '.txt','wb')
- #fpText.write("newdictgeneid '%s' \n" % newdict["GeneId"])
- for j, item in enumerate(myFields):
- temp = []
- for k in resB:
- # fpText.write("j: result: '%s' \n" % k[j])
- temp.append(k[j])
- newdict[item] = temp
- # fpText.close()
-
-
- # put probesetcisB here
- cursor.execute("""
- select
- distinct 0,
- if( (ProbeSet.Chr = Geno.Chr AND ProbeSetXRef.LRS > 10.0000000 and ABS(ProbeSet.Mb-Geno.Mb) < 10.0000000 ) , concat('yes(',round(ProbeSetXRef.LRS,1),')') , 'no') as cis
- FROM Geno, ProbeSetXRef, ProbeSetFreeze, ProbeSet
- where
- ( MATCH (ProbeSet.Name,ProbeSet.description,ProbeSet.symbol,
- alias,GenbankId,UniGeneId, Probe_Target_Description)
- AGAINST ('%s' IN BOOLEAN MODE) )
- and ProbeSet.symbol = '%s'
- and ProbeSet.Id = ProbeSetXRef.ProbeSetId
- and Geno.SpeciesId=1 #XZ: I add this line to speed up query
- and ProbeSetXRef.Locus = Geno.name
- and ProbeSetXRef.ProbeSetFreezeId = ProbeSetFreeze.Id
- and ProbeSetFreeze.Id = (select Id from ProbeSetFreeze where Name='%s' limit 1)
- """ % (newdict["GeneSymbol"],newdict["GeneSymbol"],databaseB))
-
- resB2 = cursor.fetchall()
- if resB2:
- myFields = ['dummyB2','probesetcisB']
- for j, item in enumerate(myFields):
- temp = []
- for k in resB2:
- # fpText.write("j: result: '%s' \n" % k[j])
- temp.append(k[j])
- newdict[item] = temp
- else:
- newdict['probesetcisB'] = ''
-
-
- else:
- myFields = ['dummyB','probesetB,''meanB','newlrsB','probesetchrB','probesetmbB','probesetsymbolB','probesetnamenumB', 'probesetcisB']
- for j, item in enumerate(myFields):
- newdict[item] = "--"
-
-
-
-##########################
-
-
-########################## FOR C
-
-
- if species=='mouse':
- cursor.execute("""
- select
- distinct 0,
- ProbeSet.Name as TNAME,
- round(ProbeSetXRef.Mean,1) as TMEAN,
- round(ProbeSetXRef.LRS,1) as TLRS,
- ProbeSet.Chr_num as TCHR_NUM,
- ProbeSet.Mb as TMB,
- ProbeSet.Symbol as TSYMBOL,
- ProbeSet.name_num as TNAME_NUM
- FROM ProbeSetXRef, ProbeSetFreeze, ProbeSet
- where
- ( MATCH (ProbeSet.Name,ProbeSet.description,ProbeSet.symbol,
- alias,GenbankId,UniGeneId, Probe_Target_Description)
- AGAINST ('%s' IN BOOLEAN MODE) )
- and ProbeSet.symbol = '%s'
- and ProbeSet.Id = ProbeSetXRef.ProbeSetId
- and ProbeSetXRef.ProbeSetFreezeId = ProbeSetFreeze.Id
- and ProbeSetFreeze.Id = (select Id from ProbeSetFreeze where Name='%s' limit 1)
- """ % (newdict["GeneSymbol"],newdict["GeneSymbol"],databaseC))
-
- resC = cursor.fetchall()
- if resC:
- myFields = ['dummyC','probesetC','meanC','newlrsC','probesetchrC','probesetmbC','probesetsymbolC','probesetnamenumC']
-
-# fpText = open(os.path.join(webqtlConfig.TMPDIR, "res") + '.txt','wb')
- #fpText.write("newdictgeneid '%s' \n" % newdict["GeneId"])
- for j, item in enumerate(myFields):
- temp = []
- for k in resC:
- # fpText.write("j: result: '%s' \n" % k[j])
- temp.append(k[j])
- newdict[item] = temp
- # fpText.close()
-
-
- # put probesetcisC here
- cursor.execute("""
- select
- distinct 0,
- if( (ProbeSet.Chr = Geno.Chr AND ProbeSetXRef.LRS > 10.0000000 and ABS(ProbeSet.Mb-Geno.Mb) < 10.0000000 ) , concat('yes(',round(ProbeSetXRef.LRS,1),')') , 'no') as cis
- FROM Geno, ProbeSetXRef, ProbeSetFreeze, ProbeSet
- where
- ( MATCH (ProbeSet.Name,ProbeSet.description,ProbeSet.symbol,
- alias,GenbankId,UniGeneId, Probe_Target_Description)
- AGAINST ('%s' IN BOOLEAN MODE) )
- and ProbeSet.symbol = '%s'
- and ProbeSet.Id = ProbeSetXRef.ProbeSetId
- and Geno.SpeciesId=1 #XZ: I add this line to speed up query
- and ProbeSetXRef.Locus = Geno.name
- and ProbeSetXRef.ProbeSetFreezeId = ProbeSetFreeze.Id
- and ProbeSetFreeze.Id = (select Id from ProbeSetFreeze where Name='%s' limit 1)
- """ % (newdict["GeneSymbol"],newdict["GeneSymbol"],databaseC))
-
- resC2 = cursor.fetchall()
- if resC2:
- myFields = ['dummyC2','probesetcisC']
- for j, item in enumerate(myFields):
- temp = []
- for k in resC2:
- # fpText.write("j: result: '%s' \n" % k[j])
- temp.append(k[j])
- newdict[item] = temp
- else:
- newdict['probesetcisC'] = ''
-
- else:
- myFields = ['dummyC','probesetC,''meanC','newlrsC','probesetchrC','probesetmbC','probesetsymbolC','probesetnamenumC', 'probesetcisC']
- for j, item in enumerate(myFields):
- newdict[item] = "--"
-
-
-
-
-
-
-
-
- #load gene from other Species by the same name
-
-
- for item in otherSpecies:
- othSpec, othSpecId = item
- newdict2 = {}
-
- cursor.execute("SELECT %s from GeneList where SpeciesId = %d and geneSymbol= '%s' limit 1" %
- (string.join(fetchFields, ", "), othSpecId, newdict["GeneSymbol"]))
- resultsOther = cursor.fetchone()
- if resultsOther:
- for j, item in enumerate(fetchFields):
- newdict2[item] = resultsOther[j]
-
- #count SNPs if possible, could be a separate function
- if diffCol and othSpec == 'mouse':
- cursor.execute("""
- select
- count(*) from BXDSnpPosition
- where
- Chr = '%s' AND Mb >= %2.6f AND Mb < %2.6f AND
- StrainId1 = %d AND StrainId2 = %d
- """ % (chrName, newdict["TxStart"], newdict["TxEnd"], diffCol[0], diffCol[1]))
-
-
- newdict2["snpCount"] = cursor.fetchone()[0]
- newdict2["snpDensity"] = newdict2["snpCount"]/(newdict2["TxEnd"]-newdict2["TxStart"])/1000.0
- else:
- newdict2["snpDensity"] = newdict2["snpCount"] = 0
-
- try:
- newdict2['GeneLength'] = 1000.0*(newdict2['TxEnd'] - newdict2['TxStart'])
- except:
- pass
-
- newdict['%sGene' % othSpec] = newdict2
-
- #newdict['RUDI']='hallo allemaal'
-
- GeneList.append(newdict)
-
-
- return GeneList
-
-