snapshot of 4.0a development. initial git repo commit
[erange.git] / peakstoregion.py
1 #
2 #  peakstoregion.py
3 #  ENRAGE
4 #
5
6 try:
7     import psyco
8     psyco.full()
9 except:
10     pass
11
12 import sys
13
14 print "%s: version 1.0" % sys.argv[0]
15
16 def main(argv=None):
17     if not argv:
18         argv = sys.argv
19
20     if len(argv) < 3:
21         print "usage: python %s peakfile outfile [radius] [chromField] [posField] [labelField] [datafield]" % sys.argv[0]
22         sys.exit(1)
23
24     peakfile = argv[1]
25     outfile = argv[2]
26
27     radius = 500
28     chromField = 2
29     posField = 3
30     labelField = 1
31     dataField = -1
32
33     if len(argv) > 3:
34         radius = int(argv[3])
35
36     if len(argv) > 4:
37         chromField = int(argv[4])
38
39     if len(argv) > 5:
40         posField = int(argv[5])
41
42     if len(argv) > 6:
43         labelField = int(argv[6])
44
45     if len(argv) > 7:
46         dataField = int(argv[7])
47
48     peakstoregion(peakfile, outfile, radius, chromField, posField, labelField, dataField)
49
50
51 def peakstoregion(peakfilename, outfilename, radius=500, chromField=2, posField=3, labelField=1, dataField=-1):
52     peakfile = open(peakfilename)
53     outfile = open(outfilename, "w")
54
55     for line in peakfile:
56         fields = line.strip().split()
57         label = "REGION"
58         try:
59             label = fields[labelField]
60         except IndexError:
61             pass
62
63         start = int(fields[posField]) - radius
64         stop = int(fields[posField]) + radius
65         outfile.write("%s\t%s\t%d\t%d\t%s\n" % (label, fields[chromField], start, stop, fields[dataField]))
66
67     outfile.close()
68
69
70 if __name__ == "__main__":
71     main(sys.argv)