Skip to content

Commit a75d0d1

Browse files
authored
Merge pull request #2472 from EdgarGF93/fiber_numexpr
numexpr on fiber
2 parents 241793f + 6666d3d commit a75d0d1

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

doc/source/usage/tutorial/FiberGrazingIncidence.ipynb

Lines changed: 3 additions & 11 deletions
Large diffs are not rendered by default.

src/pyFAI/integrator/fiber.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,13 @@
3737
import logging
3838
logger = logging.getLogger(__name__)
3939
import numpy
40+
try:
41+
import numexpr
42+
except ImportError as err:
43+
logger.warning("Unable to import numexpr: %s", err)
44+
USE_NUMEXPR = False
45+
else:
46+
USE_NUMEXPR = True
4047
from .azimuthal import AzimuthalIntegrator
4148
from ..containers import Integrate1dResult
4249
from ..method_registry import IntegrationMethod
@@ -271,12 +278,18 @@ def integrate_fiber(self, data,
271278
sum_normalization = res._sum_normalization.sum(axis=-1)
272279
mask_ = numpy.where(count == 0)
273280
empty = dummy if dummy is not None else self._empty
274-
intensity = sum_signal / sum_normalization
281+
if USE_NUMEXPR:
282+
intensity = numexpr.evaluate("where(sum_normalization <= 0, 0.0, sum_signal / sum_normalization)")
283+
else:
284+
intensity = numpy.where(sum_normalization <= 0, 0.0, sum_signal / sum_normalization)
275285
intensity[mask_] = empty
276286

277287
if res.sigma is not None:
278288
sum_variance = res.sum_variance.sum(axis=-1)
279-
sigma = numpy.sqrt(sum_variance) / sum_normalization
289+
if USE_NUMEXPR:
290+
sigma = numexpr.evaluate("where(sum_normalization <= 0, 0.0, sqrt(sum_variance) / sum_normalization)")
291+
else:
292+
sigma = numpy.where(sum_normalization <= 0, 0.0, numpy.sqrt(sum_variance) / sum_normalization)
280293
sigma[mask_] = empty
281294
else:
282295
sum_variance = None

0 commit comments

Comments
 (0)