X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=erange.git;a=blobdiff_plain;f=cistematic%2Fexperiments%2F__init__.py;fp=cistematic%2Fexperiments%2F__init__.py;h=cf421d91d5586511fc7c4f5a15b8fc8027c3e6a8;hp=0000000000000000000000000000000000000000;hb=bc30aca13e5ec397c92e67002fbf7a103130b828;hpb=0d3e3112fd04c2e6b44a25cacef1d591658ad181 diff --git a/cistematic/experiments/__init__.py b/cistematic/experiments/__init__.py new file mode 100644 index 0000000..cf421d9 --- /dev/null +++ b/cistematic/experiments/__init__.py @@ -0,0 +1,99 @@ +########################################################################### +# # +# C O P Y R I G H T N O T I C E # +# Copyright (c) 2003-10 by: # +# * California Institute of Technology # +# # +# All Rights Reserved. # +# # +# Permission is hereby granted, free of charge, to any person # +# obtaining a copy of this software and associated documentation files # +# (the "Software"), to deal in the Software without restriction, # +# including without limitation the rights to use, copy, modify, merge, # +# publish, distribute, sublicense, and/or sell copies of the Software, # +# and to permit persons to whom the Software is furnished to do so, # +# subject to the following conditions: # +# # +# The above copyright notice and this permission notice shall be # +# included in all copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS # +# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN # +# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # +# SOFTWARE. # +########################################################################### +# +try: + from pysqlite2 import dbapi2 as sqlite +except: + from sqlite3 import dbapi2 as sqlite + +__all__ = ["analyzeMotifs", "experiment", "locate", "phyloFoot", "phyloTest", + "randomset", "simple", "varyLength", "orthology"] + +experimentTypes = [("simple", "Simple"), ("fasta", "Fasta"), ("locate", "Locate"), + ("varyLength", "VaryLength"), ("phyloFoot", "PhyloFoot"), + ("phyloTest", "PhyloTest"), ("orthology", "Orthology"), + ("experiment", "generic")] + +webExperimentTypes = [("simple", "Simple"), ("orthology", "Orthology")] + + +def loadExperiment(expID, expFilePath, analysisID="default", conservationID="default", consDB=""): + newExp = "" + try: + db = sqlite.connect(expFilePath) + sql = db.cursor() + sql.execute('select data from settings where expID = :expID and settingName = "experimentType"', locals()) + expType = str(sql.fetchone()[0]) + sql.close() + db.close() + expClass = "" + for etype in experimentTypes: + if etype[0] == expType: + expClass = etype[1] + + if expClass != "": + importString = "from %s import %s" % (expType, expClass) + exec importString + expString = 'newExp = %s("%s","%s")' % (expClass, expID, expFilePath) + exec expString + else: + print "Could not find associated class for %s" % expType + except: + print "Could not load experiment %s from database %s " % (expID, expFilePath) + + if consDB == "": + consDB = expFilePath + try: + expString = 'newExp.loadAnalysis("%s")' % analysisID + exec expString + print "loaded analysis %s" % analysisID + expString = "newExp.loadConservation('%s', '%s')" % (conservationID, consDB) + exec expString + print "loaded conservation %s" % conservationID + except: + pass + + return newExp + + +def listExperiments(expFilePath): + result = [] + try: + db = sqlite.connect(expFilePath) + sql = db.cursor() + sql.execute('select distinct expID, data from settings where settingName = "experimentType" ') + data = sql.fetchall() + sql.close() + db.close() + for (expID, expType) in data: + result.append((str(expID), str(expType))) + except: + print "Could not list experiments in database %s " % (expFilePath) + + return result \ No newline at end of file