X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=erange.git;a=blobdiff_plain;f=cistematic%2Fexperiments%2Flocate.py;fp=cistematic%2Fexperiments%2Flocate.py;h=02bb4fc711ae9309f429d2f2f2e3342cd04e07fd;hp=0000000000000000000000000000000000000000;hb=bc30aca13e5ec397c92e67002fbf7a103130b828;hpb=0d3e3112fd04c2e6b44a25cacef1d591658ad181 diff --git a/cistematic/experiments/locate.py b/cistematic/experiments/locate.py new file mode 100644 index 0000000..02bb4fc --- /dev/null +++ b/cistematic/experiments/locate.py @@ -0,0 +1,88 @@ +########################################################################### +# # +# 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. # +########################################################################### +# +# The locate class allows mapping of known motifs to sequences or genomes +# should only be used with the Locator program, for now +from experiment import Experiment +from analyzeMotifs import AnalyzeMotifs +from cistematic.core import getChromosomeNames, readChromosome + +class Locate(Experiment, AnalyzeMotifs): + experimentType = "locate" + + + def getChromosomeList(self, genome, partition=1, slice=0, db=""): + """ return a list of the chromosomes available for a given genome. + """ + result = [] + try: + chromList = getChromosomeNames(genome, db, partition, slice) + except: + chromList = [] + + for entry in chromList: + result.append((genome, entry)) + + return result + + + def initialize(self, listType, compoundList): + """ must initialize with listType='chromosome' in order to scan chromosomes + """ + self.genepool = {} + genepoolKeys = [] + if listType == "chromosome": + for (genome, chromName) in compoundList: + self.genepool[(genome, chromName)] = readChromosome(genome, chromName) + genepoolKeys.append("%s\t%s" % (genome, chromName)) + + self.genepoolID = self.setSettings("chromolist", genepoolKeys) + else: + Experiment.initialize(self, compoundList) + + + def run(self): + Experiment.run(self) + datasetID = self.genepoolID + for (prog, settingsID) in self.programs: + try: + if prog.name() == "Locator": + (settingName, settingData) = self.getSettingsID(settingsID) + prog.setSettings(settingData) + runID = self.setRun(prog.name(), datasetID, settingsID) + tag = str(runID) + prog.setTagID(tag) + prog.run() + theMotifs = prog.getMotifs() + for mot in theMotifs: + self.appendResults(mot) + else: + self.mlog("Can only run Locate experiment with Locator program") + except: + self.mlog("Error running program %s with settings %s" % (prog, settingsID)) \ No newline at end of file