11 import sys, os, optparse
12 from cistematic.experiments.fasta import Fasta
13 from cistematic.programs.meme import Meme
14 from cistematic.programs.cisGreedy import CisGreedy
15 #TODO: cisSampler is not supported yet!
16 #from cistematic.programs.cisSampler import CisSampler
18 print "%prog: version 3.4"
24 usage = "usage: python %prog explabel regions.fsa [options]"
26 parser = optparse.OptionParser(usage=usage)
27 parser.add_option("--meme", action="store_true", dest="doMeme")
28 parser.add_option("--cisGreedy", action="store_true", dest="doCisGreedy")
29 parser.add_option("--logo", action="store_true", dest="saveLogo")
30 parser.add_option("--threshold", type="float", dest="threshold")
31 parser.add_option("--prefix", dest="motifPrefix")
32 parser.add_option("--numMotifs", dest="numMotifs")
33 parser.add_option("--maxWidth", type="int", dest="maxWidth")
34 parser.add_option("--maskLower", action="store_true", dest="maskLower")
35 parser.set_defaults(doMeme=False, doCisGreedy=False, saveLogo=False,
36 threshold=75., numMotifs="10", maxWidth=28, maskLower=False)
38 (options, args) = parser.parse_args(argv[1:])
42 print "\n\twhere at least one of the motif finders (meme or cisGreedy) must be specified\n"
49 if "--cisSampler" in sys.argv:
50 print "cisSampler is not supported yet! avoid using it for now"
53 findMotifs(expbase, fsafile, options.doMeme, options.doCisGreedy, options.saveLogo,
54 options.threshold, options.numMotifs, options.maxWidth, options.maskLower,
58 def findMotifs(expbase, fsafile, doMeme=False, doCisGreedy=False, saveLogo=False, threshold=75.,
59 numMotifs="10", maxWidth=28, maskLower=False, doCisSampler=False):
63 #TODO: cisSampler is not supported yet!
64 #if doMeme or doCisGreedy or doCisSampler:
65 if not (doMeme or doCisGreedy):
66 print "error: must specify at least one motif finder - exiting"
69 exp = Fasta(expbase, "%s.db" % expbase)
73 exp.setMaskLowerCase(True)
77 prog4.setMaxWidth(maxWidth)
78 prog4.setNumMotifs(numMotifs)
79 prog4.setModel("zoops")
80 exp.appendProgram(prog4)
84 prog5.setGenExpOptions([])
85 prog5.setMaxWidth(maxWidth)
86 prog5.setNumMotifs(numMotifs)
87 exp.appendProgram(prog5)
89 #TODO: cisSampler is not supported yet!
91 # prog6 = CisSampler()
92 # prog6.setGenExpOptions([])
93 # prog6.setMaxWidth(maxWidth)
94 # prog6.setNumMotifs(numMotifs)
95 # exp.appendProgram(prog6)
100 exp.mapMotifs(threshold, verbose=False)
101 exp.exportMotifs(prefix = motifPrefix)
103 exp.exportLogos(prefix = motifPrefix)
105 exp.draw("%s.png" % expbase, maxOccurences=4000)
106 print "deleting database..."
108 os.remove("%s.db" % expbase)
111 if __name__ == "__main__":