first pass cleanup of cistematic/genomes; change bamPreprocessing
[erange.git] / getsplicefa.py
index db8e2048aae93b16551fd9c62c2ff0e6fd55b433..819675f26f869895fc12b8058daf195f02b2d07b 100755 (executable)
@@ -6,27 +6,25 @@ try:
     psyco.full()
 except:
     print "psyco not running"
-from cistematic.core import complement
+
 from cistematic.genomes import Genome
+from commoncode import getConfigParser, getConfigIntOption
 
 
 def main(argv=None):
     if not argv:
         argv = sys.argv
 
-    verstring = "%prog: version 1.0"
+    verstring = "getsplicefa: version 1.1"
     print verstring
     delimiter = "|"
 
-    usage = "usage: python %prog genome ucscModels outfilename maxBorder [--verbose] [--spacer num]\
+    usage = "usage: python getsplicefa.py genome ucscModels outfilename maxBorder [--verbose] [--spacer num]\
+            \n\twhere ucscModels is the gene model file in same format as the UCSC Table Browser\
             \n\twhere spacer is by default 2, and maxBorder should be readlen - (2 * spacer)\
             \n\tdelimiter is set to %s - edit the code to change it, if necessary\n" % delimiter
 
-    parser = optparse.OptionParser(usage=usage)
-    parser.add_option("--verbose", action="store_true", dest="doVerbose",
-                      help="show verbose messages [default: False]")
-    parser.add_option("--spacer", type="int", dest="spacer",
-                      help="number of spacer NTs to use [default: 2")
+    parser = makeParser(usage)
     parser.set_defaults(doVerbose=False, spacer=2)
     (options, args) = parser.parse_args(argv[1:])
 
@@ -34,7 +32,7 @@ def main(argv=None):
         genome = args[0]
         datafilename = args[1]
         outfilename = args[2]
-        maxBorder = args[3]
+        maxBorder = int(args[3])
     except IndexError:
         print usage
         sys.exit(1)
@@ -42,6 +40,23 @@ def main(argv=None):
     getSpliceFasta(genome, datafilename, outfilename, maxBorder, options.doVerbose, options.spacer, delimiter)
 
 
+def makeParser(usage=""):
+    parser = optparse.OptionParser(usage=usage)
+    parser.add_option("--verbose", action="store_true", dest="doVerbose",
+                      help="show verbose messages [default: False]")
+    parser.add_option("--spacer", type="int", dest="spacer",
+                      help="number of spacer NTs to use [default: 2")
+
+    configParser = getConfigParser()
+    section = "getsplicefa"
+    doVerbose = getConfigIntOption(configParser, section, "doVerbose", False)
+    spacer = getConfigIntOption(configParser, section, "spacer", 2)
+
+    parser.set_defaults(doVerbose=doVerbose, spacer=spacer)
+
+    return parser
+
+
 def getSpliceFasta(genome, datafilename, outfilename, maxBorder, doVerbose=False, spacer=2, delimiter="|"):
     spacerseq = "N" * spacer
 
@@ -87,7 +102,7 @@ def getSpliceFasta(genome, datafilename, outfilename, maxBorder, doVerbose=False
         exonStopDict[name] = exonStops
         exonLengths = []
         for index in range(spliceCount + 1):
-            exonLengths.append(exonStops[index] - exonStarts[index])
+            exonLengths.append(exonStops[index] - exonStarts[index] + 1)
 
         exonLengthDict[name] = exonLengths