# Study dark signal at a selected temperature

The complete source is included below.

```powershell
python -m nextastro_obs_client.examples.dark_current_study --temperature -10 --seconds 1 10 30 --count 3
```

Explicitly cools to the requested temperature, measures a mean bias level and records bias-subtracted dark signal per actual second in dark_current.csv. This is a whole-frame mean experiment; hot pixels and amplifier structure are included. The temperature is an example, not a recommendation for every detector. Frames still use OBS's configured readout profile.

Student extension: Repeat at several explicit temperatures and compare robust region measurements and hot-pixel distributions.


## Python source

```python
"""Compare bias and dark signals at one explicit camera temperature."""
from nextastro_obs_client.examples._common import parser, execute, write_rows


def run(obs, camera, args):
    camera.cool_to(args.temperature)
    bias = camera.bias(count=args.count, target_name="Dark study bias")
    bias_level = sum(image.statistics().mean for image in bias) / len(bias)
    rows = []
    for seconds in args.seconds:
        for image in camera.dark(seconds=seconds, count=args.count, target_name="Dark current study"):
            stats = image.statistics()
            rows.append(dict(temperature_c=args.temperature, actual_seconds=image.seconds,
                bias_mean=bias_level, mean=stats.mean,
                dark_adu_per_second=(stats.mean - bias_level) / image.seconds if image.seconds else None,
                path=str(image.path)))
        write_rows(args.output, rows)
    return rows


def main(argv=None):
    p = parser("Dark current study")
    p.add_argument("--temperature", type=float, required=True)
    p.add_argument("--seconds", type=float, nargs="+", required=True)
    p.add_argument("--count", type=int, default=3)
    p.add_argument("--output", default="dark_current.csv")
    return execute(p, run, argv)


if __name__ == "__main__":
    main()
```

Shared argument and session helpers: [Example support code](support.md).
