8 print "%s: version 2.0" % sys.argv[0]
16 print "usage: python %s sitefile1 sitefile2 outfile [--reject rejectfile1 rejectfile2] [--expanded]" % argv[0]
19 sitefilename1 = argv[1]
20 sitefilename2 = argv[2]
24 if "--reject" in sys.argv:
25 reject1file = open(sys.argv[sys.argv.index("-reject") + 1], "w")
26 reject2file = open(sys.argv[sys.argv.index("-reject") + 2], "w")
30 if "--expanded" in sys.argv:
33 siteintersects(sitefilename1, sitefilename2, outfilename, reject1file, reject2file, doReject, doExpanded)
36 def siteintersects(sitefilename1, sitefilename2, outfilename, reject1filename=None, reject2filename=None, doReject=False, doExpanded=False):
42 infile = open(sitefilename1)
49 fields = line.strip().split()
52 start = int(fields[2])
56 (chrom, pos) = fields[0].split(":")
58 (start, stop) = pos.split("-")
64 siteDict[chrom].append((start, stop, rest))
66 siteDict[chrom] = [(start, stop, rest)]
69 file1Dict[str((chrom, start, stop, rest))] = line
73 print "file1: %d" % infile1count
76 infile = open(sitefilename2)
81 outfile = open(outfilename, "w")
87 fields = line.strip().split()
90 start = int(fields[2])
94 (chrom, pos) = fields[0].split(":")
96 (start, stop) = pos.split("-")
97 rest = str(fields[1:])
101 mid = start + abs(stop - start)/2
102 if chrom not in siteDict:
104 unique2List.append(line)
108 for (rstart, rstop, rline) in siteDict[chrom]:
109 rsize = abs(rstart - rstop) /2
110 rmid = rstart + abs(rstop - rstart)/2
111 if abs(mid - rmid) < rsize:
114 outfile.write("common%d\tchr%s\t%d\t%d\t%s\tchr%s\t%d\t%d\t%s\n" % (commonSites, chrom, rstart, rstop, str(rline), chrom, start, stop, rest))
119 del file1Dict[str((chrom, rstart, rstop, rline))]
123 if doReject and twoNotCommon:
124 unique2List.append(line)
128 print "file2: %d" % infile2count
131 reject1file = open(reject1filename, "w")
132 reject2file = open(reject2filename, "w")
134 for key in file1Dict:
135 reject1file.write(file1Dict[key])
137 for line in unique2List:
138 reject2file.write(line)
146 if __name__ == "__main__":