# LinearScaling

## class LinearScaling(gain: float = 1.0, offset: float = 0.0)[source]

Bases: [`ScalingFunction`](https://dev.nominal.io/instro/ref/instruments/instro.i2c.types.ScalingFunction.md#instro.i2c.types.ScalingFunction "instro.i2c.types.ScalingFunction")

Linear scaling: `physical = offset + gain * raw`.

Example

```
>>> # Temperature sensor: 0.1°C per count, -40°C offset
>>> LinearScaling(gain=0.1, offset=-40.0).to_physical(500)
10.0
```

Methods

| [`to_physical`](https://dev.nominal.io/instro/ref/instruments/instro.i2c.types.LinearScaling.md#instro.i2c.types.LinearScaling.to_physical "instro.i2c.types.LinearScaling.to_physical") | Raw register value → physical units. |
| --- | --- |
| [`to_raw`](https://dev.nominal.io/instro/ref/instruments/instro.i2c.types.LinearScaling.md#instro.i2c.types.LinearScaling.to_raw "instro.i2c.types.LinearScaling.to_raw") | Physical value → raw integer. |

### to_physical(raw: int) → float[source]

Raw register value → physical units.

### to_raw(physical: float) → int[source]

Physical value → raw integer. May raise `NotImplementedError` if inverse is not supported.
