def get_unique_backends(): """Gets the unique backends that are available. Returns: list: Unique available backends. Raises: QiskitError: No backends available. MissingOptionalLibraryError: If qiskit-ibmq-provider is not installed """ try: from qiskit.providers.ibmq import IBMQ except ImportError as ex: raise MissingOptionalLibraryError( libname="qiskit-ibmq-provider", name="get_unique_backends", pip_install="pip install qiskit-ibmq-provider", ) from ex backends = [] for provider in IBMQ.providers(): for backend in provider.backends(): backends.append(backend) unique_hardware_backends = [] unique_names = [] for back in backends: if back.name() not in unique_names and not back.configuration().simulator: unique_hardware_backends.append(back) unique_names.append(back.name()) if not unique_hardware_backends: raise QiskitError("No backends available.") return unique_hardware_backends
def get_unique_backends(): """Gets the unique backends that are available. Returns: list: Unique available backends. Raises: QiskitError: No backends available. ImportError: If qiskit-ibmq-provider is not installed """ try: from qiskit.providers.ibmq import IBMQ except ImportError: raise ImportError("The IBMQ provider is necessary for this function " " to work. Please ensure it's installed before " "using this function") backends = [] for provider in IBMQ.providers(): for backend in provider.backends(): backends.append(backend) unique_hardware_backends = [] unique_names = [] for back in backends: if back.name( ) not in unique_names and not back.configuration().simulator: unique_hardware_backends.append(back) unique_names.append(back.name()) if not unique_hardware_backends: raise QiskitError('No backends available.') return unique_hardware_backends
def _wrapper(obj, *args, **kwargs): qe_token = kwargs.pop('qe_token') qe_url = kwargs.pop('qe_url') if not IBMQ.active_account(): IBMQ.enable_account(qe_token, qe_url) backend_name = os.getenv('QE_STAGING_DEVICE', None) if \ os.getenv('USE_STAGING_CREDENTIALS', '') else os.getenv('QE_DEVICE', None) _backend = None provider = _get_custom_provider(IBMQ) or list( IBMQ._providers.values())[0] if backend_name: # Put desired provider as the first in the list. providers = [provider] + IBMQ.providers() for provider in providers: backends = provider.backends(name=backend_name) if backends: _backend = backends[0] break else: _backend = least_busy( provider.backends( simulator=False, filters=lambda b: b.configuration().n_qubits >= 5)) if not _backend: raise Exception('Unable to find a suitable backend.') kwargs.update({'backend': _backend}) return func(obj, *args, **kwargs)
def __init__(self, device=DEFAULT_DEVICE, **config): """ Initialize an IBMQ provider. Uses Qiskit to run programs on IBMQ quantum computers. If you need to access the Qiskit provider directly for any reason, use `.provider` :param device: Initialize with a specific device, defaults to qasm_simulator. See `devices` to list options :param config: Additional Qiskit provider configuration. Passed along as key word arguments to Qiskit's IBMQ provider """ IBMQ._try_login_saved_account() provider = QiskitIBMQ.providers()[0] if QiskitIBMQ.providers() else Aer config["provider"] = provider if "backend" in config: if not isinstance(config["backend"], str): config["backend"] = provider.get_backend(DEFAULT_DEVICE) if provider and provider.backends() else None super().__init__(**config)
def test_experiments(self): """Test retrieving experiments.""" self.assertTrue(self.experiments, "No experiments found.") providers = ['/'.join([provider.credentials.hub, provider.credentials.group, provider.credentials.project]) for provider in IBMQ.providers()] for exp in self.experiments: self.assertTrue(isinstance(exp, Experiment)) self.assertTrue(exp.uuid, "{} does not have an uuid!".format(exp)) for dt_attr in ['start_datetime', 'creation_datetime', 'end_datetime', 'updated_datetime']: if getattr(exp, dt_attr): self.assertTrue(getattr(exp, dt_attr).tzinfo) if exp.share_level is not ExperimentShareLevel.PUBLIC: self.assertIn('/'.join([exp.hub, exp.group, exp.project]), providers)
def get_unique_backends(): """Gets the unique backends that are available. Returns: list: Unique available backends. Raises: QiskitError: No backends available. """ backends = [] for provider in IBMQ.providers(): for backend in provider.backends(): backends.append(backend) unique_hardware_backends = [] unique_names = [] for back in backends: if back.name( ) not in unique_names and not back.configuration().simulator: unique_hardware_backends.append(back) unique_names.append(back.name()) if not unique_hardware_backends: raise QiskitError('No backends available.') return unique_hardware_backends
def _get_backend(qe_token, qe_url, backend_name): """Get the specified backend.""" _enable_account(qe_token, qe_url) _backend = None provider = _get_custom_provider(IBMQ) or list(IBMQ._providers.values())[0] if backend_name: # Put desired provider as the first in the list. providers = [provider] + IBMQ.providers() for provider in providers: backends = provider.backends(name=backend_name) if backends: _backend = backends[0] break else: _backend = least_busy( provider.backends(simulator=False, min_num_qubits=5)) if not _backend: raise Exception("Unable to find a suitable backend.") return _backend