PageSourceSearch

https://stephanhoyer.com/software/

html stephanhoyer.com collected 2026-09-24 10:24:11 UTC 10,770 bytes, 5 lines download raw bytes

1<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title> Software | Stephan Hoyer </title> <meta name="author" content="Stephan Hoyer"> <meta name="description" content="Research scientist and software engineer working at the intersection of AI, physics and scientific computing. "> <meta name="keywords" content="stephan hoyer, ai for science, machine learning, climate, weather, neuralgcm, xarray, jax, scientific computing"> <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' https:; style-src 'self' 'unsafe-inline' https:; img-src 'self' data: https:; font-src 'self' data: https:; media-src 'self' https:; frame-src 'self' https:; connect-src 'self' https:;"> <link rel="stylesheet" href="/assets/css/bootstrap.min.css?v=a4b3f509e79c54a512b890d73235ef04"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/css/mdb.min.css" integrity="sha256-jpjYvU3G3N6nrrBwXJoVEYI/0zw8htfFnhT9ljN3JJw=" crossorigin="anonymous"> <link defer rel="stylesheet" href="/assets/css/academicons.min.css?v=f0b7046b84e425c55f3463ac249818f5"> <link defer rel="stylesheet" href="/assets/css/scholar-icons.css?v=62b2ac103a88034e6882a5be5f3e2772"> <link defer rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Roboto+Slab:100,300,400,500,700|Material+Icons&amp;display=swap"> <link defer rel="stylesheet" href="/assets/css/jekyll-pygments-themes-github.css?v=591dab5a4e56573bf4ef7fd332894c99" media="" id="highlight_theme_light"> <link rel="shortcut icon" href="/assets/img/favicon.ico?v=cbfd26059007deafc005969ca98ab88f"> <link rel="stylesheet" href="/assets/css/main.css?v=d41d8cd98f00b204e9800998ecf8427e"> <link rel="canonical" href="https://stephanhoyer.com/software/"> 
1<script src="/assets/js/theme.js?v=b873346c6718b22f2aa1287c685d7bb4"></script>
1 <link defer rel="stylesheet" href="/assets/css/jekyll-pygments-themes-native.css?v=5847e5ed4a4568527aa6cfab446049ca" media="none" id="highlight_theme_dark"> 
1<script>
2    initTheme();
3  </script>
3 </head> <body class="fixed-top-nav "> <header> <nav id="navbar" class="navbar navbar-light navbar-expand-sm fixed-top" role="navigation"> <div class="container"> <a class="navbar-brand title font-weight-lighter" href="/"> <span class="font-weight-bold">Stephan</span> Hoyer </a> <button class="navbar-toggler collapsed ml-auto" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar top-bar"></span> <span class="icon-bar middle-bar"></span> <span class="icon-bar bottom-bar"></span> </button> <div class="collapse navbar-collapse text-right" id="navbarNav"> <ul class="navbar-nav ml-auto flex-nowrap"> <li class="nav-item "> <a class="nav-link" href="/">About </a> </li> <li class="nav-item "> <a class="nav-link" href="/research/">Research </a> </li> <li class="nav-item active"> <a class="nav-link" href="/software/">Software <span class="sr-only">(current)</span> </a> </li> <li class="nav-item "> <a class="nav-link" href="/talks/">Talks </a> </li> </ul> </div> </div> </nav> </header> <div class="container mt-5" role="main"> <div class="post"> <header class="post-header"> <h1 class="post-title">Software</h1> <p class="post-description"></p> </header> <article> <p>I am a core contributor and maintainer of several widely used tools for scientific computing in Python. See <a href="https://github.com/shoyer" rel="external nofollow noopener" target="_blank">my GitHub profile</a> for the full list.</p> <p>This page covers the general-purpose libraries. Many of my research projects also have their own open source releases — including <a href="https://github.com/neuralgcm/neuralgcm" rel="external nofollow noopener" target="_blank">NeuralGCM</a>, <a href="https://github.com/google/jax-cfd" rel="external nofollow noopener" target="_blank">JAX-CFD</a>, <a href="https://github.com/neuralgcm/dinosaur" rel="external nofollow noopener" target="_blank">Dinosaur</a> and others. See <a href="/research/">Research</a> for the full picture.</p> <h2 id="xarray">Xarray</h2> <p><img src="/assets/img/xarray-logo.svg" alt="Xarray logo" style="float: right; width: 300px; margin: 0 0 1rem 1.5rem;"></p> <p><a href="https://xarray.dev" rel="external nofollow noopener" target="_blank">Xarray</a> is a library for multi-dimensional labeled data in Python that has been widely adopted across weather and climate, geospatial analysis, plasma physics, genomics, and finance. The project is downloaded <a href="https://pypistats.org/packages/xarray" rel="external nofollow noopener" target="_blank"><strong>~5m times per week</strong></a>, with <strong>4,000+ stars</strong> and <strong>500+ contributors</strong> on GitHub.</p> <p>I created Xarray in 2014 while at The Climate Corporation and continue to lead the project, working with a team of 21 volunteer and grant-funded developers. Xarray has received over $500,000 in grant funding from the NSF, NASA, Nvidia and the <a href="https://chanzuckerberg.com/eoss/proposals/xarray-multidimensional-labeled-arrays-and-datasets-in-python/" rel="external nofollow noopener" target="_blank">Chan-Zuckerberg Initiative</a>.</p> <h2 id="xarray-beam">Xarray-Beam</h2> <p>I am a primary author of <a href="https://github.com/google/xarray-beam" rel="external nofollow noopener" target="_blank">Xarray-Beam</a>, which implements reliable large-scale data pipelines on Xarray data using the map-reduce paradigm (via Apache Beam). Six weather research teams at Google use it to process petabytes of data.</p> <h2 id="coordax">Coordax</h2> <p>With Dmitrii Kochkov, I built <a href="https://github.com/neuralgcm/coordax" rel="external nofollow noopener" target="_blank">Coordax</a> — labeled axes for JAX, in the spirit of Xarray but tailored to physics- and AI-based simulation codes like NeuralGCM. Coordax supports arbitrary JAX transformations, lossless conversion to and from Xarray, and easy wrapping of code not written for labeled arrays.</p> <h2 id="numpy">NumPy</h2> <p>I served on the <a href="https://numpy.org" rel="external nofollow noopener" target="_blank">NumPy</a> steering council from 2015 to 2024 and authored six <a href="https://numpy.org/neps/" rel="external nofollow noopener" target="_blank">NumPy Enhancement Proposals</a>, focused on interoperability between NumPy and other array libraries. Contributions include widely used functionality such as <code class="language-plaintext highlighter-rouge">broadcast_to</code>, <code class="language-plaintext highlighter-rouge">stack</code>, <code class="language-plaintext highlighter-rouge">moveaxis</code> and <code class="language-plaintext highlighter-rouge">__array_function__</code>.</p> <h2 id="jax">JAX</h2> <p>I have contributed <a href="https://github.com/jax-ml/jax/pulls?q=is%3Apr+author%3Ashoyer" rel="external nofollow noopener" target="_blank">100+ pull requests</a> to <a href="https://github.com/jax-ml/jax" rel="external nofollow noopener" target="_blank">JAX</a>, focused on matrix-free linear algebra and scientific computing — including much of <code class="language-plaintext highlighter-rouge">jax.scipy</code>.</p> <h2 id="other-projects">Other projects</h2> <ul> <li> <a href="https://github.com/h5netcdf/h5netcdf" rel="external nofollow noopener" target="_blank">h5netcdf</a> — an alternative implementation of the netCDF4 file format in Python.</li> <li> <a href="https://github.com/numbagg/numbagg" rel="external nofollow noopener" target="_blank">numbagg</a> — fast N-dimensional aggregation functions built with Numba and NumPy ufuncs.</li> <li> <a href="https://github.com/shoyer/cyordereddict" rel="external nofollow noopener" target="_blank">cyordereddict</a> — a Cython port of the Python standard library’s <code class="language-plaintext highlighter-rouge">OrderedDict</code>, 2–6× faster.</li> </ul> <p>In the past I was also a core developer for <a href="https://github.com/dask/dask" rel="external nofollow noopener" target="_blank">Dask</a> and <a href="https://github.com/pandas-dev/pandas" rel="external nofollow noopener" target="_blank">Pandas</a>.</p> </article> </div> </div> 
3<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
3 
3<script src="/assets/js/bootstrap.bundle.min.js"></script>
3 
3<script src="https://cdn.jsdelivr.net/npm/[email protected]/js/mdb.min.js" integrity="sha256-NdbiivsvWt7VYCt6hYNT3h/th9vSTL4EDWeGs5SN3DA=" crossorigin="anonymous"></script>
3 
3<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/masonry.pkgd.min.js" integrity="sha256-Nn1q/fx0H7SNLZMQ5Hw5JLaTRZp0yILA/FRexe19VdI=" crossorigin="anonymous"></script>
3 
3<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/imagesloaded.pkgd.min.js" integrity="sha256-htrLFfZJ6v5udOG+3kNLINIKh2gvoKqwEhHYfTTMICc=" crossorigin="anonymous"></script>
3 
3<script defer src="/assets/js/masonry.js?v=a0db7e5d5c70cc3252b3138b0c91dcaf" type="text/javascript"></script>
3 
3<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/medium-zoom.min.js" integrity="sha256-ZgMyDAIYDYGxbcpJcfUnYwNevG/xi9OHKaR/8GK+jWc=" crossorigin="anonymous"></script>
3 
3<script defer src="/assets/js/zoom.js?v=85ddb88934d28b74e78031fd54cf8308"></script>
3 
3<script src="/assets/js/no_defer.js?v=2781658a0a2b13ed609542042a859126"></script>
3 
3<script defer src="/assets/js/common.js?v=c15de51d4bb57887caa2c21988d97279"></script>
3 
3<script defer src="/assets/js/copy_code.js?v=c8a01c11a92744d44b093fc3bda915df" type="text/javascript"></script>
3 
3<script defer src="/assets/js/jupyter_new_tab.js?v=d9f17b6adc2311cbabd747f4538bb15f"></script>
3 
3<script async src="https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js"></script>
3 
3<script async src="https://badge.dimensions.ai/badge.js"></script>
3 
3<script defer type="text/javascript" id="MathJax-script" src="https://cdn.jsdelivr.net/npm/[email protected]/es5/tex-mml-chtml.js" integrity="sha256-MASABpB4tYktI2Oitl4t+78w/lyA+D7b/s9GEP0JOGI=" crossorigin="anonymous"></script>
3 
3<script src="/assets/js/mathjax-setup.js?v=a5bb4e6a542c546dd929b24b8b236dfd"></script>
3 
3<script defer src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=es6" crossorigin="anonymous"></script>
3 
3<script src="/assets/js/vanilla-back-to-top.min.js?v=f40d453793ff4f64e238e420181a1d17"></script>
3 
3<script>
4    addBackToTop();
5  </script>
5 </body> </html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.