Juliacon 2024

DataToFunctions.jl: Representing transformed data as a function
2024-07-10 , If (1.1)

This package wraps (measured) data into a function which supports coordinate transformation parameters. Upon calling this returned function, the data is interpolated according to the transformation into an array. Currently supported N-dimensional transformations are shift and zoom, or an affine transformation. It also supports automatic differentiation over its transform parameters, enabling its use in fitting and inverse modeling problems.


It is sometimes useful to fit measured data (e.g. an image of a star) with a functional representation of the image of a star (the point spread function) parameterized by position, zoom and rotation. However, sometimes such functional model representations are hard to come by. Therefore, high-quality measurements of a star can serve as an example of such a point spread function.
Rather than first fitting this example data with another parameterized function (e.g. a polynomial representation) and implementing the required transformation parameters, we simply wrapped the data into a functional representation using Interpolations.jl.
For a fast application of this scheme, it is essential that no memory is allocated for each individual interpolation event. In the current version of DataToFunctions.jl we support different coordinate transformations, which are all free of memory allocations during coordinate calculations (using the StaticArrays.jl toolbox).
One coordinate transformation supports shifting and scaling. Another more general one supports an N-dimensional affine transformation based on homogeneous coordinates (i.e. adding one extra dimension of value 1 to each coordinate vector and using an (N+1)x(N+1) matrix for the transformation). For two-dimensions (N=2), there is also an easy-to-use form of the affine transformation, spelling out shift, shear, rotation and scaling as individual parameters.
Returned is a function encapsulating the underlying data to be used for further work, like fitting the new data. The advantage of this method is that we do not fit any function to the measured data. So, we do not approximate the data used for fitting, but use it directly for fitting via interpolation.
We provide a few examples to showcase possible use-cases of our toolbox.

PhD researcher at FSU Jena