
ensembl search module
By:
stephanheijl on
Apr 29th, 2012 | syntax:
Python | size: 1.86 KB | hits: 22 | expires: Never
#################################
# ensembl search module #
# Stephan Heijl #
# Afvinkopdracht 3 #
# 23/4/2012 #
#################################
import MySQLdb,time
class ensembleSearch():
def __init__(self, term, conffile="ensembl.conf"):
conf = self.parseConfigurationFile(conffile)
self.term = term
con = MySQLdb.connect(host=conf["HOST"],
user=conf["USER"],
passwd=conf["PASSWORD"],
db=conf["DATABASE"])
limit = conf['LIMIT'] if 'LIMIT' in conf.keys() else 10
self.results = self.find(con.cursor(),term,limit)
def find(self,cursor,term,limit):
query = "SELECT * FROM gene WHERE description LIKE '%{0}%' LIMIT {1}".format(term,limit)
cursor.execute(query)
return cursor.fetchall()
def saveResults(self,saveType):
try:
__import__(saveType).dump(self.results,open(self.term.replace(" ",".")+"."+str(time.time())[4:-3]+"."+saveType,"w"))
except ImportError:
print "Unsupported savetype, file was not saved."
exit()
except IOError:
print "Write error, file was not saved."
exit()
except:
print "Unknown save error."
def returnResults(self):
return self.results
def parseConfigurationFile(self,name):
try:
conf = open(name)
except IOError:
print "Could not find {0} file.".format(name)
exit()
configuration = {}
for line in conf:
if line[0] != "#":
kv = line.split("=")
configuration[kv[0]] = kv[1][:-1]
if all([k in configuration.keys() for k in ['USER','HOST','PASSWORD','DATABASE']]):
return configuration
else:
print "Incomplete configuration file."
if __name__ == "__main__":
term = "zinc finger"
eS = ensembleSearch(term)
print eS.returnResults()
eS.saveResults("json")