Skip to content

qibogang/qibolab

 
 

Repository files navigation

Qibolab

Tests codecov Documentation Status DOI

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 custom experimental drivers for custom lab setup.
  • Support multiple heterogeneous platforms.
  • Use existing calibration procedures for experimentalists.

Documentation

The qibolab backend documentation is available at https://qibolab.readthedocs.io.

Minimum working example

A simple example on how to connect to the TIIq platform and use it execute a pulse sequence:

from qibolab import Platform
from qibolab.paths import qibolab_folder
from qibolab.pulses import Pulse, ReadoutPulse, PulseSequence

# Define PulseSequence
sequence = PulseSequence()
# Add some pulses to the pulse sequence
sequence.add(Pulse(start=0,
                   amplitude=0.3,
                   duration=4000,
                   frequency=200_000_000,
                   relative_phase=0,
                   shape='Gaussian(5)', # Gaussian shape with std = duration / 5
                   channel=1))

sequence.add(ReadoutPulse(start=4004,
                          amplitude=0.9,
                          duration=2000,
                          frequency=20_000_000,
                          relative_phase=0,
                          shape='Rectangular',
                          channel=2))

# Define platform and load specific runcard
runcard = qibolab_folder / 'runcards' / 'tii1q.yml'
platform = Platform("tii1q", runcard)

# Connects to lab instruments using the details specified in the calibration settings.
platform.connect()
# Configures instruments using the loaded calibration settings.
platform.setup()
# Turns on the local oscillators
platform.start()
# Executes a pulse sequence.
results = platform.execute_pulse_sequence(sequence, nshots=3000)
print(f"results (amplitude, phase, i, q): {results}")
# Turn off lab instruments
platform.stop()
# Disconnect from the instruments
platform.disconnect()

Here is another example on how to execute circuits:

import qibo
from qibo import gates, models


# Create circuit and add gates
c = models.Circuit(1)
c.add(gates.H(0))
c.add(gates.RX(0, theta=0.2))
c.add(gates.X(0))
c.add(gates.M(0))


# Simulate the circuit using numpy
qibo.set_backend("numpy")
for _ in range(5):
    result = c(nshots=1024)
    print(result.probabilities())

# Execute the circuit on hardware
qibo.set_backend("qibolab", platform="tii1q")

for _ in range(5):
    result = c(nshots=1024)
    print(result.probabilities())

Citation policy

If you use the package please cite the following references:

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%