Source code for nabu.pipeline.helical.processconfig
from .nabu_config import nabu_config, renamed_keys
from .dataset_validator import HelicalDatasetValidator
from ..fullfield import processconfig as ff_processconfig
from ...resources import dataset_analyzer
[docs]
class ProcessConfig(ff_processconfig.ProcessConfig):
default_nabu_config = nabu_config
config_renamed_keys = renamed_keys
_use_horizontal_translations = False
def _configure_save_steps(self):
self._dump_sinogram = False
steps_to_save = self.nabu_config["pipeline"]["save_steps"]
if steps_to_save in (None, ""):
self.steps_to_save = []
return
steps_to_save = [s.strip() for s in steps_to_save.split(",")]
for step in self.processing_steps:
step = step.strip()
if step in steps_to_save:
self.processing_options[step]["save"] = True
self.processing_options[step]["save_steps_file"] = self.get_save_steps_file(step_name=step)
# "sinogram" is a special keyword, not explicitly in the processing steps
if "sinogram" in steps_to_save:
self._dump_sinogram = True
self._dump_sinogram_file = self.get_save_steps_file(step_name="sinogram")
self.steps_to_save = steps_to_save
def _update_dataset_info_with_user_config(self):
super()._update_dataset_info_with_user_config()
self._get_translation_file("reconstruction", "z_per_proj_file", "z_per_proj", last_dim=1)
self._get_translation_file("reconstruction", "x_per_proj_file", "x_per_proj", last_dim=1)
def _get_user_sino_normalization(self):
"""is called by the base class but it is not used in helical"""
pass
def _coupled_validation(self):
self.logger.debug("Doing coupled validation")
self._dataset_validator = HelicalDatasetValidator(self.nabu_config, self.dataset_info)
for what in ["rec_params", "rec_region", "binning", "subsampling_factor"]:
setattr(self, what, getattr(self._dataset_validator, what))
print(what, self._dataset_validator)
def _browse_dataset(self, dataset_info):
"""
Browse a dataset and builds a data structure with the relevant information.
"""
self.logger.debug("Browsing dataset")
if dataset_info is not None:
self.dataset_info = dataset_info
else:
self.dataset_info = dataset_analyzer.analyze_dataset(
self.nabu_config["dataset"]["location"],
extra_options={
"exclude_projections": self.nabu_config["dataset"]["exclude_projections"],
"hdf5_entry": self.nabu_config["dataset"]["hdf5_entry"],
},
logger=self.logger,
)