atomiq.components.basics.calibration

In all experiments, calibrations are ubiquious. Examples are

  • voltage - power relation on a photodiode

  • Relation between the current through a coil and the created magentic field

  • RF power in an AOM and light power in the diffracted order

  • The current-voltage relation for a voltage-controlled current supply

  • ...

In atomiq calibrations are comoponents just like every other piece of your experiment. Every calibration inherits from the abstract Calibration class. A special subclass of calibration functions are invertable calibrations that can be analytically inverted. The most frequently used example is a linear calibration function. Invertable calibrations inherit from InvertableCalibration.

Classes

Calibration

An abstract Calibration

InvertableCalibration

An abstract Calibration

DummyCalibration

An abstract Calibration

SplineCalibration

Calibration via data points

InvertableSplineCalibration

Calibration via data points that can be inverted

PolynomialCalibration

Calibration described by a polynomial

LinearCalibration

Linear calibration

SigmoidCalibration

Sigmoid calibration

InvSigmoidCalibration

Inverse sigmoid calibration

Functions

exp(x)

ln(x[, n])

Module Contents

atomiq.components.basics.calibration.exp(x)[source]
Parameters:

x (artiq.language.types.TFloat)

Return type:

artiq.language.types.TFloat

atomiq.components.basics.calibration.ln(x, n=10000.0)[source]
Parameters:
  • x (artiq.language.types.TFloat)

  • n (artiq.language.types.TFloat)

Return type:

artiq.language.types.TFloat

class atomiq.components.basics.calibration.Calibration(input_unit, output_unit, *args, **kwargs)[source]

Bases: atomiq.components.primitives.Component

An abstract Calibration

This is an abstract class to describe a calibration.

Parameters:
  • input_unit (artiq.language.types.TStr) -- A string determining the input unit (e.g. 'mW', 'V', or 'uA')

  • output_unit (artiq.language.types.TStr) -- A string determining the output unit (e.g. 'mW', 'V', or 'uA')

kernel_invariants
input_unit
output_unit
abstractmethod transform(input_value)[source]

Transform a value according to the calibration

Parameters:

input_value (artiq.language.types.TFloat) -- value to be transformed

Returns:

transformed value

Return type:

TFloat

class atomiq.components.basics.calibration.InvertableCalibration(input_unit, output_unit, *args, **kwargs)[source]

Bases: Calibration

An abstract Calibration

This is an abstract class to describe a calibration.

Parameters:
  • input_unit (artiq.language.types.TStr) -- A string determining the input unit (e.g. 'mW', 'V', or 'uA')

  • output_unit (artiq.language.types.TStr) -- A string determining the output unit (e.g. 'mW', 'V', or 'uA')

abstractmethod transform_inv(input_value)[source]

Perform inverse transform of a value according to the calibration

Parameters:

input_value (artiq.language.types.TFloat) -- value to be inversely transformed. Must be given in units of the output unit

Returns:

transformed value. The returned value is in units of the input unit

Return type:

TFloat

class atomiq.components.basics.calibration.DummyCalibration(*args, **kwargs)[source]

Bases: Calibration

An abstract Calibration

This is an abstract class to describe a calibration.

Parameters:
  • input_unit -- A string determining the input unit (e.g. 'mW', 'V', or 'uA')

  • output_unit -- A string determining the output unit (e.g. 'mW', 'V', or 'uA')

transform(input_value)[source]

Transform a value according to the calibration

Parameters:

input_value (artiq.language.types.TFloat) -- value to be transformed

Returns:

transformed value

Return type:

TFloat

class atomiq.components.basics.calibration.SplineCalibration(calibration_points, *args, **kwargs)[source]

Bases: Calibration

Calibration via data points

Data points are interpolated with linear splines

Parameters:

calibration_points (TList(TList(TFloat))) -- List of tuples (x, y) containing the calibration data. The data must be ordered monotonously in x

kernel_invariants
calibration_points
transform(input_value, invert=False)[source]

Transform a value according to the calibration

Parameters:
  • input_value (artiq.language.types.TFloat) -- value to be transformed

  • invert (artiq.language.types.TBool)

Returns:

transformed value

Return type:

TFloat

class atomiq.components.basics.calibration.InvertableSplineCalibration(*args, **kwargs)[source]

Bases: InvertableCalibration, SplineCalibration

Calibration via data points that can be inverted

Data points are interpolated with linear splines. For the inversion to work, both x and y of the calibration data must be monotonous.

transform_inv(input_value)[source]

Perform inverse transform of a value according to the calibration

Parameters:

input_value (artiq.language.types.TFloat) -- value to be inversely transformed. Must be given in units of the output unit

Returns:

transformed value. The returned value is in units of the input unit

Return type:

TFloat

class atomiq.components.basics.calibration.PolynomialCalibration(*args, coefficients, **kwargs)[source]

Bases: Calibration

Calibration described by a polynomial

The calibration is given by the function

$$f(x) = sum_i c_i x^i$$

Parameters:

coefficients (TList(TFloat)) -- List of coefficients $c_i$ of the polynomial, start from the lowest order.

kernel_invariants
coefficients
transform(input_value)[source]

Transform a value according to the calibration

Parameters:

input_value (artiq.language.types.TFloat) -- value to be transformed

Returns:

transformed value

Return type:

TFloat

class atomiq.components.basics.calibration.LinearCalibration(a, b, *args, **kwargs)[source]

Bases: InvertableCalibration

Linear calibration

The calibration is given by the function

$$f(x) = ax + b$$

Parameters:
  • input_unit -- Unit of the input

  • output_unit -- Unit of the output

  • a (artiq.language.types.TFloat) -- Calibration coefficient a

  • b (artiq.language.types.TFloat) -- Calibration coefficient b

kernel_invariants
a
b
transform(input_value)[source]

Transform a value according to the calibration

Parameters:

input_value (artiq.language.types.TFloat) -- value to be transformed

Returns:

transformed value

Return type:

TFloat

transform_inv(output_value)[source]

Perform inverse transform of a value according to the calibration

Parameters:
  • input_value -- value to be inversely transformed. Must be given in units of the output unit

  • output_value (artiq.language.types.TFloat)

Returns:

transformed value. The returned value is in units of the input unit

Return type:

TFloat

class atomiq.components.basics.calibration.SigmoidCalibration(*args, A, k, x_offset=0, y_offset=0, **kwargs)[source]

Bases: Calibration

Sigmoid calibration

` output = A / ( 1 + e^k*(input - x_offset)) + y_offset `

Parameters:
  • input_unit -- Unit of the input

  • output_unit -- Unit of the output

  • A (artiq.language.types.TFloat) -- Amplitude of the sigmoid

  • k (artiq.language.types.TFloat) -- stretching of the sigmoid

  • x_offset (artiq.language.types.TFloat) -- offset on the x axis

  • y_offset (artiq.language.types.TFloat) -- offset on the y axis

kernel_invariants
A
k
x_offset = 0
y_offset = 0
transform(input_value)[source]

Transform a value according to the calibration

Parameters:

input_value (artiq.language.types.TFloat) -- value to be transformed

Returns:

transformed value

Return type:

TFloat

class atomiq.components.basics.calibration.InvSigmoidCalibration(*args, A, k, x_offset=0, y_offset=0, **kwargs)[source]

Bases: Calibration

Inverse sigmoid calibration

` output = -ln( A / (input - y_offset) - 1) / k + x_offset `

The paremeters are defined in a way that they match the sigmoid definition.

Parameters:
  • input_unit -- Unit of the input

  • output_unit -- Unit of the output

  • A (artiq.language.types.TFloat) -- Amplitude of the sigmoid

  • k (artiq.language.types.TFloat) -- stretching of the sigmoid

  • x_offset (artiq.language.types.TFloat) -- offset on the x axis

  • y_offset (artiq.language.types.TFloat) -- offset on the y axis

kernel_invariants
A
k
x_offset = 0
y_offset = 0
transform(input_value)[source]

Transform a value according to the calibration

Parameters:

input_value (artiq.language.types.TFloat) -- value to be transformed

Returns:

transformed value

Return type:

TFloat