diff seg2matrix/CGData/SegToMatrix.py @ 31:ab20c0d04f4a

add seg2matrix tool
author jingchunzhu
date Fri, 24 Jul 2015 13:10:11 -0700
parents
children 8ef79bd0be9a
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/seg2matrix/CGData/SegToMatrix.py	Fri Jul 24 13:10:11 2015 -0700
@@ -0,0 +1,30 @@
+
+
+import ctypes
+import os
+
+base = os.path.dirname(os.path.abspath(__file__))
+libFile = base + "/CsegToMatrix.so"
+if os.path.exists(libFile):
+    segLib = ctypes.cdll.LoadLibrary(libFile)
+
+
+def seg_to_matrix(seg_handle, out_handle):
+    """
+    Turn a segment file into a segmented matrix.
+    
+    seg_handle -- CGData.GenomicSegment object
+    out_handle -- File handle to write to
+    """
+    s = segLib.new_segment()
+    t = segLib.new_target_set()
+    for target in seg_handle.get_key_list():
+        for seg in seg_handle.get_by(target):
+            segLib.add_segment(s, t, target, seg.chrom, seg.chrom_start, seg.chrom_end, ctypes.c_float(seg.value))
+
+    def printback(s):
+        out_handle.write(s)
+        return 0
+
+    printbackTYPE = ctypes.CFUNCTYPE(ctypes.c_int, ctypes.c_char_p)
+    segLib.print_matrix(s, t, printbackTYPE(printback))