1 | #!/usr/bin/env python |
---|
2 | from Bio import GenBank |
---|
3 | import sys, os, textwrap |
---|
4 | |
---|
5 | assert sys.version_info[:2] >= ( 2, 4 ) |
---|
6 | |
---|
7 | def make_fasta(rec): |
---|
8 | '''Creates fasta format from a record''' |
---|
9 | gi = rec.annotations.get('gi','') |
---|
10 | org = rec.annotations.get('organism','') |
---|
11 | date = rec.annotations.get('date','') |
---|
12 | head = '>gi:%s, id:%s, org:%s, date:%s\n' % (gi, rec.id, org, date) |
---|
13 | body = '\n'.join(textwrap.wrap(rec.seq.data, width=80)) |
---|
14 | return head, body |
---|
15 | |
---|
16 | if __name__ == '__main__': |
---|
17 | |
---|
18 | mode = sys.argv[1] |
---|
19 | text = sys.argv[2] |
---|
20 | output_file = sys.argv[3] |
---|
21 | |
---|
22 | print 'Searching for %s <br>' % text |
---|
23 | |
---|
24 | # check if inputs are all numbers |
---|
25 | try: |
---|
26 | gi_list = text.split() |
---|
27 | tmp = map(int, gi_list) |
---|
28 | except ValueError: |
---|
29 | gi_list = GenBank.search_for(text, max_ids=10) |
---|
30 | |
---|
31 | fp = open(output_file, 'wt') |
---|
32 | record_parser = GenBank.FeatureParser() |
---|
33 | ncbi_dict = GenBank.NCBIDictionary(mode, 'genbank', parser = record_parser) |
---|
34 | for gid in gi_list: |
---|
35 | res = ncbi_dict[gid] |
---|
36 | head, body = make_fasta(res) |
---|
37 | fp.write(head+body+'\n') |
---|
38 | print head |
---|
39 | fp.close() |
---|
40 | |
---|
41 | |
---|
42 | |
---|