dimod.DiscreteQuadraticModel.to_file#
- DiscreteQuadraticModel.to_file(*, compress=False, compressed=None, ignore_labels=False, spool_size=1000000000)[source]#
Convert the DQM to a file-like object.
- Parameters:
compress (bool, optional default=False) – If True, most of the data will be compressed.
compressed (bool, optional default=None) – Deprecated; please use
compress
instead.ignore_labels (bool, optional, default=False) – Treat the DQM as unlabeled. This is useful for large DQMs to save on space.
spool_size (int, optional, default=int(1e9)) – Defines the max_size passed to the constructor of
tempfile.SpooledTemporaryFile
. Determines whether the returned file-like’s contents will be kept on disk or in memory.
- Returns:
A file-like object that can be used to construct a copy of the DQM. The class is a thin wrapper of
tempfile.SpooledTemporaryFile
that includes some methods fromio.IOBase
Format Specification (Version 1.0):
This format is inspired by the NPY format
Header
The first 8 bytes are a magic string: exactly
"DIMODDQM"
.The next 1 byte is an unsigned byte: the major version of the file format.
The next 1 byte is an unsigned byte: the minor version of the file format.
The next 4 bytes form a little-endian unsigned int, the length of the header data HEADER_LEN.
The next
HEADER_LEN
bytes form the header data. This is a json-serialized dictionary. The dictionary is exactly:dict(num_variables=dqm.num_variables(), num_cases=dqm.num_cases(), num_case_interactions=dqm.num_case_interactions(), num_variable_interactions=dqm.num_variable_interactions(), variables=not (ignore_labels or dqm.variables.is_range), )
it is padded with spaces to make the entire length of the header divisible by 64.
DQM Data
The first 4 bytes are exactly “BIAS”
The next 4 bytes form a little-endian unsigned int, the length of the DQM data
DATA_LEN
.The next
DATA_LEN
bytes are the vectors as returned byDiscreteQuadraticModel.to_numpy_vectors()
saved usingnumpy.save()
.Variable Data
The first 4 bytes are exactly
"VARS"
.The next 4 bytes form a little-endian unsigned int, the length of the variables array
VARIABLES_LENGTH
.The next VARIABLES_LENGTH bytes are a json-serialized array. As constructed by
json.dumps(list(bqm.variables))
.See also
Deprecated since version 0.9.9: The
compressed
keyword argument will be removed in dimod 0.12.0. Usecompress
instead.