Quick start#

import xbitinfo as xb

import xarray as xr

xr.set_options(display_style="text")
ds = xr.tutorial.load_dataset("eraint_uvz")

# xb.plot_distribution(ds)
ds

Get information content per bit#

using xbitinfo.xbitinfo.get_bitinformation()

info_per_bit = xb.get_bitinformation(ds, dim="longitude")

info_per_bit

Visualize information content#

using xbitinfo.graphics.plot_bitinformation()

fig = xb.plot_bitinformation(info_per_bit)

Get keepbits#

using xbitinfo.xbitinfo.get_keepbits()

keepbits = xb.get_keepbits(info_per_bit, 0.99)
keepbits

Apply bitrounding#

using xbitinfo.bitround.xr_bitround() or xbitinfo.bitround.jl_bitround() (does not work for chunked data)

ds_bitrounded = xb.xr_bitround(ds, keepbits)

Save compressed#

using xbitinfo.save_compressed.ToCompressed_Netcdf or xbitinfo.save_compressed.ToCompressed_Zarr

NetCDF#

ds_bitrounded.to_compressed_netcdf("bitrounded_compressed.nc")
ds.to_compressed_netcdf("compressed.nc")
ds.to_netcdf("original.nc")
!du -hs *.nc
!rm *.nc

Zarr#

ds_bitrounded.to_compressed_zarr("bitrounded_compressed.zarr", mode="w")
ds.to_compressed_zarr("compressed.zarr", mode="w")
ds.to_zarr("original.zarr", mode="w");
!du -hs *.zarr
!rm -r *.zarr