Source code for qci_client.optimization.enum
- """Enumerations."""
- from enum import Enum
- [docs]
- class JobType(Enum):
-     """Enumeration of all job types, which are specific to qci-client."""
-     SAMPLE_QUBO = "sample-qubo"
-     """"""
-     GRAPH_PARTITIONING = "graph-partitioning"
-     """"""
-     SAMPLE_CONTRAINT = "sample-constraint"
-     """"""
-     SAMPLE_HAMILTONIAN = "sample-hamiltonian"
-     """"""
-     SAMPLE_HAMILTONIAN_INTEGER = "sample-hamiltonian-integer"
-     """"""
-     SAMPLE_HAMILTONIAN_ISING = "sample-hamiltonian-ising"
-     """"""
- JOB_TYPES = frozenset(type for type in JobType)
- [docs]
- class ProblemType(Enum):
-     """Enumeration of all problem types, where values match jobs API values."""
-     GP = "graph_partitioning"
-     """"""
-     IHO = "ising_hamiltonian_optimization"
-     """"""
-     NQHO = "normalized_qudit_hamiltonian_optimization"
-     """"""
-     NQHO_CONTINUOUS = "normalized_qudit_hamiltonian_optimization_continuous"
-     """"""
-     NQHO_INTEGER = "normalized_qudit_hamiltonian_optimization_integer"
-     """"""
-     QHO = "qudit_hamiltonian_optimization"
-     """"""
-     QLCBO = "quadratic_linearly_constrained_binary_optimization"
-     """"""
-     QUBO = "quadratic_unconstrained_binary_optimization"
-     """"""
- PROBLEM_TYPES = frozenset(type for type in ProblemType)
- [docs]
- class DeviceType(Enum):
-     """Enumeration of all device types, where values match jobs API values."""
-     DIRAC1 = "dirac-1"
-     """"""
-     DIRAC2 = "dirac-2"
-     """"""
-     DIRAC3 = "dirac-3"  
-     """"""
-     DIRAC3_NORMALIZED_QUDIT = "dirac-3_normalized_qudit"
-     """"""
-     DIRAC3_QUDIT = "dirac-3_qudit"
-     """"""
- DEVICE_TYPES = frozenset(type for type in DeviceType)
- DEVICE_TYPES_QUBIT = frozenset((DeviceType.DIRAC1,))
- DEVICE_TYPES_NORMALIZED_QUDIT = frozenset(
-     (
-         DeviceType.DIRAC2,
-         DeviceType.DIRAC3,  
-         DeviceType.DIRAC3_NORMALIZED_QUDIT,
-     )
- )
- DEVICE_TYPES_QUDIT = frozenset(
-     (
-         DeviceType.DIRAC3,  
-         DeviceType.DIRAC3_QUDIT,
-     )
- )
- DEVICE_TYPES_SORTED = [type.value for type in DEVICE_TYPES]
- DEVICE_TYPES_SORTED.sort()
- DEVICE_TYPES_SORTED = tuple(DEVICE_TYPES_SORTED)
- [docs]
- class JobStatus(Enum):
-     """Enumeration of all jobs statuses, where values match jobs API values."""
-     SUBMITTED = "SUBMITTED"
-     """"""
-     QUEUED = "QUEUED"
-     """"""
-     RUNNING = "RUNNING"
-     """"""
-     COMPLETED = "COMPLETED"
-     """"""
-     ERRORED = "ERRORED"
-     """"""
-     CANCELLED = "CANCELLED"
-     """"""
- JOB_STATUSES = frozenset(status for status in JobStatus)
- JOB_STATUSES_FINAL = frozenset(
-     (JobStatus.COMPLETED, JobStatus.ERRORED, JobStatus.CANCELLED)
- )
- [docs]
- class FileType(Enum):
-     """Enumeration of all file types, where values match files API values."""
-     CONSTRAINTS = "constraints"
-     """"""
-     GRAPH = "graph"
-     """"""
-     HAMILTONIAN = "hamiltonian"
-     """"""
-     OBJECTIVE = "objective"
-     """"""
-     POLYNOMIAL = "polynomial"
-     """"""
-     QUBO = "qubo"
-     """"""
-     GP_RESULTS = "graph_partitioning_results"
-     """"""
-     IHO_RESULTS = "ising_hamiltonian_optimization_results"
-     """"""
-     NQHO_CONTINUOUS_RESULTS = (
-         "normalized_qudit_hamiltonian_optimization_continuous_results"
-     )
-     """"""
-     NQHO_INTEGER_RESULTS = "normalized_qudit_hamiltonian_optimization_integer_results"
-     """"""
-     NQHO_RESULTS = "normalized_qudit_hamiltonian_optimization_results"
-     """"""
-     QHO_RESULTS = "qudit_hamiltonian_optimization_results"
-     """"""
-     QLCBO_RESULTS = "quadratic_linearly_constrained_binary_optimization_results"
-     """"""
-     QUBO_RESULTS = "quadratic_unconstrained_binary_optimization_results"
-     """"""
- FILE_TYPES = frozenset(type for type in FileType)
- FILE_TYPES_JOB_INPUTS = frozenset(
-     type for type in FileType if "results" not in type.value
- )
- FILE_TYPES_JOB_INPUTS_MATRIX = FILE_TYPES_JOB_INPUTS - frozenset(
-     [FileType.GRAPH, FileType.POLYNOMIAL]
- )
- FILE_TYPES_JOB_INPUTS_NON_GRAPH = FILE_TYPES_JOB_INPUTS - frozenset([FileType.GRAPH])
- FILE_TYPES_JOB_RESULTS = frozenset(type for type in FileType if "results" in type.value)
- [docs]
- def get_file_type(*, file: dict) -> FileType:
-     """Get file type from a file."""
-     file_config_keys = list(file["file_config"].keys())
-     if len(file_config_keys) != 1:
-         raise ValueError(
-             "improper number of files specified in file_config (should be exactly one)"
-         )
-     return FileType(file_config_keys[0])