5 # Created by Ali Mortazavi on 3/6/09.
7 import sys, string, optparse
8 from commoncode import writeLog
10 versionString = "%prog: version 1.3"
18 usage = "usage: python %prog matrix.step.N-1 data.part matrix.step.N [--rescale] [--truncate maxRPKM] [--log altlogfile]"
20 parser = optparse.OptionParser(usage=usage)
21 parser.add_option("--rescale", action="store_true", dest="rescale")
22 parser.add_option("--truncate", type="int", dest="maxRPKM")
23 parser.add_option("--log", dest="logfilename")
24 parser.set_defaults(rescale=False, maxRPKM=None, logfilename="buildMatrix.log")
25 (options, args) = parser.parse_args(argv[1:])
35 if options.maxRPKM is not None:
37 maxRPKM = options.maxRPKM
42 buildMatrix(infile, colfilename, outfilename, truncateRPKM, maxRPKM,
43 options.rescale, options.logfilename)
46 def buildMatrix(inFileName, colfilename, outfilename, truncateRPKM,
47 maxRPKM=100000000, rescale=False, logfilename="buildMatrix.log"):
49 writeLog(logfilename, versionString, string.join(sys.argv[1:]))
51 if "/" in colfilename:
52 colname = colfilename.split("/")[-1]
56 fileParts = colname.split(".")
59 infile = open(inFileName)
60 colfile = open(colfilename)
61 outfile = open(outfilename, "w")
62 header = infile.readline()[:-1]
63 if header.strip() == "":
66 outfile.write( "%s\t%s\n" % (header, colID))
73 if doNotProcessLine(line):
76 fields = line.strip().split()
77 val = float(fields[-1])
78 if truncateRPKM and val > maxRPKM:
79 if val > untruncatedMax:
93 finalValues = [(val - min)/range for val in values]
97 for val in finalValues:
98 line = infile.readline().strip()
99 line += "\t%1.3f\n" % val
104 if untruncatedMax > 0:
107 message = "max value in %s was %.2f" % (colname, max)
108 if untruncatedMax > 0:
109 message += " but was truncated to %d" % maxRPKM
112 writeLog(logfilename, versionString, message)
115 def doNotProcessLine(line):
116 return line[0] == "#"
119 if __name__ == "__main__":