erange version 4.0a dev release
[erange.git] / Region.py
diff --git a/Region.py b/Region.py
new file mode 100644 (file)
index 0000000..0d0a15b
--- /dev/null
+++ b/Region.py
@@ -0,0 +1,70 @@
+import string
+
+class Region(object):
+    """
+        Region description
+    """
+
+
+    def __init__(self, start, stop, label="", index=0, chrom="", numReads=0, foldRatio=0., multiP=0., peakDescription="", shift=0, peakPos=0, peakHeight=0):
+        self.label = label
+        self.index = index
+        self.chrom = chrom
+        self.start = start
+        self.stop = stop
+        self.numReads = numReads
+        self.foldRatio = foldRatio
+        self.multiP = multiP
+        self.peakDescription = peakDescription
+        self.shift = shift
+        self.length = abs(self.stop - self.start)
+        self.peakPos = peakPos
+        self.peakHeight = peakHeight
+
+
+    def printRegion(self, delimiter="\t"):
+        fields = ["%s%d" % (self.label, self.index),
+                  "%s" % self.chrom,
+                  "%d" % self.start,
+                  "%d" % self.stop,
+                  "%.1f" % self.numReads,
+                  "%.1f" % self.foldRatio,
+                  "%.1f" % self.multiP,
+                  "%s" % self.peakDescription
+        ]
+
+        return string.join(fields, delimiter)
+
+
+    def printRegionWithShift(self, delimiter="\t"):
+        fields = [self.printRegion(delimiter)]
+        fields.append("%d" % self.shift)
+
+        return string.join(fields, delimiter)
+
+
+class DirectionalRegion(Region):
+    """
+        Region with percentage of plus reads.
+    """
+
+    def __init__(self, start, stop, label="", index=0, chrom="", numReads=0, foldRatio=0., multiP=0., plusP=0., leftP=0., peakDescription="", shift=0):
+        Region.__init__(self, start, stop, label, index, chrom, numReads, foldRatio, multiP, peakDescription, shift)
+        self.plusP = plusP
+        self.leftP = leftP
+
+
+    def printRegion(self, delimiter="\t"):
+        fields = ["%s%d" % (self.label, self.index),
+                  "%s" % self.chrom,
+                  "%d" % self.start,
+                  "%d" % self.stop,
+                  "%.1f" % self.numReads,
+                  "%.1f" % self.foldRatio,
+                  "%.1f" % self.multiP,
+                  "%.1f" % self.plusP,
+                  "%.1f" % self.leftP,
+                  "%s" % self.peakDescription
+        ]
+
+        return string.join(fields, delimiter)
\ No newline at end of file