Speaker
Description
ndcube is a package for facilitating generalised coordinate-aware n-dimensional astronomical data analysis. It does this by combining data, metadata, and coordinate information into unified data objects which can be used as coordinate-aware arrays. Its biggest point of difference with its most similar package, xarray, is its support of the World Coordinate System (WCS) framework. WCS is used throughout astronomy and can describe the coordinate frames of images, timeseries, spectra, polarisation measurements, simulation grids, custom coordinates and more, as well as any arbitrary combination of these.
Despite WCS's ubiquity, there was no mature Python framework for performing generalised WCS-aware data analysis before ndcube. Astropy NDData was an essential base upon which ndcube is built, but it provided limited generalised analysis tools. In this vacuum, observation- and coordinate-frame-specific data classes emerged (e.g. sunpy Map for 2-D solar images), each with their own API unable to be applied to other types of observations. This had the effect of silo-ing different subfields of astronomy into their own cliques, each with their own tools for performing the same analysis tasks. This increased friction for those who wanted to engage in multi-instrument studies or cross-field collaborations, as entirely distinct analysis workflows would have to be learned and merged. Moreover, it increased the development and maintenance burden for other packages as a zoo of similar but slightly different data containers had to be developed for each task.
In this talk, we will discuss how ndcube overcame these challenges and now provides a generalised framework for analysing any WCS-based data. This has led it to be adopted as a dependency by numerous Python packages, including IRISpy (NASA SMEX), XRTpy and EISpac (Hinode), DKIST user tools, specutils (JWST and beyond), the PUNCH data pipeline (NASA SMEX), and more. This has substantially reduced their development and maintenance overheads. We will further discuss the functionalities provided by ndcube and why it might be helpful to a still broader community. Finally, we will discuss lessons learned from the development of ndcube, and some of the principles that promote interoperability and broader usability of packages across astronomy and heliophysics.