ArviZ is a multi-language project providing implementations of diagnostics, statistics, and plots for common statistical workflows in probabilistic programming languages (PPLs), with packages in Python and Julia (ArviZ.jl). Support for multiple PPLs is mediated through converters from PPL inference outputs to a single data storage type, InferenceData, with a well-defined schema. In Python, InferenceData is built on xarray to provide named dimensions and coordinates for multidimensional variables and can be serialized to netCDF files. PyMC uses InferenceData as a native storage type for inference results.
In the past, ArviZ.jl simply wrapped Python’s InferenceData implementation. This worked quite well, but using an underlying Python object misses opportunities to integrate well with other packages in the Julia ecosystem.
We implemented the InferenceData schema in Julia built on DimensionalData.jl, which provides named dimension and coordinate functionality. The result, InferenceObjects.jl, now serves as the official InferenceData implementation for ArviZ.jl. We also wrote the companion packages InferenceObjectsNetCDF.jl for netCDF serialization and ArviZExampleData.jl for loading example InferenceData objects for demonstration or testing.
Check out the ArviZ.jl documentation for examples of creating custom plots with the new InferenceData implementation.