Skip to content

Commit

Permalink
Merge pull request #1013 from qiboteam/rm-drivers
Browse files Browse the repository at this point in the history
Remove outdated drivers
  • Loading branch information
stavros11 authored Aug 28, 2024
2 parents bd4e2cf + 3cbccee commit c180cd9
Show file tree
Hide file tree
Showing 58 changed files with 5 additions and 14,032 deletions.
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ Some of the key features of Qibolab are:
- Create custom experimental drivers for custom lab setup.
- Support multiple heterogeneous platforms.
- Use existing calibration procedures for experimentalists.
- Provide a emulator backend equipped with various quantum dynamics simulation engines (currently support: QuTiP) for seamless emulation of quantum hardware.

## Documentation

Expand Down
1 change: 0 additions & 1 deletion doc/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ circuits on quantum hardware. Qibolab includes:
#. :ref:`Arbitrary pulse API <main_doc_pulses>`: provide a library of custom pulses for execution through instruments.
#. :ref:`Compiler <main_doc_compiler>`: compiles quantum circuits into pulse sequences.
#. :ref:`Quantum Circuit Deployment <tutorials_circuits>`: seamlessly deploys quantum circuit models on quantum hardware.
#. :ref:`Emulator <main_doc_emulator>`: seamless emulation of quantum hardware based on a emulator backend equipped with various quantum dynamics simulation engines.

Components
----------
Expand Down
82 changes: 0 additions & 82 deletions doc/source/main-documentation/qibolab.rst
Original file line number Diff line number Diff line change
Expand Up @@ -128,32 +128,6 @@ It is useful for testing parts of the code that do not necessarily require acces
will create a dummy platform that also has coupler qubits.


.. _main_doc_emulator:

Emulator platform
^^^^^^^^^^^^^^^^^

QiboLab supports the use of emulators to simulate the behavior of quantum devices. It uses :class:`qibolab.instruments.emulator.pulse_simulator.PulseSimulator`, which is a controller that utilizes a simulation engine to numerically solve the dynamics of the device in the presence of control pulse sequences specified by :class:`qibolab.pulses.PulseSequence`. The emulator platform for a specific device requires its own platform folder and can be initialized in the same way as any other real platforms::

# .. testcode:: python_emulator

import os
from pathlib import Path

path_to_emulator_runcard = str(Path.cwd().parent / "tests" / "emulators")

emulator_runcard_name = "default_q0"

os.environ["QIBOLAB_PLATFORMS"] = path_to_emulator_runcard # can also be set beforehand

from qibolab import create_platform

platform = create_platform(emulator_runcard_name)

An emulator platform is equivalent to real platforms in terms of attributes and functions, but returns simulated results.
It is useful for testbedding and calibrating pulses, and testing calibration and characterization routines for the corresponding real device especially when access to the real device is limited or when it is unavailable.


.. _main_doc_qubits:

Qubits
Expand Down Expand Up @@ -660,11 +634,8 @@ A list of all the supported instruments follows:

Controllers (subclasses of :class:`qibolab.instruments.abstract.Controller`):
- Dummy Instrument: :class:`qibolab.instruments.dummy.DummyInstrument`
- PulseSimulator Instrument: :class:`qibolab.instruments.emulator.pulse_simulator.PulseSimulator`
- Zurich Instruments: :class:`qibolab.instruments.zhinst.Zurich`
- Quantum Machines: :class:`qibolab.instruments.qm.controller.QMController`
- Qblox: :class:`qibolab.instruments.qblox.controller.QbloxCluster`
- Xilinx RFSoCs: :class:`qibolab.instruments.rfsoc.driver.RFSoC`

Other Instruments (subclasses of :class:`qibolab.instruments.abstract.Instrument`):
- Erasynth++: :class:`qibolab.instruments.erasynth.ERA`
Expand Down Expand Up @@ -723,56 +694,3 @@ Quantum Machines
Tested with a cluster of nine `OPX+ <https://www.quantum-machines.co/products/opx/>`_ controllers, using QOP213 and QOP220.

Qibolab is communicating with the instruments using the `QUA <https://docs.quantum-machines.co/0.1/>`_ language, via the ``qm-qua`` and ``qualang-tools`` Python libraries.

Qblox
^^^^^

Supports the following Instruments:

- Cluster
- Cluster QRM-RF
- Cluster QCM-RF
- Cluster QCM

Compatible with qblox-instruments driver 0.9.0 (28/2/2023).

RFSoCs
^^^^^^

Compatible and tested with:

- Xilinx RFSoC4x2
- Xilinx ZCU111
- Xilinx ZCU216

Technically compatible with any board running ``qibosoq``.

Pulse Simulator
^^^^^^^^^^^^^^^

The simulation controller that is used exclusively by the emulator. It serves primarily to implement the device model using the selected quantum dynamics simulation library (engine), as well as translate and communicate between objects from ``qibolab`` and the selected engine.

Available simulation engines:

- ``qutip``

Currently ``AcquisitionType.DISCRIMINATION`` and ``AcquisitionType.INTEGRATION`` are supported. Note that for ``AcquistionType.INTEGRATION`` samples are projected onto the I component.

Currently does not support:

- Couplers
- Flux pulses

.. admonition:: Qibocal compatibility

The following protocols are currently compatible with the emulator platform (``default_q0``):

- `1D Rabi experiments`
- `Ramsey experiments`
- `T1`
- `T2`
- `T2 echo`
- `Flipping experiments`
- `Single Qubit State Tomography`
- `AllXY`
- `Standard RB`
8 changes: 1 addition & 7 deletions doc/source/tutorials/instrument.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ Currently, Qibolab support various instruments:
as **controller**:

* Quantum Machines
* QBlox
* Zurich instruments
* Xilinx RFSoCs

and as **local oscillators**:

Expand All @@ -18,7 +16,7 @@ If you need to add a new driver, to support a new instruments in your setup, we
In this section, anyway, a basic example will be given.

For clarity, we divide the instruments in two different groups: the **controllers** and the standard **instruments**, where the controller is an instrument that can execute pulse sequences.
For example, a local oscillator is just an instrument, while QBlox is a controller.
For example, a local oscillator is just an instrument, while Quantum Machines is a controller.

Add an instrument
-----------------
Expand Down Expand Up @@ -105,10 +103,6 @@ The additional methods required are:
* ``play_sequences()``
* ``sweep()``

The simplest real example is the RFSoCs driver in
:class:`qibolab.instruments.rfsoc.driver.RFSoC`, but still the code is much more
complex than the local oscillator ones.

Let's see a minimal example:

.. code-block:: python
Expand Down
16 changes: 0 additions & 16 deletions examples/fidelity_example.py

This file was deleted.

45 changes: 0 additions & 45 deletions examples/minimum_working_example.py

This file was deleted.

Loading

0 comments on commit c180cd9

Please sign in to comment.