first pass cleanup of cistematic/genomes; change bamPreprocessing
[erange.git] / featureIntersects.py
index e0b77267a32b6cd12751f96617cb017c30d9b671..733849902899ceb75017995ea50bd209aa66c2f9 100755 (executable)
@@ -9,10 +9,13 @@ try:
 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):
@@ -21,10 +24,7 @@ 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:
@@ -36,11 +36,35 @@ def main(argv=None):
     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]
@@ -51,11 +75,7 @@ def featureIntersects(tabFileName, cistype="TFBSCONSSITES", radius=100):
         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__":