py2store.utils.affine_conversion¶
utils to carry out affine transformations (of indices)
Functions
|
Getting two affine functions with given scale and offset, that are inverse of each other. Namely (for input val)::. |
Classes
|
Getting a callable that will perform an affine conversion. Note, it does it as (val - offset) * scale. |
- class py2store.utils.affine_conversion.AffineConverter(scale=1.0, offset=0.0)[source]¶
Bases:
objectGetting a callable that will perform an affine conversion. Note, it does it as
(val - offset) * scale
(Note slope-intercept style (though there is the .from_slope_and_intercept constructor method for that)
Inverse is available through the inv method, performing:
val / scale + offset
>>> convert = AffineConverter(scale=0.5, offset=1) >>> convert(0) -0.5 >>> convert(10) 4.5 >>> convert.inv(4) 9.0 >>> convert.inv(4.5) 10.0
- py2store.utils.affine_conversion.get_affine_converter_and_inverse(scale=1, offset=0, source_type_cast=None, target_type_cast=None)[source]¶
Getting two affine functions with given scale and offset, that are inverse of each other. Namely (for input val):
(val - offset) * scale and val / scale + offset
Note this is not “slope intercept” style!!
The source_type_cast and target_type_case (optional), allow the user to specify if these transformations need to be further cast to a given type.
- Parameters:
scale
offset
source_type_cast – function to apply to input
target_type_cast – function to apply to output
- Returns:
Two single val functions: affine_converter, inverse_affine_converter
Note
Code is a lot more complex than the basic operations it performs. The reason was a worry of efficiency since the functions that are returned are intended to be used in long loops.
See also
ocore.utils.conversion.AffineConverter
>>> affine_converter, inverse_affine_converter = get_affine_converter_and_inverse(scale=0.5,offset=1) >>> affine_converter(0) -0.5 >>> affine_converter(10) 4.5 >>> inverse_affine_converter(4) 9.0 >>> inverse_affine_converter(4.5) 10.0 >>> affine_converter, inverse_affine_converter = get_affine_converter_and_inverse(scale=0.5,offset=1,target_type_cast=int) >>> affine_converter(10) 4