#!/usr/bin/env python from __future__ import print_function import sys import textwrap from Bio import GenBank assert sys.version_info[:2] >= (2, 4) def make_fasta(rec): '''Creates fasta format from a record''' gi = rec.annotations.get('gi', '') org = rec.annotations.get('organism', '') date = rec.annotations.get('date', '') head = '>gi:%s, id:%s, org:%s, date:%s\n' % (gi, rec.id, org, date) body = '\n'.join(textwrap.wrap(rec.seq.data, width=80)) return head, body if __name__ == '__main__': mode = sys.argv[1] text = sys.argv[2] output_file = sys.argv[3] print('Searching for %s
' % text) # check if inputs are all numbers try: gi_list = text.split() [int(_) for _ in gi_list] except ValueError: gi_list = GenBank.search_for(text, max_ids=10) fp = open(output_file, 'wt') record_parser = GenBank.FeatureParser() ncbi_dict = GenBank.NCBIDictionary(mode, 'genbank', parser=record_parser) for gid in gi_list: res = ncbi_dict[gid] head, body = make_fasta(res) fp.write(head + body + '\n') print(head) fp.close()