Wolfram Computation Meets Knowledge

New in 13: Data & Function Repositories

Two years ago we released Version 12.0 of the Wolfram Language. Here are the updates to the Data and Function Repositories since then, including the latest features in 13.0. The contents of this post are compiled from Stephen Wolfram’s Release Announcements for 12.1, 12.2, 12.3 and 13.0.

 

Making the Data Repository Easy (March 2020)

We launched the Wolfram Function Repository in June 2019, and there are already 1146 functions published in it. One of the innovations in the Function Repository is a very streamlined process for submitting new functions, applicable both for the public Function Repository, and for individual deployment on a single machine, or in the cloud.

In Version 12.1 we’re introducing a new, streamlined submission mechanism for the Data Repository. File > New > Repository Item > Data Repository Item gives you:

Data Resource Definition Notebook

Then if you’ve got, say, a Dataset, you just insert it in the notebook, then add examples (using the Insert ResourceObject button to insert references to the object you’re creating). When you’re done, press Deploy, and you can deploy locally, or privately or publicly to the cloud. Lots of checking just happens automatically (and if there’s something wrong you’ll usually get a suggestion about how to fix it).

My goal was to make it so that a simple Data Repository entry could be created in just a few minutes, and I think we’ve streamlined and automated things to the point where that’s now possible.

The Advance of the Function Repository (December 2021)

When we launched the Wolfram Function Repository in 2019 we didn’t know how rapidly it would grow. But I’m happy to say that it’s been a great success—with perhaps 3 new functions per day being published, giving a total to date of 2259 functions. These are functions which are not part of the core Wolfram Language, but can immediately be accessed from any Wolfram Language system.

They are functions contributed by members of the community, and reviewed and curated by us. And given all of the capabilities of the core Wolfram Language it’s remarkable what can be achieved in a single contributed function. The functions mostly don’t have the full breadth and robustness that would be needed for integration into the core Wolfram Language (though functions like Adjugate in Version 13.0 were developed from “prototypes” in the Function Repository). But what they have is a greatly accelerated delivery process which allows convenient new functionality in new areas to be made available extremely quickly.

Some of the functions in the Function Repository extend algorithmic capabilities. An example is FractionalOrderD for computing fractional derivatives:

&#10005


There’s a lot in FractionalOrderD. But it’s in a way quite specific—in the sense that it’s based on one particular kind of fractional differentiation. In the future we may build into the system full-scale fractional differentiation, but this requires a host of new algorithms. What FractionalOrderD in the Function Repository does is to deliver one form of fractional differentiation now.

Here’s another example of a function in the Function Repository, this time one that’s based on capabilities in Wolfram|Alpha:

&#10005


Another similar example is:

&#10005


Some functions provide extended visualization capabilities. Here’s VennDiagram:

&#10005


There are many ways to imagine handling more complicated cases; this function makes a particular choice:

&#10005


As another example of a visualization function, here’s TruthTable—built to give a visual display of the results of the core language BooleanTable function:

&#10005


Some functions give convenient—though perhaps not entirely general—extensions to particular features of the language. Here’s IntegerChop that reduces real numbers “sufficiently close to integers” to exact integers:

&#10005


Here’s an example of a function that perhaps one day will be in the core language. But for now the most common cases of it are provided by a Function Repository function:

&#10005


There are lots of functions in the Function Repository that give specific extensions to areas of functionality in the core language. BootstrappedEstimate, for example, gives a useful, specific extension to statistics functionality:

&#10005


Here’s a function that “remaps” the Mandelbrot set—using FunctionCompile to go further than MandelbrotSetPlot:

&#10005


There are some functions that definitely seem “niche”—but are extremely useful if you need them:

&#10005


Then there are functions that make “current issues” convenient. An example is MintNFT:

MintNFT

There are also “functions for fun” (that can definitely also be useful):

&#10005


And there are functions that might be considered “insider” humor:

&#10005


By the way, it’s not just the Function Repository that’s been growing with all sorts of great contributions: there’s also the Data Repository and Neural Net Repository, which have also been energetically advancing.