except:
pass
-import sys, optparse
+import sys
+import optparse
from cistematic.core import featuresIntersecting
+from commoncode import getConfigParser, getConfigOption, getConfigIntOption
-print "%prog: version 1.0"
+
+print "featureIntersects: version 1.1"
def main(argv=None):
usage = "usage: python %s tabfile [--cistype type] [--radius radius]"
- parser = optparse.OptionParser(usage=usage)
- parser.add_option("--cistype", action="store_false", dest="cistype")
- parser.add_option("--radius", type="int", dest="radius")
- parser.set_defaults(cistype="TFBSCONSSITES", radius=100)
+ parser = makeParser(usage)
(options, args) = parser.parse_args(argv[1:])
if len(args) < 1:
featureIntersects(tabfile, options.cistype, options.radius)
+def makeParser(usage=""):
+ parser = optparse.OptionParser(usage=usage)
+ parser.add_option("--cistype", dest="cistype")
+ parser.add_option("--radius", type="int", dest="radius")
+
+ configParser = getConfigParser()
+ section = "featureIntersects"
+ cistype = getConfigOption(configParser, section, "cistype", "TFBSCONSSITES")
+ radius = getConfigIntOption(configParser, section, "radius", 100)
+
+ parser.set_defaults(cistype=cistype, radius=radius)
+
+ return parser
+
+
def featureIntersects(tabFileName, cistype="TFBSCONSSITES", radius=100):
- tabfile = open(tabFileName)
- previous = ""
+
+ posList = getPositionList(tabFileName)
+ feats = featuresIntersecting("hsapiens", posList, radius, cistype)
+ featkeys = feats.keys()
+ featkeys.sort()
+ for (chrom, pos) in featkeys:
+ print "chr%s:%d-%d\t%s" % (chrom, pos, pos + 20, str(feats[(chrom, pos)]))
+
+def getPositionList(tabFileName):
+ previous = ""
posList = []
+ tabfile = open(tabFileName)
for line in tabfile:
fields = line.split("\t")
current = fields[0]
chrom = fields[1][3:]
posList.append((chrom, (int(fields[2]) + int(fields[3]))/2))
- feats = featuresIntersecting("human", posList, radius, cistype)
- featkeys = feats.keys()
- featkeys.sort()
- for (chrom, pos) in featkeys:
- print "chr%s:%d-%d\t%s" % (chrom, pos, pos + 20, str(feats[(chrom, pos)]))
+ return posList
if __name__ == "__main__":