def upload_bqm(self, bqm): """Upload the specified :term:`BQM` to SAPI, returning a Problem ID that can be used to submit the BQM to this solver (i.e. call the `.sample_bqm` method). Args: bqm (:class:`~dimod.BinaryQuadraticModel`/bytes-like/file-like): A binary quadratic model given either as an in-memory :class:`~dimod.BinaryQuadraticModel` object, or as raw data (encoded serialized model) in either a file-like or a bytes-like object. Returns: :class:`concurrent.futures.Future`[str]: Problem ID in a Future. Problem ID can be used to submit problems by reference. Note: To use this method, dimod package has to be installed. """ try: data = bqm_as_file(bqm) except Exception as e: logger.debug( "BQM conversion to file failed with %r, " "assuming data already encoded.", e) # assume `bqm` given as file, ready for upload data = bqm return self.client.upload_problem_encoded(data)
def _encode_problem_for_upload(self, bqm): try: data = bqm_as_file(bqm) except Exception as e: logger.debug("BQM conversion to file failed with %r, " "assuming data already encoded.", e) # assume `bqm` given as file, ready for upload data = bqm return data
def upload(config_file, profile, endpoint, region, client_type, solver_def, problem_id, format, input_file): """Multipart problem upload with cold restart support.""" try: client = Client.from_config( config_file=config_file, profile=profile, endpoint=endpoint, region=region, client=client_type) except Exception as e: click.echo("Invalid configuration: {}".format(e)) return 1 if config_file: click.echo("Using configuration file: {}".format(config_file)) if profile: click.echo("Using profile: {}".format(profile)) click.echo("Using endpoint: {}".format(client.endpoint)) click.echo(("Preparing to upload a problem from {!r} " "in {!r} format.").format(input_file.name, format)) if format == 'coo': click.echo("Transcoding 'coo' to 'dimodbqm'.") try: import dimod except ImportError: # pragma: no cover raise RuntimeError("Can't decode 'coo' format without dimod. " "Re-install the library with 'bqm' support.") # note: `BQM.from_coo` doesn't support files opened in binary (yet); # fallback to reopen for now with open(input_file.name, 'rt') as fp: bqm = dimod.BinaryQuadraticModel.from_coo(fp) problem_file = bqm_as_file(bqm) elif format == 'dimodbqm': problem_file = input_file click.echo("Uploading...") try: future = client.upload_problem_encoded( problem=problem_file, problem_id=problem_id) remote_problem_id = future.result() except Exception as e: click.echo(e) return 2 click.echo("Upload done. Problem ID: {!r}".format(remote_problem_id))