Mercurial > repos > greg > ideas
comparison create_window_positions_by_chrom.py @ 124:7a5b618675a6 draft
Uploaded
author | greg |
---|---|
date | Tue, 21 Nov 2017 14:39:23 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
123:e2995f2f127f | 124:7a5b618675a6 |
---|---|
1 #!/usr/bin/env python | |
2 import argparse | |
3 import collections | |
4 | |
5 parser = argparse.ArgumentParser() | |
6 parser.add_argument('--input', dest='input', help='Input bed dataset') | |
7 parser.add_argument('--output', dest='output', help='Output window positions by chromosome dataset') | |
8 | |
9 args = parser.parse_args() | |
10 | |
11 chroms = collections.OrderedDict() | |
12 | |
13 with open(args.input, 'r') as fh: | |
14 for count, line in enumerate(fh): | |
15 line = line.strip() | |
16 if not line or line.startswith('#'): | |
17 # Skip blank lines and comments. | |
18 continue | |
19 items = line.split('\t') | |
20 chrom = items[0] | |
21 if count == 0: | |
22 # First window. | |
23 chroms[chrom] = [0, count+1] | |
24 elif chrom in chroms: | |
25 # Get the start / end tuple. | |
26 tup = chroms[chrom] | |
27 # Increment end by 1. | |
28 tup[1] += 1 | |
29 chroms[chrom] = tup | |
30 else: | |
31 # chrom not in chroms. | |
32 chroms[chrom] = [count, count+1] | |
33 | |
34 with open(args.output, 'w') as fh: | |
35 for k, v in chroms.items(): | |
36 fh.write('%s %d %d\n' % (k, v[0], v[1])) |