Source code for ewoksid11.pyfai_calib_save
import os
from datetime import datetime
from pyFAI.io import ponifile
from pyFAI.units import hc
from ewokscore import Task
[docs]
class CalibSave(
Task,
input_names=[
"geometry",
"calibrant",
"detector",
"detector_config",
"output_path",
"energy",
],
output_names=[
"output_path",
],
):
"""Saves the geometry from calibration result in output_path. By default, the geometry file will be: {calibrant}_YYYYMMDD_hhmm.poni
Inputs:
- geometry: dictionnary, result of CalibrateSingle
- calibrant: string with calibrant name used in CalibrateSingle
- detector: string, default is detector
- detector_config: dict with key splineFile
- output_path: list of strings, where the poni will be saved
- energy: float, in keV
Outputs:
- output_path: list of strings, path of the poni files saved
"""
[docs]
def run(self):
now = datetime.now()
dt_string = now.strftime("%Y%m%d_%H%M")
poni_paths = []
poni_pars = {
"poni_version": 2,
"detector": self.inputs.detector,
"detector_config": self.inputs.detector_config,
**self.inputs.geometry,
"wavelength": (1e-10 * hc) / self.inputs.energy,
}
poni_obj = ponifile.PoniFile(poni_pars)
for path in self.inputs.output_path:
if not os.path.exists(path):
os.makedirs(path)
poni_path = os.path.join(path, f"{self.inputs.calibrant}_{dt_string}.poni")
with open(poni_path, "w") as poniFile:
poni_obj.write(poniFile)
poni_paths.append(poni_path)
self.outputs.output_path = poni_paths