import logging
import os
from .config import Config
logger = logging.getLogger('hexrd.config')
processing_methods = {
'gaussian': dict(sigma=2.0, size=3.0),
'dilations_only': dict(num_erosions=2, num_dilations=3)}
[docs]class ImagesConfig(Config):
@property
def data_folder(self):
return self._cfg.get('images:data_folder')
@property
def stem(self):
return self._cfg.get('images:stem')
@property
def num_digits(self):
return self._cfg.get('images:num_digits')
@property
def img_start(self):
return self._cfg.get('images:img_start')
@property
def nframes(self):
return self._cfg.get('images:nframes', 1440)
@property
def processing(self):
return ProcessingConfig(self._cfg)
[docs]class ProcessingConfig(Config):
@property
def num_for_dark(self):
return self._cfg.get('images:processing:num_for_dark', 200)
@property
def img_threshold(self):
return self._cfg.get('images:processing:img_threshold', 0)
@property
def ome_dilation_iter(self):
return self._cfg.get('images:processing:ome_dilation_iter', 1)
@property
def method(self):
key = 'images:processing:method'
try:
temp = self._cfg.get(key)
assert len(temp) == 1., \
"method must have exactly one key"
if isinstance(temp, dict):
method_spec = next(iter(list(temp.keys())))
if method_spec.lower() not in processing_methods:
raise RuntimeError(
'invalid image processing method "%s"'
% method_spec
)
else:
return temp
except:
raise RuntimeError(
"Undefined image processing method"
)