at.lattice.variables#
Definition of Variable
objects used in matching and
response matrices.
See example-notebooks for examples of matching and response matrices.
Each Variable
has a scalar value.
Class hierarchy
VariableBase
(name, bounds, delta)
ElementVariable
(elements, attrname, index, …)RefptsVariable
(refpts, attrname, index, …)CustomVariable
(setfun, getfun, …)
VariableBase methods
VariableBase
provides the following methods:
VariableBase properties
VariableBase
provides the following properties:
The VariableBase
abstract class may be used as a base class to define
custom variables (see examples). Typically, this consist in overloading the abstract
methods _setfun and _getfun
Examples
Write a subclass of VariableBase
which varies two drift lengths so
that their sum is constant:
class ElementShifter(at.VariableBase):
'''Varies the length of the elements identified by *ref1* and *ref2*
keeping the sum of their lengths equal to *total_length*.
If *total_length* is None, it is set to the initial total length
'''
def __init__(self, drift1, drift2, total_length=None, **kwargs):
# store the 2 variable elements
self.drift1 = drift1
self.drift2 = drift2
# store the initial total length
if total_length is None:
total_length = drift1.Length + drift2.Length
self.length = total_length
super().__init__(bounds=(0.0, total_length), **kwargs)
def _setfun(self, value, **kwargs):
self.drift1.Length = value
self.drift2.Length = self.length - value
def _getfun(self, **kwargs):
return self.drift1.Length
And create a variable varying the length of drifts DR_01 and DR_01 and keeping their sum constant:
drift1 = hmba_lattice["DR_01"]
drift2 = hmba_lattice["DR_02"]
var2 = ElementShifter(drift1, drift2, name="DR_01")
Classes
|
A Variable abstract base class |
|
A Variable with user-defined get and set functions |
|
Container for Variable objects |
- class CustomVariable(setfun, getfun, *args, name='', bounds=(-inf, inf), delta=1.0, history_length=None, ring=None, **kwargs)[source]#
Bases:
VariableBase
A Variable with user-defined get and set functions
This is a convenience function allowing user-defined get and set functions. But subclassing
Variable
should always be preferred for clarity and efficiency.- Parameters:
getfun (Callable) – Function for getting the variable value. Called as
getfun(*args, ring=ring, **kwargs) -> Number
setfun (Callable) – Function for setting the variable value. Called as
setfun(value: Number, *args, ring=ring, **kwargs): None
name (str) – Name of the Variable
bounds (tuple[int | float, int | float]) – Lower and upper bounds of the variable value
*args – Variable argument list transmitted to both the getfun and setfun functions. Such arguments can always be avoided by using
partial()
or callable class objects.
- Keyword Arguments:
**kwargs – Keyword arguments transmitted to both the getfun and setfun functions. Such arguments can always be avoided by using
partial()
or callable class objects.
- class VariableBase(*, name='', bounds=(-inf, inf), delta=1.0, history_length=None, ring=None)[source]#
Bases:
ABC
A Variable abstract base class
Derived classes must implement the
_getfun()
and_getfun()
methods- Parameters:
- get(ring=None, *, initial=False, check_bounds=False)[source]#
Get the actual variable value
- Parameters:
- Returns:
value – Value of the variable
- reset(ring=None)[source]#
Reset to the initial value and clear the history buffer
- Parameters:
ring – Depending on the variable type, a
Lattice
argument may be necessary to reset the variable.
- set_previous(ring=None)[source]#
Reset to the value before the last one
- Parameters:
ring – Depending on the variable type, a
Lattice
argument may be necessary to set the variable.
- status()[source]#
Return a string describing the current status of the variable
- Returns:
status – Variable description
- step_down(ring=None)[source]#
Set to initial_value - delta
- Parameters:
ring – Depending on the variable type, a
Lattice
argument may be necessary to set the variable.
- class VariableList(iterable=(), /)[source]#
Bases:
list
Container for Variable objects
VariableList
supports alllist
methods, like appending, insertion or concatenation with the “+” operator.- get(ring=None, **kwargs)[source]#
Get the current values of Variables
- Parameters:
ring – Depending on the variable type, a
Lattice
argument may be necessary to set the variable.- Keyword Arguments:
- Returns:
values – 1D array of values of all variables