improved getAI now one can override parameters read from file, convenient for testing different settings

This commit is contained in:
marco cammarata 2017-03-03 23:09:34 +01:00
parent 61c07dde55
commit 33bf3384db
1 changed files with 13 additions and 5 deletions

View File

@ -95,17 +95,17 @@ def do2d(ai, imgs, mask = None, npt_radial = 600, npt_azim=360,method = 'csr',sa
out[_i] = i2d
return q,azTheta,np.squeeze(out)
def getAI(poni,folder=None):
def getAI(poni=None,folder=None,**kwargs):
""" get AzimuthalIntegrator instance:
if poni is a dictionary use it to define one
if poni is a string look, it is used as filename to read.
if poni is a string, it is used as filename to read.
in this case if folder is given it is used (together with all its
subfolder) as search path (along with ./ and home folder)
kwargs if present can be used to define (or override) parameters from files,
dist,xcen,ycen,poni1,poni2,rot1,rot2,rot3,pixel1,pixel2,splineFile,
detector,wavelength
"""
if isinstance(poni,pyFAI.azimuthalIntegrator.AzimuthalIntegrator):
ai = poni
elif isinstance(poni,dict):
ai = pyFAI.azimuthalIntegrator.AzimuthalIntegrator(**poni)
elif isinstance(poni,str):
# look is file exists in cwd
if os.path.isfile(poni):
@ -130,6 +130,14 @@ def getAI(poni,folder=None):
else:
log.debug("Could not poni file %s",fname)
ai = pyFAI.load(fname)
else:
ai = pyFAI.azimuthalIntegrator.AzimuthalIntegrator()
for par,value in kwargs.items(): setattr(ai,par,value)
# provide xcen and ycen for convenience (note: xcen changes poni2
# and ycen changes poni1)
if 'xcen' in kwargs: ai.poni2 = kwargs['xcen'] * ai.pixel2
if 'ycen' in kwargs: ai.poni1 = kwargs['ycen'] * ai.pixel1
ai.reset(); # needed in case of overridden parameters
return ai
g_mask_str = re.compile("(\w)\s*(<|>)\s*(\d+)")