From qrisp.interface is it possible to import the following kind of backends.




Allows to use a Qiskit Aer backend.


Allows to use a Qiskit Runtime backend, exploiting the Qiskit’s Sampler primitive.

class VirtualBackend(run_func, name=None, port=None, ping_func=None)[source]#

This class provides a virtual backend for circuit execution. Virtual means that the server is running on the same machine as a separate Python thread. This structure allows setting up convenient wrappers for foreign/ modified circuit dispatching code.

Circuits can be run using The function that should be used to run a circuit can be specified during construction using the run_func parameter.


A function that recieves a QuantumCircuit, an integer specifiying the amount of shots and a token in the form of a string. It returns the counts as a dictionary of bitstrings.

namestr, optional

A name for the virtual backend. The default is None.

portint, optional

The port on which to listen. The default is None.

ping_funcTYPE, optional

A function which returns a BackendStatus object. The default is None.


We set up a VirtualBackend, which prints the received QuantumCircuit and returns the results of the QASM simulator.

from qrisp.interface import convert_to_qiskit

def run_func(qc, shots, token = ""):

    qiskit_qc = convert_to_qiskit(qc)


    from qiskit import Aer
    qiskit_backend = Aer.get_backend('qasm_simulator')

    #Run Circuit on the Qiskit backend
    return, shots = shots).result().get_counts()
>>> from qrisp.interface import VirtualBackend
>>> example_backend = VirtualBackend(run_func)
>>> from qrisp import QuantumFloat
>>> qf = QuantumFloat(3)
>>> qf[:] = 4
>>> qf.get_measurement(backend = example_backend)
qf.0:   ─────┤M├──────
qf.1:   ──────╫─┤M├───
        ┌───┐ ║ └╥┘┌─┐
qf.2:   ┤ X ├─╫──╫─┤M├
        └───┘ ║  ║ └╥┘
cb_0: 1/══════╩══╬══╬═
              0  ║  ║
cb_1: 1/═════════╩══╬═
                 0  ║
cb_2: 1/════════════╩═
{4: 1.0}


VirtualBackend.__init__(run_func[, name, ...])