Is e.g. SciPy better than Julia's packageS and how do good packages map to Julia's?

@gideonsimpson to nip this in the bud, you can use ALL Python packages from Julia, e.g. with PythonCall.jl

as you note, Python now has NumPy/SciPy. So all that core functionality that comes to mind when you think of MATLAB (arrays, integration, root finding, interpolation, etc.) is located inside of SciPy. More challenging things, like ML, which lack some of the unified theory of older numerical algorithms, are still being worked out. My gripe is that Julia doesn’t, yet, have the full complement to SciPy as part of, if not an official set of packages

NumPy is basically in Julia as standard, but SciPy is often brought up. There is SciPy.jl:

a Julia interface for SciPy using PyCall.jl.

You can use many useful scientific functions of SciPy from Julia codes.

Note, “many” functions not all. But you CAN still use all the functions. It’s just that the wrapper, providing Julian API, doesn’t provide all. You can always use the Python API directly, bypassing package-specific wrappers. [E.g. at the time I used PyCall for some interpolation that wasn’t yet available, I think it’s now, or would use PythonCall. Not sure if it or SciPy.jl, which I then didn’t know of, supports translating indexes, @cjdoris maybe it should? As with OffsetArrays?]


There are 3 popular ways of doing automatic differentiation for machine learning in Python – TensorFlow, PyTorch, and JAX. (Theano has been abandoned).

Right, and again all of them can be used directly, through the Python API (also lower-level APIs e.g. for PyTorch, already done in Julia). I would still like to know the one-to-many mapping of each one to similar Julia package[s].

Of course, most of the Julia community are academics or in ML. So let’s say Julia users are 7 or so times more likely to work on autodiff-related projects. So if Julia were equally fragmented, we’d expect to have 3*7/21 = 1 major framework for automatic differentiation. Instead, we have at least 10 that I found without much work:

  • Enzyme
  • ReverseDiff
  • Diffractor
  • Nabla
  • Zygote
  • Autograd
  • Yota
  • ReversePropagation
  • ForwardDiff
  • Tracker

I don’t know if that’s really a problem. I just don’t know this space well enough. I suppose some Python packages map to one or more of those, and some might be dead? It’s just a matter of knowing which one or few to use? Can we help each other by setting up a mapping at Introducing Julia - Wikibooks, open books for an open world for some “must-have” Python/R/etc. packages at some subpage there? Maybe there or add subpage: