Source code for blissoda.demo.processors.utils.id31
import logging
from pathlib import Path
from typing import Tuple
import numpy
from ....bliss_globals import current_session
from ....bliss_globals import setup_globals
from ....import_utils import unavailable_function
from ....utils import directories
try:
from scipy.io import savemat
except ImportError as ex:
savemat = unavailable_function(ex)
_logger = logging.getLogger(__name__)
[docs]
def ensure_difflab6_id31_flats() -> Tuple[str, str]:
"""Create dummy flat field files for ID31 FlatFieldFromEnergy task"""
difflab6_image_shape = (
setup_globals.difflab6.image.height,
setup_globals.difflab6.image.width,
)
processed_dir = directories.get_processed_dir(current_session.scan_saving.filename)
newflat_path = Path(processed_dir, "config", "flats.mat")
if not newflat_path.is_file():
_logger.info(f"Create ID31 demo newflat file: {str(newflat_path)}")
newflat_path.parent.mkdir(parents=True, exist_ok=True)
savemat(
newflat_path,
{
"E": numpy.array([65, 105], dtype=numpy.uint8),
"F": numpy.ones(difflab6_image_shape + (2,), dtype=numpy.float64),
},
)
oldflat_path = Path(processed_dir, "config", "flats_old.mat")
if not oldflat_path.is_file():
_logger.info(f"Create ID31 demo oldflat file: {str(oldflat_path)}")
oldflat_path.parent.mkdir(parents=True, exist_ok=True)
savemat(
oldflat_path,
{
"Eold": numpy.array([15.77, 74.96], dtype=numpy.float64),
"Fold": numpy.ones(difflab6_image_shape + (2,), dtype=numpy.float64),
},
)
return str(newflat_path), str(oldflat_path)