Source code for paws.core.operations.PROCESSING.INTEGRATION.ApplyIntegrator1d

import numpy as np
from collections import OrderedDict

import pyFAI

from ... import Operation as opmod 
from ...Operation import Operation

inputs = OrderedDict(
    image_data=None,
    integrator=None,
    npt=1000,
    polz_factor=0.,
    unit='q_A^-1',
    integrate_args={})
outputs = OrderedDict(
    q=None,
    I=None,
    q_I=None)
        
[docs]class ApplyIntegrator1d(Operation): """Integrate an image using an existing PyFAI.AzimuthalIntegrator. Input image data (ndarray), PyFAI.AzimuthalIntegrator, and a dict of other keyword parameters to be passed to PyFAI.AzimuthalIntegrator.integrate1d(). Refer to the PyFAI documentation at http://pyfai.readthedocs.io/en/latest/ for supported keyword arguments as well as parameter definitions and defaults. """ def __init__(self): super(ApplyIntegrator1d,self).__init__(inputs,outputs) self.input_doc['image_data'] = '2d array representing intensity for each pixel' self.input_doc['integrator'] = 'A PyFAI.AzimuthalIntegrator object' self.input_doc['npt'] = 'number of q-points to integrate' self.input_doc['polz_factor'] = 'polarization factor, '\ 'in case polarization correction is needed' self.input_doc['unit'] = 'choice of unit. See PyFAI documentation for options.' self.input_doc['integrate_args'] = 'dict of keyword args '\ 'to pass to pyFAI.AzimuthalIntegrator.integrate1d(). '\ 'Where relevant, the values in this dict will be replaced '\ 'by inputs to the operation, e.g. for npt.' self.output_doc['q'] = 'Scattering vector magnitude q in 1/Angstrom.' self.output_doc['I'] = 'Integrated intensity at q.' self.output_doc['q_I'] = 'q and I zipped together an a n-by-2 numpy array.' self.input_datatype['unit'] = 'str' self.input_datatype['integrate_args'] = 'dict' self.input_datatype['npt'] = 'int' self.input_datatype['polz_factor'] = 'float'
[docs] def run(self): img = self.inputs['image_data'] npt = self.inputs['npt'] intgtr = self.inputs['integrator'] kw = self.inputs['integrate_args'] if self.inputs['polz_factor']: kw['polarization_factor'] = self.inputs['polz_factor'] if self.inputs['unit']: kw['unit'] = self.inputs['unit'] q,I = intgtr.integrate1d(img,npt,**kw) self.outputs['q'] = q self.outputs['I'] = I self.outputs['q_I'] = np.array([q,I]).T