first pass cleanup of cistematic/genomes; change bamPreprocessing
[erange.git] / Region.py
1 import string
2
3 class Region(object):
4     """
5         Region description
6     """
7
8
9     def __init__(self, start, stop, label="", index=0, chrom="", numReads=0., foldRatio=0., multiP=0., peakDescription="", shift=0, peakPos=0, peakHeight=0):
10         self.label = label
11         self.index = index
12         self.chrom = chrom
13         self.start = start
14         self.stop = stop
15         self.numReads = numReads
16         self.foldRatio = foldRatio
17         self.multiP = multiP
18         self.peakDescription = peakDescription
19         self.shift = shift
20         self.length = abs(self.stop - self.start)
21         self.peakPos = peakPos
22         self.peakHeight = peakHeight
23
24
25     def printRegion(self, delimiter="\t"):
26         fields = ["%s%d" % (self.label, self.index),
27                   "%s" % self.chrom,
28                   "%d" % self.start,
29                   "%d" % self.stop,
30                   "%.1f" % self.numReads,
31                   "%.1f" % self.foldRatio,
32                   "%.1f" % self.multiP,
33                   "%s" % self.peakDescription
34         ]
35
36         return string.join(fields, delimiter)
37
38
39     def printRegionWithShift(self, delimiter="\t"):
40         fields = [self.printRegion(delimiter)]
41         fields.append("%d" % self.shift)
42
43         return string.join(fields, delimiter)
44
45
46 class DirectionalRegion(Region):
47     """
48         Region with percentage of plus reads.
49     """
50
51     def __init__(self, start, stop, label="", index=0, chrom="", numReads=0, foldRatio=0., multiP=0., plusP=0., leftP=0., peakDescription="", shift=0):
52         Region.__init__(self, start, stop, label, index, chrom, numReads, foldRatio, multiP, peakDescription, shift)
53         self.plusP = plusP
54         self.leftP = leftP
55
56
57     def printRegion(self, delimiter="\t"):
58         fields = ["%s%d" % (self.label, self.index),
59                   "%s" % self.chrom,
60                   "%d" % self.start,
61                   "%d" % self.stop,
62                   "%.1f" % self.numReads,
63                   "%.1f" % self.foldRatio,
64                   "%.1f" % self.multiP,
65                   "%.1f" % self.plusP,
66                   "%.1f" % self.leftP,
67                   "%s" % self.peakDescription
68         ]
69
70         return string.join(fields, delimiter)