# helia_edge.models.timeppg

TimePPG heart-rate regressor from PPG and accelerometer windows.

Adapted from eml-eda/q-ppg (revision ddf3866d,
precision_search/model/TimePPG_float.py). Inputs are channels-last
(time, channels) windows; the reference uses 256 samples of BVP at 32 Hz plus
three accelerometer axes. Constructors initialize weights only: upstream
publishes no trained checkpoints, so these models are untrained.

## helia_edge.models.timeppg.build

`function` · `python`

```python
build(
    params: TimePPGParams,
    input_shape: tuple[int | None, ...],
    *,
    batch_size: int | None = None,
    name: str | None = None,
) -> keras.Model
```

Construct an untrained TimePPG regressor with one linear output.

The input is ``(time, channels)`` with a known time length that survives the 64x downsampling. The
flattened features are channel-major, matching the upstream PyTorch layout.

**Parameters**

| Name | Type | Default | Description |
| --- | --- | --- | --- |
| params | TimePPGParams | Required | Model parameters. |
| input_shape | tuple[int \| None, ...] | Required | ``(time, channels)``, both known, time at least 64. |
| batch_size | int \| None | None | Static batch size; None for a dynamic batch. |
| name | str \| None | None | Model name; the family when None. |

**Returns**

| Name | Type | Description |
| --- | --- | --- |
|  | keras.Model | keras.Model: The model, named ``timeppg`` unless ``name`` is given. |

Source: `helia_edge/models/timeppg.py:43`
