> ## Documentation Index
> Fetch the complete documentation index at: https://nixtlaverse.nixtla.io/llms.txt
> Use this file to discover all available pages before exploring further.

# BaseGenerator

> Base class for all time series generators

### `BaseGenerator`

Bases: <code>[BaseModel](#pydantic.BaseModel)</code>, <code>[ABC](#abc.ABC)</code>

Base class for all time series generators.

**Parameters:**

| Name | Type | Description | Default |
| - | - | - | - |
| `min_length` | <code>[int](#int)</code> | Minimum length of each series | *required* |
| `max_length` | <code>[int](#int)</code> | Maximum length of each series | *required* |
| `freq` | <code>[str](#str) \| [int](#int)</code> | Frequency of the data. Either a pandas offset alias (e.g. 'D', 'h', '5min', 'MS', 'W-MON') or an integer for an integer time index | *required* |
| `engine` | <code>[str](#str)</code> | Output dataframe library (default: 'pandas'). Options are 'pandas', 'polars', 'cudf', 'modin', 'pyarrow' | *required* |
| `alias` | <code>[str](#str) \| None</code> | Name of the generator (default: class name) | *required* |
| `id_col` | <code>[str](#str)</code> | Name of the ID column (default: 'unique\_id') | *required* |
| `time_col` | <code>[str](#str)</code> | Name of the timestamp column (default: 'ds') | *required* |
| `target_col` | <code>[str](#str)</code> | Name of the value column (default: 'y') | *required* |
| `start_datetime` | <code>[str](#str)</code> | First timestamp of every series, in any format accepted by pandas.Timestamp (default: '2000-01-01'). Ignored when freq is an integer | *required* |
| `seed` | <code>[int](#int) \| None</code> | Random seed for reproducibility (default: None) | *required* |
| `Exogenous parameters` | | | *required* |
| `exogenous` | <code>[ExogenousConfig](#synforecast.exogenous.ExogenousConfig) \| None</code> | Configuration for exogenous variable generation. None = no exogenous columns (default: None) | *required* |
| `Missingness parameters` | | | *required* |
| `missing_data` | <code>[bool](#bool)</code> | Enable missing data patterns (default: False) | *required* |
| `missing_pattern` | <code>[str](#str)</code> | Pattern: 'random', 'block', 'seasonal' (default: 'random') | *required* |
| `missing_rate` | <code>[float](#float)</code> | Proportion of missing values 0-1 (default: 0.1) | *required* |
| `missing_block_size` | <code>[int](#int)</code> | Size of missing blocks for 'block' pattern (default: 3) | *required* |
| `missing_seasonal_period` | <code>[int](#int)</code> | Period for 'seasonal' pattern (default: 7) | *required* |
| `Anomaly parameters` | | | *required* |
| `anomalies` | <code>[bool](#bool)</code> | Enable anomaly injection (default: False) | *required* |
| `anomaly_fraction` | <code>[float](#float)</code> | Fraction of points that are anomalies (default: 0.05) | *required* |
| `anomaly_types` | <code>[list](#list)\[[str](#str)]</code> | Types: 'spike', 'dip', 'level\_shift' (default: \['spike', 'dip']) | *required* |
| `spike_magnitude` | <code>[float](#float)</code> | Magnitude of spikes (default: 10.0) | *required* |
| `dip_magnitude` | <code>[float](#float)</code> | Magnitude of dips (default: -10.0) | *required* |
| `level_shift_magnitude` | <code>[float](#float)</code> | Magnitude of level shifts (default: 20.0) | *required* |
| `level_shift_duration` | <code>[int](#int)</code> | Duration of level shifts in time steps (default: 10) | *required* |
| `Changepoint parameters` | | | *required* |
| `changepoints` | <code>[bool](#bool)</code> | Enable changepoint injection (default: False) | *required* |
| `num_changepoints` | <code>[int](#int)</code> | Number of changepoints (default: 2) | *required* |
| `changepoint_type` | <code>[str](#str)</code> | Type: 'level', 'trend', 'variance', 'mixed' (default: 'level') | *required* |
| `changepoint_level_changes` | <code>[list](#list)\[[float](#float)] \| None</code> | Size of level changes (default: random) | *required* |
| `changepoint_trend_changes` | <code>[list](#list)\[[float](#float)] \| None</code> | Size of trend changes (default: random) | *required* |
| `changepoint_variance_changes` | <code>[list](#list)\[[float](#float)] \| None</code> | Size of variance changes (default: random) | *required* |
| `changepoint_locations` | <code>[list](#list)\[[float](#float)] \| None</code> | Relative positions 0-1 (default: random) | *required* |

#### `BaseGenerator.generate`

```python theme={null}
generate(n_series, start_id=0, n_jobs=-1)
```

Generate synthetic time series data.

**Parameters:**

| Name | Type | Description | Default |
| - | - | - | - |
| `n_series` | <code>[int](#int)</code> | Number of time series to generate | *required* |
| `start_id` | <code>[int](#int)</code> | Starting ID for the series numbering (default: 0) Series will be numbered from start\_id to start\_id + n\_series - 1 | <code>0</code> |
| `n_jobs` | <code>[int](#int)</code> | Number of parallel workers. -1 (default) uses `RAYON_NUM_THREADS` if set, otherwise all logical cores. Results are seed-deterministic and do not depend on n\_jobs. | <code>-1</code> |

**Returns:**

| Type | Description |
| - | - |
| <code>[IntoDataFrameT](#narwhals.stable.v2.typing.IntoDataFrameT)</code> | DataFrame in long format with columns \[id\_col, time\_col, target\_col] (default \['unique\_id', 'ds', 'y']), plus any exogenous or flag columns. |

#### `BaseGenerator.generate_single_series`

```python theme={null}
generate_single_series(length)
```

Generate values for a single time series.

**Parameters:**

| Name | Type | Description | Default |
| - | - | - | - |
| `length` | <code>[int](#int)</code> | The length of the series to generate | *required* |

**Returns:**

| Type | Description |
| - | - |
| <code>[ndarray](#numpy.ndarray)</code> | Array of time series values |


## Related topics

- [Multivariate Generators](/synforecast/generators_multivariate.html.md)
- [Dataset](/synforecast/dataset.html.md)
- [Write your own generator](/synforecast/docs/capabilities/custom_generator.html.md)
- [Stochastic Generators](/synforecast/generators_stochastic.html.md)
- [Statistical Generators](/synforecast/generators_statistical.html.md)
