erange version 4.0a dev release
[erange.git] / transcripts.py
index 53b6aea2843acadcd93bbe64df414cb6903eb9e7..b3cd572f2ce62e4c3c3a1906980bb96fc2a5d9f9 100755 (executable)
@@ -8,23 +8,18 @@
            where transcriptome size is in Gbp, cell count is in arbitrary units and efficiency is a fraction
 """
 
-import sys, optparse
+import sys
+import optparse
+from commoncode import getConfigParser, getConfigFloatOption
 
 def main(argv=None):
     if not argv:
         argv = sys.argv
 
-    print "%prog: version 3.0"
+    print "transcripts: version 3.1"
     usage = "usage: python %prog rpkmFile outFile [options]"
 
-    parser = optparse.OptionParser(usage=usage)
-    parser.add_option("--transcriptome", type="float", dest="tSize",
-                      help="transcriptome size in Gbp [default 200000.0]")
-    parser.add_option("--cells", type="float", dest="cellCount",
-                      help="arbitrary units [default 1e6]")
-    parser.add_option("--efficiency", type="float", dest="efficiency",
-                      help="fraction [default 0.3]")
-    parser.set_defaults(tSize=200000.0, cellCount=1e6, efficiency=0.3)
+    parser = makeParser(usage)
     (options, args) = parser.parse_args(argv[1:])
 
     if len(args) < 2:
@@ -37,6 +32,26 @@ def main(argv=None):
     transcripts(infile, outfile, options.tSize, options.cellCount, options.efficiency)
 
 
+def makeParser(usage=""):
+    parser = optparse.OptionParser(usage=usage)
+    parser.add_option("--transcriptome", type="float", dest="tSize",
+                      help="transcriptome size in Gbp [default 200000.0]")
+    parser.add_option("--cells", type="float", dest="cellCount",
+                      help="arbitrary units [default 1e6]")
+    parser.add_option("--efficiency", type="float", dest="efficiency",
+                      help="fraction [default 0.3]")
+
+    configParser = getConfigParser()
+    section = "transcripts"
+    tSize = getConfigFloatOption(configParser, section, "tSize", 200000.0)
+    cellCount = getConfigFloatOption(configParser, section, "cellCount", 1e6)
+    efficiency = getConfigFloatOption(configParser, section, "efficiency", 0.3)
+
+    parser.set_defaults(tSize=tSize, cellCount=cellCount, efficiency=efficiency)
+
+    return parser
+
+
 def transcripts(infilename, outfilename, tSize=200000, cellCount=1e6, efficiency=0.3):
     infile = open(infilename)
     outfile = open(outfilename, "w")
@@ -46,6 +61,7 @@ def transcripts(infilename, outfilename, tSize=200000, cellCount=1e6, efficiency
         transcripts = rpkm * tSize
         transPerCell = transcripts / cellCount / efficiency
         outfile.write("%s\t%.1f\t%.1f\n" % (fields[0], transcripts, transPerCell))
+
     infile.close()
     outfile.close()