# base_dataset

Python API: `luxonis_ml.data.datasets.base_dataset`

## Classes

### BaseDataset

Base class for datasets in the Luxonis MLOps ecosystem.

#### Methods

##### add

```python
def add(generator: DatasetIterator, batch_size: int = 1000000):
```

Write annotations to parquet files.

Parameters

 * `generator` (`DatasetIterator`): Iterator yielding `DatasetRecord` instances or dictionaries that can be converted to
   `DatasetRecord`.
 * `batch_size` (`int`): Number of records to buffer before processing. Lower values reduce peak memory usage.

##### delete_dataset

```python
def delete_dataset(self):
```

Delete local files belonging to the dataset.

##### exists

```python
def exists(dataset_name: str) -> bool:
```

Check whether a dataset exists.

Parameters

 * `dataset_name` (`str`): Dataset name to check.

Returns

 * `bool`: `True` if the dataset exists, `False` otherwise.

##### get_class_names

```python
def get_class_names(self) -> dict[str, list[str]]:
```

Return class names per task.

Returns

 * `Class names keyed by task name`:```python
   {
       "vehicles": ["red", "green", "blue"],
       "brands": ["audi", "bmw", "mercedes"],
   }
   ```

##### get_classes

```python
def get_classes(self) -> dict[str, dict[str, int]]:
```

Get class names and IDs per task.

Returns

 * `Mapping from class names to class IDs grouped by task name`:```python
   {
       "color": {"red": 0, "green": 1, "blue": 2},
       "brand": {"audi": 0, "bmw": 1, "mercedes": 2},
   }
   ```

##### get_n_classes

```python
def get_n_classes(self) -> dict[str, int]:
```

Return number of classes per task.

Returns

 * `dict[str, int]`: Mapping from task names to class counts.

##### get_n_keypoints

```python
def get_n_keypoints(self) -> dict[str, int]:
```

Return the number of keypoints for each task.

Returns

 * `dict[str, int]`: Number of keypoints keyed by task name.

##### get_skeletons

```python
def get_skeletons(self) -> dict[str, tuple[list[str], list[tuple[int, int]]]]:
```

Return keypoint skeletons for each task.

Returns

 * `dict[str, tuple[list[str], list[tuple[int, int]]]]`: Keypoint labels and edges keyed by task name.

##### get_source_names

```python
def get_source_names(self) -> list[str]:
```

Return input source names for the dataset.

Returns

 * `list[str]`: Source names used to identify input data.

##### get_task_names

```python
def get_task_names(self) -> list[str]:
```

Return task names for the dataset.

This is equivalent to
[get_tasks](https://docs.luxonis.com/software-v3/ai-inference/model-source/training/luxonis-ml/luxonis-ml-api-reference/data/datasets/base_dataset.md)
but returns only the task names.

Returns

 * `list[str]`: Task names.

##### get_tasks

```python
def get_tasks(self) -> dict[str, list[str]]:
```

Return task names and task types.

Returns

 * `dict[str, list[str]]`: Task types keyed by task name.

##### make_splits

```python
def make_splits(splits: dict[str, Sequence[PathType]] | dict[str, float] | tuple[float, float, float] | None = None, *, ratios: dict[str, float] | tuple[float, float, float] | None = None, definitions: dict[str, list[PathType]] | None = None, replace_old_splits: bool = False):
```

Generate dataset splits.

Parameters

 * `splits` (`dict[str, Sequence[PathType]] | dict[str, float] | tuple[float, float, float] | None`): Split definitions or ratios.
   Accepts explicit filepath lists, split ratios keyed by split name, or a `(train, val, test)` ratio tuple.
 * `ratios` (`dict[str, float] | tuple[float, float, float] | None`): Optional deprecated split ratios. Use `splits` instead.
 * `definitions` (`dict[str, list[PathType]] | None`): Optional deprecated filepath split definitions. Use `splits` instead.
 * `replace_old_splits` (`bool`): Whether to replace existing split assignments instead of adding only new files.

##### set_classes

```python
def set_classes(classes: list[str] | dict[str, int], task: str | None = None):
```

Set classes for one or more tasks.

Parameters

 * `classes` (`list[str] | dict[str, int]`): Class names, or class IDs keyed by class name. If class names are provided, IDs are
   assigned alphabetically starting from 0. A class named `"background"` is always assigned ID 0.
 * `task` (`str | None`): Optional task to update. If omitted, all tasks are updated.

##### set_skeletons

```python
def set_skeletons(labels: list[str] | None = None, edges: list[tuple[int, int]] | None = None, task: str | None = None):
```

Set keypoint skeleton semantics for tasks that use keypoints.

For example:

```python
dataset.set_skeletons(
    labels=["right hand", "right shoulder", ...],
    edges=[[0, 1], [4, 5], ...]
)
```

Parameters

 * `labels` (`list[str] | None`): Optional keypoint names.
 * `edges` (`list[tuple[int, int]] | None`): Optional edges between keypoints.
 * `task` (`str | None`): Optional task to update. If omitted, all keypoint tasks are updated.

Raises

 * `ValueError`: If neither `labels` nor `edges` are provided.

##### set_tasks

```python
def set_tasks(tasks: dict[str, list[str]]):
```

Set dataset tasks.

Parameters

 * `tasks` (`dict[str, list[str]]`): Mapping from task names to task types.

##### update_source

```python
def update_source(source: LuxonisSource):
```

Update the dataset source definition.

Parameters

 * `source` (`LuxonisSource`): Source definition to store.

#### Attributes

##### identifier

The unique identifier for the dataset.

##### version

The version of the underlying LDF.

## Attributes

### DatasetIterator

### DATASETS_REGISTRY
