# Description of datasets (skhep.dataset)

Subpackage for the description of datasets.

## Module for dataset-related definitions

The module contains the definition of the `Dataset` abstract base class and a series of mixin classes.

class `skhep.dataset.defs.``Dataset`

  Abstract base class for all dataset classes.

  `data`

    The actual data underlying this dataset.

    Use this to pass the data to an external library (without provenance).

  `datashape`

    Every dataset has a datashape, which describes its data types in a unified way.

  `immutable`

    If True, this dataset cannot be modified in place, only transformed.

    Opposite of mutable.

  `mutable`

    If True, this dataset can be modified in place.

    Opposite of immutable.

  `persistent`

    If True, this dataset exists in a form that survives the Python session, such as a file or database.

    If mutable, changes in this dataset are reflected in that persistent form.

    Opposite of transient.

  `provenance`

    The series of transformations that produced this dataset as a tuple.

  `transient`

    If True, this dataset only exists in the Python session; changes will be lost if it is not saved.

    If mutable, changes in this dataset do not propagate back to its source, if any.

    Opposite of persistent.

## Module for NumpyDataset

The `NumpyDataset` class is the implementation of the `Dataset` abstract base class for the [NumPy] package.

Note: usage of course requires that NumPy is installed.

References

[NumPy] | http://www.numpy.org/.

## Module for ROOTDataset

The `ROOTDataset` class is the implementation of the `Dataset` abstract base class for the [ROOT] package.

Note: usage of course requires that ROOT is installed.

References

[ROOT] | https://root.cern.ch/.