Source code for bqpjson.cli

#!/usr/bin/env python3
from __future__ import print_function

import sys, json, argparse

from bqpjson.core import print_err
from bqpjson import validate
from bqpjson import swap_variable_domain
from bqpjson import bqpjson_to_qubist
from bqpjson import bqpjson_to_qubo
from bqpjson import bqpjson_to_minizinc
from bqpjson import bqpjson_to_hfs

_json_pretty_print_kwargs = {
    'sort_keys':True,
    'indent':2,
    'separators':(',', ': ')
}

[docs]def load_data(data_steam): try: data = json.load(data_steam) except: print_err('unable to parse stdin as a json document') quit() return data
# converts a bqp-json file to a qubist hamiltonian
[docs]def bqp2qh(): parser = argparse.ArgumentParser(description='a command line tool for converting a bqp-json files to a qubist hamiltonians. The default input is stdin and the default output is stdout.') args = parser.parse_args() run_bqp2qh()
[docs]def run_bqp2qh(in_stream=sys.stdin, out_stream=sys.stdout): data = load_data(data_steam=in_stream) bqpjson_to_qubist(data=data, out_stream=out_stream)
# converts a bqp-json file to a qubo data file
[docs]def bqp2qubo(): parser = argparse.ArgumentParser(description='a command line tool for converting a bqp-json files to a qubo format. The default input is stdin and the default output is stdout.') args = parser.parse_args() run_bqp2qubo()
[docs]def run_bqp2qubo(in_stream=sys.stdin, out_stream=sys.stdout): data = load_data(data_steam=in_stream) bqpjson_to_qubo(data=data, out_stream=out_stream)
# converts a bqp-json file to a qubist hamiltonian
[docs]def run_bqp2mzn(in_stream=sys.stdin, out_stream=sys.stdout): data = load_data(data_steam=in_stream) bqpjson_to_minizinc(data=data, out_stream=out_stream)
[docs]def bqp2mzn(): parser = argparse.ArgumentParser(description='a command line tool for converting a bqp-json files to a qubist hamiltonians. The default input is stdin and the default output is stdout.') args = parser.parse_args() run_bqp2mzn()
# converts a bqp-json file to an hfs input file
[docs]def run_bqp2hfs(in_stream=sys.stdin, out_stream=sys.stdout, chimera_degree=None, chimera_cell_size=None, precision=5): data = load_data(data_steam=in_stream) bqpjson_to_hfs(data=data, out_stream=out_stream, chimera_degree=chimera_degree, chimera_cell_size=chimera_cell_size, precision=precision)
[docs]def bqp2hfs(): parser = argparse.ArgumentParser(description='a command line tool for converting a bqp-json files to hfs input. The default input is stdin and the default output is stdout.') parser.add_argument('-cd', '--chimera-degree', help='the size of the source chimera graph', type=int) parser.add_argument('-ccs', '--chimera-cell-size', help='the number of bits in each chimera cell', type=int) parser.add_argument('-p', '--precision', help='the number of digits of precision to consider when converting float values to integers', type=int, default=5) args = parser.parse_args() run_bqp2hfs(chimera_degree=args.chimera_degree, chimera_cell_size=args.chimera_cell_size, precision=args.precision)
# converts a B-QP json file from the ising space to the boolean space and vise versa.
[docs]def run_spin2bool(in_stream=sys.stdin, out_stream=sys.stdout, pretty_print=False): data = load_data(data_steam=in_stream) output_data = swap_variable_domain(data) if pretty_print: print(json.dumps(output_data, **_json_pretty_print_kwargs), file=out_stream) else: print(json.dumps(output_data, sort_keys=True), file=out_stream)
[docs]def spin2bool(): parser = argparse.ArgumentParser(description='a command line tool for converting a B-QP json files from ising to boolean variables and back. The default input is stdin and the default output is stdout.') parser.add_argument('-pp', '--pretty-print', help='pretty print json output', action='store_true', default=False) args = parser.parse_args() run_spin2bool(pretty_print=args.pretty_print)