Mercurial > repos > eric-rasche > apollo
diff export.py @ 3:d4ae83dedb14 draft
planemo upload for repository https://github.com/TAMU-CPT/galaxy-webapollo commit 4ac38d0b6dba1183f3e78eb5c224c7051064b4a5
author | eric-rasche |
---|---|
date | Thu, 12 Jan 2017 11:52:28 -0500 |
parents | 6002cc0df04e |
children | 7610987e0c48 |
line wrap: on
line diff
--- a/export.py Tue May 03 13:48:11 2016 -0400 +++ b/export.py Thu Jan 12 11:52:28 2017 -0500 @@ -1,44 +1,74 @@ #!/usr/bin/env python +import sys import StringIO -import sys import json import argparse from Bio import SeqIO from BCBio import GFF -from webapollo import WebApolloInstance +from webapollo import WAAuth, WebApolloInstance, CnOrGuess, GuessCn + + +def export(org_cn, seqs): + org_data = wa.organisms.findOrganismByCn(org_cn) + + data = StringIO.StringIO() + + kwargs = dict( + exportType='GFF3', + seqType='genomic', + exportGff3Fasta=True, + output="text", + exportFormat="text", + organism=org_cn, + ) + + if len(seqs) > 0: + data.write(wa.io.write( + exportAllSequences=False, + sequences=seqs, + **kwargs + ).encode('utf-8')) + else: + data.write(wa.io.write( + exportAllSequences=True, + sequences=[], + **kwargs + ).encode('utf-8')) + + # Seek back to start + data.seek(0) + + records = list(GFF.parse(data)) + if len(records) == 0: + print "Could not find any sequences or annotations for this organism + reference sequence" + sys.exit(2) + else: + for record in records: + record.annotations = {} + if args.gff: + GFF.write([record], args.gff) + record.description = "" + if args.fasta: + SeqIO.write([record], args.fasta, 'fasta') + + return org_data if __name__ == '__main__': - json parser = argparse.ArgumentParser(description='Sample script to add an attribute to a feature via web services') - parser.add_argument('apollo', help='Complete Apollo URL') - parser.add_argument('username', help='WA Username') - parser.add_argument('password', help='WA Password') - - parser.add_argument('commonName', nargs='+', help='Sequence Unique Names') - + WAAuth(parser) + CnOrGuess(parser) parser.add_argument('--gff', type=argparse.FileType('w')) parser.add_argument('--fasta', type=argparse.FileType('w')) + parser.add_argument('--json', type=argparse.FileType('w')) args = parser.parse_args() wa = WebApolloInstance(args.apollo, args.username, args.password) - data = StringIO.StringIO(wa.io.write( - exportType='GFF3', - seqType='genomic', - exportAllSequences=False, - exportGff3Fasta=True, - output="text", - exportFormat="text", - # TODO: CPT specific convention!!!!!!!! - organism=args.commonName, - sequences=args.commonName - )) - data.seek(0) + org_cn_list, seqs = GuessCn(args, wa) - for record in GFF.parse(data): - record.annotations = {} - GFF.write([record], args.gff) - record.description = "" - SeqIO.write([record], args.fasta, 'fasta') - sys.exit() + org_data = [] + for org_cn in org_cn_list: + indiv_org_data = export(org_cn, seqs) + org_data.append(indiv_org_data) + args.json.write(json.dumps(org_data, indent=2))