14 from cistematic.core import featuresIntersecting
15 from commoncode import getConfigParser, getConfigOption, getConfigIntOption
18 print "featureIntersects: version 1.1"
25 usage = "usage: python %s tabfile [--cistype type] [--radius radius]"
27 parser = makeParser(usage)
28 (options, args) = parser.parse_args(argv[1:])
36 featureIntersects(tabfile, options.cistype, options.radius)
39 def makeParser(usage=""):
40 parser = optparse.OptionParser(usage=usage)
41 parser.add_option("--cistype", dest="cistype")
42 parser.add_option("--radius", type="int", dest="radius")
44 configParser = getConfigParser()
45 section = "featureIntersects"
46 cistype = getConfigOption(configParser, section, "cistype", "TFBSCONSSITES")
47 radius = getConfigIntOption(configParser, section, "radius", 100)
49 parser.set_defaults(cistype=cistype, radius=radius)
54 def featureIntersects(tabFileName, cistype="TFBSCONSSITES", radius=100):
56 posList = getPositionList(tabFileName)
57 feats = featuresIntersecting("hsapiens", posList, radius, cistype)
58 featkeys = feats.keys()
60 for (chrom, pos) in featkeys:
61 print "chr%s:%d-%d\t%s" % (chrom, pos, pos + 20, str(feats[(chrom, pos)]))
64 def getPositionList(tabFileName):
67 tabfile = open(tabFileName)
69 fields = line.split("\t")
71 if previous == current:
76 posList.append((chrom, (int(fields[2]) + int(fields[3]))/2))
81 if __name__ == "__main__":