.. _UsingAPI:

Using the Python API
--------------------

Writing compressed files
........................

Using enstools's **read** and **write** compressing a file could be done by:

.. code::

    from enstools.io import read,write

    with read("input.nc") as dataset:
        write(dataset,"output.nc", compression=lossless)

We added a method that does just thad adding few more features: :meth:`enstools.compression.api.compress`




Finding compression parameters
..............................


:meth:`enstools.compression.api.analyze_files`
:meth:`enstools.compression.api.analyze_dataset`

To analyze a dataset:
.. code::

    from enstools.io import read
    from enstools.compression.api import analyze_dataset

    with read("input.nc") as dataset:
        results = analyze_dataset(dataset)

To analyze a file:

.. code::

    from enstools.compression.api import analyze_files

    results = analyze_files("input.nc")

Emulator
........

.. code::

    from enstools.io import read
    from enstools.encoding.api import emulate_compression_on_dataset


    results = analyze_files("input.nc")
    with read("input.nc") as dataset:
        compressed_dataset = emulate_compression_on_dataset(dataset, compression="lossy,sz,pw_rel,1e-5", inplace=False)

        diff = compressed_dataset - dataset



xarray accessor
...............

.. code::

    from enstools.io import read
    import enstools.compression.xr_accessor

    with read("input.nc") as dataset:
        results = dataset.compression.analyze()