Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove outdated drivers #1013

Merged
merged 4 commits into from
Aug 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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