# Splitting

## timenet\_connectors.splitting

Generate dataset partitions during connector conversion.

### DatasetSplits

Bases: `Mapping[Split, tuple[T, ...]]`

Named partitions, accessed with `splits[Split.TRAIN]`.

Iteration yields partition names, not samples. An absent partition raises
`KeyError`; a configured but empty partition contains an empty tuple.
Samples retain their original identity and order within each partition.

#### counts `property`

```
counts: Mapping[Split, int]
```

Actual sample counts, including configured partitions with no samples.

### Splitter

Bases: `ABC`, `Generic[T]`

Assign samples to partitions without modifying the samples themselves.

#### split `abstractmethod`

```
split(samples: Sequence[T]) -> DatasetSplits[T]
```

Partition source samples for a connector to turn into split-tagged tasks.

Returns:

| Type | Description |
| --- | --- |
| `DatasetSplits[T]` | Named partitions containing every input occurrence exactly once. |

### StratifiedSplitter

Bases: `Splitter[T]`

Balance category counts while assigning whole groups to partitions.

`stratify_by` returns one category per sample; `group_by` identifies
samples that must stay together (for example, questions about one signal).
Without `group_by`, StratifiedKFold assigns independent input occurrences;
otherwise StratifiedGroupKFold keeps related samples together.

`train_folds`, `test_folds`, and optional `validation_folds` are positive integer fold
counts. Their sum is the total number of folds: `train_folds=4, test_folds=1` uses
five folds; `train_folds=8, validation_folds=1, test_folds=1` uses ten. Each group stays in one
fold. Nonempty input must contain at least as many groups as folds and meet
scikit-learn's category-count requirements. Invalid inputs raise
`TimeFValidationError`.

Sample counts and category proportions are approximate for unequal groups.
The same ordered input, seed, and scikit-learn version give the same result.
This is not a temporal split strategy.

#### split

```
split(samples: Sequence[T]) -> DatasetSplits[T]
```

Assign every sample once, preserving input order within partitions.

Returns:

| Type | Description |
| --- | --- |
| `DatasetSplits[T]` | Requested partitions and their original samples, including empty partitions. |
