Software

Recent projects in julia on which I can reasonably be considered the primary contributor include ScatteringTransform.jl, FourierFilterFlux.jl, and ContinuousWavelets.jl.

ContinuousWavelets.jl

Mother Wavelet families implemented in ContinuousWavelets.jl

Mother Wavelet families implemented in ContinuousWavelets.jl

A package devoted to creating and performing continuous wavelet transforms. There are many available design parameters to tune the wavelets to your problem domain, such as the 1D wavelet family, detailed control over the wavelets per octave, the starting/ending octaves, variable density at different octaves, whether or not to include an averaging wavelet, and the type of wavelet normalization. The transform can be applied in batch form to many signals simultaneously. There are several inversion methods included, as well as several utilities such as the cone of influence, the wavelet cross spectrum and the wavelet coherence. To install, simply add via the julia package manager.

FourierFilterFlux.jl

A package to perform Fourier domain convolution in 1, 2, or 3 dimensions in a Flux-friendly way, meaning that it is differentiable, can run on either the gpu or cpu, and can be integrated into a chain of functions as would be used in Flux. It is meant as a Fourier domain version of Flux.conv, and as such is better suited for filters with larger spatial support. It supports periodic, padded, and symmetric boundary conditions. For filters, it includes the wavelets defined in ContinuousWavelets.jl as well as random initial filters, with easy methods for including your own filters. They can be flagged as either trainable or not, depending on your use case. Documentation and registration in process, so it is currently add via

(@v1.7) pkg> add "github.com/dsweber2/FourierFilterFlux.jl.git"
julia> using FourierFilterFlux

ScatteringTransform.jl

By properly layering the convFFT filters from FourierFilterFlux.jl with modified subsampling operators from Flux.jl and some per layer output functions, this package implements the Scattering Transform in Julia. This means that it is end-to-end differentiable and can run on either a CPU or GPU. In addition, if you have a different method of performing the relevant filtering, this can also replace the convFFT layers. A comparable python package is Kymatio. Documentation and registration in process, so it is currently add via

(@v1.7) pkg> add "github.com/dsweber2/ScatteringTransform.jl.git"
julia> using ScatteringTransform