本文整理汇总了Python中pyFAI.azimuthalIntegrator.AzimuthalIntegrator.integrate1d方法的典型用法代码示例。如果您正苦于以下问题:Python AzimuthalIntegrator.integrate1d方法的具体用法?Python AzimuthalIntegrator.integrate1d怎么用?Python AzimuthalIntegrator.integrate1d使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pyFAI.azimuthalIntegrator.AzimuthalIntegrator
的用法示例。
在下文中一共展示了AzimuthalIntegrator.integrate1d方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: run
# 需要导入模块: from pyFAI.azimuthalIntegrator import AzimuthalIntegrator [as 别名]
# 或者: from pyFAI.azimuthalIntegrator.AzimuthalIntegrator import integrate1d [as 别名]
def run(self):
ai = AzimuthalIntegrator(
dist=self.__distance,
poni1=self.__poni1,
poni2=self.__poni2,
rot1=self.__rotation1,
rot2=self.__rotation2,
rot3=self.__rotation3,
detector=self.__detector,
wavelength=self.__wavelength)
numberPoint1D = 1024
numberPointRadial = 400
numberPointAzimuthal = 360
# FIXME error model, method
self.__result1d = ai.integrate1d(
data=self.__image,
npt=numberPoint1D,
unit=self.__radialUnit,
mask=self.__mask,
polarization_factor=self.__polarizationFactor)
self.__result2d = ai.integrate2d(
data=self.__image,
npt_rad=numberPointRadial,
npt_azim=numberPointAzimuthal,
unit=self.__radialUnit,
mask=self.__mask,
polarization_factor=self.__polarizationFactor)
if self.__calibrant:
rings = self.__calibrant.get_2th()
rings = filter(lambda x: x <= self.__result1d.radial[-1], rings)
rings = list(rings)
try:
rings = utils.from2ThRad(rings, self.__radialUnit, self.__wavelength, ai)
except ValueError:
message = "Convertion to unit %s not supported. Ring marks ignored"
_logger.warning(message, self.__radialUnit)
rings = []
else:
rings = []
self.__ringAngles = rings
示例2: TestMultiGeometry
# 需要导入模块: from pyFAI.azimuthalIntegrator import AzimuthalIntegrator [as 别名]
# 或者: from pyFAI.azimuthalIntegrator.AzimuthalIntegrator import integrate1d [as 别名]
class TestMultiGeometry(unittest.TestCase):
def setUp(self):
unittest.TestCase.setUp(self)
self.data = fabio.open(UtilsTest.getimage("1788/moke.tif")).data
self.lst_data = [self.data[:250, :300], self.data[250:, :300], self.data[:250, 300:], self.data[250:, 300:]]
self.det = Detector(1e-4, 1e-4)
self.det.max_shape = (500, 600)
self.sub_det = Detector(1e-4, 1e-4)
self.sub_det.max_shape = (250, 300)
self.ai = AzimuthalIntegrator(0.1, 0.03, 0.03, detector=self.det)
self.range = (0, 23)
self.ais = [AzimuthalIntegrator(0.1, 0.030, 0.03, detector=self.sub_det),
AzimuthalIntegrator(0.1, 0.005, 0.03, detector=self.sub_det),
AzimuthalIntegrator(0.1, 0.030, 0.00, detector=self.sub_det),
AzimuthalIntegrator(0.1, 0.005, 0.00, detector=self.sub_det),
]
self.mg = MultiGeometry(self.ais, radial_range=self.range, unit="2th_deg")
self.N = 390
def tearDown(self):
unittest.TestCase.tearDown(self)
self.data = None
self.lst_data = None
self.det = None
self.sub_det = None
self.ai = None
self.ais = None
self.mg = None
def test_integrate1d(self):
tth_ref, I_ref = self.ai.integrate1d(self.data, radial_range=self.range, npt=self.N, unit="2th_deg", method="splitpixel")
obt = self.mg.integrate1d(self.lst_data, self.N)
tth_obt, I_obt = obt
self.assertEqual(abs(tth_ref - tth_obt).max(), 0, "Bin position is the same")
# intensity need to be scaled by solid angle 1e-4*1e-4/0.1**2 = 1e-6
delta = (abs(I_obt * 1e6 - I_ref).max())
self.assertLessEqual(delta, 5e-5, "Intensity is the same delta=%s" % delta)
def test_integrate2d(self):
ref = self.ai.integrate2d(self.data, self.N, 360, radial_range=self.range, azimuth_range=(-180, 180), unit="2th_deg", method="splitpixel", all=True)
obt = self.mg.integrate2d(self.lst_data, self.N, 360, all=True)
self.assertEqual(abs(ref["radial"] - obt["radial"]).max(), 0, "Bin position is the same")
self.assertEqual(abs(ref["azimuthal"] - obt["azimuthal"]).max(), 0, "Bin position is the same")
# intensity need to be scaled by solid angle 1e-4*1e-4/0.1**2 = 1e-6
delta = abs(obt["I"] * 1e6 - ref["I"])[obt["count"] >= 1] # restict on valid pixel
delta_cnt = abs(obt["count"] - ref["count"])
delta_sum = abs(obt["sum"] * 1e6 - ref["sum"])
if delta.max() > 1:
logger.warning("TestMultiGeometry.test_integrate2d gave intensity difference of %s" % delta.max())
if logger.level <= logging.DEBUG:
from matplotlib import pyplot as plt
f = plt.figure()
a1 = f.add_subplot(2, 2, 1)
a1.imshow(ref["sum"])
a2 = f.add_subplot(2, 2, 2)
a2.imshow(obt["sum"])
a3 = f.add_subplot(2, 2, 3)
a3.imshow(delta_sum)
a4 = f.add_subplot(2, 2, 4)
a4.plot(delta_sum.sum(axis=0))
f.show()
raw_input()
self.assertLess(delta_cnt.max(), 0.001, "pixel count is the same delta=%s" % delta_cnt.max())
self.assertLess(delta_sum.max(), 0.03, "pixel sum is the same delta=%s" % delta_sum.max())
self.assertLess(delta.max(), 0.004, "pixel intensity is the same (for populated pixels) delta=%s" % delta.max())
示例3: CalibrationModel
# 需要导入模块: from pyFAI.azimuthalIntegrator import AzimuthalIntegrator [as 别名]
# 或者: from pyFAI.azimuthalIntegrator.AzimuthalIntegrator import integrate1d [as 别名]
#.........这里部分代码省略.........
if not self.fit_distance:
fix.append('dist')
if self.fit_wavelength:
self.spectrum_geometry.refine2()
self.spectrum_geometry.refine2_wavelength(fix=fix)
self.create_cake_geometry()
self.set_supersampling()
# reset the integrator (not the geometric parameters)
self.spectrum_geometry.reset()
def integrate_1d(self, num_points=None, mask=None, polarization_factor=None, filename=None,
unit='2th_deg', method='csr'):
if np.sum(mask) == self.img_model.img_data.shape[0] * self.img_model.img_data.shape[1]:
# do not perform integration if the image is completely masked...
return self.tth, self.int
if self.spectrum_geometry._polarization is not None:
if self.img_model.img_data.shape != self.spectrum_geometry._polarization.shape:
# resetting the integrator if the polarization correction matrix has not the correct shape
self.spectrum_geometry.reset()
if polarization_factor is None:
polarization_factor = self.polarization_factor
if num_points is None:
num_points = self.calculate_number_of_spectrum_points(2)
self.num_points = num_points
t1 = time.time()
if unit is 'd_A':
try:
self.tth, self.int = self.spectrum_geometry.integrate1d(self.img_model.img_data, num_points,
method=method,
unit='2th_deg',
mask=mask,
polarization_factor=polarization_factor,
filename=filename)
except NameError:
self.tth, self.int = self.spectrum_geometry.integrate1d(self.img_model.img_data, num_points,
method='csr',
unit='2th_deg',
mask=mask,
polarization_factor=polarization_factor,
filename=filename)
self.tth = self.spectrum_geometry.wavelength / (2 * np.sin(self.tth / 360 * np.pi)) * 1e10
self.int = self.int
else:
try:
self.tth, self.int = self.spectrum_geometry.integrate1d(self.img_model.img_data, num_points,
method=method,
unit=unit,
mask=mask,
polarization_factor=polarization_factor,
filename=filename)
except NameError:
self.tth, self.int = self.spectrum_geometry.integrate1d(self.img_model.img_data, num_points,
method='csr',
unit=unit,
mask=mask,
polarization_factor=polarization_factor,
filename=filename)
logger.info('1d integration of {0}: {1}s.'.format(os.path.basename(self.img_model.filename), time.time() - t1))
ind = np.where((self.int > 0) & (~np.isnan(self.int)))
示例4: ADFrame
# 需要导入模块: from pyFAI.azimuthalIntegrator import AzimuthalIntegrator [as 别名]
# 或者: from pyFAI.azimuthalIntegrator.AzimuthalIntegrator import integrate1d [as 别名]
#.........这里部分代码省略.........
self.int_timer.Start(500)
def show_1dpattern(self, init=False):
if self.calib is None or not HAS_PYFAI:
return
img = self.ad_img.PV('ArrayData').get()
h, w = self.image.GetImageSize()
img.shape = (w, h)
# may need to trim outer pixels (int1d_trimx/int1d_trimy in config)
xstride = 1
if self.config['general'].get('int1d_flipx', False):
xstride = -1
xslice = slice(None, None, xstride)
trimx = int(self.config['general'].get('int1d_trimx', 0))
if trimx != 0:
xslice = slice(trimx*xstride, -trimx*xstride, xstride)
ystride = 1
if self.config['general'].get('int1d_flipy', True):
ystride = -1
yslice = slice(None, None, ystride)
trimy = int(self.config['general'].get('int1d_trimy', 0))
if trimy > 0:
yslice = slice(trimy*ystride, -trimy*ystride, ystride)
img = img[yslice, xslice]
img_id = self.ad_cam.ArrayCounter_RBV
q, xi = self.integrator.integrate1d(img, 2048, unit='q_A^-1',
correctSolidAngle=True,
polarization_factor=0.999)
if init:
self.int_panel.plot(q, xi, xlabel=r'$Q (\rm\AA^{-1})$', marker='+',
title='Image %d' % img_id)
self.int_panel.Raise()
self.int_panel.Show()
else:
self.int_panel.update_line(0, q, xi, draw=True)
self.int_panel.set_title('Image %d' % img_id)
@EpicsFunction
def onSaveImage(self, event=None):
"prompts for and save image to file"
defdir = os.getcwd()
self.fname = "Image_%i.tiff" % self.ad_cam.ArrayCounter_RBV
dlg = wx.FileDialog(None, message='Save Image as',
defaultDir=os.getcwd(),
defaultFile=self.fname,
style=wx.FD_SAVE)
path = None
if dlg.ShowModal() == wx.ID_OK:
path = os.path.abspath(dlg.GetPath())
root, fname = os.path.split(path)
epics.caput("%s%sFileName" % self.prefix, self.fsaver, fname)
epics.caput("%s%sFileWriteMode" % self.prefix, self.fsaver, 0)
time.sleep(0.05)
epics.caput("%s%sWriteFile" % self.prefix, self.fsaver, 1)
time.sleep(0.05)
示例5: EigerFrame
# 需要导入模块: from pyFAI.azimuthalIntegrator import AzimuthalIntegrator [as 别名]
# 或者: from pyFAI.azimuthalIntegrator.AzimuthalIntegrator import integrate1d [as 别名]
#.........这里部分代码省略.........
def onAutoIntegration(self, event=None):
if not event.IsChecked():
self.int_timer.Stop()
return
if self.calib is None or 'poni1' not in self.calib:
return
shown = False
try:
self.int_panel.Raise()
shown = True
except:
self.int_panel = None
if not shown:
self.int_panel = PlotFrame(self)
self.show_1dpattern(init=True)
else:
self.show_1dpattern()
self.int_timer.Start(500)
def show_1dpattern(self, init=False):
if self.calib is None or not HAS_PYFAI:
return
img = self.ad_img.PV('ArrayData').get()
h, w = self.image.GetImageSize()
img.shape = (w, h)
img = img[3:-3, 1:-1][::-1, :]
img_id = self.ad_cam.ArrayCounter_RBV
q, xi = self.integrator.integrate1d(img, 2048, unit='q_A^-1',
correctSolidAngle=True,
polarization_factor=0.999)
if init:
self.int_panel.plot(q, xi, xlabel=r'$Q (\rm\AA^{-1})$', marker='+',
title='Image %d' % img_id)
self.int_panel.Raise()
self.int_panel.Show()
else:
self.int_panel.update_line(0, q, xi, draw=True)
self.int_panel.set_title('Image %d' % img_id)
@EpicsFunction
def onSaveImage(self, event=None):
"prompts for and save image to file"
defdir = os.getcwd()
self.fname = "Image_%i.tiff" % self.ad_cam.ArrayCounter_RBV
dlg = wx.FileDialog(None, message='Save Image as',
defaultDir=os.getcwd(),
defaultFile=self.fname,
style=wx.FD_SAVE)
path = None
if dlg.ShowModal() == wx.ID_OK:
path = os.path.abspath(dlg.GetPath())
root, fname = os.path.split(path)
epics.caput("%sTIFF1:FileName" % self.prefix, fname)
epics.caput("%sTIFF1:FileWriteMode" % self.prefix, 0)
time.sleep(0.05)
epics.caput("%sTIFF1:WriteFile" % self.prefix, 1)
time.sleep(0.05)
示例6: CalibrationData
# 需要导入模块: from pyFAI.azimuthalIntegrator import AzimuthalIntegrator [as 别名]
# 或者: from pyFAI.azimuthalIntegrator.AzimuthalIntegrator import integrate1d [as 别名]
#.........这里部分代码省略.........
if not self.fit_distance:
fix.append('dist')
if self.fit_wavelength:
self.spectrum_geometry.refine2()
self.spectrum_geometry.refine2_wavelength(fix=fix)
self.create_cake_geometry()
self.set_supersampling()
# reset the integrator (not the geometric parameters)
self.spectrum_geometry.reset()
def integrate_1d(self, num_points=None, mask=None, polarization_factor=None, filename=None,
unit='2th_deg', method='csr'):
if np.sum(mask) == self.img_data.img_data.shape[0] * self.img_data.img_data.shape[1]:
# do not perform integration if the image is completely masked...
return self.tth, self.int
if self.spectrum_geometry._polarization is not None:
if self.img_data.img_data.shape != self.spectrum_geometry._polarization.shape:
# resetting the integrator if the polarization correction matrix has not the correct shape
self.spectrum_geometry.reset()
if polarization_factor is None:
polarization_factor = self.polarization_factor
if num_points is None:
num_points = self.calculate_number_of_spectrum_points(2)
self.num_points = num_points
t1 = time.time()
if unit is 'd_A':
try:
self.tth, self.int = self.spectrum_geometry.integrate1d(self.img_data.img_data, num_points,
method=method,
unit='2th_deg',
mask=mask,
polarization_factor=polarization_factor,
filename=filename)
except NameError:
self.tth, self.int = self.spectrum_geometry.integrate1d(self.img_data.img_data, num_points,
method=method,
unit='2th_deg',
mask=mask,
polarization_factor=polarization_factor,
filename=filename)
self.tth = self.spectrum_geometry.wavelength / (2 * np.sin(self.tth / 360 * np.pi)) * 1e10
self.int = self.int
else:
try:
self.tth, self.int = self.spectrum_geometry.integrate1d(self.img_data.img_data, num_points,
method=method,
unit=unit,
mask=mask,
polarization_factor=polarization_factor,
filename=filename)
except NameError:
self.tth, self.int = self.spectrum_geometry.integrate1d(self.img_data.img_data, num_points,
method='lut',
unit=unit,
mask=mask,
polarization_factor=polarization_factor,
filename=filename)
logger.info('1d integration of {}: {}s.'.format(os.path.basename(self.img_data.filename), time.time() - t1))
ind = np.where((self.int > 0) & (~np.isnan(self.int)))
示例7: run
# 需要导入模块: from pyFAI.azimuthalIntegrator import AzimuthalIntegrator [as 别名]
# 或者: from pyFAI.azimuthalIntegrator.AzimuthalIntegrator import integrate1d [as 别名]
def run(self):
ai = AzimuthalIntegrator(
dist=self.__distance,
poni1=self.__poni1,
poni2=self.__poni2,
rot1=self.__rotation1,
rot2=self.__rotation2,
rot3=self.__rotation3,
detector=self.__detector,
wavelength=self.__wavelength)
# FIXME Add error model
method1d = method_registry.Method(1, self.__method.split, self.__method.algo, self.__method.impl, None)
methods = method_registry.IntegrationMethod.select_method(method=method1d)
if len(methods) == 0:
method1d = method_registry.Method(1, method1d.split, "*", "*", None)
_logger.warning("Downgrade 1D integration method to %s", method1d)
else:
method1d = methods[0].method
method2d = method_registry.Method(2, self.__method.split, self.__method.algo, self.__method.impl, None)
methods = method_registry.IntegrationMethod.select_method(method=method2d)
if len(methods) == 0:
method2d = method_registry.Method(2, method2d.split, "*", "*", None)
_logger.warning("Downgrade 2D integration method to %s", method2d)
else:
method2d = methods[0].method
self.__result1d = ai.integrate1d(
method=method1d,
data=self.__image,
npt=self.__nPointsRadial,
unit=self.__radialUnit,
mask=self.__mask,
polarization_factor=self.__polarizationFactor)
self.__result2d = ai.integrate2d(
method=method2d,
data=self.__image,
npt_rad=self.__nPointsRadial,
npt_azim=self.__nPointsAzimuthal,
unit=self.__radialUnit,
mask=self.__mask,
polarization_factor=self.__polarizationFactor)
# Create an image masked where data exists
self.__resultMask2d = None
if self.__mask is not None:
if self.__mask.shape == self.__image.shape:
maskData = numpy.ones(shape=self.__image.shape, dtype=numpy.float32)
maskData[self.__mask == 0] = float("NaN")
if self.__displayMask:
self.__resultMask2d = ai.integrate2d(
method=method2d,
data=maskData,
npt_rad=self.__nPointsRadial,
npt_azim=self.__nPointsAzimuthal,
unit=self.__radialUnit,
polarization_factor=self.__polarizationFactor)
else:
_logger.warning("Inconsistency between image and mask sizes. %s != %s", self.__image.shape, self.__mask.shape)
try:
self.__directDist = ai.getFit2D()["directDist"]
except Exception:
# The geometry could not fit this param
_logger.debug("Backtrace", exc_info=True)
self.__directDist = None
if self.__calibrant:
rings = self.__calibrant.get_2th()
try:
rings = unitutils.from2ThRad(rings, self.__radialUnit, self.__wavelength, self.__directDist)
except ValueError:
message = "Convertion to unit %s not supported. Ring marks ignored"
_logger.warning(message, self.__radialUnit)
rings = []
# Filter the rings which are not part of the result
rings = filter(lambda x: self.__result1d.radial[0] <= x <= self.__result1d.radial[-1], rings)
rings = list(rings)
else:
rings = []
self.__ringAngles = rings
self.__ai = ai