72

Update 2015 Sept: See also PackageData.net, and consider adding there as well.


Let's use this thread to post our favourite freely available third-party packages!

Instructions

  • Please post only those packages that you actually use yourself (not any package you found) or packages that you created yourself.

  • Each answer should be one package, and should preferably contain a short description/review of the package.

  • Upvote those packages that you use, so the best ones will float to the top.

The purpose of this thread is not to create a comprehensive list (such a list already exists) but to highlight the best / most popular packages that many of us could find useful/interesting. We can also use this thread to share packages our members have created. Please see discussion here.

8
  • This is a long-awaited thread! Unfortunately, I can't contribute, as I don't really use any third-party package. Commented May 28, 2012 at 18:04
  • Freely available means a package anyone could get OR BUY, right?
    – Rojo
    Commented Jun 2, 2012 at 22:59
  • @Rojo I included it because I thought this thread makes more sense for packages that anyone could get freely. There's less resistance for these packages to get popular here. But if any commercial packages are popular and get upvoted by many people---why not?
    – Szabolcs
    Commented Jun 3, 2012 at 8:12
  • This is a great thread. But, I was just thinking, after seeing it so many times... why actually is it on the meta? Since it is not actually about the main site or our community, shouldn't it be there instead? Commented Dec 15, 2013 at 22:30
  • @OleksandrR. The problem is that it doesn't fit anywhere. It's not about the main site but it's also a bit fuzzy and a "big list" question. We were trying to avoid big lists at the beginning. I don't have any strong feelings about where it should be, but I'm hoping that we could keep it. I'm sure some would say this kind of thread is just not a good fit for SE or that it should be in some wiki (tag wiki?)
    – Szabolcs
    Commented Dec 15, 2013 at 23:01
  • @Szabolcs well, I thought that we're established enough now that we can just do whatever we like, including putting it on the main site if that's what we prefer. OTOH, it's certainly not doing any harm being here on the meta. Commented Dec 15, 2013 at 23:36
  • @Szabolcs, first I want to thank you for such website. Although I am late but better late than never. I want to ask you about your third point in the Instructions, when I opened the website, the packages are either sorted alphabetically or newest. How would I sort the package based on best ones. Also do you think there are other useful packages /application in other places (other than wolfram library archive) Commented Mar 8, 2017 at 21:18
  • @Algohi I did not make this site, C.E. did. You can ask him about the site in the chatroom. There is no information on the site at this moment about package quality. You can also check GitHub for Mathematica stuff, github.com/search?q=topic%3Amathematica&type=Repositories I don't know any others.
    – Szabolcs
    Commented Mar 8, 2017 at 21:51

15 Answers 15

29

MATLink -- seamlessly call MATLAB from Mathematica

This package lets you ...

  • Transfer data between MATLAB and Mathematica. Most MATLAB data types are supported including sparse arrays, structs and cells.

  • Wrap MATLAB functions in the MFunction head and call them directly. Argument translation is automatic.

  • Write and manage MATLAB scripts and functions.

Find more details here. Suggestions, bug reports or other feedback is most welcome!

Disclaimer: I'm one of the MATLink developers.

25

SciDraw – Publication quality scientific figures

SciDraw (by Mark Caprio) is the successor of LevelScheme. It is designed for the creation of publication quality scientific figures. It requires more work to set up a figure than with Mathematica's standard graphics and plotting functions (it's not for quick and dirty plotting), but it also gives much more control and solves the most common problems when generating figures for publication, such as precise alignment of subfigures.

Highlight features:

  • Generation of panels for multi-panel and inset figures
  • Customizable tick marks (CustomTicks` package)
  • Style definitions, for uniformly controlling formatting and appearance across multiple figures
  • Graphical objects for annotating figures with text labels, axes, etc.

It also supports data plotting with legend generation and drawing energy level diagrams.

enter image description here

17

Spelunking

The Spelunking package (written by Simon Woods and others) provides a convenient way to read the definitions of in-memory symbols.

It started life in this thread.

I use this quite often, and it was essential for answering several questions on this site. It makes it very convenient to explore either built-in functionality or packages.

In Mathematica version 10 it can be loaded directly from the GitHub repository with

Get["http://wolfr.am/2WQJUgGK"]

and then used with e.g.

Spelunk[URLShorten]
15

NCAlgebra -- allows analytic analysis of non-commutative expressions

This packages allows you to do all sorts of non-commutative analytical work which is not straightforward to do in plain-old MMA. See, for example, Daniel Lichtblau's answer to my question about matrix block inversion.

I've been using it recently for simplifying block matrix equations to get analytical results (I know the analytical form of particular blocks, and can compute their inverses, but the larger block matrix inverse isn't trivial).

1
  • @R.M Been using it recently. There's a bit of a learning curve, but it's awesome. Helping me solve a series of problems I've been thinking about for a long time.
    – Eli Lansey
    Commented May 29, 2012 at 23:27
13

LevelScheme, and it's sub-package CustomTicks.

This is a package for creating publication quality figures. It makes it easier to create multi-panel figures and insets as well as to annotate and label plots. It includes the sub-package CustomTicks which makes it easy to create and style good looking custom tick marks with minimal effort (it can be used independently from the rest of LevelScheme). LevelScheme was originally written for making energy level diagrams and includes a lot of functionality for this.

Creating figures with LevelScheme is more work than using the usual ways Mathematica provides, but it also gives much tighter control over figure appearance, and makes it easier to handle multipanel- and subfigures (an area where Mathematica is quite lacking).

4
  • 2
    CustomTicks all the time!
    – Eli Lansey
    Commented May 29, 2012 at 21:30
  • 2
    Yes! No publication ready figures without it. Commented May 31, 2012 at 13:48
  • 2
    @MarkusRoellig Take a look at the successor
    – Szabolcs
    Commented Dec 9, 2013 at 19:41
  • @Szabolcs Good find. Thanks for the info. Commented Dec 10, 2013 at 9:37
13

Rubi: Rule-based Mathematics (Symbolic Integration Rules)

If systematically applied, the integration rules in Rubi can determine the antiderivative for a wide variety of mathematical expressions. As proof, a rule-based integrator nicknamed Rubi was implemented using these rules. Rubi dramatically out-performs Maple and Mathematica (the two major commercial computer algebra systems) on a test suite of over 43 thousand integration problems.

The following table summarizes the result of running the integration test suite on these systems as of 8 May 2013: enter image description here

0
12

Cuba - a library for multidimensional numerical integration

The Cuba library offers a choice of four independent routines for multidimensional numerical integration:

Vegas is the simplest of the four. It uses importance sampling for variance reduction, but is only in some cases competitive in terms of the number of samples needed to reach a prescribed accuracy. Nevertheless, it has a few improvements over the original algorithm and comes in handy for cross-checking the results of other methods.

Suave is a new algorithm which combines the advantages of two popular methods: importance sampling as done by Vegas and subregion sampling in a manner similar to Miser. By dividing into subregions, Suave manages to a certain extent to get around Vegas' difficulty to adapt its weight function to structures not aligned with the coordinate axes.

Divonne is a further development of the CERNLIB routine D151. Divonne works by stratified sampling, where the partitioning of the integration region is aided by methods from numerical optimization. A number of improvements have been added to this algorithm, the most significant being the possibility to supply knowledge about the integrand. Narrow peaks in particular are difficult to find without sampling very many points, especially in high dimensions. Often the exact or approximate location of such peaks is known from analytic considerations, however, and with such hints the desired accuracy can be reached with far fewer points.

Cuhre employs a cubature rule for subregion estimation in a globally adaptive subdivision scheme. It is hence a deterministic, not a Monte Carlo method. In each iteration, the subregion with the largest error is halved along the axis where the integrand has the largest fourth difference. Cuhre is quite powerful in moderate dimensions, and is usually the only viable method to obtain high precision, say relative accuracies much below 1e-3.

All four have a C/C++, Fortran, and Mathematica interface and can integrate vector integrands. Their invocation is very similar, so it is easy to substitute one method by another for cross-checking. For further safeguarding, the output is supplemented by a chi-square probability which quantifies the reliability of the error estimate.

The source code compiles with gcc, the GNU C compiler. The C functions can be called from Fortran directly, so there is no need for adapter code. Similarly, linking Fortran code with the library is straightforward and requires no extra tools.

2
  • 1
    It would be useful to add some installation instructions. Documentation on this is minimal and I'm having some difficulty compiling the latest version on OS X.
    – Szabolcs
    Commented Dec 1, 2013 at 17:51
  • @Szabolcs I did not try compiling them but used the already compiled binaries. You can also download them on the above link. They worked fine on Windows. Commented Dec 1, 2013 at 22:00
10

Quantum

The Quantum package by José Luis Gómez-Muñoz and Francisco Delgado let you do symbolic quantum mechanics algebra in Mathematica.

enter image description here

9

Imtek Mathematica Supplement

I use it a lot for unstructured 3-D interpolation.

5
  • Doesn't version 8 already support 3D unstructured (linear) interpolation using Interpolation? I thought this was one of the ways TetGenLink was used internally.
    – Szabolcs
    Commented May 31, 2012 at 13:57
  • I only recently read it in one of the post on SO, but didn't follow up on it. Possible V8+ is up to the task now. Does it also work for 4+ dimensions? Commented May 31, 2012 at 14:06
  • I didn't try, but I doubt it works for 4+ dimensions. TetGen is only for 3 dimensions.
    – Szabolcs
    Commented May 31, 2012 at 14:08
  • Actually, it does! Here's an example for 4D: if = Interpolation[RandomReal[1, {200, 5}], InterpolationOrder -> 1]; if[.5, .5, .5, .5]
    – Szabolcs
    Commented May 31, 2012 at 14:10
  • @Szabolcs This does only work for V8. More recent Versions do not support unstructured grid Interpolation with dim>3. Commented Sep 13, 2014 at 8:00
8

Bbget -- allows Bloomberg data to be imported directly into Mathematica. Windows version available but with recent revisions to the Bloomberg API, Mac should be possible too.

http://www.wheels.org/monkeywrench/?p=737

1
  • @Micheal, your package is very useful in my daily work. Thanks a lot!
    – iav
    Commented Apr 30, 2014 at 7:34
7

WildCats -- brings Category Theory to Mathematica

WildCats lets you manipulate and visualize categories, functors natural transformations, universal properties, etc.

This seems to be the only package for Mathematica (or any other major CAS) dedicated to Category Theory, the 70 year old, new all-encompassing mathematical language.

The latest version 0.70 has just been released.

I am actively developing it and always welcome users' comments and suggestions.

12
  • I notice that it's under the GPL. In meta.mathematica.stackexchange.com/a/353/129 Oleksandr R. noted that there may be issues with GPLed code on Mathematica. I didn't check out the attached version of the license (or the package itself), but if you didn't do so, you might consider explicitly adding a special exception allowing your code to be used together with code provided by Mathematica without requiring the Mathematica code to be GPLed, just to be on the safe side. If you used third-party GPLed code in it, of course things might be a bit more complicated.
    – celtschk
    Commented Jun 13, 2012 at 16:47
  • @celtschk there is also the LGPL variant which, I believe, builds in that exception.
    – rcollyer
    Commented Jun 13, 2012 at 17:01
  • @rcollyer: The LGPL makes a much broader exception, which may or may not be what magma wants (although it may well be appropriate in this case, so you can use the package with your own code without making that GPLed as well).
    – celtschk
    Commented Jun 13, 2012 at 17:06
  • @celtschk absolutely. But, I figured he should be made aware of it. In code I've written, a lib I was using was GPL, and I had to clearly separate out what used it (even farther down the chain) to properly license it all. MS is right, the damned thing is infectious.
    – rcollyer
    Commented Jun 13, 2012 at 17:09
  • @celtschk and others. Thank you for bringing up this issue. I am really not an expert in this matter. I simply followed the example of xAct (a GPL tensor package), whose GUI component (xPrint) I developed. This is a well-known package and some of its developers currently work for WRI. So, if it's good for them...The Imtek package profiled above also uses a GPL licence. Quantum and Theorema just say that they are "free", so it seems different people use different licences.
    – magma
    Commented Jun 13, 2012 at 19:53
  • Perhaps you can mention the new installation option using File -> Install... in version 8.0.4. Select "Application" and "From file...". I always wondered about the guide/InstalledAddOns page in the documentation: under "Manage" it has an "UPDATE" button (along the "UNINSTALL" button). Do you know how the Update button can be enabled? If auto-update from a website is possible, it would be nice to enable it (especially since I noticed how you already updated from 0.50 to 0.51)
    – Szabolcs
    Commented Jun 14, 2012 at 10:39
  • 1
    I noticed that there are many cell groups in the documentation that are collapsed. The documentation browsers doesn't display cell brackets so it's a little difficult to expand them (I used the Ctrl-' shortcut).
    – Szabolcs
    Commented Jun 14, 2012 at 10:55
  • @Szabolcs this is a question that might be of general interest, so I will post a question and answer in the main. Please refer to: "Displaying cell groups in documentation pages" mathematica.stackexchange.com/q/6839/137 in the main
    – magma
    Commented Jun 15, 2012 at 1:29
  • @magma you reaaaally need examples and pictures (especially pictures) on that webpage. the lack of these things is a severe deficiency in terms of 'marketing'. just wanted to let you know :)
    – amr
    Commented May 9, 2013 at 21:44
  • @amr I know, I know :-) but thanks for stimulating me. I will work on it in June. I take this occasion to friendly encourage you and many other valuable members of this community to add some information in their profiles: experience, interests, hobbies, webpages,ect. It helps put some depth to a sometimes cryptic nickname.
    – magma
    Commented May 19, 2013 at 8:09
  • @magma Are you aware of community ads here? You could try designing an ad for your package and including it in the list. It will help (in a small way) to publicize your package. You could also try posting the same ad to math.se's ad thread, so that your package will be shown to a more relevant audience than here.
    – rm -rf Mod
    Commented Nov 24, 2013 at 7:04
  • @rm-rf Thank you. I did not think of that. I will look into it sometime next month
    – magma
    Commented Nov 24, 2013 at 9:28
6

David Park's Presentations http://home.comcast.net/~djmpark/DrawGraphicsPage.html. This is a well-documented, integrated bundle of packages for: (i) more easily constructing graphics than with the default paradigm of Mathematica; easily creating various kinds of presentations of explanations, steps in derivations, etc.; (3) functions for maintaining numbered lists of equations; (4) functions for maintaining and using references within a notebook; and (5) tools to facilitate several kinds of algebraic operations upon expressions.

What I use most often from Presentations are the 2D- and 3D-graphics functions, and especially those that allow dealing with geometric objects directly in terms of complex numbers (rather than as pairs of reals) and visualizing complex-valued functions of a complex variable (again, without having to explicitly break the complex numbers apart into real and imaginary parts).

6

The xAct suite hasn't been mentioned.

This is a mature suite of packages designed for manipulation of indicies -- tensor manipulation. It's modern, maintained, and has an active, responsive user community.

1
  • If you have time, can you add a more detailed description, e.g. mention what you are using it for?
    – Szabolcs
    Commented Jan 22, 2015 at 19:15
3

Theorema

A System for Computer Supported Mathematical Theorem Proving and Theory Exploration

Theorema was conceived and initiated around 1995 by Bruno Buchberger and reflects his view of "doing mathematics". It is being developed under his guidance by the Theorema Working Group at the Research Institute for Symbolic Computation, Johannes Kepler University, Linz – Hagenberg, Austria. Theorema 2.0 is a major re-launch mainly developed by Wolfgang Windsteiger.

It is released under GPL licence.

Theorema has been mentioned in a recent blog post by Stephen Wolfram.

Basically Theorema is a super advanced automatic theorem prover (ATM). One of the features that sets it apart from all the other advanced ATMs is the ability to describe the proof in a human language (English and German already available) following a natural deduction proof style. Different provers and proof strategies were available in the 1.x version and are being ported to the 2.0 version.

Another distinctive feature is the sophisticated GUI which guides you through the basic steps required to perform most common tasks available in Theorema and the specialized active stylesheet used by the package.

3

IGraphR -- Use igraph functions with ease from Mathematica

This package makes it easy to call igraph from within Mathematica. It uses igraph's R interface through RLink.

igraph is a popular graph/network manipulation/analysis library. Here's the list of functions that are available.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .