Qibolab
Qibolab is the dedicated Qibo backend for the automatic deployment of quantum circuits on quantum hardware.
Some of the key features of Qibolab are:
- Deploy Qibo models on quantum hardware easily.
- Create experimental drivers for custom lab setup.
- Support multiple heterogeneous platforms.
- Use calibration procedures from Qibocal.
Documentation
The qibolab backend documentation is available at https://qibo.science/qibolab/stable/.
Minimum working example
A simple example on how to connect to a platform and use it execute a pulse sequence:
from qibolab import create_platform
# Define platform and load specific runcard
platform = create_platform("my_platform")
# Create a pulse sequence based on native gates of qubit 0
natives = platform.natives.single_qubit[0]
sequence = natives.RX() | natives.MZ()
# Connects to lab instruments using the details specified in the calibration settings.
platform.connect()
# Execute a pulse sequence
results = platform.execute([sequence], nshots=1000)
# Grab the acquired shots corresponding to
# the measurement using its pulse id.
# The ``PulseSequence`` structure is list[tuple[ChannelId, Pulse]]
# thererefore we need to index it appropriately
# to get the acquisition pulse
readout_id = sequence.acquisitions[0][1].id
print(results[readout_id])
# Disconnect from the instruments
platform.disconnect()
Arbitrary pulse sequences can also be created using the pulse API:
from qibolab import (
Acquisition,
Delay,
Gaussian,
Pulse,
PulseSequence,
Readout,
Rectangular,
)
# Crete some pulses
pulse = Pulse(
amplitude=0.3,
duration=40,
relative_phase=0,
envelope=Gaussian(rel_sigma=0.2), # Gaussian shape with std = 0.2 * duration
)
delay = Delay(duration=40)
readout = Readout(
acquisition=Acquisition(duration=2000),
probe=Pulse(
amplitude=0.9,
duration=2000,
envelope=Rectangular(),
relative_phase=0,
),
)
# Add them to a PulseSequence
sequence = PulseSequence(
[
(1, pulse), # pulse plays on channel 1
(2, delay), # delay and readout plays on channel 2
(2, readout),
]
)
Here is another example on how to execute circuits:
from qibo import gates, models, set_backend
# Create circuit and add native gates
c = models.Circuit(1)
c.add(gates.GPI2(0, phi=0.2))
c.add(gates.M(0))
# Simulate the circuit using numpy
set_backend("numpy")
result = c(nshots=1024)
print(result.probabilities())
# Execute the circuit on hardware
set_backend("qibolab", platform="my_platform")
result = c(nshots=1024)
print(result.probabilities())
Citation policy
If you use the package please refer to the documentation for citation instructions.
Metadata
Release files for qibolab 0.2.16
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| qibolab-0.2.16.tar.gz | 137.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| qibolab-0.2.16-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 324.8 kB
Release files / qibolab-0.2.16.tar.gz
| Download URL | qibolab-0.2.16.tar.gz |
|---|---|
| Size | 137.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c72c13cad2ce0582819ff73fc395e685dc64dfb5bec5f475c6cd244dc2265843
|
|
BLAKE2b-256 checksum How to use checksums |
27f0db4099cfedc574a1d62e22ccdba35b315c65b5c1d1ba6b45aa4b353d94b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / qibolab-0.2.16-py3-none-any.whl
| Download URL | qibolab-0.2.16-py3-none-any.whl |
|---|---|
| Size | 187.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
816b161e9d6cb6fc157cdbf3d6c7b745faeda8a98689cee3283118d67837597c
|
|
BLAKE2b-256 checksum How to use checksums |
53f86372af39f3f52e445237792cecf8ae1acb9113903eb7be1dda5a7e3b5421
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|