Source code for paws.core.operations.PACKAGING.PIF.Pif1dScatteringIntensity

from collections import OrderedDict

import numpy as np
import pypif.obj as pifobj

from ... import Operation as opmod 
from ...Operation import Operation
from saxskit import saxs_fit 

inputs=OrderedDict(uid=None,q_I=None)
outputs=OrderedDict(pif=None)

[docs]class Pif1dScatteringIntensity(Operation): """Build a simple pypif.obj.ChemicalSystem containing the scattering intensity.""" def __init__(self): super(Pif1dScatteringIntensity,self).__init__(inputs,outputs) self.input_doc['uid'] = 'PIF uid (string)' self.input_doc['q_I'] = 'n-by-2 array of q values and corresponding scattering intensities' self.output_doc['pif'] = 'pif object representing the input data'
[docs] def run(self): uid = self.inputs['uid'] q_I = self.inputs['q_I'] csys = pifobj.ChemicalSystem() csys.uid = uid csys.properties = [] csys.tags = ['unlabeled scattering intensity'] # Pack q_I into a property pI = self.q_I_property(q_I) pI.name = 'SAXS intensity' csys.properties.append(pI) self.outputs['pif'] = csys
[docs] def q_I_property(self,q_I): pI = pifobj.Property() n_qpoints = q_I.shape[0] pI.scalars = [pifobj.Scalar(q_I[i,1]) for i in range(n_qpoints)] pI.units = 'counts' pI.conditions = [] pI.conditions.append( pifobj.Value('scattering vector', [pifobj.Scalar(q_I[i,0]) for i in range(n_qpoints)], None,None,None,'1/Angstrom') ) return pI