Python examples
Study dark signal at a selected temperature
The complete source is included below.
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
"""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.