Mercurial > repos > shellac > guppy_basecaller
diff env/bin/prov-convert @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author | shellac |
---|---|
date | Mon, 01 Jun 2020 08:59:25 -0400 |
parents | 79f47841a781 |
children |
line wrap: on
line diff
--- a/env/bin/prov-convert Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,152 +0,0 @@ -#!/Users/pldms/Development/Projects/2020/david-matthews-galaxy/guppy_basecaller/env/bin/python3 -# encoding: utf-8 -""" -convert -- Convert PROV-JSON to RDF, PROV-N, PROV-XML, or graphical formats (SVG, PDF, PNG) - -@author: Trung Dong Huynh - -@copyright: 2016 University of Southampton, United Kingdom. All rights reserved. - -@license: MIT License - -@contact: trungdong@donggiang.com -@deffield updated: 2016-10-19 -""" - -from argparse import ArgumentParser, RawDescriptionHelpFormatter, FileType -import os -import sys -import logging -import traceback -import six - -from prov.model import ProvDocument -from prov import serializers - - -logger = logging.getLogger(__name__) - -__all__ = [] -__version__ = 0.1 -__date__ = '2014-03-14' -__updated__ = '2016-10-19' - -DEBUG = 0 -TESTRUN = 0 -PROFILE = 0 - -GRAPHVIZ_SUPPORTED_FORMATS = { - 'bmp', 'canon', 'cmap', 'cmapx', 'cmapx_np', 'dot', 'eps', 'fig', 'gtk', 'gv', 'ico', 'imap', 'imap_np', 'ismap', - 'jpe', 'jpeg', 'jpg', 'pdf', 'plain', 'plain-ext', 'png', 'ps', 'ps2', 'svg', 'svgz', 'tif', 'tiff', 'tk', - 'vml', 'vmlz', 'x11', 'xdot', 'xlib' -} - - -@six.python_2_unicode_compatible -class CLIError(Exception): - """Generic exception to raise and log different fatal errors.""" - def __init__(self, msg): - super(CLIError).__init__(type(self)) - self.msg = "E: %s" % msg - - def __str__(self): - return self.msg - - -def convert_file(infile, outfile, output_format): - prov_doc = ProvDocument.deserialize(infile) - - # Formats not supported by prov.serializers - if output_format == 'provn': - outfile.write(prov_doc.get_provn().encode()) - elif output_format in GRAPHVIZ_SUPPORTED_FORMATS: - from prov.dot import prov_to_dot - dot = prov_to_dot(prov_doc) - content = dot.create(format=output_format) - outfile.write(content) - else: - # Try supported serializers: - try: - prov_doc.serialize(outfile, format=output_format) - except serializers.DoNotExist: - raise CLIError('Output format "%s" is not supported.' % output_format) - - -def main(argv=None): # IGNORE:C0111 - """Command line options.""" - - if argv is None: - argv = sys.argv - else: - sys.argv.extend(argv) - - program_name = os.path.basename(sys.argv[0]) - program_version = "v%s" % __version__ - program_build_date = str(__updated__) - program_version_message = '%%(prog)s %s (%s)' % (program_version, program_build_date) - program_shortdesc = __import__('__main__').__doc__.split("\n")[1] - program_license = '''%s - - Created by Trung Dong Huynh on %s. - Copyright 2016 University of Southampton. All rights reserved. - - Licensed under the MIT License - https://github.com/trungdong/prov/blob/master/LICENSE - - Distributed on an "AS IS" basis without warranties - or conditions of any kind, either express or implied. - -USAGE -''' % (program_shortdesc, str(__date__)) - - try: - # Setup argument parser - parser = ArgumentParser(description=program_license, formatter_class=RawDescriptionHelpFormatter) - parser.add_argument('-f', '--format', dest='format', action='store', default='json', - help='output format: json, xml, provn, or one supported by GraphViz (e.g. svg, pdf)') - parser.add_argument('infile', nargs='?', type=FileType('r'), default=sys.stdin) - parser.add_argument('outfile', nargs='?', type=FileType('wb'), default=sys.stdout) - parser.add_argument('-V', '--version', action='version', version=program_version_message) - - args = None - try: - # Process arguments - args = parser.parse_args() - convert_file(args.infile, args.outfile, args.format.lower()) - finally: - if args: - if args.infile: - args.infile.close() - if args.outfile: - args.outfile.close() - - return 0 - except KeyboardInterrupt: - # handle keyboard interrupt - return 0 - except Exception as e: - if DEBUG or TESTRUN: - traceback.print_exc() - raise e - indent = len(program_name) * " " - sys.stderr.write(program_name + ": " + str(e) + "\n") - sys.stderr.write(indent + " for help use --help") - return 2 - -if __name__ == "__main__": - logging.basicConfig(level=(logging.DEBUG if DEBUG else logging.INFO)) - if TESTRUN: - import doctest - doctest.testmod() - if PROFILE: - import cProfile - import pstats - profile_filename = 'converter_profile.txt' - cProfile.run('main()', profile_filename) - statsfile = open("profile_stats.txt", "wb") - p = pstats.Stats(profile_filename, stream=statsfile) - stats = p.strip_dirs().sort_stats('cumulative') - stats.print_stats() - statsfile.close() - sys.exit(0) - sys.exit(main()) \ No newline at end of file