Source code for ewokspdf.tasks.processor

from ewokscore import Task

try:
    from diffpy import pdfgetx
except ImportError:
    pdfgetx = None


[docs] class PdfGetXProcessor( Task, input_names=[ "radial", "intensity", "info", "pdfgetx_options", ], output_names=[ "results", "info", "pdfgetx_options", ], ): """Extracts the PDF signal from provided intensities and radial Inputs: - radial: 1D array - intensity: 1D or 2D array - info: dict with unit, wavelength, and nb_avg - pdfgetx_options: PDFConfig object Outputs: - results: List od PDFGetter object with attributes defined by outputtype. Attributes are tuples with [0] X (radial) and [1] Y (intensity) - info: dict with unit, wavelength, and nb_avg - pdfgetx_options: PDFConfig object """
[docs] def run(self): cfg = self.inputs.pdfgetx_options if pdfgetx is None: raise ImportError( "diffpy.pdfgetx couldn't be imported, please download and install it from here: https://inventions.techventures.columbia.edu/technologies/xpdfsuite-an-end-to--M11-120/licenses/113" ) worker = pdfgetx.PDFGetter(cfg) radial = self.inputs.radial intensity = self.inputs.intensity results = list() if intensity.ndim == 1: worker(radial, intensity) results.append(worker.copy()) elif intensity.ndim == 2: for i in range(intensity.shape[0]): worker(radial, intensity[i, :]) results.append(worker.copy()) else: raise ValueError(f"Dimension {intensity.ndim} is not supported") self.outputs.results = results self.outputs.info = self.inputs.info self.outputs.pdfgetx_options = cfg