Should I switch over completely to Julia from Python for numerical analysis/computing?

This page summarizes the projects mentioned and recommended in the original post on /r/Julia

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • casadi

    CasADi is a symbolic framework for numeric optimization implementing automatic differentiation in forward and reverse modes on sparse matrix-valued computational graphs. It supports self-contained C-code generation and interfaces state-of-the-art codes such as SUNDIALS, IPOPT etc. It can be used from C++, Python or Matlab/Octave.

  • Python is not mature in this area. If you ask Google what Simulink for Python is, you get responses that point to dead libraries that were never feature complete and slow. The absolute closest is CASADI which is nice for some things but doesn't even have a true causal modeling interface and is mostly abandoned by the developers (they put a patch in every now and then, but just look at the commit graph), and it's slow compared to the Julia tools, so much so that PyBAMM is interfacing with ModelingToolkit.jl in Julia for a performance boost. Python is not the place to be for causal/acausal modeling or controls. Anyone who is saying "Python is mature" here is saying it in the abstract and not in the context of your actual question. Yes, Python has web development frameworks. No it does not have good libraries for tons of areas (control, acausal modeling, pharmacometrics, etc.).

  • ModelingToolkit.jl

    An acausal modeling framework for automatically parallelized scientific machine learning (SciML) in Julia. A computer algebra system for integrated symbolics for physics-informed machine learning and automated transformations of differential equations

  • There's a very clear momentum for Julia here in this domain of modeling and simulation. With JuliaSim funding an entire modeling and simulation department within Julia Computing dedicated to building out an ecosystem that accelerates this domain and the centralization around the SciML tooling, this is an area where we absolutely have both a manpower and momentum advantage. We're getting many universities (PhD students and professors) involved on the open source side, while building out different commercial tools and GUIs on top of the open numerical core. The modeling and simulation domain itself is soon going to have its own SciMLCon since our developer community has gotten too large to just be a few JuliaCon talks: it needs its own days to fit everyone! Not only that, in many aspects we're not just moving faster but have already passed. Not in every way, there's still some important discussion in controls that needs to happen, but that's what the momentum is for.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • Causal.jl

    Causal.jl - A modeling and simulation framework adopting causal modeling approach.

  • ModelingToolkit is not equivalent to Simulink. Simulink is a causal modeling framework with a code-based underpinning. The closest to Simulnik would actually be Causal.jl, which is a really nice package in its own right, quite fast, and has a really expansive feature-set. For causal modeling in the form of Simulink, it is definitely a cool package to look into.

  • MomentClosure.jl

    Tools to generate and study moment equations for any chemical reaction network using various moment closure approximations

  • ModelingToolkit.jl adds a different spin on this by noting what makes a good modeling system isn't top down but a system that allows for bottom up contributions. ModelingToolkit is built on Symbolics.jl which uses OSCAR.jl etc., so every time the symbolics community gets better ModelingToolkit.jl gets better. It connects to the whole SciML ecosystem, so any improvement to any of the SciML interface packages is directly an improvement to ModelingToolkit.jl. ModelingToolkit is made to be a set of composable compiler abstractions called transformations, so anyone can add new packages that do new transformations that improve the ecosystem. One that I really like is MomentClosure.jl which symbolically transforms stochastic ModelingToolkit models (ReactionSystem) to approximate symbolic ODESystem models of the moments. And there's domain-specific langauges like Catalyst.jl being built on the interface to give more ways to build models, which is spawning the biocommunity to make model importers into the symbolic forms, when then feeds more ODE models into the same compiler. JuliaSim is then building on this ecosystem, adding cloud infrastructure that is special-purpose made for doing parallel computations of these models, automatic symbolic model discovery from data, automatic generation of approximate models with machine learning, and tying the Julia Computing compiler team into the web that is building this ecosystem.

  • Catalyst.jl

    Chemical reaction network and systems biology interface for scientific machine learning (SciML). High performance, GPU-parallelized, and O(1) solvers in open source software.

  • ModelingToolkit.jl adds a different spin on this by noting what makes a good modeling system isn't top down but a system that allows for bottom up contributions. ModelingToolkit is built on Symbolics.jl which uses OSCAR.jl etc., so every time the symbolics community gets better ModelingToolkit.jl gets better. It connects to the whole SciML ecosystem, so any improvement to any of the SciML interface packages is directly an improvement to ModelingToolkit.jl. ModelingToolkit is made to be a set of composable compiler abstractions called transformations, so anyone can add new packages that do new transformations that improve the ecosystem. One that I really like is MomentClosure.jl which symbolically transforms stochastic ModelingToolkit models (ReactionSystem) to approximate symbolic ODESystem models of the moments. And there's domain-specific langauges like Catalyst.jl being built on the interface to give more ways to build models, which is spawning the biocommunity to make model importers into the symbolic forms, when then feeds more ODE models into the same compiler. JuliaSim is then building on this ecosystem, adding cloud infrastructure that is special-purpose made for doing parallel computations of these models, automatic symbolic model discovery from data, automatic generation of approximate models with machine learning, and tying the Julia Computing compiler team into the web that is building this ecosystem.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts