at.latticetools.observablelist#

Grouping of Observable objects for fast evaluation.

ObservableList(lattice, …)

This container based on list is in charge of optics computations and provides each individual Observable with its specific data.

ObservableList provides the evaluate() method and the following properties:

Classes

ObservableList([obsiter, method, orbit, ...])

Handles a list of Observables to be evaluated together.

class ObservableList(obsiter=(), *, method=<function linopt6>, orbit=None, twiss_in=None, r_in=None, **kwargs)[source]#

Bases: list

Handles a list of Observables to be evaluated together.

ObservableList supports all list methods, like appending, insertion or concatenation with the “+” operator.

Parameters:

obsiter (Iterable[Observable]) – Iterable of Observables

Keyword Arguments:
  • orbit (Orbit) – Initial orbit. Avoids looking for the closed orbit if it is already known. Used for MatrixObservable and LocalOpticsObservable

  • twiss_in – Initial conditions for transfer line optics. See get_optics(). Used for LocalOpticsObservable

  • method (Callable) – Method for linear optics. Used for LocalOpticsObservable. Default: linopt6

  • r_in (Orbit) – Initial trajectory, used for TrajectoryObservable, Default: zeros(6)

Example

>>> obslist = ObservableList()

Create an empty Observable list

>>> obslist.append(OrbitObservable(at.Monitor, plane="x"))
>>> obslist.append(GlobalOpticsObservable("tune"))
>>> obslist.append(EmittanceObservable("emittances", plane="h"))

Add observables for horizontal closed orbit at Monitor locations, tunes and horizontal emittance

>>> obslist.evaluate(ring, initial=True)

Compute the values and mark them as the initial value

>>> obslist.values
[array([-3.02189464e-09,  4.50695130e-07,  4.08205818e-07,
         2.37899969e-08, -1.31783561e-08,  2.47230794e-08,
         2.95310770e-08, -4.05598110e-07, -4.47398092e-07,
         2.24850671e-09]),
array([3.81563019e-01, 8.54376397e-01, 1.09060730e-04]),
1.320391045951568e-10]
>>> obslist.get_flat_values("tune", "emittances[h]")
array([3.815630e-01, 8.543764e-01, 1.090607e-04, 1.320391e-10])

Get a flattened array of tunes and horizontal emittance

append(obs)[source]#

Append observable to the end of the list.

check()[source]#

Check if all observables are evaluated.

Returns:

okTrue if evaluation is done, False otherwise

Raises:

AtError – any value is doubtful: evaluation failed, empty value…

evaluate(ring=None, *, dp=None, dct=None, df=None, initial=False, **kwargs)[source]#

Compute all the Observable values.

Parameters:
  • ring (Lattice | None) – Lattice used for evaluation

  • dp (float) – Momentum deviation. Defaults to None

  • dct (float) – Path lengthening. Defaults to None

  • df (float) – Deviation from the nominal RF frequency. Defaults to None

  • initial (bool) – If True, store the values as initial values

Keyword Arguments:
exclude(obsname, excluded)[source]#

Set the excluded mask on the selected observable.

extend(obsiter)[source]#

Extend list by appending Observables from the iterable.

get_deviations(*obsid, err=None)[source]#

Return the deviations from target values.

Parameters:
  • *obsid (str | int) – name or index of selected observables (Default all)

  • err (float | None) – Default observable value to be used when the evaluation failed. By default, an Exception is raised.

get_flat_deviations(*obsid, err=None, order='F')[source]#

Return a 1-D array of deviations from target values.

Parameters:
  • *obsid (str | int) – name or index of selected observables (Default all)

  • err (float | None) – Default observable value to be used when the evaluation failed. By default, an Exception is raised.

  • order (str) – Ordering for reshaping. See reshape()

get_flat_shape(*obsid)[source]#

Return the shape of the flattened values.

Parameters:

*obsid (str | int) – name or index of selected observables (Default all)

get_flat_values(*obsid, err=None, order='F')[source]#

Return a 1-D array of Observable values.

Parameters:
  • *obsid (str | int) – name or index of selected observables (Default all)

  • err (float | None) – Default observable value to be used when the evaluation failed. By default, an Exception is raised.

  • order (str) – Ordering for reshaping. See reshape()

get_flat_weighted_deviations(*obsid, err=None, order='F')[source]#

Return a 1-D array of weighted deviations from target values.

Parameters:
  • *obsid (str | int) – name or index of selected observables (Default all)

  • err (float | None) – Default observable value to be used when the evaluation failed. By default, an Exception is raised.

  • order (str) – Ordering for reshaping. See reshape()

get_flat_weighted_values(*obsid, err=None, order='F')[source]#

Return a 1-D array of Observable weighted values.

Parameters:
  • *obsid (str | int) – name or index of selected observables (Default all)

  • err (float | None) – Default observable value to be used when the evaluation failed. By default, an Exception is raised.

  • order (str) – Ordering for reshaping. See reshape()

get_flat_weights(*obsid, order='F')[source]#

Return a 1-D array of Observable weights.

Parameters:
  • *obsid (str | int) – name or index of selected observables (Default all)

  • order (str) – Ordering for reshaping. See reshape()

get_residuals(*obsid, err=None)[source]#

Return the residuals of observables.

Parameters:

*obsid (str | int) –

name or index of selected observables (Default all)

err: Default observable value to be used when the evaluation failed. By

default, an Exception is raised.

get_shapes(*obsid)[source]#

Return the shapes of all values.

Parameters:

*obsid (str | int) – name or index of selected observables (Default all)

get_sum_residuals(*obsid, err=None)[source]#

Return the sum of residual values.

Parameters:
  • *obsid (str | int) – name or index of selected observables (Default all)

  • err (float | None) – Default observable value to be used when the evaluation failed. By default, an Exception is raised.

get_values(*obsid, err=None)[source]#

Return the values of observables.

Parameters:
  • *obsid (str | int) – name or index of selected observables (Default all)

  • err (float | None) – Default observable value to be used when the evaluation failed. By default, an Exception is raised.

Raises:

Exception – Any exception raised during evaluation, unless err has been set.

get_weighted_deviations(*obsid, err=None)[source]#

Return the weighted deviations from target values.

Parameters:
  • *obsid (str | int) – name or index of selected observables (Default all)

  • err (float | None) – Default observable value to be used when the evaluation failed. By default, an Exception is raised.

get_weighted_values(*obsid, err=None)[source]#

Return the weighted values of observables.

Parameters:
  • *obsid (str | int) – name or index of selected observables (Default all)

  • err (float | None) – Default observable value to be used when the evaluation failed. By default, an Exception is raised.

get_weights(*obsid)[source]#

Return the weights of observables.

Parameters:

*obsid (str | int) – name or index of selected observables (Default all)

insert(index, obs)[source]#

Insert Observable before index.

property deviations: tuple#

Deviations from target values

property flat_deviations: ndarray[tuple[int, ...], dtype[float]]#

1-D array of deviations from target value

property flat_shape#

Shape of the flattened values

property flat_values: ndarray[tuple[int, ...], dtype[float]]#

1-D array of Observable values

property flat_weighted_deviations: ndarray[tuple[int, ...], dtype[float]]#

1-D array of weighted deviations from target values

property flat_weighted_values: ndarray[tuple[int, ...], dtype[float]]#

1-D array of Observable weigthed values

property flat_weights: ndarray[tuple[int, ...], dtype[float]]#

1-D array of Observable weights

needs_optics = {Need.GLOBALOPTICS, Need.LOCALOPTICS}#
needs_orbit = {Need.EMITTANCE, Need.GLOBALOPTICS, Need.LOCALOPTICS, Need.MATRIX, Need.ORBIT}#
needs_ring = {Need.EMITTANCE, Need.GEOMETRY, Need.GLOBALOPTICS, Need.LOCALOPTICS, Need.MATRIX, Need.ORBIT, Need.RING, Need.TRAJECTORY}#
property residuals: tuple#

Residuals of all observable

property shapes: tuple#

Shapes of all values

property sum_residuals: float#

Sum of all residual values

property values: tuple#

values of all observables

property weighted_deviations: tuple#

Weighted deviations from target values

property weighted_values: tuple#

Weighted values of all observables