-
Notifications
You must be signed in to change notification settings - Fork 11
/
gff2bed.py
executable file
·43 lines (35 loc) · 1.34 KB
/
gff2bed.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/env python
from __future__ import print_function
from optparse import OptionParser
import gff, sys
################################################################################
# gff2bed.py
#
# Convert a gff file to a bed file. Each entry is converted independently,
# so no blocks.
################################################################################
################################################################################
# main
################################################################################
def main():
usage = 'usage: %prog [options] <gff file>'
parser = OptionParser(usage)
#parser.add_option()
(options,args) = parser.parse_args()
if len(args) != 1:
parser.error('Must provide gff file')
else:
if args[0] == '-':
gff_open = sys.stdin
else:
gff_open = open(args[0])
for line in gff_open:
if not line.startswith('##'):
a = line.split('\t')
cols = [a[0], str(int(a[3])-1), a[4], a[2], '0', a[6], '0', '0', '255,0,0', '1', str(int(a[4])-int(a[3])+1), '0']
print('\t'.join(cols))
################################################################################
# __main__
################################################################################
if __name__ == '__main__':
main()