Skip to main content

python API for creating and using hdf5 darkframes libraries

Project description

unit tests mypy

H5DARKFRAMES (beta)

H5Darkframes is a python library for generating and using darkframes library. For now, it supports only asi zwo cameras (see https://github.com/MPI-IS/camera_zwo_asi).

This is beta, and need some more testing

Installation

from source:

git clone https://github.com/MPI-IS/h5darkframes.git
cd h5darkframes
pip install .

from pypi:

pip install h5darkframes

Usage

Assuming that camera-zwo-asi is installed and a camera is plugged:

creating a darkframe library

First, a configuration file must be created. In a terminal:

darkframes-zwoasi-config

This will create in the current directory a file darkframes.toml with a content similar to:

[darkframes]
average_over = 5

[camera.controllables]
AutoExpMaxExpMS = 30000
AutoExpMaxGain = 285
AutoExpTargetBrightness = 100
BandWidth = "auto"
CoolerOn = 0
Exposure = 300
Flip = 0
Gain = 400
HighSpeedMode = 0
MonoBin = 0
Offset = 8
TargetTemp = 26
WB_B = 95
WB_R = 52

[camera.roi]
start_x = 0
start_y = 0
width = 4144
height = 2822
bins = 1
type = "raw8"

[darkframes.controllables.TargetTemp]
min = -15
max = 15
step = 3
threshold = 1
timeout = 600

[darkframes.controllables.Exposure]
min = 1000000
max = 30000000
step = 5000000
threshold = 1
timeout = 0.1

[darkframes.controllables.Gain]
min = 200
max = 400
step = 100
threshold = 1
timeout = 0.1

You may edit this file to setup:

  • your desired camera configuration

  • the controllables over which darkframes will be created, and over which range

  • the number of pictures that will be averaged per darkframes

For example:

[darkframes.controllables.TargetTemp]
min = -15
max = 15
step = 3
threshold = 1
timeout = 600

implies that darkframes will be taken for values of temperature -15, -12, -9, ... up to +15.

creating the darkframes library

Call in a terminal:

# change "mylibraryname" to a name of your choice
darkframes-zwoasi-library --name mylibraryname

You may get stats regarding the library (requires a file 'darkframes.hdf5' in the current directory):

darkframes-info

using the library

import h5darkframes as dark
import camera_zwo_asi as zwo
from pathlib import Path

# path to the library
path = Path("/path/to/darkframes.hdf5")

# handle over the library
library = dark.ImageLibrary(path)

# handle over the camera
camera = zwo.Camera(0)

# taking a picture. Image is an instance of zwo.Image
image = camera.capture()

# getting the current camera configuration
controls = camera.get_controls()

# "Temperature", "Exposure" and "Gain" must be the
# controllables that have been iterated over
# during the creation of the library
darkframe_target = {
       "Temperature": controls["Temperature"].value,
       "Exposure": controls["Exposure"].value,
       "Gain": controls["Gain"].value
}

# getting the darkframe that is the closest to the target
# darkframe: a numpy array
# darkframe_config: the config of the camera when the darkframe was taken
darkframe, darkframe_config= library.get(darkframe_target)

# optional sanity checks
assert image.get_data().shape == darkframe.shape
assert image.get_data().dtype = darkframe.dtype

# substracting the darkframe
substracted_image = image.get_data()-darkframe

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

h5darkframes-0.1.5.tar.gz (20.6 kB view hashes)

Uploaded Source

Built Distribution

h5darkframes-0.1.5-py3-none-any.whl (29.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page