コード例 #1
0
    def backends(self,
                 name: Optional[str] = None,
                 filters: Optional[Callable[[List[IBMQBackend]], bool]] = None,
                 timeout: Optional[float] = None,
                 **kwargs: Any) -> List[IBMQBackend]:
        """Return all backends accessible via this provider, subject to optional filtering.

        Args:
            name (str): backend name to filter by
            filters (callable): more complex filters, such as lambda functions
                e.g. AccountProvider.backends(
                    filters=lambda b: b.configuration['n_qubits'] > 5)
            timeout (float or None): number of seconds to wait for backend discovery.
            kwargs: simple filters specifying a true/false criteria in the
                backend configuration or backend status or provider credentials
                e.g. AccountProvider.backends(n_qubits=5, operational=True)

        Returns:
            list[IBMQBackend]: list of backends available that match the filter
        """
        # pylint: disable=arguments-differ
        if self._backends is None:
            self._backends = self._discover_remote_backends(timeout=timeout)

        backends = self._backends.values()

        # Special handling of the `name` parameter, to support alias
        # resolution.
        if name:
            aliases = self._aliased_backend_names()
            aliases.update(self._deprecated_backend_names())
            name = aliases.get(name, name)
            kwargs['backend_name'] = name

        return filter_backends(backends, filters=filters, **kwargs)
コード例 #2
0
    def __call__(self,
                 name: Optional[str] = None,
                 filters: Optional[Callable[[List[IBMQBackend]], bool]] = None,
                 timeout: Optional[float] = None,
                 **kwargs: Any) -> List[IBMQBackend]:
        """Return all backends accessible via this provider, subject to optional filtering.

        Args:
            name: Backend name to filter by.
            filters: More complex filters, such as lambda functions.
                For example::

                    AccountProvider.backends(filters=lambda b: b.configuration().n_qubits > 5)
            timeout: Maximum number of seconds to wait for the discovery of
                remote backends.
            kwargs: Simple filters that specify a ``True``/``False`` criteria in the
                backend configuration, backends status, or provider credentials.
                An example to get the operational backends with 5 qubits::

                    AccountProvider.backends(n_qubits=5, operational=True)

        Returns:
            The list of available backends that match the filter.
        """
        backends = self._provider._backends.values()

        # Special handling of the `name` parameter, to support alias
        # resolution.
        if name:
            aliases = self._aliased_backend_names()
            aliases.update(self._deprecated_backend_names())
            name = aliases.get(name, name)
            kwargs['backend_name'] = name

        return filter_backends(backends, filters=filters, **kwargs)
コード例 #3
0
    def __call__(self, name=None, filters=None, **kwargs):
        """A listing of all backends from this provider.

        Parameters:
            name (str): The name of a given backend.
            filters (callable): A filter function.
            kwargs (dict): A dictionary of other keyword arguments.

        Returns:
            list: A list of backends, if any.

        Example:

        ..jupyter-execute::

            from qiskit_ionq_provider import IonQProvider
            ionq = IonQProvider('TOKEN')
            sim = ionq.backends(filters=lambda x: x.configuration().simulator)
            print(sim)

        """
        # pylint: disable=arguments-differ
        backends = self._backends
        if name:
            backends = [b for b in self._backends if b.name() == name]
        return filter_backends(backends, filters, **kwargs)
コード例 #4
0
    def backends(self, name=None, filters=None, **kwargs):
        # pylint: disable=arguments-differ
        backends = self._backends
        if name:
            backends = [backend for backend in backends if backend.name() == name]

        return filter_backends(backends, filters=filters, **kwargs)
コード例 #5
0
    def backends(self, name=None, filters=None, **kwargs):
        # pylint: disable=arguments-differ
        backends = self._backends.values()

        if name:
            kwargs['backend_name'] = name

        return filter_backends(backends, filters=filters, **kwargs)
コード例 #6
0
 def backends(self, name: str = None, **kwargs) -> List[Backend]:
     """
     Returns a list of backends matching the specified filtering.
     """
     backends = self._backends if name is None else [
         backend for backend in self._backends if backend.name() == name
     ]
     return filter_backends(backends, filters=None, **kwargs)
コード例 #7
0
 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 in self._backends:
         if name is None or backend_name == name:
             backends.append(backend_cls(provider=self))
     return filter_backends(backends, filters=filters)
コード例 #8
0
    def backends(self, name=None, filters=None, **kwargs):
        """A listing of all backends from this provider.
        """
        # pylint: disable=arguments-differ
        backends = self._backends
        if name:
            backends = [
                backend for backend in backends if backend.name() == name]

        return filter_backends(backends, filters=filters, **kwargs)
コード例 #9
0
    def backends(self, name=None, filters=None, **kwargs):
        backends = self._backends.values()

        if name:
            try:
                backends = [
                    backend for backend in backends if backend.name() == name
                ]
            except LookupError:
                pass

        return filter_backends(backends, filters=filters, **kwargs)
コード例 #10
0
    def backends(self,
                 name: Optional[str] = None,
                 filters: Optional[Callable[[List[IBMQBackend]], bool]] = None,
                 timeout: Optional[float] = None,
                 min_num_qubits: Optional[int] = None,
                 **kwargs: Any) -> List[IBMQBackend]:
        """Return all backends accessible via this provider, subject to optional filtering.

        Args:
            name: Backend name to filter by.
            filters: More complex filters, such as lambda functions.
                For example::

                    AccountProvider.backends(
                        filters=lambda b: b.configuration().quantum_volume > 16)
            timeout: Maximum number of seconds to wait for the discovery of
                remote backends.
            min_num_qubits: Minimum number of qubits the backend has to have.
            kwargs: Simple filters that specify a ``True``/``False`` criteria in the
                backend configuration, backends status, or provider credentials.
                An example to get the operational backends with 5 qubits::

                    AccountProvider.backends(n_qubits=5, operational=True)

        Returns:
            The list of available backends that match the filter.
        """
        if timeout:
            warnings.warn(
                "The `timeout` keyword argument is deprecated and will "
                "be removed in a future release.",
                DeprecationWarning,
                stacklevel=2)

        backends = list(self._provider._backends.values())

        # Special handling of the `name` parameter, to support alias
        # resolution.
        if name:
            aliases = self._aliased_backend_names()
            aliases.update(self._deprecated_backend_names())
            name = aliases.get(name, name)
            kwargs['backend_name'] = name

        if min_num_qubits:
            backends = list(
                filter(lambda b: b.configuration().n_qubits >= min_num_qubits,
                       backends))

        return filter_backends(backends, filters=filters, **kwargs)
コード例 #11
0
ファイル: aerprovider.py プロジェクト: yaelbh/qiskit-aer
 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)
コード例 #12
0
    def backends(self, name=None, filters=None, **kwargs):
        # pylint: disable=arguments-differ
        backends = self._backends.values()

        # Special handling of the `name` parameter, to support alias resolution
        # and deprecated names.
        if name:
            try:
                resolved_name = resolve_backend_name(
                    name, backends, self._deprecated_backend_names(), {}
                )
                backends = [backend for backend in backends if backend.name() == resolved_name]
            except LookupError:
                return []

        return filter_backends(backends, filters=filters, **kwargs)
コード例 #13
0
    def __call__(self, name=None, filters=None, **kwargs):
        """A listing of all backends from this provider.

        Parameters:
            name (str): The name of a given backend.
            filters (callable): A filter function.

        Returns:
            list: A list of backends, if any.
        """
        # pylint: disable=arguments-differ
        backends = self._backends
        if name:
            backends = [
                backend for backend in backends if backend.name() == name
            ]

        return filter_backends(backends, filters=filters, **kwargs)
コード例 #14
0
 def backends(self, name=None, **kwargs):
     if name:
         backends = [
             backend for backend in backends if backend.name() == name
         ]
     return filter_backends(backends, filters=filters, **kwargs)
コード例 #15
0
    def backends(
        self,
        name: Optional[str] = None,
        filters: Optional[Callable[[List[IBMBackend]], bool]] = None,
        min_num_qubits: Optional[int] = None,
        input_allowed: Optional[Union[str, List[str]]] = None,
        instance: Optional[str] = None,
        **kwargs: Any,
    ) -> List[IBMBackend]:
        """Return all backends accessible via this account, subject to optional filtering.

        Args:
            name: Backend name to filter by.
            filters: More complex filters, such as lambda functions.
                For example::

                    IBMProvider.backends(
                        filters=lambda b: b.configuration().quantum_volume > 16)
            min_num_qubits: Minimum number of qubits the backend has to have.
            input_allowed: Filter by the types of input the backend supports.
                Valid input types are ``job`` (circuit job) and ``runtime`` (Qiskit Runtime).
                For example, ``inputs_allowed='runtime'`` will return all backends
                that support Qiskit Runtime. If a list is given, the backend must
                support all types specified in the list.
            instance: The provider in the hub/group/project format.
            **kwargs: Simple filters that specify a ``True``/``False`` criteria in the
                backend configuration, backends status, or provider credentials.
                An example to get the operational backends with 5 qubits::

                    IBMProvider.backends(n_qubits=5, operational=True)

        Returns:
            The list of available backends that match the filter.

        Raises:
            IBMBackendValueError: If only one or two parameters from `hub`, `group`,
                `project` are specified.
        """
        backends: List[IBMBackend] = []
        if instance:
            hgp = self._provider._get_hgp(instance=instance)
            backends = list(hgp.backends.values())
        else:
            backends = list(self._backends.values())
        # Special handling of the `name` parameter, to support alias resolution.
        if name:
            aliases = self._aliased_backend_names()
            aliases.update(self._deprecated_backend_names())
            name = aliases.get(name, name)
            kwargs["backend_name"] = name
        if min_num_qubits:
            backends = list(
                filter(lambda b: b.configuration().n_qubits >= min_num_qubits,
                       backends))
        if input_allowed:
            if not isinstance(input_allowed, list):
                input_allowed = [input_allowed]
            backends = list(
                filter(
                    lambda b: set(input_allowed) <= set(b.configuration().
                                                        input_allowed),
                    backends,
                ))
        return filter_backends(backends, filters=filters, **kwargs)