Source code for ewoksid11.pdfgetx_save_ascii
import numpy as np
from ewokscore import Task
from .constants import CONFIG_ASCII_HEADER, DATA_ASCII_HEADER, SIGNAL_TYPES
[docs]class PdfGetXSaveAscii(
Task,
input_names=[
"filename",
"result",
],
output_names=["saved", "filenames"],
):
"""
Saves the PDF result (iq, sq, fq, gr) in separate ASCII files
Inputs:
- filename: h5file name that would have been used to save data from XrpdProcessor
- result: PDFGetter object with attributes defined by outputtype. Attributes are tuples with [0] X (radial) and [1] Y (intensity)
Outputs:
- saved: True if saved
- filename: list of saved filenames
"""
[docs] def run(self):
filename = self.inputs.filename
self.outputs.filenames = []
result = self.inputs.result
for signal_type, signal_quantities in SIGNAL_TYPES.items():
if not hasattr(result, signal_type):
continue
signal = getattr(result, signal_type)
data = np.stack([signal[0], signal[1]], axis=1)
config_header = self.header_config_writer(signal_type)
data_header = DATA_ASCII_HEADER.format(
f"{signal_quantities['x'].name} ({signal_quantities['x'].unit})",
f"{signal_quantities['y'].name} ({signal_quantities['y'].unit})",
)
header = config_header + data_header
np.savetxt(
filename.replace("h5", signal_type),
data,
fmt="%10.7f",
header=header,
comments="",
)
self.outputs.filenames.append(filename.replace("h5", signal_type))
self.outputs.saved = True