AnnealingProgram

class qililab.AnnealingProgram(flux_to_bus_topology, annealing_program)

Bases: object

Class for an Annealing Program. The program should have the format

[
    {"qubit_0": {"sigma_x" : 0, "sigma_y" : 1, "sigma_z" : 2},
    "coupler_1_0 : {...},
    },      # time=0ns
    {...},  # time=1ns
.
.
.
]
Parameters:
  • platform (Any) – platform

  • annealing_program (list[dict[str, dict[str, float]]]) – dictionary with the annealing program with the above structure.

Methods Summary

get_waveforms([crosstalk_matrix, ...])

Returns a dictionary containing (bus, waveform) for each flux control from the transpiled fluxes.

transpile(transpiler)

First implementation of a transpiler, pretty basic but good as a first step.

Methods Documentation

get_waveforms(crosstalk_matrix=None, minimum_clock_time=1)

Returns a dictionary containing (bus, waveform) for each flux control from the transpiled fluxes. AnnealingProgram.transpile should be run first. The waveform is an arbitrary waveform obtained from the transpiled fluxes.

Parameters:
  • crosstalk_matrix[CrosstalkMatrix] – crosstalk matrix to correct the flux vectors with. This is usually the inverse of the crosstalk matrix

  • experiments. (in the Calibration file obtained from)

  • [int] (minimum_clock_time) – minimum unit of clock time for the awg (in ns). Waveforms should be multiples of this. Defaults to 1, equivalent to 1ns resolution.

Returns:

Dictionary containing the waveform to be sent to each bus, with xtalk corrected

Return type:

dict[str, Arbitrary]

transpile(transpiler)

First implementation of a transpiler, pretty basic but good as a first step. Transpiles from ising coefficients to fluxes

Parameters:
  • transpiler (Callable) – Transpiler to use. The transpiler should take 2 values as arguments (delta, epsilon)

  • values (and return 2)