-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgtf_tx2gene.py
More file actions
executable file
·45 lines (31 loc) · 1.11 KB
/
gtf_tx2gene.py
File metadata and controls
executable file
·45 lines (31 loc) · 1.11 KB
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
44
45
#!/usr/bin/env python3
"""
Create tx2gene.csv for TxImport.
"""
__author__ = 'Rob Moccia'
__version__ = '0.1'
import gtf
import argparse
import sys
def configure_args(parser):
parser.add_argument('--input', required=True, help='GTF file')
parser.add_argument('--output', required=True, help='output file')
parser.add_argument('--version', action='version',
version='%(prog)s {version}'.format(version=__version__))
def process(args):
num_records = 0
num_written = 0
with open(args.output, 'w') as writer:
writer.write('transcript_id,gene_id\n')
with open(args.input, 'r') as reader:
for rec in gtf.open(reader, 'ensembl'):
num_records += 1
if rec.feature == 'transcript':
writer.write(rec.meta['transcript_id'] + ',' + rec.meta['gene_id'] + '\n')
num_written += 1
return dict(records=num_records, written=num_written)
if __name__ == '__main__':
parser = argparse.ArgumentParser()
configure_args(parser)
res = process(parser.parse_args())
print(res, file=sys.stderr)