Tabulations.jl - function tabulation made easy

Hello everyone! I’ve written a nice package which might be useful for our fellow programmers in the physics research field.

I introduce you to the package Tabulations.jl !

It sometimes happen that you have a function which is extremely slow, a function that is maybe the result of your analysis and that you want to be able to tabulate for further use. This package provides some functions to automatically tabulate and interpolate functions of up to 3 variables (x,y,z). It has multi-thread support and is compatible with Unitful. Furthermore it saves data in the jld2 file format for blazing fast load times and it automatically compresses 3D tabulations to save space.

If you find the package interesting, or if you find some bugs or something that I should improve, please let me know, I’m open to any kind of constructive criticism!

PS: the package has passed all the tests and is currently under review before it can be merged into the julia registry. If you want to try it out, please clone the github repository

7 Likes

This is cool! But IMO the name is a bit too generic. Based on the name I would think it’s something akin to FreqTables.jl for making tabulations of categorical variables. Maybe FunctionTabulations?

1 Like

Related: https://github.com/JuliaCollections/Memoize.jl.

I also find the name Tabulations confusing. Maybe something like TabularMemoize? Or InterpolationMemoize?

What this package does is different from memoize. Memoize caches the value of a function, while this package evaluates a function over a grid and interpolates the function using that grid as a reference. Basically, it does the same thing as Interpolations.jl (as this package is a wrapper) and in addition it stores the table on disk and does some checks to be sure that the interpolation is still valid.

I think that FunctionTabulations would probably be the best name, now I need to figure out how to rename the package before it reaches the julia Registry