first pass cleanup of cistematic/genomes; change bamPreprocessing
[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 "peakstoregion: version 1.1"
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     try:
28         radius = int(argv[3])
29     except (IndexError, ValueError):
30         radius = 500
31
32     try:
33         chromField = int(argv[4])
34     except (IndexError, ValueError):
35         chromField = 2
36
37     try:
38         posField = int(argv[5])
39     except (IndexError, ValueError):
40         posField = 3
41
42     try:
43         labelField = int(argv[6])
44     except (IndexError, ValueError):
45         labelField = 1
46
47     try:
48         dataField = int(argv[7])
49     except (IndexError, ValueError):
50         dataField = -1
51
52     peakstoregion(peakfile, outfile, radius, chromField, posField, labelField, dataField)
53
54
55 def peakstoregion(peakfilename, outfilename, radius=500, chromField=2, posField=3, labelField=1, dataField=-1):
56     peakfile = open(peakfilename)
57     outfile = open(outfilename, "w")
58
59     for line in peakfile:
60         fields = line.strip().split()
61         label = "REGION"
62         try:
63             label = fields[labelField]
64         except IndexError:
65             pass
66
67         start = int(fields[posField]) - radius
68         stop = int(fields[posField]) + radius
69         outfile.write("%s\t%s\t%d\t%d\t%s\n" % (label, fields[chromField], start, stop, fields[dataField]))
70
71     outfile.close()
72
73
74 if __name__ == "__main__":
75     main(sys.argv)