NumFOCUS Affiliated Projects benefit from their association with NumFOCUS through access to community, certain funding opportunities, and promotion of the project through our network. NumFOCUS Affiliated Projects are scientifically oriented, open, and kind. (What does that mean?) Affiliated Projects are not fiscally sponsored by NumFOCUS.
Project Applications are accepted on a quarterly basis.
Application rounds will close on the following yearly dates:
January 15 (Round 1)
July 15 (Round 2)
October 15 (Round 3)
Notifications will be sent on or before:
February 29 (Round 1)
August 31 (Round 2)
November 30 (Round 3)
In an effort to include more community input and involvement in our work, NumFOCUS has formed a committee around the selection process for our Affiliated Projects. This committee will be responsible for evaluating applications from open source projects for Affiliated Project status with NumFOCUS and working with applicant projects throughout the review process.
Aesara is a Python library that allows one to define, optimize, and efficiently evaluate mathematical expressions involving multi-dimensional arrays.
The project includes an extensible graph framework suitable for rapid development of custom operators and symbolic optimizations. Additionally, it implements an extensible graph transpilation framework that currently provides compilation via C, JAX, and Numba.
AiiDA is a workflow manager for computational science with a strong focus on provenance, performance and extensibility.
When executing a workflow, AiiDA records the provenance − calculations performed, codes used and data generated − in a directed acyclic graph tailored to provide full reproducibility of any given result.
Asteroid is a Pytorch-based audio source separation toolkit that enables fast experimentation on common datasets. It comes with a source code that supports a large range of datasets and architectures, and a set of recipes to reproduce some important papers.
Bqplot is a 2-D plotting library for Jupyter. Built upon the Jupyter widgets frameworks, it implements the grammar of graphics constructs. Beyond plotting, bqplot is focused on using plots to take user inputs in a rich fashion, and using it in combination with other Jupyter interactive widgets to build applications.
CB-Geo MPM is an HPC-enabled Material Point Method solver for large-deformation modeling. It supports isoparametric elements to model complex geometries and creates photo-realistic rendering.
Catalyst is a PyTorch framework for Deep Learning Research and Development. It focuses on reproducibility, rapid experimentation, and codebase reuse so you can create something new rather than write yet another train loop.
Conda is an open source package management system and environment management system for installing multiple versions of software packages and their dependencies and switching easily between them.
It works on Linux, OS X and Windows, and was created for Python programs but can package and distribute any software.
CuPy’s interface is highly compatible with NumPy; in most cases it can be used as a drop-in replacement. All you need to do is just replace numpy with cupy in your Python code. It supports various methods, indexing, data types, broadcasting and more.
It lets you express your problem in a natural way that follows the math, rather than in the restrictive standard form required by solvers.
Cython is an optimising static compiler for both the Python programming language and the extended Cython programming language (based on Pyrex). It makes writing C extensions for Python as easy as Python itself.
The Data Retriever is a package manager for data. It downloads, cleans, and stores publicly available data, so that analysts spend less time cleaning and managing data, and more time analyzing it.
Devito is a Python package to implement optimized stencil computation (e.g., finite differences, image processing, machine learning) from high-level symbolic problem definitions.
Devito builds on SymPy and employs automated code generation and just-in-time compilation to execute optimized computational kernels on several computer platforms, including CPUs, GPUs, and clusters thereof.
It is inspired by NumPy, the Python array programming library at the core of the scientific Python stack, but tries to address a number of obstacles encountered by some of its users. Examples of this are support for variable-sized string, ragged array types, and convenient usage from C++. The library is in a preview development state, and can be thought of as a sandbox where features are being tried and tweaked to gain experience with them.
Effective Quadratures is an open-source library for uncertainty quantification, machine learning, optimisation, numerical integration and dimension reduction – all using orthogonal polynomials.
It is particularly useful for models / problems where output quantities of interest are smooth and continuous; to this extent it has found widespread applications in computational engineering models (finite elements, computational fluid dynamics, etc). It is built on the latest research within these areas and has both deterministic and randomized algorithms.
Flux is 100% pure-Julia stack and provides lightweight abstractions on top of Julia’s native GPU and AD support. It makes easy things easy while remaining fully hackable and fast.
Flux is written to be very generic, so that users can easily add in custom code to perform specific tasks, and interplay with machine learning models easily, be that custom types, custom numbers, arrays, recursion, control flow etc. We aim to support the full gamut of tools that the Julia language has to offer.
GeomScale is open-source project that lies at the intersection of data science, optimization, geometric and statistical computing. It combines cutting-edge research efforts and results with state-of-the-art open source software tools for scientific computing , with the ambition to solve both research oriented and real-life problems.
GeoPandas is an open source project to make working with geospatial data in Python easier, focusing on tabular vector data.
GeoPandas extends the pandas data analysis library to allow spatial operations on geometric types provided by Shapely (python interface to GEOS). In addition, it provides file access based on fiona (GDAL) and coordinate transformations based on pyproj (PROJ). GeoPandas enables you to easily do operations in python that would otherwise require a spatial database or desktop GIS application.
GNU Radio is a free & open-source software development toolkit that provides signal processing blocks to implement software radios.
It can be used with readily-available low-cost external RF hardware to create software-defined radios, or without hardware in a simulation-like environment. It is widely used in research, industry, academia, government, and hobbyist environments to support both wireless communications research and real-world radio systems.
Gonum is a set of numeric and scientific libraries written for the Go programming language. Our primary aim was to build functionality similar to that of numpy + scipy and today we are close to achieving this goal.
Manim is a community-maintained Python library for creating (mathematical) animations. With its simple, yet versatile interface, everyone is able to produce insightful visualizations.
For example, it allows linking mathematical formulas to colours and shapes, thus bringing them to life and making them easy to grasp. While the core focus is on animations in mathematics, physics and computer science, Manim has also been used to create animations in the context of biology, chemistry, and even music theory.
MFEM is a free, lightweight, scalable C++ library for finite element methods. Its goal is to enable high-performance scalable finite element discretization research and application development on a wide variety of platforms, ranging from laptops to supercomputers.
Numba gives you the power to speed up your applications with high performance functions written directly in Python.
With a few annotations, array-oriented and math-heavy Python code can be just-in-time compiled to native machine instructions, similar in performance to C, C++ and Fortran, without having to switch languages or Python interpreters.
ObsPy is an open-source project dedicated to provide a Python framework
for processing seismological data.
The goal of the ObsPy project is to facilitate rapid application
development for seismology.
It provides parsers for common file formats, clients to access data
centers and seismological signal processing routines which allow the
manipulation of seismological time series (see Beyreuther et al. 2010,
Megies et al. 2011, Krischer et al. 2015).
Project Optuna develops tools for optimizing deep learning and other tasks that use hyperparameters. Project Optuna is comprised of Optuna and Chainer.
Optuna is an open source hyperparameter optimization framework to automate hyperparameter search. Optuna provides eager search spaces for automated search for optimal hyperparameters using Python conditionals, loops, and syntax, state-of-the-art algorithms to efficiently search large spaces and prune unpromising trials for faster results, and easy parallelization for hyperparameter searches over multiple threads or processes without modifying code.
Chainer is a powerful, flexible, and intuitive deep learning framework, and other tools to automate machine learning in development as well, as part of its mission to simplify machine learning.
poliastro is an open source (MIT) collection of Python functions useful in Astrodynamics and Orbital Mechanics, focusing on interplanetary applications. It provides a simple and intuitive API and handles physical quantities with units.
pomegranate is a Python module for fast and flexible probabilistic modeling inspired by the design of scikit-learn.
A primary focus of pomegranate is to abstract away the intricacies of a model from its definition, allowing users to easily prototype with complex models and training strategies. Its modular implementation allows for probability distributions to be swapped in or out for each other with ease and for models to be stacked within each other, yielding such delights as a mixture of Bayesian networks or a Gaussian mixture model Bayes classifier.
The Policy Simulation Library (PSL) is a collection of models and other software for public-policy decisionmaking. PSL is developed by independent projects that meet standards for transparency and accessibility.
The PSL community encourages collaborative contribution and makes the tools it develops accessible to a diverse group of users.
It provides many commonly used linear operators (e.g. convolution, wavelet transform, etc.) as matrix-free objects, and leverages them within iterative algorithms to solve ill-conditioned problems. Its high-level, expressive interface resembles the underlying mathematical formulation. Finally, it supports fully interchangeable CPU and GPU backends that are compatible with other native Python libraries such as NumPy and CuPy.
pyiron is an integrated development environment (IDE) for computational materials science. It enables scientists to upscale their workflows from rapid prototyping to high-performance computing.
PySAL is an open source cross-platform library for geospatial data science with an emphasis on vector data written in Python. It supports the development of high level applications for spatial analysis.
pysat implements the general process of space science data analysis, from beginning to end, in an instrument-independent manner.
This toolkit uses an Instrument object that enables systematic but versatile analysis of science data from a variety of platforms within a single easy-to-use interface, abstracting away all of the tedious file, data handling, and processing issues. Basic functions such as downloading, loading, and cleaning are included for all supported instruments/data sets. While incubated in a space science environment, pysat is capable of processing the world’s data.
QuTiP is a software for simulating quantum systems. QuTiP aims to provide tools for user-friendly and efficient numerical simulations of open quantum systems.
It can be used to simulate a wide range of physical phenomenon in areas such as quantum optics, trapped ions, superconducting circuits and quantum nanomechanical resonators. In addition, it contains a number of other modules to simplify the numerical simulation and study of many topics in quantum physics such as quantum optimal control, quantum information, and computing.
Radis is an open-source library to compute molecular spectra. It is used for in-the-lab emission and absorption spectroscopy diagnostics, and exoplanet research.
Radis is specifically designed to resolve millions of lines within seconds, and is compatible with the main spectroscopic databases (HITRAN, HITEMP, ExoMol). It also has some radiative-transfer capabilities, and non-LTE calculations.
The signac framework is a complete solution for managing workflows operating on file-based data designed to scale to HPC systems.
By using a well-defined, indexable storage layout for data and metadata, signac streamlines generation of, access to, and analysis of data through a straightforward interface that naturally scales from laptops and workstations to leadership-class supercomputers. Additionally, operations on this data can be managed, parallelized, and easily submitted on supercomputing clusters.
The project has been published in the Journal of Computational Materials Science (DOI:10.1016/j.commatsci.2018.
sktime is a library for time series analysis in Python. It provides a unified interface for multiple time series learning tasks. Currently, this includes time series classification, regression, clustering, annotation and forecasting.
It comes with time series algorithms and scikit-learn compatible tools to build, tune and validate time series models.
SkyPy is an open-source Python package for simulating the astrophysical sky. It comprises a library of physical and empirical models across a range of observables and a command-line script to run end-to-end simulations.
The library provides functions to sample realisations of sources and their associated properties from probability distributions. Simulation pipelines are constructed from these models using a YAML-based configuration syntax, while task scheduling and data dependencies are handled internally and the modular design allows users to interface with external software. SkyPy is developed and maintained by a diverse community of domain experts with a focus on software sustainability and interoperability. By fostering co-development, it provides a framework for correlated simulations of a range of cosmological probes including galaxy populations, large-scale structure, the cosmic microwave background, supernovae and gravitational waves.
Spack is a flexible package manager that builds multiple versions of packages for different configurations, platforms, and compilers. It was created to deploy large-scale scientific simulations on HPC systems, but it can deploy software on Linux and macOS machines, as well.
Statsmodels is a Python package that provides a complement to Scipy for statistical computations including descriptive statistics and estimation of statistical models.
It features a unique combination of the advanced editing, analysis, debugging, and profiling functionality of a comprehensive development tool with the data exploration, interactive execution, deep inspection, and beautiful visualization capabilities of a scientific package. Furthermore, Spyder offers built-in integration with many popular scientific packages, including NumPy, SciPy, Pandas, IPython, QtConsole, Matplotlib, SymPy and more.
TNL is an efficient C++ library providing many parallel algorithms and data structures for high-performance computing on GPUs, multicore CPUs and distributed clusters.
The goal is to create a unified interface that allows users to write single code that can be executed on different parallel architectures.
Yellowbrick is a Python package that visualizes the data science workflow, allowing users to visually steer the feature, algorithm, and hyperparameter selection process by directly extending the Scikit-Learn API.