13 print "%prog: version 2.2"
20 usage = "usage: python %prog label infile1 [--upstream infile2] [--downstream infile3] [--uplength kb] [--downlength kb] [--gene geneName] [--genes genefile] [--append] outfile"
22 parser = optparse.OptionParser(usage=usage)
23 parser.add_option("--upstream", dest="upfilename")
24 parser.add_option("--downstream", dest="downfilename")
25 parser.add_option("--uplength", type="float", dest="uplength")
26 parser.add_option("--downlength", type="int", dest="")
27 parser.add_option("--gene", dest="gene")
28 parser.add_option("--genes", dest="genefile")
29 parser.add_option("--append", action="store_true", dest="doAppend")
30 parser.set_defaults(upfilename=None, downfilename=None, uplength=0.0, downlength=0.0,
31 gene=None, genefile=None, doAppend=False)
33 (options, args) = parser.parse_args(argv[1:])
43 profilebins(label, infilename, outfilename, options.upfilename, options.downfilename,
44 options.uplength, options.downlength, options.gene, options.genefile,
48 def profilebins(label, infilename, outfilename, upfilename=None, downfilename=None,
49 uplength=0.0, downlength=0.0, gene=None, genefile=None, doAppend=False):
51 fileList = [infilename]
58 if genefile is not None:
60 fields = line.strip().split()
62 geneList.append(fields[0])
64 geneList.append(line.strip())
68 if upfilename is not None:
69 fileList = [upfilename, infilename]
71 if downfilename is not None:
72 fileList.append(downfilename)
78 partLength = [uplength, 10.]
79 partOffset = [-1. * uplength, 0.]
82 partLength.append(downlength)
83 partOffset.append(10.)
87 for afile in fileList:
90 line = infile.readline()
91 fields = line.strip().split()
92 numBins = len(fields) - 4
95 weight = float(fields[2])
96 if restrictGenes and geneName in geneList:
100 for myBin in fields[4:]:
101 if not restrictGenes or (restrictGenes and geneName in geneList):
102 totalBins[-1].append(weight * float(myBin))
104 totalBins[-1].append(0.)
107 fields = line.strip().split()
109 if restrictGenes and geneName not in geneList:
112 weight = float(fields[2])
114 for myBin in fields[4:]:
115 totalBins[-1][index] += weight * float(myBin)
118 totalWeight += weight
123 outfile = open(outfilename, "a")
125 outfile = open(outfilename, "w")
126 outfile.write("x-axis")
128 for partBins in totalBins:
129 partLen = partLength[partIndex]
130 numBins = len(partBins)
131 for binIndex in range(numBins):
132 outfile.write("\t%.2f" % (partOffset[partIndex] + (binIndex * partLen/numBins)))
136 outfile.write("\tweight\n")
139 for partBins in totalBins:
140 for aBin in partBins:
141 percent = aBin / totalWeight
142 outfile.write("\t%.1f" % percent)
144 totalPercent += percent
146 outfile.write("\t%.1f\n" % totalWeight)
153 if __name__ == "__main__":