Source code for ddsim.provider

from qiskit.providers import ProviderV1
from qiskit.providers.providerutils import filter_backends

from mqt.ddsim.hybridqasmsimulator import HybridQasmSimulatorBackend
from mqt.ddsim.hybridstatevectorsimulator import HybridStatevectorSimulatorBackend
from mqt.ddsim.pathqasmsimulator import PathQasmSimulatorBackend
from mqt.ddsim.pathstatevectorsimulator import PathStatevectorSimulatorBackend
from mqt.ddsim.qasmsimulator import QasmSimulatorBackend
from mqt.ddsim.statevectorsimulator import StatevectorSimulatorBackend
from mqt.ddsim.unitarysimulator import UnitarySimulatorBackend


[docs]class DDSIMProvider(ProviderV1): _BACKENDS = None def __init__(self): if DDSIMProvider._BACKENDS is None: DDSIMProvider._BACKENDS = [ ("qasm_simulator", QasmSimulatorBackend, None, None), ("statevector_simulator", StatevectorSimulatorBackend, None, None), ("hybrid_qasm_simulator", HybridQasmSimulatorBackend, None, None), ("hybrid_statevector_simulator", HybridStatevectorSimulatorBackend, None, None), ("path_sim_qasm_simulator", PathQasmSimulatorBackend, None, None), ("path_sim_statevector_simulator", PathStatevectorSimulatorBackend, None, None), ("unitary_simulator", UnitarySimulatorBackend, None, None), ]
[docs] def get_backend(self, name=None, **kwargs): return super().get_backend(name=name, **kwargs)
[docs] def backends(self, name=None, filters=None, **kwargs): # pylint: disable=arguments-differ # Instantiate a new backend instance so if config options # are set they will only last as long as that backend object exists backends = [] for backend_name, backend_cls, method, device in self._BACKENDS: opts = {"provider": self} if method is not None: opts["method"] = method if device is not None: opts["device"] = device if name is None or backend_name == name: backends.append(backend_cls(**opts)) return filter_backends(backends, filters=filters, **kwargs)
def __str__(self): return "DDSIMProvider"