-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgc.py
executable file
·43 lines (29 loc) · 904 Bytes
/
gc.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/python3
import sys
import argparse
import signal
import functools
import tools
def gc_content(dna):
def count_gc(acc, ch):
return acc + (ch in 'GC')
return functools.reduce(count_gc, dna, 0) / len(dna)
def main(args):
records = tools.io.read_fasta(sys.stdin)
def get_gc_content(rec):
label, values = rec
return label, gc_content(''.join(values))
records = map(get_gc_content, records)
label, value = max(records, key=lambda rec: rec[1])
print(label)
print(value * 100)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='description',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
args = parser.parse_args()
try:
main(args)
except BrokenPipeError:
sys.exit(128 + signal.SIGPIPE)
except KeyboardInterrupt:
sys.exit(128 + signal.SIGINT)