2026-08-13 –, Room 3
This package provides a collection of functions which can be written in a form separated by coordinates.
An example is a multidimensional Gaussian, a parabolic potential or a complex valued plane wave.
Typically the separable functions are combined by a multiplication but there are also examples using other operators to combine them. Upon construction the separable parts are pre-calculated and a Julia-generic Base.Broadcast.Broadcasted object, which behaves a bit like a lazy array. It seamlessly merges with other broadcasting operations. The package, albeit being CUDA-agnostic, is fully capable of working with CuArray objects, creating a pre-calculated 1-dimensional CuArray for each dimension which then takes part in the broadcasting. The use of SeparableFuctions.jl significantly speeds up calculations and saves on-board memory. It is currently used in a number of other packages, for example StructuredIlluminationMicroscopy.jl which reconstructs optical images supported by acceleration via CUDA.jl(See also the Computational Physics Minisymposium).
I am heading a department at the Leibniz Institute of Photonic Technology, where our research focuses on imaging cellular function at high resolution. We develop new light microscopy techniques to measure multidimensional information in small biological objects such as cells, cellular organelles or other small structures of interest.
Computer-based reconstruction methods, in particular in Julia, are a core focus and support many of our developments.