Source code for ewoksid11.pdfgetx_average

import numpy as np
import json
from ewokscore import Task
from silx.io.url import DataUrl
from silx.io import h5py_utils


[docs]class PdfGetXAverage( Task, input_names=[ "nxdata_url", ], output_names=[ "radial", "intensity", "info", ], ): """ Average a list of 1D XRPD patterns from provided output of IntegrateBlissScan Inputs: - nxdata_url: .h5 path with NXData url Outputs: - radial: 1D array - intensity: 1D array - info: dict with radial_units and wavelength """
[docs] def run(self): nxdata_url = DataUrl(self.inputs.nxdata_url) with h5py_utils.open_item( nxdata_url.file_path(), nxdata_url.data_path() ) as NXIn: intensity = NXIn[NXIn.attrs["signal"]][:] radial = NXIn[NXIn.attrs["axes"][1]][:] info = json.loads(NXIn.parent["configuration/data"][()]) if intensity.ndim == 1: pass elif intensity.ndim == 2: intensity = np.average(intensity, axis=0) else: raise ValueError("intensity dimension %s not supported" % intensity.ndim) self.outputs.intensity = intensity self.outputs.radial = radial self.outputs.info = info