Binary data without lazy loading (original) (raw)

Binary data without lazy loading#

Author: Aureliana Barghini (B-Open)

BackendEntrypoint#

Implement a subclass of BackendEntrypoint that expose a method open_dataset:

from xarray.backends import BackendEntrypoint

class MyBackendEntrypoint(BackendEntrypoint): def open_dataset( self, filename_or_obj, *, drop_variables=None, ):

    return my_open_dataset(filename_or_obj, drop_variables=drop_variables)

BackendEntrypoint integration#

Declare this class as an external plugin in your setup.py:

setuptools.setup( entry_points={ 'xarray.backends': ['engine_name=package.module:my_backendentrypoint'], }, )

or pass it in xr.open_dataset:

xr.open_dataset(filename, engine=MyBackendEntrypoint)

Example backend for binary files#

Create sample files#

Define the entrypoint#

Example of backend to open binary files

It Works#

But it may be memory demanding

<xarray.DataArray 'foo' (x: 30000000)> Size: 240MB [30000000 values with dtype=int64] Coordinates:

<xarray.DataArray 'foo' (x: 30000000)> Size: 240MB [30000000 values with dtype=float64] Coordinates:

<xarray.DataArray 'foo' (x: 11)> Size: 88B [11 values with dtype=float64] Coordinates: